Plugin Directory

Changeset 2024059


Ignore:
Timestamp:
02/03/2019 12:29:51 PM (7 years ago)
Author:
Friese
Message:

Update device detector

Location:
wp-visitorflow/trunk
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • wp-visitorflow/trunk/includes/classes/class-wp-visitorflow-admin.php

    r1989178 r2024059  
    7070            $reader_cap,
    7171            'wpvf_menu',
    72             '__return_true', '
    73             dashicons-randomize'
     72            '__return_true',
     73            'dashicons-randomize'
    7474        );
    7575
  • wp-visitorflow/trunk/readme.txt

    r1989179 r2024059  
    44Tags: statistics, analytics, web analytics, stats, visits, visitors, page, page view, pageviews, page hit, visitor flow, pagerank, bounce, bounce rate, exit page, web stats
    55Requires at least: 3.5
    6 Requires PHP: 5.4
    7 Tested up to: 5.0 
     6Requires PHP: 5.5
     7Tested up to:  5.0
    88Stable tag: 1.5.5
    99License: GPLv2 or later
     
    9595
    9696== Changelog ==
     97= 1.5.6 =
     98* Update device detector
     99
    97100= 1.5.5 =
    98101* WordPress 5.0 ready, Bugfix links on pages and posts list
     
    179182
    180183== Upgrade Notice ==
     184= 1.5.6 =
     185* Update device detector
     186
    181187= 1.5.5 =
    182188* WordPress 5.0 ready, Bugfix links on pages and posts list
  • wp-visitorflow/trunk/vendor/composer/installed.json

    r1961143 r2024059  
    5353    },
    5454    {
     55        "name": "endroid/qrcode",
     56        "version": "1.9.3",
     57        "version_normalized": "1.9.3.0",
     58        "source": {
     59            "type": "git",
     60            "url": "https://github.com/endroid/qr-code.git",
     61            "reference": "c9644bec2a9cc9318e98d1437de3c628dcd1ef93"
     62        },
     63        "dist": {
     64            "type": "zip",
     65            "url": "https://api.github.com/repos/endroid/qr-code/zipball/c9644bec2a9cc9318e98d1437de3c628dcd1ef93",
     66            "reference": "c9644bec2a9cc9318e98d1437de3c628dcd1ef93",
     67            "shasum": ""
     68        },
     69        "require": {
     70            "ext-gd": "*",
     71            "php": ">=5.4",
     72            "symfony/options-resolver": "^2.3|^3.0"
     73        },
     74        "require-dev": {
     75            "phpunit/phpunit": "^4.0|^5.0",
     76            "sensio/framework-extra-bundle": "^3.0",
     77            "symfony/browser-kit": "^2.3|^3.0",
     78            "symfony/framework-bundle": "^2.3|^3.0",
     79            "symfony/http-kernel": "^2.3|^3.0"
     80        },
     81        "time": "2017-04-08 09:13:59",
     82        "type": "library",
     83        "extra": {
     84            "branch-alias": {
     85                "dev-master": "1.x-dev"
     86            }
     87        },
     88        "installation-source": "dist",
     89        "autoload": {
     90            "psr-4": {
     91                "Endroid\\QrCode\\": "src/"
     92            }
     93        },
     94        "notification-url": "https://packagist.org/downloads/",
     95        "license": [
     96            "MIT"
     97        ],
     98        "authors": [
     99            {
     100                "name": "Jeroen van den Enden",
     101                "email": "info@endroid.nl",
     102                "homepage": "http://endroid.nl/"
     103            }
     104        ],
     105        "description": "Endroid QR Code",
     106        "homepage": "https://github.com/endroid/QrCode",
     107        "keywords": [
     108            "bundle",
     109            "code",
     110            "endroid",
     111            "qr",
     112            "qrcode",
     113            "symfony"
     114        ],
     115        "abandoned": "endroid/qr-code"
     116    },
     117    {
     118        "name": "symfony/options-resolver",
     119        "version": "v3.4.21",
     120        "version_normalized": "3.4.21.0",
     121        "source": {
     122            "type": "git",
     123            "url": "https://github.com/symfony/options-resolver.git",
     124            "reference": "8a10e36ffd04c0c551051594952304d34ecece71"
     125        },
     126        "dist": {
     127            "type": "zip",
     128            "url": "https://api.github.com/repos/symfony/options-resolver/zipball/8a10e36ffd04c0c551051594952304d34ecece71",
     129            "reference": "8a10e36ffd04c0c551051594952304d34ecece71",
     130            "shasum": ""
     131        },
     132        "require": {
     133            "php": "^5.5.9|>=7.0.8"
     134        },
     135        "time": "2019-01-01 13:45:19",
     136        "type": "library",
     137        "extra": {
     138            "branch-alias": {
     139                "dev-master": "3.4-dev"
     140            }
     141        },
     142        "installation-source": "dist",
     143        "autoload": {
     144            "psr-4": {
     145                "Symfony\\Component\\OptionsResolver\\": ""
     146            },
     147            "exclude-from-classmap": [
     148                "/Tests/"
     149            ]
     150        },
     151        "notification-url": "https://packagist.org/downloads/",
     152        "license": [
     153            "MIT"
     154        ],
     155        "authors": [
     156            {
     157                "name": "Fabien Potencier",
     158                "email": "fabien@symfony.com"
     159            },
     160            {
     161                "name": "Symfony Community",
     162                "homepage": "https://symfony.com/contributors"
     163            }
     164        ],
     165        "description": "Symfony OptionsResolver Component",
     166        "homepage": "https://symfony.com",
     167        "keywords": [
     168            "config",
     169            "configuration",
     170            "options"
     171        ]
     172    },
     173    {
    55174        "name": "piwik/device-detector",
    56         "version": "3.11.2",
    57         "version_normalized": "3.11.2.0",
     175        "version": "3.11.4",
     176        "version_normalized": "3.11.4.0",
    58177        "source": {
    59178            "type": "git",
    60179            "url": "https://github.com/matomo-org/device-detector.git",
    61             "reference": "c8e1760a45c4aed201af3b7deee35131bc47fe3e"
    62         },
    63         "dist": {
    64             "type": "zip",
    65             "url": "https://api.github.com/repos/matomo-org/device-detector/zipball/c8e1760a45c4aed201af3b7deee35131bc47fe3e",
    66             "reference": "c8e1760a45c4aed201af3b7deee35131bc47fe3e",
     180            "reference": "c136bf9147bd8f33746b1915331fba133d076ed5"
     181        },
     182        "dist": {
     183            "type": "zip",
     184            "url": "https://api.github.com/repos/matomo-org/device-detector/zipball/c136bf9147bd8f33746b1915331fba133d076ed5",
     185            "reference": "c136bf9147bd8f33746b1915331fba133d076ed5",
    67186            "shasum": ""
    68187        },
     
    79198        },
    80199        "suggest": {
    81             "doctrine/cache": "Can directly be used for caching purpose"
    82         },
    83         "time": "2018-10-08 20:45:21",
     200            "doctrine/cache": "Can directly be used for caching purpose",
     201            "ext-yaml": "Necessary for using the Pecl YAML parser"
     202        },
     203        "time": "2018-12-26 22:52:19",
    84204        "type": "library",
    85205        "installation-source": "dist",
     
    110230    {
    111231        "name": "doctrine/cache",
    112         "version": "v1.6.1",
    113         "version_normalized": "1.6.1.0",
     232        "version": "v1.6.2",
     233        "version_normalized": "1.6.2.0",
    114234        "source": {
    115235            "type": "git",
    116236            "url": "https://github.com/doctrine/cache.git",
    117             "reference": "b6f544a20f4807e81f7044d31e679ccbb1866dc3"
    118         },
    119         "dist": {
    120             "type": "zip",
    121             "url": "https://api.github.com/repos/doctrine/cache/zipball/b6f544a20f4807e81f7044d31e679ccbb1866dc3",
    122             "reference": "b6f544a20f4807e81f7044d31e679ccbb1866dc3",
     237            "reference": "eb152c5100571c7a45470ff2a35095ab3f3b900b"
     238        },
     239        "dist": {
     240            "type": "zip",
     241            "url": "https://api.github.com/repos/doctrine/cache/zipball/eb152c5100571c7a45470ff2a35095ab3f3b900b",
     242            "reference": "eb152c5100571c7a45470ff2a35095ab3f3b900b",
    123243            "shasum": ""
    124244        },
     
    134254            "satooshi/php-coveralls": "~0.6"
    135255        },
    136         "time": "2016-10-29 11:16:17",
     256        "time": "2017-07-22 12:49:21",
    137257        "type": "library",
    138258        "extra": {
     
    179299            "caching"
    180300        ]
    181     },
    182     {
    183         "name": "symfony/options-resolver",
    184         "version": "v3.4.17",
    185         "version_normalized": "3.4.17.0",
    186         "source": {
    187             "type": "git",
    188             "url": "https://github.com/symfony/options-resolver.git",
    189             "reference": "1cf7d8e704a9cc4164c92e430f2dfa3e6983661d"
    190         },
    191         "dist": {
    192             "type": "zip",
    193             "url": "https://api.github.com/repos/symfony/options-resolver/zipball/1cf7d8e704a9cc4164c92e430f2dfa3e6983661d",
    194             "reference": "1cf7d8e704a9cc4164c92e430f2dfa3e6983661d",
    195             "shasum": ""
    196         },
    197         "require": {
    198             "php": "^5.5.9|>=7.0.8"
    199         },
    200         "time": "2018-09-17 17:29:18",
    201         "type": "library",
    202         "extra": {
    203             "branch-alias": {
    204                 "dev-master": "3.4-dev"
    205             }
    206         },
    207         "installation-source": "dist",
    208         "autoload": {
    209             "psr-4": {
    210                 "Symfony\\Component\\OptionsResolver\\": ""
    211             },
    212             "exclude-from-classmap": [
    213                 "/Tests/"
    214             ]
    215         },
    216         "notification-url": "https://packagist.org/downloads/",
    217         "license": [
    218             "MIT"
    219         ],
    220         "authors": [
    221             {
    222                 "name": "Fabien Potencier",
    223                 "email": "fabien@symfony.com"
    224             },
    225             {
    226                 "name": "Symfony Community",
    227                 "homepage": "https://symfony.com/contributors"
    228             }
    229         ],
    230         "description": "Symfony OptionsResolver Component",
    231         "homepage": "https://symfony.com",
    232         "keywords": [
    233             "config",
    234             "configuration",
    235             "options"
    236         ]
    237     },
    238     {
    239         "name": "endroid/qrcode",
    240         "version": "1.9.3",
    241         "version_normalized": "1.9.3.0",
    242         "source": {
    243             "type": "git",
    244             "url": "https://github.com/endroid/qr-code.git",
    245             "reference": "c9644bec2a9cc9318e98d1437de3c628dcd1ef93"
    246         },
    247         "dist": {
    248             "type": "zip",
    249             "url": "https://api.github.com/repos/endroid/qr-code/zipball/c9644bec2a9cc9318e98d1437de3c628dcd1ef93",
    250             "reference": "c9644bec2a9cc9318e98d1437de3c628dcd1ef93",
    251             "shasum": ""
    252         },
    253         "require": {
    254             "ext-gd": "*",
    255             "php": ">=5.4",
    256             "symfony/options-resolver": "^2.3|^3.0"
    257         },
    258         "require-dev": {
    259             "phpunit/phpunit": "^4.0|^5.0",
    260             "sensio/framework-extra-bundle": "^3.0",
    261             "symfony/browser-kit": "^2.3|^3.0",
    262             "symfony/framework-bundle": "^2.3|^3.0",
    263             "symfony/http-kernel": "^2.3|^3.0"
    264         },
    265         "time": "2017-04-08 09:13:59",
    266         "type": "library",
    267         "extra": {
    268             "branch-alias": {
    269                 "dev-master": "1.x-dev"
    270             }
    271         },
    272         "installation-source": "dist",
    273         "autoload": {
    274             "psr-4": {
    275                 "Endroid\\QrCode\\": "src/"
    276             }
    277         },
    278         "notification-url": "https://packagist.org/downloads/",
    279         "license": [
    280             "MIT"
    281         ],
    282         "authors": [
    283             {
    284                 "name": "Jeroen van den Enden",
    285                 "email": "info@endroid.nl",
    286                 "homepage": "http://endroid.nl/"
    287             }
    288         ],
    289         "description": "Endroid QR Code",
    290         "homepage": "https://github.com/endroid/QrCode",
    291         "keywords": [
    292             "bundle",
    293             "code",
    294             "endroid",
    295             "qr",
    296             "qrcode",
    297             "symfony"
    298         ],
    299         "abandoned": "endroid/qr-code"
    300301    }
    301302]
  • wp-visitorflow/trunk/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcachedCache.php

    r1555196 r2024059  
    9595    protected function doContains($id)
    9696    {
    97         return false !== $this->memcached->get($id)
    98             || $this->memcached->getResultCode() !== Memcached::RES_NOTFOUND;
     97        $this->memcached->get($id);
     98
     99        return $this->memcached->getResultCode() === Memcached::RES_SUCCESS;
    99100    }
    100101
  • wp-visitorflow/trunk/vendor/piwik/device-detector/DeviceDetector.php

    r1961143 r2024059  
    5151     * Current version number of DeviceDetector
    5252     */
    53     const VERSION = '3.11.2';
     53    const VERSION = '3.11.4';
    5454
    5555    /**
  • wp-visitorflow/trunk/vendor/piwik/device-detector/Parser/Device/DeviceParserAbstract.php

    r1961143 r2024059  
    6565        '4G' => '4Good',
    6666        'AC' => 'Acer',
     67        'AD' => 'Advance',
    6768        'AZ' => 'Ainol',
    6869        'AI' => 'Airness',
     
    128129        'CY' => 'Coby Kyros',
    129130        'C6' => 'Comio',
     131        'C7' => 'ComTrade Tesla',
    130132        'C4' => 'Cyrus',
    131133        'DA' => 'Danew',
     
    159161        'EE' => 'Essential',
    160162        'EN' => 'Eton',
     163        'E2' => 'Essentielb',
    161164        'ET' => 'eTouch',
    162165        'EV' => 'Evertek',
     
    179182        'GL' => 'Goly',
    180183        'GO' => 'Google',
     184        'G1' => 'GoMobile',
    181185        'GR' => 'Gradiente',
     186        'GP' => 'Grape',
    182187        'GU' => 'Grundig',
    183188        'HA' => 'Haier',
     
    211216        'IT' => 'Intek',
    212217        'IV' => 'Inverto',
     218        'I3' => 'Impression',
    213219        'IZ' => 'iTel',
    214220        'JA' => 'JAY-Tech',
     
    228234        'KW' => 'Konrow',
    229235        'KR' => 'Koridy',
     236        'KS' => 'Kempler & Strauss',
    230237        'KU' => 'Kumai',
    231238        'KY' => 'Kyocera',
     
    236243        'LC' => 'LCT',
    237244        'L1' => 'LeEco',
     245        'L4' => 'Lemhoov',
    238246        'LE' => 'Lenovo',
    239247        'LN' => 'Lenco',
     
    267275        'MR' => 'Motorola',
    268276        'MS' => 'Microsoft',
     277        'M9' => 'MTC',
    269278        'MZ' => 'MSI',
    270279        'MU' => 'Memup',
     
    273282        'MQ' => 'M.T.T.',
    274283        'MY' => 'MyPhone',
     284        'M8' => 'Myria',
    275285        'NE' => 'NEC',
    276286        'NF' => 'Neffos',
     
    280290        'NI' => 'Nintendo',
    281291        'N1' => 'Noain',
     292        'N2' => 'Nextbit',
    282293        'NK' => 'Nokia',
    283294        'NV' => 'Nvidia',
     
    306317        'PI' => 'Pioneer',
    307318        'PL' => 'Polaroid',
     319        'P9' => 'Primepad',
    308320        'PM' => 'Palm',
    309321        'PO' => 'phoneOne',
     
    330342        'RO' => 'Rover',
    331343        'SA' => 'Samsung',
     344        'S0' => 'Sanei',
    332345        'SD' => 'Sega',
    333346        'SE' => 'Sony Ericsson',
     
    353366        'S4' => 'Star',
    354367        'S8' => 'STK',
     368        'S9' => 'Savio',
    355369        'ST' => 'Storex',
    356370        'S2' => 'Stonex',
     
    373387        'TN' => 'Thomson',
    374388        'T1' => 'Tolino',
     389        'T9' => 'Top House',
    375390        'TO' => 'Toplux',
     391        'T8' => 'Touchmate',
    376392        'TS' => 'Toshiba',
    377393        'TT' => 'TechnoTrend',
     
    401417        'VL' => 'Verykool',
    402418        'VV' => 'Vivo',
     419        'V3' => 'Vinsoc',
    403420        'V2' => 'Vonino',
    404421        'V1' => 'Voto',
     
    428445        'ZU' => 'Zuum',
    429446        'ZN' => 'Zen',
     447        'ZY' => 'Zync',
    430448
    431449        // legacy brands, might be removed in future versions
  • wp-visitorflow/trunk/vendor/piwik/device-detector/regexes/bots.yml

    r1961143 r2024059  
    8585    name: 'Apple Inc'
    8686    url: 'http://www.apple.com'
     87
     88- regex: 'Arachni'
     89  name: 'Arachni'
     90  category: 'Security Checker'
     91  url: 'http://www.arachni-scanner.com'
     92  producer:
     93    name: 'Sarosys LLC'
     94    url: 'http://www.sarosys.com/'
    8795
    8896- regex: 'Castro 2, Episode Duration Lookup'
     
    507515    url: 'http://goo.ne.jp'
    508516
     517- regex: 'Google Search Console'
     518  name: 'Google Search Console'
     519  category: 'Crawler'
     520  url: 'https://search.google.com/search-console/about'
     521  producer:
     522    name: 'Google Inc.'
     523    url: 'http://www.google.com'
     524
    509525- regex: 'Google Page Speed Insights'
    510526  name: 'Google PageSpeed Insights'
     
    571587    url: 'https://www.shopalike.cz/'
    572588
    573 - regex: 'Googlebot(-Mobile|-Image|-Video|-News)?|Feedfetcher-Google|Google-Test|Google-Site-Verification|Google Web Preview|AdsBot-Google(-Mobile)?|Google-Adwords-Instant|Mediapartners-Google|Google.*/\+/web/snippet|GoogleProducer|Google[ -]Publisher[ -]Plugin|Google-Shopping-Quality|Google-Adwords-DisplayAds'
     589- regex: 'Googlebot(-Mobile|-Image|-Video|-News)?|Feedfetcher-Google|Google-Test|Google-Site-Verification|Google Web Preview|AdsBot-Google(-Mobile)?|Google-Adwords-Instant|Mediapartners-Google|Google.*/\+/web/snippet|GoogleProducer|Google[ -]Publisher[ -]Plugin|Google-Shopping-Quality|Google-Adwords-DisplayAds|Google-Assess'
    574590  name: 'Googlebot'
    575591  category: 'Search bot'
     
    15971613    url: 'https://www.site24x7.com'
    15981614
     1615- regex: 's~snapchat-proxy'
     1616  name: 'Snapchat Proxy'
     1617  category: 'Crawler'
     1618  url: 'https://www.snapchat.com'
     1619  producer:
     1620    name: 'Snapchat Inc.'
     1621    url: 'https://www.snapchat.com'
     1622
    15991623- regex: "Let's Encrypt validation server"
    16001624  name: "Let's Encrypt Validation"
  • wp-visitorflow/trunk/vendor/piwik/device-detector/regexes/client/feed_readers.yml

    r1961143 r2024059  
    2323  url: 'http://lincgeek.org/bashpodder/'
    2424  type: 'Feed Reader'
     25 
     26- regex: 'Breaker/v([\d\.]+)'
     27  name: 'Breaker'
     28  version: '$1'
     29  url: 'https://www.breaker.audio/'
     30  type: 'Feed Reader App'
    2531
    2632- regex: 'Downcast/([\d\.]+)'
  • wp-visitorflow/trunk/vendor/piwik/device-detector/regexes/device/mobiles.yml

    r1961143 r2024059  
    222222# RIM/BlackBerry
    223223RIM:
    224   regex: 'BB10;|BlackBerry|rim[0-9]+|PlayBook|STV100-4|STH100-2|BBB100-[127]'
    225   device: 'smartphone'
    226   models:
    227     - regex: 'BBB100-[127]'
    228       model: 'KEYone '
    229     - regex: 'STV100-4'
     224  regex: 'BB10;|BlackBerry|rim[0-9]+|PlayBook|STV100-[1234]|STH100-[12]|BBA100-[12]|BBB100-[1234567]|BBC100-1|BBD100-[126]|BBE100-[123456789]|BBF100-[123456789]|BBG100-1|BBH100-1'
     225  device: 'smartphone'
     226  models:
     227    - regex: 'BBA100-[12]'
     228      model: 'BlackBerry DTEK60'
     229    - regex: 'BBB100-[1234567]'
     230      model: 'KEYone'
     231    - regex: 'BBC100-1'
     232      model: 'Aurora'
     233    - regex: 'BBD100-[126]'
     234      model: 'Motion'
     235    - regex: 'BBE100-[123456789]'
     236      model: 'KEY2 LE'
     237    - regex: 'BBF100-[1234567]'
     238      model: 'KEY2'
     239    - regex: 'BBF100-8'
     240      model: 'KEY2 Silver'
     241    - regex: 'BBF100-9'
     242      model: 'KEY2 Black'
     243    - regex: 'BBG100-1'
     244      model: 'Evolve'
     245    - regex: 'BBH100-1'
     246      model: 'Evolve X'
     247    - regex: 'STV100-[1234]'
    230248      model: 'BlackBerry Priv'
    231     - regex: 'STH100-2'
     249    - regex: 'STH100-[12]'
    232250      model: 'BlackBerry DTEK50'
    233251    - regex: 'BB10; ([a-z0-9\- ]+)\)'
     
    297315# Apple
    298316Apple:
    299   regex: '(?:iTunes-)?AppleTV|(?:Apple-|iTunes-)?(?:iPad|iPhone)|iPh[0-9],[0-9]|CFNetwork'
     317  regex: '(?:iTunes-)?Apple[ _]?TV|(?:Apple-|iTunes-)?(?:iPad|iPhone)|iPh[0-9],[0-9]|CFNetwork'
    300318  models:
    301319    # specific smartphone devices
     
    405423      device: 'tablet'
    406424
    407     - regex: '(?:iTunes-)?AppleTV'
     425    - regex: '(?:iTunes-)?Apple[ _]?TV'
    408426      model: 'Apple TV'
    409427      device: 'tv'
     
    437455    - regex: 'Q417'
    438456      model: 'Canvas Mega'
     457    - regex: 'Q424'
     458      model: 'Bolt Selfie'
    439459    - regex: 'Q426'
    440460      model: 'Canvas Mega 2'
     
    482502# Acer
    483503Acer:
    484   regex: 'acer|(?<!ZTE BLADE )a(?:101|110|200|210|211|500|501|510|511|700|701)[);/ ]|Android.*V3[67]0[);/ ]|Android.*Z1[23456]0 Build|Android.*Z5\d{2} Build|Android.*T0[234678] Build|A1-830|A1-81[01]|A3-A[1234][01]|B1-7[1235678][01]|B1-7[23]3|B1-8[1235]0|B1-A71|B3-A[12]0|B3-A3[02]|E39 Build|S5[12]0 Build|DA[0-9]+HQ?L[);/ ]'
     504  regex: 'acer|(?<!ZTE BLADE |ImSmart )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|A1-830|A1-81[01]|A3-A[1234][01]|B1-7[1235678][01]|B1-7[23]3|B1-8[1235]0|B1-A71|B3-A[12]0|B3-A3[02]|E39 Build|S5[12]0 Build|DA[0-9]+HQ?L[);/ ]'
    485505  device: 'smartphone'
    486506  models:
     
    560580    - regex: 'acer[\-_]([a-z0-9]+)'
    561581      model: '$1'
    562     - regex: 'a(101|110|200|210|211|500|501|510|511|700|701)[);/ ]'
     582    - regex: 'a(101|110|2[10]0|211|50[10]|51[10]|70[10])[);/ ]'
    563583      model: 'Iconia Tab A$1'
    564584      device: 'tablet'
     585
     586# Advance
     587Advance:
     588  regex: 'Hollogram|HL6246|IntroTr3544|Tr3845'
     589  device: 'smartphone'
     590  models:
     591    - regex: 'IntroTr3544|Tr3845'
     592      model: 'Intro'
     593      device: 'tablet'
     594    - regex: 'HL6246'
     595      model: 'Hollogram HL6246'
     596    - regex: 'Hollogram ([^;\)]+) Build'
     597      model: 'Hollogram $1'
    565598
    566599# Airness
     
    583616# Akai
    584617Akai:
    585   regex: 'Akai[ _-]|Eco[ _]E2|Glory[ _](?:G[1235]|L[123]|O[125])|TAB-[79]8[03]0Q?|X6 METAL'
     618  regex: 'Akai[ _-]|Eco[ _]E2|Glory[ _](?:G[1235]|L[123]|O[125])|TAB-[79]8[03]0Q?|X6 METAL|AKTB-703MZ'
    586619  device: 'smartphone'
    587620  models:
     
    589622      device: 'tablet'
    590623      model: 'TAB $1'
     624    - regex: '(AKTB-703MZ)'
     625      device: 'tablet'
     626      model: '$1'
    591627
    592628    - regex: 'X6 METAL'
     
    603639# Alcatel
    604640Alcatel:
    605   regex: 'Alcatel|Alc[a-z0-9]+|One[ _]?Touch|idol3|(?:4003A|4009A|4013[DMX]|4017X|4024D|4027[ADX]|4032D|4034[DF]|4047A|4049G|5009[AD]|50[16]5X|5010[DX]|5011A|501[567]A|5015D|5019D|5025[DG]|5045[DTX]|5022[DX]|5023F|5026[AD]|5042[AD]|5049G|5051[DX]|5052D|5054[DNSWX]|5056[DX]|5058[AIY]|5059[ADXY]|5065[DN]|5070D|5080X|5095K|5099[ADYUI]|6016X|603[67]Y|6039[HKY]|6043D|6044D|6045[HKY]|6050[AFY]|6055[KP]|6070K|7048X|7070X|8030Y|8050[DG]|9001[DX]|9002X|9003X|9005X|9008[AX]|9010X|9022X|I213|I216X)[);/ ]'
    606   device: 'smartphone'
    607   models:
    608     - regex: '(?:5022[DX]|5070D)[);/ ]'
     641  regex: 'Alcatel|Alc[a-z0-9]+|One[ _]?Touch|idol3|(?:4003[AJ]|4009[ADEFIKMSX]|4013[DEJKMX]|4014[ADEKMX]|4015[ADNTX]|4016[ADX]|4017[ADEFSX]|4018[ADEFMX]|4024[EDX]|4027[ADNX]|4028[AEJS]|4032[ADEX]|4034[ADEFGX]|4035[ADXY]|4045[ADEX]|4047[ADFGNX]|4049[DEGMX]|4060[SW]|4114E|5009[AD]|5010[DEGSUX]|5011A|5012[DFG]|5015[ADEX]|5016[AXJ]|5017[ABDEOX]|5019D|5022[EDX]|5023[EF]|5025[DG]|5026[AD]|5027B|5038[ADEX]|5042[ADEFGWX]|5044[ADGIKOPSTY]|5045[ADFGIJTXY]|5046[ADGIJSTUY]|5047[DIUY]|5049[EGSWZ]|5050[ASXY]|5051[ADEJMTWX]|5052D|5054[ADNSWX]|5056[ADEGIJMNTUWX]|5057M|5058[AIY]|5059[ADXY]|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]|6043[AD]|6044D|6045[BFIKOY]|6050[AFY]|6055[ABDHIKPUYZ]|6058[ADX]|6062W|6070K|7040[ADEFKRT]|7041[DX]|7043[AEKY]|7044[AX]|7045Y|7048[ASWX]|7055A|7070X|8030Y|8050[DEGX]|9001[DIX]|9002X|9003[AX]|9005X|9007[ATX]|9008[ADIJNTUX]|9010X|9022X|9203A|I213|I216X)[);/ ]'
     642  device: 'smartphone'
     643  models:
     644    - regex: '(?:5022[EDX]|5070D)[);/ ]'
    609645      model: 'One Touch Pop Star'
    610646    - regex: '6044D[);/ ]'
    611647      model: 'One Touch Pop Up'
    612     - regex: '4032D[);/ ]'
     648    - regex: '(?:4015[ATX]|4016A)[);/ ]'
     649      model: 'One Touch Pop C1'
     650    - regex: '(?:4015[DN]|4016[DX])[);/ ]'
     651      model: 'One Touch Pop C1 Dual SIM'
     652    - regex: '4032[AX][);/ ]'
    613653      model: 'One Touch Pop C2'
    614     - regex: '5042[AD][);/ ]'
    615       model: 'One Touch Pop 2'
     654    - regex: '4032[DE][);/ ]'
     655      model: 'One Touch Pop C2 Dual SIM'
     656    - regex: '(?:7040[AFK]|7041X)[);/ ]'
     657      model: 'One Touch Pop C7'
     658    - regex: '(?:7040[DE]|7041D)[);/ ]'
     659      model: 'One Touch Pop C7 Dual SIM'
     660    - regex: '4018[ADEFMX][);/ ]'
     661      model: 'One Touch Pop D1'
     662    - regex: '4035[ADXY][);/ ]'
     663      model: 'One Touch Pop D3'
     664    - regex: '5038[ADEX][);/ ]'
     665      model: 'One Touch Pop D5'
     666    - regex: '4045[AX][);/ ]'
     667      model: 'One Touch Pop 2 4"'
     668    - regex: '4045[DE][);/ ]'
     669      model: 'One Touch Pop 2 4" Dual SIM'
     670    - regex: '5042[AFGWX][);/ ]'
     671      model: 'One Touch Pop 2 4.5"'
     672    - regex: '5042[DE][);/ ]'
     673      model: 'One Touch Pop 2 4.5" Dual SIM'
     674    - regex: '(?:7043[AY]|7044[AX])[);/ ]'
     675      model: 'One Touch Pop 2 5"'
     676    - regex: '7043[EK][);/ ]'
     677      model: 'One Touch Pop 2 5" Dual SIM'
    616678    - regex: '50[16]5X[);/ ]'
    617679      model: 'One Touch Pop 3'
    618     - regex: '501[56]A[);/ ]'
     680    - regex: '(?:5015[AE]|5016[AJ]|5065[ADWX]|5116J)[);/ ]'
    619681      model: 'One Touch Pop 3 5"'
    620     - regex: '5065[AD][);/ ]'
    621       model: 'One Touch Pop 3 5"'
    622     - regex: '(?:5025[DG]|5054[DSX])[);/ ]'
     682    - regex: '(?:5025[DG]|5054[ADSX])[);/ ]'
    623683      model: 'One Touch Pop 3 5.5"'
    624684    - regex: '5015D[);/ ]'
    625685      model: 'One Touch Pop 3 Dual SIM'
    626     - regex: '5051[DX][);/ ]'
     686    - regex: '5051[AEJMTWX][);/ ]'
    627687      model: 'One Touch Pop 4'
    628     - regex: '5095K[);/ ]'
     688    - regex: '5051D[);/ ]'
     689      model: 'One Touch Pop 4 Dual SIM'
     690    - regex: '5095[IKY][);/ ]'
    629691      model: 'One Touch Pop 4S'
    630     - regex: '5056[DX][);/ ]'
     692    - regex: '5056[ADEGJMTUX][);/ ]'
    631693      model: 'One Touch Pop 4+'
    632694    - regex: '7070X[);/ ]'
    633695      model: 'One Touch Pop 4 6"'
    634     - regex: '6037Y[);/ ]'
     696    - regex: '5057M[);/ ]'
     697      model: 'One Touch Pop Mirage'
     698    - regex: '5050[ASXY][);/ ]'
     699      model: 'One Touch Pop S3'
     700    - regex: '7045Y[);/ ]'
     701      model: 'One Touch Pop S7'
     702    - regex: '6037[BKY][);/ ]'
    635703      model: 'One Touch Idol 2'
     704    - regex: '5027B[);/ ]'
     705      model: 'One Touch Dawn'
     706    - regex: '7040[RT][);/ ]'
     707      model: 'One Touch Fierce 2'
     708    - regex: '5056[NW]'
     709      model: 'One Touch Fierce 4'
    636710    - regex: '5054[NW]'
    637711      model: 'One Touch Fierce XL'
    638     - regex: '(?:6036Y|6016X)[);/ ]'
     712    - regex: '6016[AX][);/ ]'
    639713      model: 'One Touch Idol 2 mini'
     714    - regex: '6016[DE][);/ ]'
     715      model: 'One Touch Idol 2 mini Dual SIM'
     716    - regex: '6036[AXY][);/ ]'
     717      model: 'One Touch Idol 2 mini S'
    640718    - regex: '6050[AFY][);/ ]'
    641719      model: 'One Touch Idol 2S'
    642     - regex: '6039[HKY][);/ ]|idol3'
     720    - regex: '6039[AHJKY][);/ ]|idol3'
    643721      model: 'One Touch Idol 3'
    644     - regex: '6045[KY][);/ ]'
     722    - regex: '6045[BFIKOY][);/ ]'
    645723      model: 'One Touch Idol 3 5.5"'
    646     - regex: '6055[KP][);/ ]'
     724    - regex: '6055[ABDHIKPUYZ][);/ ]'
    647725      model: 'One Touch Idol 4'
    648726    - regex: '6070K[);/ ]'
    649727      model: 'One Touch Idol 4S'
    650     - regex: '6043D[);/ ]'
     728    - regex: '6058[ADX][);/ ]'
     729      model: 'One Touch Idol 5'
     730    - regex: '6043[AD][);/ ]'
    651731      model: 'One Touch Idol X+'
    652732    - regex: '8030Y[);/ ]'
    653733      model: 'One Touch Hero 2'
     734    - regex: '7055A[);/ ]'
     735      model: 'One Touch Hero 2C'
    654736    - regex: '5065N[);/ ]'
    655737      model: 'TRU'
    656     - regex: '4024D[);/ ]'
     738    - regex: '5056I'
     739      model: 'One Touch Optus X Smart'
     740    - regex: '4024[DEX][);/ ]'
    657741      model: 'One Touch Pixi First'
    658     - regex: '400[39]A[);/ ]'
     742    - regex: '4014D[);/ ]'
     743      model: 'One Touch Pixi 2'
     744    - regex: '4009[AFIKMSX][);/ ]'
     745      model: 'One Touch Pixi 3 3.5"'
     746    - regex: '4009[DE][);/ ]'
     747      model: 'One Touch Pixi 3 3.5" Dual SIM'
     748    - regex: '(?:4003[AJ]|4013[DEJKMX]|4014[AEKMX]|4114E)[);/ ]'
    659749      model: 'One Touch Pixi 3 4"'
    660     - regex: '4013[DMX][);/ ]'
    661       model: 'One Touch Pixi 3 4"'
    662     - regex: '(?:4027[ADX]|5017A|5019D)[);/ ]'
     750    - regex: '(?:4027[ADNX]|4028[AEJS]|5019D)[);/ ]'
    663751      model: 'One Touch Pixi 3 4.5"'
     752    - regex: '5017[ABDEOX][);/ ]'
     753      model: 'One Touch Pixi 3 4.5" 4G'
    664754    - regex: '9002X[);/ ]'
    665755      model: 'One Touch Pixi 3 7"'
    666756      device: 'phablet'
     757    - regex: '9007A[);/ ]'
     758      model: 'One Touch Pixi 3 7"'
     759      device: 'tablet'
     760    - regex: '9007[TX][);/ ]'
     761      model: 'One Touch Pixi 3 7" 4G'
     762      device: 'tablet'
    667763    - regex: '9022X[);/ ]'
    668764      model: 'One Touch Pixi 3 8"'
     
    671767      model: 'One Touch Pixi 3 10"'
    672768      device: 'tablet'
    673     - regex: '4034[DF][);/ ]'
    674       model: 'One Touch Pixi 4'
    675     - regex: '4017X[);/ ]'
     769    - regex: '4017[ADEFSX][);/ ]'
    676770      model: 'One Touch Pixi 4 3.5"'
    677     - regex: '5023F[);/ ]'
     771    - regex: '4034[ADEFGX][);/ ]'
     772      model: 'One Touch Pixi 4 4"'
     773    - regex: '4060[SW][);/ ]'
     774      model: 'One Touch Pixi 4 4.5"'
     775    - regex: '5023[EF][);/ ]'
    678776      model: 'One Touch Pixi 4 Plus Power'
    679     - regex: '(?:5010[DX]|5045[DTX])[);/ ]'
    680       model: 'One Touch Pixi 4 5"'
    681     - regex: '(?:8050[DG]|9001D)[);/ ]'
    682       model: 'One Touch Pixi 4 6"'
    683     - regex: '(?:9003X|I216X)[);/ ]'
     777    - regex: '5010[DEGSUX][);/ ]'
     778      model: 'One Touch Pixi 4 5" 3G'
     779    - regex: '5012[DFG][);/ ]'
     780      model: 'One Touch Pixi 4 5.5" 3G'
     781    - regex: '(?:5045[ADFGIJTXY]|5145A)[);/ ]'
     782      model: 'One Touch Pixi 4 5" 4G'
     783    - regex: '5098O[);/ ]'
     784      model: 'One Touch Pixi Theatre'
     785    - regex: '5046[ADIJTUY][);/ ]'
     786      model: 'A3'
     787    - regex: '(?:5011A|5049[EG])[);/ ]'
     788      model: 'A3 Plus'
     789    - regex: '9008[ADIJNTUX]'
     790      model: 'A3 XL'
     791    - regex: '9203A[);/ ]'
     792      model: 'A3 7" 3G'
     793      device: 'tablet'
     794    - regex: '5085[BQ][);/ ]'
     795      model: 'A5'
     796    - regex: '5085[ADHIJY][);/ ]'
     797      model: 'A5 LED'
     798    - regex: '5085N[);/ ]'
     799      model: 'A5 Max LED'
     800    - regex: '5090[AIY][);/ ]'
     801      model: 'A7'
     802    - regex: '5046[GS][);/ ]'
     803      model: 'A30'
     804    - regex: '5049S[);/ ]'
     805      model: 'A30 Plus'
     806    - regex: '5049Z[);/ ]'
     807      model: 'A30 Fierce'
     808    - regex: '5085[GO]'
     809      model: 'A50'
     810    - regex: '5049W[);/ ]'
     811      model: 'Revvl'
     812    - regex: '8050[GX][);/ ]'
     813      model: 'One Touch Pixi 4 6" 3G'
     814    - regex: '8050[ED][);/ ]'
     815      model: 'One Touch Pixi 4 6" 3G Dual SIM'
     816    - regex: '(?:5098S|9001[DIX])[);/ ]'
     817      model: 'One Touch Pixi 4 6" 4G'
     818    - regex: '9003[AX][);/ ]'
     819      model: 'One Touch Pixi 4 7" 3G'
     820      device: 'tablet'
     821    - regex: 'I216X[);/ ]'
    684822      model: 'One Touch Pixi 7'
    685823      device: 'tablet'
     
    696834      model: 'One Touch POP 7'
    697835      device: 'tablet'
    698     - regex: '7048X'
     836    - regex: '7048[ASWX][);/ ]'
    699837      model: 'One Touch Go Play'
    700838    - regex: '(?:Alcatel[ _])?One[ _]?Touch[ _]((?:T[0-9]+|TAB[^/;]+|EVO[78](?:HD)?)) Build'
     
    705843    - regex: '(?:Alcatel[ _])?One[ _]?Touch([^/;\)]*)\)'
    706844      model: 'One Touch$1'
    707     - regex: '5080X[);/ ]'
     845    - regex: '5080[ADFQUX][);/ ]'
    708846      model: 'Shine Lite'
    709     - regex: '4049G[);/ ]'
     847    - regex: '5085C'
     848      model: 'PulseMix'
     849    - regex: '4049[DEGMX][);/ ]'
    710850      model: 'U3'
     851    - regex: '5044[ADIKOPTY][);/ ]'
     852      model: 'U5'
     853    - regex: '4047[DFXN][);/ ]'
     854      model: 'U5 3G'
     855    - regex: '5047[DIUY][);/ ]'
     856      model: 'U5 HD'
     857    - regex: '4047G[);/ ]'
     858      model: 'U5 Lite'
    711859    - regex: '4047A[);/ ]'
    712860      model: 'U5 Plus'
     861    - regex: '5044[GS][);/ ]'
     862      model: 'U50'
    713863    - regex: '5009[AD][);/ ]'
    714864      model: '1C'
     
    723873    - regex: '5058[AIY][);/ ]'
    724874      model: '3X'
    725     - regex: '(?:5011A|5049G)[);/ ]'
    726       model: 'A3 Plus'
    727     - regex: '9008[AX]'
    728       model: 'A3 XL'
     875    - regex: '5086[ADY][);/ ]'
     876      model: '5'
     877    - regex: '6062W[);/ ]'
     878      model: '7'
    729879    - regex: 'Alcatel UP'
    730880      model: ''
     
    9151065# Asus
    9161066Asus:
    917   regex: 'Asus|Transformer|TF300T|Slider SL101|PadFone|ME302(?:C|KL)|ME301T|ME371MG|ME17(?:1|2V|3X)|(?:K0[01][0-9a-z]|Z00D|Z00YD|P(?:008|024|027) Build|Z017D)[);/ ]'
     1067  regex: 'Asus|Transformer|TF300T|Slider SL101|PadFone|ME302(?:C|KL)|ME301T|ME371MG|ME17(?:1|2V|3X)|(?:K0[01][0-9a-z]|P(?:008|024|027) Build|X018D|X003|X00[7ABT]D|Z00D|Z00[MY]D|Z01[7FHMR]D)[);/ ]|ZB(602|555)KL|ZC553KL|ZA550KL|ZE(520|620|55[2345])KL'
    9181068  device: 'smartphone'
    9191069  models:
     
    10031153    - regex: '(?:ASUS_)?Z007'
    10041154      model: 'ZenFone C'
     1155    - regex: '(?:ASUS_)?ZB555KL'
     1156      model: 'ZenFone Max M1'
    10051157    - regex: '(?:ASUS_)?(?:Z00D|Z008D|Z00AD[AB]?)'
    10061158      model: 'ZenFone 2'
    1007     - regex: '(?:ASUS_)?A007'
     1159    - regex: '(?:ASUS_)?A007|ZA550KL'
    10081160      model: 'ZenFone Live'
    10091161    - regex: '(?:ASUS_)Z00YD'
    10101162      model: 'Live'
    1011     - regex: '(?:ASUS_)?(?:Z00[ERL]D|Z011D)'
     1163    - regex: '(?:ASUS_)?(?:Z00[ERLM]D|Z011D)'
    10121164      model: 'ZenFone 2 Laser'
    10131165    - regex: '(?:ASUS_)?T00[IQ1]'
    10141166      model: 'ZenFone 4'
    1015     - regex: '(?:ASUS_)?(?:T00[JF]|X00QD)'
     1167    - regex: '(?:ASUS_)?(?:T00[JF]|X00QD|ZE620KL)'
    10161168      model: 'ZenFone 5'
    10171169    - regex: '(?:ASUS_)?T00P'
     
    10191171    - regex: '(?:ASUS_)?T00K'
    10201172      model: 'ZenFone 5 Lite'
     1173    - regex: '(?:ASUS_)?Z01RD'
     1174      model: 'ZenFone 5Z'
    10211175    - regex: '(?:ASUS_)?(?:T00G|Z002)'
    10221176      model: 'ZenFone 6'
    10231177    - regex: '(?:ASUS_)?Z010D'
    10241178      model: 'ZenFone Max'
     1179    - regex: '(?:ASUS_)?X018D'
     1180      model: 'ZenFone Max Plus M1'
     1181    - regex: '(?:ASUS_)?X00TD'
     1182      model: 'ZenFone Max Pro M1'
    10251183    - regex: '(?:ASUS_)?X014D'
    10261184      model: 'ZenFone Go Plus'
    1027     - regex: '(?:ASUS_)?(X00AD|Z00[SV]D|X009[DB][DA])'
     1185    - regex: '(?:ASUS_)?(X00[7AB]D|Z00[SV]D|X009[DB][DA])'
    10281186      model: 'ZenFone Go'
    10291187    - regex: '(?:ASUS_)?X013D'
    10301188      model: 'ZenFone Go Life'
     1189    - regex: '(?:ASUS_)?(X003)'
     1190      model: 'ZenFone Pegasus'
    10311191    - regex: '(?:ASUS_)?(X008)'
    10321192      model: 'ZenFone 3 Pegasus'
     1193    - regex: '(?:ASUS_)?(ZE553KL|Z01HD)'
     1194      model: 'ZenFone 3 Zoom'
    10331195    - regex: '(?:ASUS_)?Z00UD'
    10341196      model: 'ZenFone Selfie'
    1035     - regex: '(?:ASUS_)?(Z017DA|ZE520KL|Z017D|Z012D)'
     1197    - regex: '(?:ASUS_)?Z01FD'
     1198      model: 'ZenFone 3 Deluxe'
     1199    - regex: '(?:ASUS_)?(Z017DA|ZE520KL|ZE552KL|Z017D|Z012D)'
    10361200      model: 'ZenFone 3'
    10371201    - regex: '(?:ASUS_)?Z01BD'
    10381202      model: 'ZenFone 3 Laser'
    1039     - regex: '(?:ASUS_)?X00DD'
     1203    - regex: '(?:ASUS_)?X00DD|ZC553KL'
    10401204      model: 'ZenFone 3 Max'
    1041     - regex: '(?:ASUS_)?X00LDA'
     1205    - regex: '(?:ASUS_)?(X00LDA|Z01MD)'
    10421206      model: 'ZenFone 4 Selfie'
    1043     - regex: '(?:ASUS_)?(?:X00LD|Z01KDA)'
     1207    - regex: '(?:ASUS_)?(?:X00LD|Z01KDA|ZE554KL)'
    10441208      model: 'ZenFone 4'
    10451209    - regex: '(?:ASUS_)?X00[IH]D'
    10461210      model: 'ZenFone 4 Max'
     1211    - regex: '(?:ASUS_)?ZB602KL'
     1212      model: 'ZenFone Max Pro'
    10471213
    10481214    # general detections
     
    12151381    - regex: '(?:VIV-|BBG-)?vivo[ _]([^);/]+)[);/]+'
    12161382      model: '$1'
     1383
     1384# Vinsoc
     1385Vinsoc:
     1386  regex: '(XA Pro) Build'
     1387  device: 'smartphone'
     1388  model: '$1'
    12171389
    12181390# Bird
     
    12721444# Bmobile
    12731445Bmobile:
    1274   regex: 'Bmobile[_ ]|AX1075'
    1275   device: 'smartphone'
    1276   models:
    1277     - regex: 'AX1075'
    1278       model: 'AX1075'
     1446  regex: 'Bmobile[_ ]|AX-?([1-9][0-9]{2,3}[eEO+]?|7OO)'
     1447  device: 'smartphone'
     1448  models:
     1449    - regex: 'AX-?([1-9][0-9]{2,3}[eEO+]?)'
     1450      model: 'AX$1'
     1451    - regex: 'AX7OO'
     1452      model: 'AX700'
    12791453    - regex: 'Bmobile[_ ]([^/;]+) Build'
    12801454      model: '$1'
     
    14291603  device: 'feature phone'
    14301604  model: '$1'
     1605
     1606# ComTrade Tesla
     1607ComTrade Tesla:
     1608  regex: 'Tesla|Impulse 7.85 3G|Smartphone_6.1|SP(?:6.2|6.2_Lite)|TTL(?:713G|8)'
     1609  device: 'smartphone'
     1610  models:
     1611    - regex: 'TeslaEvo5.0'
     1612      model: 'Evo 5.0'
     1613    - regex: '(Gravity 9.7 SHD)'
     1614      model: '$1'
     1615      device: 'tablet'
     1616    - regex: '(Impulse 7.85 3G)'
     1617      model: '$1'
     1618      device: 'tablet'
     1619    - regex: 'Tesla_SP([^/;]+)L Build'
     1620      model: 'Smartphone $1 Lite'
     1621    - regex: 'Smartphone_6.1'
     1622      model: 'Smartphone 6.1'
     1623    - regex: 'SP6.2_Lite'
     1624      model: 'Smartphone 6.2 Lite'
     1625    - regex: 'Tesla_SP([^/;]+) Build'
     1626      model: 'Smartphone $1'
     1627    - regex: 'SP([^/;]+) Build'
     1628      model: 'Smartphone $1'
     1629    - regex: 'Smartphone ([36])'
     1630      model: 'Smartphone $1'
     1631    - regex: 'Tesla_Tablet_785'
     1632      model: '7.85"'
     1633      device: 'tablet'
     1634    - regex: 'TTH7'
     1635      model: 'H7'
     1636      device: 'tablet'
     1637    - regex: 'TTL7 Build'
     1638      model: 'L7'
     1639      device: 'tablet'
     1640    - regex: 'Tesla_Tablet_L7_3G'
     1641      model: 'L7 3G'
     1642      device: 'tablet'
     1643    - regex: '(L7.1)'
     1644      model: '$1'
     1645      device: 'tablet'
     1646    - regex: 'TTL713G'
     1647      model: 'L7.1 3G'
     1648      device: 'tablet'
     1649    - regex: '(L7 Quad) Build'
     1650      model: '$1'
     1651      device: 'tablet'
     1652    - regex: '(L7 Quad Lite)'
     1653      model: '$1'
     1654      device: 'tablet'
     1655    - regex: 'TTL8 Build'
     1656      model: 'L8'
     1657      device: 'tablet'
     1658    - regex: '(L8.1)'
     1659      model: '$1'
     1660      device: 'tablet'
     1661    - regex: 'TESLA_TABLET_M7'
     1662      model: 'M7'
     1663      device: 'tablet'
     1664    - regex: 'Tesla_Tablet_M8'
     1665      model: 'M8'
     1666      device: 'tablet'
    14311667
    14321668# ConCorde
     
    16721908      model: 'Ursus $1'
    16731909      device: 'tablet'
    1674      
     1910
    16751911    - regex: 'H135[ _]Build'
    16761912      model: 'Atlas'
     
    17802016# Doogee
    17812017Doogee:
    1782   regex: 'DOOGEE[ _-]|Valencia2_Y100pro|(BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)[);/ ]|BL5000[);/ ]'
     2018  regex: 'DOOGEE[ _-]|Valencia2_Y100pro|X5max(?:[_ ]PRO)?|(BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)[);/ ]|BL5000[);/ ]'
    17832019  device: 'smartphone'
    17842020  models:
     
    17872023    - regex: 'BL5000'
    17882024      model: 'BL5000'
     2025    - regex: '(X5max(?:[_ ]PRO)?)'
     2026      model: '$1'
    17892027    - 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?)[);/ ]'
    17902028      model: '$1 $2'
     
    19352173      model: '$1'
    19362174
     2175# Essentielb
     2176Essentielb:
     2177  regex: '(Wooze[_ ](?:I5|L|XL)) Build'
     2178  device: 'smartphone'
     2179  model: '$1'
     2180
    19372181# Rikomagic
    19382182Rikomagic:
     
    19492193# Sony & Sony Ericsson (combined as they are mixed up)
    19502194Sony:
    1951   regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|502SO|701SO|C1[569]0[45]|C2[01]0[45]|C2305|C530[236]|C550[23]|C6[56]0[236]|C6616|C68(?:0[26]|[34]3)|C69(?:0[236]|16|43)|D200[45]|D21(?:0[45]|14)|D22(?:0[236]|12|43)|D230[2356]|D240[36]|D25(?:02|33)|D510[236]|D530[36]|D5322|D5503|D58[03]3|D65(?:0[23]|43)|D66[035]3|D6708|E210[45]|E2115|E5506|E2033|E2[03]03|E23[36]3|E2306|E2312|E2353|E53[03]3|E55[36]3|E56[46305][36]|E58[02]3|E65[35]3|E66[0358]3|E68[358]3|F311[12356]|F331[13]|F321[12356]|F5[13]21|F5122|F813[12]|F833[12]|G312[135]|G311[26]|G322[136]|G3212|G331[123]|G3412|G3416|G3423|G823[12]|G834[123]|G8[14]4[12]|H(?:3213|3223|4213|4233)|H[34]113|H8324|(?: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|SOL22|SOV32|SOV36|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[345]D|[234]E|[12]C|[1235]F|[12]G|[3]H)|R800[aix]|LiveWithWalkman'
     2195  regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|502SO|701SO|C1[569]0[45]|C2[01]0[45]|C2305|C530[236]|C550[23]|C6[56]0[236]|C6616|C68(?:0[26]|[34]3)|C69(?:0[236]|16|43)|D200[45]|D21(?:0[45]|14)|D22(?:0[236]|12|43)|D230[2356]|D240[36]|D25(?:02|33)|D510[236]|D530[36]|D5322|D5503|D58[03]3|D65(?:0[23]|43)|D66[035]3|D6708|E210[45]|E2115|E5506|E2033|E2[03]03|E23[36]3|E2306|E2312|E2353|E53[03]3|E55[36]3|E56[46305][36]|E58[02]3|E65[35]3|E66[0358]3|E68[358]3|F311[12356]|F331[13]|F321[12356]|F5[13]21|F5122|F813[12]|F833[12]|G312[135]|G311[26]|G322[136]|G3212|G331[123]|G3412|G3416|G3423|G823[12]|G834[123]|G8[14]4[12]|H(?:3213|3223|4213|4233)|H[34]113|H8216|H8324|(?: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|SOL22|SOV32|SOV36|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[345]D|[234]E|[12]C|[1235]F|[12]G|[3]H)|R800[aix]|LiveWithWalkman'
    19522196  device: 'smartphone'
    19532197  models:
     
    22412485    - regex: '(?:Sony(?:Ericsson)?)?G814[12]'
    22422486      model: 'Xperia XZ Premium'
    2243     - regex: '(?:Sony(?:Ericsson)?)?H8324'
     2487    - regex: '(?:Sony(?:Ericsson)?)?(?:H8324|H8216)'
    22442488      model: 'Xperia XZ2'
    22452489    - regex: '(?:Sony(?:Ericsson)?)?G331[13]'
     
    23752619# Explay
    23762620Explay:
    2377   regex: 'Explay|ActiveD[ _]|Atlant |Informer[ _][0-9]+|CinemaTV 3G|Surfer[ _][0-9\.]|sQuad[ _][0-9\.]|Onliner[1-3]|RioPlay'
     2621  regex: 'Explay|ActiveD[ _]|Atlant |Informer[ _][0-9]+|CinemaTV 3G|Surfer[ _][0-9\.]|sQuad[ _][0-9\.]|Onliner[1-3]|RioPlay|Leader'
    23782622  device: 'tablet'
    23792623  models:
     
    24022646      device: 'smartphone'
    24032647      model: 'Rio Play'
     2648    - regex: 'Leader'
     2649      model: 'Leader'
    24042650
    24052651# EKO
     
    25552801    - regex: 'Gigaset ([^;/)]+)[);/ ]'
    25562802      model: '$1'
     2803
    25572804# Gionee
    25582805Gionee:
     
    25832830      device: 'feature phone'
    25842831
     2832# Grape
     2833Grape:
     2834  regex: '(?:Grape[ _])?GTM-5([^;/]+) Build'
     2835  device: 'smartphone'
     2836  model: 'GTM-5$1'
     2837
    25852838# Vizio
    25862839Vizio:
     
    25962849# GOCLEVER
    25972850GOCLEVER:
    2598   regex: 'GOCLEVER|QUANTUM|ARIES|INSIGNIA|ORION_|ELIPSO'
     2851  regex: 'GOCLEVER|QUANTUM|ARIES|INSIGNIA|ORION_|ELIPSO|LIBRA[ _]97'
    25992852  device: 'smartphone'
    26002853  models:
     
    26282881    - regex: 'GOCLEVER[ _-]?([^;/)]+)[;/)]'
    26292882      model: '$1'
    2630 
     2883    - regex: 'LIBRA[ _]97'
     2884      model: 'Libra 97'
     2885      device: 'tablet'
     2886
     2887# GoMobile
     2888GoMobile:
     2889  regex: 'GO Onyx|GO[0-9]{3,4}'
     2890  device: 'smartphone'
     2891  models:
     2892    - regex: 'GO Onyx'
     2893      model: 'Go Onyx'
     2894    - regex: 'GO([0-9]{3,4})'
     2895      model: 'Go$1'
    26312896
    26322897# Goly
     
    26422907# Google
    26432908Google:
    2644   regex: 'Nexus|GoogleTV|Glass|CrKey[^a-z0-9]|Pixel Build|Pixel (?:XL|C|2|2 XL) Build'
     2909  regex: 'Nexus|GoogleTV|Glass|CrKey[^a-z0-9]|Pixel Build|Pixel (?:XL|C|2|[23] XL)'
    26452910  device: 'smartphone'
    26462911  models:
     
    26672932    - regex: 'Pixel XL'
    26682933      model: 'Pixel XL'
     2934    - regex: 'Pixel 3 XL'
     2935      model: 'Pixel 3 XL'
    26692936    - regex: 'Pixel 2 XL'
    26702937      model: 'Pixel 2 XL'
     
    27002967# Haier
    27012968Haier:
    2702   regex: 'Haier|(?:HW-)?W(?:716|757|860|970)[);/ ]'
     2969  regex: 'Haier|(?:HW-)?W(?:716|757|860|970)[);/ ]|(?:PAD[ _](D71|G781|d85))'
    27032970  device: 'smartphone'
    27042971  models:
    27052972    - regex: '(?:HW-)?W(716|757|860|970)[);/ ]'
    27062973      model: 'W$1'
     2974    - regex: 'PAD[ -_](D71|G781|d85)'
     2975      device: 'tablet'
     2976      model: '$1'
    27072977    - regex: 'Haier[ _\-](H[WT]-[^/;]+) Build'
    27082978      model: '$1'
     
    27983068# Huawei
    27993069Huawei:
    2800   regex: '(HW-)?(?:Huawei|Ideos|Honor[ _]?|(?:H60-L(?:01|02|03|04|11|12)|H30-(?:C00|L01M?|L02|U10|T00|T10)|G621-TL00M?|PLK-(?:AL10|CL00|TL00|TL01H?|UL00|L01)|SCL-(?:AL00|CL00|TL00H?|L01)|CAM-TL00|CH(?:E2?|M)-[CUT]L00[HM]?|CHE1-CL[12]0|CHE2-L11|CHM-U01|FIG-LX1|DLI-(?:AL10|L[24]2|TL20)|KIW-L21|KIW-TL00H|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508)|NEM-L[52][21]|PLE-70[13]L|BLN-(?:L2[124]|AL10)|BND-(?:AL10|L21)|LLD-AL[012]0|PRA-L[AX]1|PRA-AL00X|RNE-L22)[);/ ])|Bucare Y330-U05|hi6210sft'
     3070  regex: '(HW-)?(?:Huawei|Ideos|Honor[ _]?|(?:(?:ALE|ALP|ANE|ATU|BAC|BLN|BND|BLA|CAM|CHE[12]|CHM|CLT|COL|DLI|DRA|EML|EVA|FIG|FRD|SLA|STF|G621|H[36]0|KIW|LDN|LLD|LYA|MHA|MYA|NEO|NEM|PLE|PLK|PRA|RNE|SCL|SNE|TRT|VKY|VTR|WAS)-[A-Z]{0,2}[0-9]{1,4}[A-Z]?|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508))[);/ ])|Bucare Y330-U05|hi6210sft'
    28013071  device: 'smartphone'
    28023072  models:
     
    28253095    - regex: 'CHM-[CUT]L00[HM]?'
    28263096      model: 'Honor Play 4C'
     3097    - regex: 'DUK-AL20'
     3098      model: 'Honor V9'
    28273099    - regex: '(?:Honor_|HW-)?G621-TL00M?[);/ ]'
    28283100      model: 'G621'
     
    28533125    - regex: '(?:HONOR[ _]?)?DLI-(?:AL10|L[24]2|TL20)'
    28543126      model: 'Honor 6A'
    2855     - regex: '(?:HONOR[ _]?)?BLN-(?:L2[124]|AL10)'
     3127    - regex: '(?:HONOR[ _]?)?BLN-(?:L2[124]|AL[13]0)'
    28563128      model: 'Honor 6X'
    28573129    - regex: '(?:HONOR[ _]?)?BND-(?:AL10|L21)'
    28583130      model: 'Honor 7X'
     3131    - regex: 'FRD-(AL00|L09)'
     3132      model: 'Honor 8'
    28593133    - regex: 'PRA-AL00X'
    28603134      model: 'Honor 8 Lite'
     3135    - regex: 'STF-(AL10|L09)'
     3136      model: 'Honor 9'
    28613137    - regex: 'LLD-AL20'
    28623138      model: 'Honor 9i'
    2863     - regex: 'LLD-AL[01]0'
     3139    - regex: 'LLD-(?:AL[01]0|L31)'
    28643140      model: 'Honor 9 Lite'
     3141    - regex: 'COL-(?:AL[01]0|TL[01]0|L29)'
     3142      model: 'Honor 10'
    28653143    - regex: 'GRA-L09'
    28663144      model: 'P8'
     
    28713149    - regex: 'RNE-L22'
    28723150      model: 'Nova 2I'
     3151    - regex: 'ANE-AL00'
     3152      model: 'Nova 3e'
    28733153    - regex: 'EVA-L[012]9'
    28743154      model: 'P9'
    28753155    - regex: 'VNS-L[23]1'
    28763156      model: 'P9 Lite'
    2877     - regex: 'VTR-L09'
     3157    - regex: 'SLA-L(02|03|22)'
     3158      model: 'P9 Lite Mini'
     3159    - regex: 'VTR-(?:L[02]9|AL00|TL00)'
    28783160      model: 'P10'
    28793161    - regex: 'WAS-L(?:X1|X1A|X2|X2J|X3|03T)'
     
    28813163    - regex: 'BAC-L[02]3'
    28823164      model: 'P10 Selfie'
    2883     - regex: 'VKY-(?:L09|L029|AL00)'
     3165    - regex: 'VKY-(?:AL00|L09|L29)'
    28843166      model: 'P10 Plus'
     3167    - regex: 'EML-(?:AL00|L09|L29)'
     3168      model: 'P20'
    28853169    - regex: 'ANE-LX[123]'
    28863170      model: 'P20 Lite'
     
    28913175    - regex: 'CAM-L(?:03|21)'
    28923176      model: 'Y6II'
    2893     - regex: 'MHA-L[02]9'
     3177    - regex: 'TRT-LX1'
     3178      model: 'Y7 (2017)'
     3179    - regex: 'LDN-L(?:01|X3)'
     3180      model: 'Y7 (2018)'
     3181    - regex: 'LDN-(?:AL00|L21)'
     3182      model: 'Y7 Prime'
     3183    - regex: 'MHA-(?:L[02]9|AL00)'
    28943184      model: 'Mate 9'
     3185    - regex: 'ALP-AL00'
     3186      model: 'Mate 10'
    28953187    - regex: 'RNE-L(?:03|21)'
    28963188      model: 'Mate 10 Lite'
    28973189    - regex: 'BLA-(?:L[02]9|AL00)'
    28983190      model: 'Mate 10 Pro'
     3191    - regex: 'LYA-L(09|29)'
     3192      model: 'Mate 20 Pro'
     3193    - regex: 'SNE-LX[0-3]'
     3194      model: 'Mate 20 Lite'
     3195    - regex: 'NEO-AL00'
     3196      model: 'Mate RS'
    28993197    - regex: 'Bucare Y330-U05'
    29003198      model: 'Y330-U05'
     3199    - regex: 'MYA-L11'
     3200      model: 'Y6 (2016)'
     3201    - regex: 'MYA-L22'
     3202      model: 'Y5 (2017)'
     3203    - regex: 'DRA-L(01|03|21|23)'
     3204      model: 'Y5 (2018)'
    29013205    - regex: 'T1-A21w'
    29023206      device: 'tablet'
     
    29913295# IconBIT
    29923296IconBIT:
    2993   regex: 'NT-3506M'
    2994   device: 'smartphone'
     3297  regex: 'NT-(3506M|0704S|0909T|1009T|10[01]1T|1017T|3601P/3602P|3603P|3702S|3805C|3905T|3701S|0701S|0805C|0902S|370[23]M)'
     3298  device: 'tablet'
    29953299  models:
    29963300    - regex: 'NT-3506M'
     3301      device: 'smartphone'
    29973302      model: 'NetTAB Mercury Quad FHD'
     3303    - regex: 'NT-0704S'
     3304      model: 'NetTAB Sky LE'
     3305    - regex: 'NT-0909T'
     3306      model: 'NetTAB Thor IZ'
     3307    - regex: 'NT-1009T'
     3308      model: 'NetTAB Thor quad II'
     3309    - regex: 'NT-10[01]1T'
     3310      model: 'NetTAB Thor LE'
     3311    - regex: 'NT-1017T'
     3312      model: 'NetTAB Thor 3G quad'
     3313    - regex: 'NT-3601P/3602P'
     3314      model: 'NetTAB Pocket 3G'
     3315    - regex: 'NT-3603P'
     3316      model: 'NetTAB Pocket 3G Slim'
     3317    - regex: 'NT-3702S'
     3318      model: 'NetTAB Sky HD 3G'
     3319    - regex: 'NT-3805C'
     3320      model: 'NetTAB Skat 3G quad'
     3321    - regex: 'NT-3701S'
     3322      model: 'NetTAB Sky 3G duo'
     3323    - regex: 'NT-3905T'
     3324      model: 'NetTAB Thor ZX 3G'
     3325    - regex: 'NT-0701S'
     3326      model: 'NetTAB Sky net'
     3327    - regex: 'NT-0805C'
     3328      model: 'NetTAB Skat MX'
     3329    - regex: 'NT-0902S'
     3330      model: 'NetTAB Space quad RX'
     3331    - regex: 'NT-3702M'
     3332      model: 'NetTAB Matrix 3G duo'
     3333    - regex: 'NT-3703M'
     3334      model: 'NetTAB Matrix 3GT'
    29983335
    29993336# LYF
     
    32253562# Intex
    32263563Intex:
    3227   regex: 'Intex|(Aqua|Cloud)[ _\.]([^/;\)]+)(?:[ _]Build|(?<!Build)/|\))'
     3564  regex: 'Intex|(Aqua|Cloud[ _][XY][0-9]{1})'
    32283565  device: 'smartphone'
    32293566  models:
     
    32793616      model: '$1'
    32803617
     3618# Impression
     3619Impression:
     3620  regex: '(?:Impression[ _\-]?([^/;]+)|A502|I10\-LE|ImPad[ _]?(.*)|ImSmart[ _]?(.*)) Build'
     3621  device: 'tablet'
     3622  models:
     3623    - regex: '(A502)'
     3624      model: '$1'
     3625      device: 'smartphone'
     3626    - regex: 'ImSmart[ _]?(.*) Build'
     3627      model: 'ImSmart $1'
     3628      device: 'smartphone'
     3629    - regex: 'ImPad[ _]?(.*) Build'
     3630      model: 'ImPad $1'
     3631    - regex: '(I10\-LE)'
     3632      model: '$1'
     3633      device: 'smartphone'
     3634    - regex: 'Impression[ _\-]?([^/;]+) Build'
     3635      model: '$1'
     3636
    32813637# iTel
    32823638iTel:
     
    33243680    - regex: 'Kazam ([^;/]+) Build'
    33253681      model: '$1'
     3682
     3683# Kempler & Strauss
     3684'Kempler & Strauss':
     3685  regex: 'Alumini3Plus|Alumini ?2'
     3686  device: 'smartphone'
     3687  models:
     3688    - regex: 'Alumini ?2'
     3689      model: 'Alumini 2'
     3690    - regex: 'Alumini3Plus'
     3691      model: 'Alumini 3 Plus'
    33263692
    33273693# Kiano
     
    35643930# lenovo
    35653931Lenovo:
    3566   regex: '(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet|Tab2A[0-9]-[0-9]{2}[a-z]?|YT3-X50L|ZUK[ -_]|K50a40'
     3932  regex: '(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet|Tab2A[0-9]-[0-9]{2}[a-z]?|YT3-X50L|ZUK[ -_]|K50a40|TB-(8504F|X304F|X704V|X704A)'
    35673933  device: 'smartphone'
    35683934  models:
     
    35973963      model: 'TAB4 10'
    35983964      device: 'tablet'
     3965    - regex: 'TB-X704V'
     3966      model: 'TAB4 10 Plus'
     3967      device: 'tablet'
     3968    - regex: 'TB-X704A'
     3969      model: 'Moto Tab'
     3970      device: 'tablet'
    35993971    - regex: 'Lenovo ?B8000(-[FH])?'
    36003972      model: 'Yoga Tablet 10'
     
    36273999    - regex: 'Lenovo ?A3300-(?:GV|H)'
    36284000      model: 'TAB 2 A7-30'
     4001      device: 'tablet'
     4002    - regex: 'TB-8504F'
     4003      model: 'TAB 4 8'
     4004      device: 'tablet'
     4005    - regex: 'TB-X304F'
     4006      model: 'TAB 4 10'
    36294007      device: 'tablet'
    36304008    - regex: 'Tab2A([0-9]-[0-9]{2}[a-z]?)'
     
    37574135      model: '$1'
    37584136
    3759 # lg
     4137# LG
    37604138LG:
    3761   regex: 'LG|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:VX[0-9]+|L-0[12]D|L-07C|P713|LM-Q710(?:\(FGN\))?|LM-X210(?:\(G\)|CM)?|LM-G710N)[);/ ]|NetCast|VS(?:995|410PP|415PP|425PP)'
     4139  regex: 'LG|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:VX[0-9]+|L-0[12]D|L-07C|P713|LM-Q710(?:\(FGN\))?|LM-X210(?:\(G\)|CM)?|LM-G710N)[);/ ]|NetCast|VS(?:988|99[56]|410PP|415PP|425PP)|Nexsus 5'
    37624140  device: 'smartphone'
    37634141  models:
     
    37764154    - regex: 'LG-H735'
    37774155      model: 'G4 Beat'
    3778     - regex: 'LG-H85[08]'
     4156    - regex: 'LG-H8(?:20|30|5[08]|60)'
    37794157      model: 'G5'
    37804158    - regex: 'LG-H84[05]'
    37814159      model: 'G5 SE'
     4160    - regex: 'VS988'
     4161      model: 'G6'
    37824162    - regex: '(?:LG-)?H502'
    37834163      model: 'Magna'
    37844164    - regex: '(?:LG-)?H343'
    37854165      model: 'Risio'
     4166    - regex: '(?:LG-)?H650'
     4167      model: 'Zero'
    37864168    - regex: '(?:LG-)?M154'
    37874169      model: 'Risio 2'
     4170    - regex: '(?:LG-)?P500H'
     4171      model: 'Optimus One'
    37884172    - regex: 'P713'
    37894173      model: 'Optimus L7II'
     
    38144198    - regex: '(?:LG-)?US999'
    38154199      model: 'V20'
     4200    - regex: 'VS996'
     4201      model: 'V30'
    38164202    - regex: '(?:LG-)?VS410PP'
    38174203      model: 'Optimus Zone'
     
    38224208    - regex: '(?:LG-)?K100'
    38234209      model: 'K3'
    3824     - regex: '(?:LG-?)?(?:K|MS)330'
     4210    - regex: '(?:LG-?)?(?:K|MS)33[02]'
    38254211      model: 'K7'
     4212    - regex: '(?:LG-?)?(?:K|MS)350'
     4213      model: 'K8'
    38264214    - regex: '(?:LG-)?K420(?:N)?'
    38274215      model: 'K10'
     
    41594547# Meizu
    41604548Meizu:
    4161   regex: 'Meizu|MZ-[a-z]|(M04[05]|M35[1356]|MX[ -]?[2345](?: Pro)?|(?:MZ-)?m[1-6] note|M57[18]C|M3[ESX]|M031|m1 metal|M1 E|M2|M2 E|PRO 6|PRO 7-H)[);/ ]'
     4549  regex: 'Meizu|MZ-[a-z]|(M04[05]|M35[1356]|M6T|MX[ -]?[2345](?: Pro)?|(?:MZ-)?m[1-6] note|M57[18]C|M3[ESX]|M031|m1 metal|M1 E|M2|M2 E|PRO 6|PRO 7-H)[);/ ]'
    41624550  device: 'smartphone'
    41634551  models:
     
    41744562    - regex: '(?:MZ-)?M578C|M2[);/ ]'
    41754563      model: 'M2'
     4564    - regex: 'M6T'
     4565      model: 'M6T'
    41764566    - regex: 'M3E'
    41774567      model: 'M3E'
     
    44814871      model: 'Moto M'
    44824872
    4483     - regex: 'Moto ([CGE]) \(([a-z0-9]+)\)( Plus)?'
     4873    - regex: 'Moto ([CGEZ]) \(([a-z0-9]+)\)( Plus| Play)?'
    44844874      model: 'Moto $1$2$3'
    4485     - regex: 'Moto ?([CGE])([0-9]+)'
     4875    - regex: 'Moto ?([CGEZ])([0-9]+)( Plus| Play)?'
     4876      model: 'Moto $1$2$3'
     4877    - regex: 'Moto ?([CGEZ])( Plus| Play)?'
    44864878      model: 'Moto $1$2'
    4487     - regex: 'Moto ?([CGE])'
    4488       model: 'Moto $1'
    44894879
    44904880    - regex: 'Motorola[ _\-]([a-z0-9]+)'
     
    45304920      model: '$1'
    45314921
     4922# Myria
     4923Myria:
     4924  regex: ' (Myria_[^/;]+|502M|Cozy|Easy tab 9|Grand) Build'
     4925  device: 'smartphone'
     4926  models:
     4927    - regex: 'Myria_([^/;]+) Build'
     4928      model: '$1'
     4929    - regex: '(502M|Grand)'
     4930      model: '$1'
     4931    - regex: '(Cozy|Easy tab 9)'
     4932      model: '$1'
     4933      device: 'tablet'
     4934
    45324935# M.T.T.
    45334936M.T.T.:
     
    45624965    - regex: 'Neffos ([^/;]+)/'
    45634966      model: '$1'
     4967
     4968# Nextbit
     4969Nextbit:
     4970  regex: '(Robin) Build'
     4971  device: 'smartphone'
     4972  model: '$1'
    45644973
    45654974# newgen
     
    48165225# oppo
    48175226OPPO:
    4818   regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|(?:X90[07][0679]|U707T?|X909T?|R(?:10[01]1|2001|201[07]|6007|7005|7007|80[13579]|81[13579]|82[01379]|83[013]|800[067]|8015|810[679]|811[13]|820[057])[KLSTW]?|N520[79]|N5117|A33f|A37fw?|PAC[T|M]00)[);/ ]|R7kf|R7Plusm|A1601|CPH[0-9]{4}|PADM00'
     5227  regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|(?:X90[07][0679]|U707T?|X909T?|R(?:10[01]1|2001|201[07]|6007|7005|7007|80[13579]|81[13579]|82[01379]|83[013]|800[067]|8015|810[679]|811[13]|820[057])[KLSTW]?|N520[79]|N5117|A33f|A37fw?|PAAM00|PAC[T|M]00|PBAM00)[);/ ]|R7kf|R7Plusm|A1601|CPH[0-9]{4}|PADM00'
    48195228  device: 'smartphone'
    48205229  models:
     
    48895298    - regex: '(?:OPPO[ _]?)?CPH1729[);/ ]'
    48905299      model: 'A83'
     5300    - regex: '(?:OPPO[ _]?)?CPH1801[);/ ]'
     5301      model: 'A71'
    48915302    - regex: '(?:OPPO[ _]?)?CPH1819[);/ ]'
    48925303      model: 'F7'
     
    48975308    - regex: '(?:OPPO[ _]?)?PADM00'
    48985309      model: 'A3'
     5310    - regex: '(?:OPPO[ _]?)?PBAM00'
     5311      model: 'A5'
    48995312    - regex: '(?:OPPO[ _]?)?A1601 Build'
    49005313      model: 'F1s'
    49015314    - regex: '(?:OPPO[ _]?)?R1011 Build'
    49025315      model: 'Joy Plus'
    4903     - regex: '(?:OPPO[ _]?)?PAC[TM]00 Build'
     5316    - regex: '(?:OPPO[ _]?)?(?:PAC[TM]00|PAAM00) Build'
    49045317      model: 'R15'
    49055318
     
    50635476  device: 'smartphone'
    50645477  model: '$1'
     5478
     5479# Primepad
     5480Primepad:
     5481  regex: 'PD\-(3127NC|3127) Build'
     5482  device: 'tablet'
     5483  models:
     5484    - regex: 'PD\-3127NC Build'
     5485      model: 'PD-3127NC'
     5486    - regex: 'PD\-3127 Build'
     5487      model: 'PD-3127'
    50655488
    50665489# Pioneer
     
    51905613# Samsung
    51915614Samsung:
    5192   regex: 'SAMSUNG|Maple |SC-(?:02[CH]|04E|01F)|N[57]100|N5110|N9100|S(?:CH|GH|PH|EC|AM|HV|HW|M)-|SMART-TV|GT-|Galaxy|(?:portalmmm|o2imode)/2\.0 [SZ]|sam[rua]|vollo Vi86[);/ ]|(?:OTV-)?SMT-E5015|ISW11SC|SCV35'
     5615  regex: 'SAMSUNG|Maple |SC-(?:02[CH]|04E|01F)|N[57]100|N5110|N9100|S(?:CH|GH|PH|EC|AM|HV|HW|M)-|SMART-TV|GT-|Galaxy|(?:portalmmm|o2imode)/2\.0 [SZ]|sam[rua]|vollo Vi86[);/ ]|(?:OTV-)?SMT-E5015|ISW11SC|SCV35|404SC'
    51935616  device: 'smartphone'
    51945617  models:
     
    54145837    - regex: '(?:SAMSUNG-)?GT-I8150'
    54155838      model: 'GALAXY W'
     5839    - regex: '(?:SAMSUNG-)?GT-S5830'
     5840      model: 'GALAXY Ace'
    54165841    - regex: '(?:SAMSUNG-)?GT-I8160'
    54175842      model: 'GALAXY Ace 2'
     
    54345859    - regex: '(?:SAMSUNG-)?SM-E500(?:F|H|HQ|M)'
    54355860      model: 'GALAXY E5'
     5861    - regex: '(?:SAMSUNG-)?SM-E700(?:0|9|F|H|M)'
     5862      model: 'GALAXY E7'
    54365863    - regex: '(?:SAMSUNG-)?GT-I90(?:00|08|18|88)'
    54375864      model: 'GALAXY S'
     
    55465973    - regex: '(?:SAMSUNG-)?SM-G920(?:A|F|FD|FQ|I|P|R|S|T|V|8|9)'
    55475974      model: 'GALAXY S6'
     5975    - regex: '404SC'
     5976      model: 'GALAXY S6 edge (Softbank)'
    55485977    - regex: '(?:SAMSUNG-)?SM-G925[FIPRVW]'
    55495978      model: 'GALAXY S6 edge'
     
    55525981    - regex: '(?:SAMSUNG-)?SM-G930(?:A|F|FD|K|P|R|T|U|V|W8)'
    55535982      model: 'GALAXY S7'
    5554     - regex: '(?:SAMSUNG-)?SM-G935[AFLPTV]|SC-02H'
     5983    - regex: '(?:SAMSUNG-)?SM-G935[AFLPSTV]|SC-02H'
    55555984      model: 'GALAXY S7 edge'
    55565985    - regex: '(?:SAMSUNG-)?SM-G950[FU]'
     
    55585987    - regex: '(?:SAMSUNG-)?SM-G955[AFKLNPRTUVW0]|SCV35'
    55595988      model: 'GALAXY S8+'
    5560     - regex: '(?:SAMSUNG-)?SM-G960[FUW0]'
     5989    - regex: '(?:SAMSUNG-)?SM-G960[FNUW0]'
    55615990      model: 'GALAXY S9'
    55625991    - regex: '(?:SAMSUNG-)?SM-G965[FUW0]'
     
    55886017    - regex: '(?:SAMSUNG-)?SM-(?:A720F|A700[FKLS]|A710[FMY0])'
    55896018      model: 'GALAXY A7'
    5590     - regex: '(?:SAMSUNG-)?SM-A530F'
     6019    - regex: '(?:SAMSUNG-)?SM-A(?:530F|800F)'
    55916020      model: 'GALAXY A8'
    55926021    - regex: '(?:SAMSUNG-)?SM-A9000'
     
    56226051    - regex: '(?:SAMSUNG-)?SM-J530[FY]'
    56236052      model: 'GALAXY J5 (2017)'
    5624     - regex: '(?:SAMSUNG-)?SM-G570F'
     6053    - regex: '(?:SAMSUNG-)?SM-G570[FY]'
    56256054      model: 'GALAXY J5 Prime'
    56266055    - regex: '(?:SAMSUNG-)?SM-J600[FG]'
     
    56466075    - regex: '(?:SAMSUNG-)?SM-C900[FY0]'
    56476076      model: 'GALAXY C9 Pro'
     6077    - regex: '(?:SAMSUNG-)?SM-G150'
     6078      model: 'GALAXY Folder'
     6079    - regex: '(?:SAMSUNG-)?SM-G165'
     6080      model: 'GALAXY Folder 2'
    56486081
    56496082    # explicit phablet models
     
    57056138      model: 'GALAXY Note 4 Edge'
    57066139      device: 'phablet'
    5707     - regex: '(?:SAMSUNG-)?SM-N920[0ACGILST]'
     6140    - regex: '(?:SAMSUNG-)?SM-N920[0ACGIKLST]'
    57086141      model: 'GALAXY Note 5'
    57096142      device: 'phablet'
     
    57716204    - regex: 'sam([rua][0-9]+)'
    57726205      model: 'SCH-$1'
     6206
     6207# Sanei
     6208Sanei:
     6209  regex: '(?:8312D|G(60[25]|70[3568]G?|785|803)|N83(?:-2cpu)?|N91) Build'
     6210  device: 'smartphone'
     6211  models:
     6212    - regex: 'N83'
     6213      model: 'N83'
     6214    - regex: 'N91'
     6215      model: 'N91'
     6216    - regex: '8312D'
     6217      model: 'G101'
     6218    - regex: 'G(60[25]|70[3568]G?|785|803)'
     6219      model: 'G$1'
    57736220
    57746221# Sencor
     
    59006347# Supra
    59016348Supra:
    5902   regex: 'SUPRA ([^;/]+) Build'
     6349  regex: 'SUPRA ([^;/]+) Build|NVTAB 7.0 3G'
    59036350  device: 'smartphone'
    59046351  models:
    59056352    - regex: 'SUPRA ([^;/]+) Build'
     6353      device: 'tablet'
     6354      model: '$1'
     6355    - regex: '(NVTAB 7.0 3G)'
    59066356      device: 'tablet'
    59076357      model: '$1'
     
    63476797# teXet
    63486798teXet:
    6349   regex: '(NaviPad [^/;]*) Build'
     6799  regex: 'Texet|(NaviPad [^/;]*) Build|TM-(?:1046|1058|1057|1067|3000|3200R|3500|4003|4071|450[34]|451[30]|4377|4082R|550[83]|5010|5017|5[23]77|6003|6906|702[13]|7055HD|709[69]|9747BT|9758|9751HD|9767|5513|520[410]|5505|507[13]|5581|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[10]|9743W|9750HD|7043XD|7049|7887|7037W|702[46])|TB-(771A|711A)|X-Force[\(-]?TM-5009\)?|X-Plus[\(-]?TM-5577\)?|X-pad (?:AIR 8|iX 7) 3G'
    63506800  device: 'tablet'
    6351   model: '$1'
     6801  models:
     6802    - regex: 'TM-9749'
     6803      model: 'X-pad Plus 7.1 3G'
     6804    - regex: 'TM-9746'
     6805      model: 'X-pad Plus 7 3G'
     6806    - regex: 'TM-8051'
     6807      model: 'X-pad Force 8i 3G'
     6808    - regex: 'TM-1058'
     6809      model: 'X-Force 10 3G'
     6810    - regex: 'TM-8048'
     6811      model: 'X-pad Force 8 3G'
     6812    - regex: '(NaviPad [^/;]*) Build'
     6813      model: '$1'
     6814    - regex: 'TM-7055HD'
     6815      model: 'NaviPad 3G'
     6816    - regex: 'TM-9758'
     6817      model: 'X-pad Style 10'
     6818    - regex: '(X-pad (?:AIR 8|iX 7) 3G)'
     6819      model: '$1'
     6820    - regex: 'TM-7096'
     6821      model: 'X-pad NAVI 7.3 3G'
     6822    - regex: 'TM-7099'
     6823      model: 'X-pad NAVI 7.4 3G'
     6824    - regex: 'TM-1046'
     6825      model: 'X-pad NAVI 10 3G'
     6826    - regex: 'TM-7859'
     6827      model: 'X-pad NAVI 8.2 3G'
     6828    - regex: 'TM-7049'
     6829      model: 'NaviPad TM-7049 3G'
     6830    - regex: 'TM-7887'
     6831      model: 'NaviPad TM-7887 3G'
     6832    - regex: 'TM-8066'
     6833      model: 'X-pad Rapid 8.2 4G'
     6834    - regex: '(TM-(?:1057|1067|6906|8043|9748[_ ]3G|9740|9757(?:[_ ]3G)?|7047HD[ _]3G|9747BT|9751HD|702[13]|705[23]|7041|9720|7047HD[_ ]3G|8044|8041HD|973[78]W|9743W|974[10]|9750HD|7043XD|7037W|702[46])|TB-(?:771A|711A|8041HD))'
     6835      model: '$1'
     6836    - regex: 'TM-4503'
     6837      device: 'smartphone'
     6838      model: 'X-Quad'
     6839    - regex: '(TM-(?:3000|3200R|4003|4083|4377|4504|451[30]|500[35]|5[23]77|5571|3204R|520[04]|5581|5505|507[13]|5017|6003|5513))'
     6840      device: 'smartphone'
     6841      model: '$1'
     6842    - regex: 'TM-5006'
     6843      device: 'smartphone'
     6844      model: 'X-Line'
     6845    - regex: 'TM-5007'
     6846      device: 'smartphone'
     6847      model: 'X-Shine'
     6848    - regex: 'TM-5201'
     6849      device: 'smartphone'
     6850      model: 'Rock'
     6851    - regex: 'TM-4515'
     6852      device: 'smartphone'
     6853      model: 'X-Style'
     6854    - regex: 'TM-9767'
     6855      model: 'X-pad Style 10 3G'
     6856    - regex: 'TM-(5016|3500)'
     6857      device: 'smartphone'
     6858      model: 'X-Maxi 2'
     6859    - regex: 'TM-4071'
     6860      device: 'smartphone'
     6861      model: 'X-Smart'
     6862    - regex: 'TM-4982'
     6863      device: 'smartphone'
     6864      model: 'iX-Maxi'
     6865    - regex: 'TM-5010'
     6866      device: 'smartphone'
     6867      model: 'X-Selfie'
     6868    - regex: 'TM-4082R'
     6869      device: 'smartphone'
     6870      model: 'X-Driver Quad'
     6871    - regex: 'TM-5503'
     6872      device: 'smartphone'
     6873      model: 'X-Mage'
     6874    - regex: 'TM-5508'
     6875      device: 'smartphone'
     6876      model: 'X-Cosmo'
     6877    - regex: 'X-Force[\(-]?TM-5009\)?'
     6878      device: 'smartphone'
     6879      model: 'X-Force'
     6880    - regex: 'X-Plus[\(-]?TM-5577\)?'
     6881      device: 'smartphone'
     6882      model: 'X-Plus'
    63526883
    63536884# Telenor
     
    63976928  model: 'Tolino Tab $1'
    63986929
     6930# Top House
     6931Top House:
     6932  regex: 'Coto[_ ]|X1013'
     6933  device: 'smartphone'
     6934  models:
     6935    - regex: 'Coto W418'
     6936      model: 'Coto W418'
     6937    - regex: 'COTO_T117'
     6938      model: 'Coto T117'
     6939      device: 'tablet'
     6940    - regex: 'X1013'
     6941      model: 'X1013'
     6942      device: 'tablet'
     6943
    63996944# Toplux
    64006945Toplux:
     
    64036948  model: '$1'
    64046949
     6950# Touchmate
     6951Touchmate:
     6952  regex: 'TOUCHMATE|(TM-(?:MID1020A|MID710|MID798|MID792|MID788D|SM500N|SM410))'
     6953  device: 'smartphone'
     6954  models:
     6955    - regex: '(TM-(?:MID1020A|MID710|MID798|MID792|MID788D))'
     6956      device: 'tablet'
     6957      model: '$1'
     6958    - regex: '(TM-(?:SM500N|SM410))'
     6959      model:  '$1'
     6960    - regex: 'Touchmate ([^/;]+) Build'
     6961      model:  '$1'
     6962
    64056963# TrekStor
    64066964TrekStor:
    6407   regex: '(?:TrekStor|Surftab) ([^/;]+) Build|Surftab[^;]*(?:;|$)|ST10216-2A|VT10416-[12]'
     6965  regex: '(?:TrekStor|Surftab) ([^/;]+) Build|Surftab[^;\)]*(?:[;\)]|$)|ST10216-2A|VT10416-[12]'
    64086966  device: 'tablet'
    64096967  models:
     
    64146972    - regex: 'Surftab ([^/;]+) Build'
    64156973      model: 'SurfTab $1'
    6416     - regex: 'Surftab[ _]([^;]*)(?:;|$)'
     6974    - regex: 'Surftab[ _]([^;\)]*)(?:[;\)]|$)'
    64176975      model: 'SurfTab $1'
    64186976
     
    68677425# Wiko
    68687426Wiko:
    6869   regex: '(?:WIKO-)?CINK_[a-z0-9_]+|(?:WIKO-)?HIGHWAY_[a-z0-9_]+|(?:WIKO-)?(?:Cink([^/;]*)|Highway([^/;]*)|Iggy|Stairway|Rainbow ?(Jam|Lite|Up)?|Darkside|Darkmoon|Darkfull|Darknight|Freddy|FEVER|Jerry[2]?|Sublim|Ozzy|JIMMY|Barry|Birdy|Bloom|Getaway|Goa|Kite|Robby|Lenny[2-9]?|Slide|Sunset[2-9]?|Sunny[2-9]?|Tommy[2-9]?|PULP(?: Fab)?|Wax|WIM Lite|Ridge(?: Fab)?|U FEEL(?: Prime)?|U PULSE LITE|View XL|View Prime)(?: Plus)?(?: 4G)?(?: Build|$)|W_K600'
     7427  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|Kite|Robby|Lenny[2-9]?|Slide|Sunset[2-9]?|Sunny[2-9]?|Tommy[2-9]?|PULP(?: Fab)?|Wax|HARRY|WIM Lite|Ridge(?: Fab)?|U FEEL(?: Prime| Lite)?|U PULSE(?: LITE)?|View XL|View Prime)(?: Plus)?(?: 4G)?(?: Build|$)|W_K600'
    68707428  device: 'smartphone'
    68717429  models:
     
    69547512    - regex: '(?:WIKO-)?Wax'
    69557513      model: 'Wax'
     7514    - regex: '(?:WIKO-)?HARRY'
     7515      model: 'Harry'
    69567516    - regex: '(?:WIKO-)?WIM Lite'
    69577517      model: 'WIM Lite'
     
    69687528    - regex: '(?:WIKO-)?U PULSE LITE'
    69697529      model: 'U Pulse Lite'
     7530    - regex: '(?:WIKO-)?U PULSE'
     7531      model: 'U Pulse'
     7532    - regex: '(?:WIKO-)?U FEEL LITE'
     7533      model: 'U Feel Lite'
    69707534    - regex: '(?:WIKO-)?U FEEL PRIME'
    69717535      model: 'U Feel Prime'
     
    69767540    - regex: '(?:WIKO-)?View Prime'
    69777541      model: 'View Prime'
     7542    - regex: 'Wiko ([^/;]+) Build'
     7543      model: '$1'
     7544    - regex: 'Wiko ([^/; ]+)'
     7545      model: '$1'
    69787546
    69797547# Wileyfox
    69807548Wileyfox:
    6981  regex: '(?:Wileyfox [^/]+)|Swift([^/]+) Build'
    6982  device: 'smartphone'
    6983  models:
    6984    - regex: 'Wileyfox ([^/]+) Build'
    6985      model: '$1'
    6986    - regex: 'Swift ([^/]+) Build'
    6987      model: 'Swift $1'
     7549  regex: '(?:Wileyfox [^/]+)|Swift([^/]+) Build'
     7550  device: 'smartphone'
     7551  models:
     7552    - regex: 'Wileyfox ([^/]+) Build'
     7553      model: '$1'
     7554    - regex: 'Swift ([^/]+) Build'
     7555      model: 'Swift $1'
    69887556
    69897557# Wolder
     
    70417609      model: 'MI MIX 2'
    70427610
    7043     - regex: 'Redmi Note ([^;/]+)? .+?\)'
     7611    - regex: 'Redmi Note ([^;/) ]+)?'
    70447612      model: 'Redmi Note $1'
    70457613      device: 'phablet'
    7046     - regex: 'Redmi ([^;/]+)? .+?\)'
     7614    - regex: 'Redmi ([^;/) ]+)?'
    70477615      model: 'Redmi $1'
    7048     - regex: 'MI Note ([^;/]+)? .+?\)'
     7616    - regex: 'MI Note ([^;/) ]+)?'
    70497617      model: 'MI Note $1'
    70507618      device: 'phablet'
     
    73827950# ZTE
    73837951ZTE:
    7384   regex: 'ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade (?:L[2357]|S6|V[678]|X7|A520)|N9[15]8St|NX(?:403A|40[X2]|507J|503A|505J|506J|508J|510J|511J|513J|529J|531J|549J|563J|569H|601J)|Z331|N9510|N9180|N9101|NX406E|N9515|N952[01]|N9810|N799D|[UV]9180|[UV]9815|Z768G|Z820|Z835|Z851M|Z855|Z98[123]|Z986DL|A460)[);/ ]'
     7952  regex: 'ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade (?:L[2357]|S6|V[678]|X7|A520)|N9[15]8St|NX(?:403A|40[X2]|507J|503A|505J|506J|508J|510J|511J|513J|529J|531J|549J|551J|563J|569H|601J)|N951[057]|N9180|N9101|N913[67]|NX406E|N952[01]|N9560|N9810|N799D|[UV]9180|[UV]9815|Z(?:233V|331|667T|768G|792|81[25]|820|83[12359]|85[125]|851M|(557|717|798|836|861|916)BL|986DL|(232|718|828)TL|(233|353|558|717|799|837|862|899|917)VL|955A|95[68]|965|97[18]|98[123]|986U|999)|A460)[);/ ]'
    73857953  device: 'smartphone'
    73867954  models:
     
    73947962    - regex: 'N9101[);/ ]'
    73957963      model: 'Imperial'
     7964    - regex: 'N9136[);/ ]'
     7965      model: 'Prestige 2'
     7966    - regex: 'N9137[);/ ]'
     7967      model: 'Tempo X'
    73967968    - regex: 'N9180[);/ ]'
    73977969      model: 'V5'
    73987970    - regex: 'N9510[);/ ]'
    73997971      model: 'Wrap 4G'
     7972    - regex: 'N9517[);/ ]'
     7973      model: 'Blade Force'
    74007974    - regex: 'N9515[);/ ]'
    74017975      model: 'Wrap Sync'
     
    74047978    - regex: 'N9521[);/ ]'
    74057979      model: 'Boost Max+'
     7980    - regex: 'N9560[);/ ]'
     7981      model: 'Max XL'
    74067982    - regex: 'N9810[);/ ]'
    74077983      model: 'Vital'
     
    74308006    - regex: 'NX549J[);/ ]'
    74318007      model: 'Nubia Z11 mini S'
     8008    - regex: 'NX551J[);/ ]'
     8009      model: 'Nubia M2'
    74328010    - regex: '(?:NX569H|NX563J)[);/ ]'
    74338011      model: 'Nubia Z17'
     
    74748052    - regex: 'Z820'
    74758053      model: 'Obsidian'
     8054    - regex: 'Z986U'
     8055      model: 'Blade Max 3'
     8056    - regex: 'Z971'
     8057      model: 'Blade Spark'
     8058    - regex: 'Z978'
     8059      model: 'Blade V8 Pro'
     8060    - regex: 'Z839'
     8061      model: 'Blade Vantage'
     8062    - regex: 'Z965'
     8063      model: 'Blade X'
    74768064    - regex: 'Z981'
    74778065      model: 'Blade Z Max Pro'
     
    74828070    - regex: 'Blade (A460)'
    74838071      model: 'Blade $1'
     8072    - regex: 'Z717[BV]L[);/ ]'
     8073      model: 'Citrine LTE'
     8074    - regex: 'Z233V'
     8075      model: 'Cymbal LTE'
     8076    - regex: 'Z233VL'
     8077      model: 'Cymbal-C LTE'
     8078    - regex: 'Z232TL'
     8079      model: 'Cymbal-G LTE'
     8080    - regex: 'Z353VL'
     8081      model: 'Cymbal-T LTE'
     8082    - regex: 'Z956'
     8083      model: 'Grand X 4'
     8084    - regex: 'Z718TL'
     8085      model: 'Jasper LTE'
     8086    - regex: '(?:Z798BL|Z799VL)[);/ ]'
     8087      model: 'Majesty Pro LTE'
     8088    - regex: 'Z899VL'
     8089      model: 'Majesty Pro Plus LTE'
     8090    - regex: 'Z828TL'
     8091      model: 'Midnight Pro LTE'
    74848092    - regex: 'NX406E[);/ ]'
    74858093      model: 'Nubia Z5S'
     8094    - regex: 'Z792'
     8095      model: 'Fanfare'
     8096    - regex: 'Z812'
     8097      model: 'Maven'
     8098    - regex: 'Z815'
     8099      model: 'Fanfare 2'
     8100    - regex: 'Z831'
     8101      model: 'Maven 2'
     8102    - regex: 'Z832'
     8103      model: 'Sonata 3'
     8104    - regex: 'Z835'
     8105      model: 'Maven 3'
     8106    - regex: 'Z851[);/ ]'
     8107      model: 'Prelude+'
    74868108    - regex: 'Z851M'
    74878109      model: 'Overture 3'
    7488     - regex: 'Z835'
    7489       model: 'Maven 3'
     8110    - regex: 'Z852'
     8111      model: 'Fanfare 3'
    74908112    - regex: 'Z855'
    74918113      model: 'Avid 4'
     8114    - regex: 'Z833'
     8115      model: 'Avid TRIO'
     8116    - regex: '(?:Z836BL|Z837VL)[);/ ]'
     8117      model: 'ZFive 2 LTE'
     8118    - regex: 'Z558VL'
     8119      model: 'ZFive C LTE'
     8120    - regex: 'Z557BL'
     8121      model: 'ZFive G LTE'
     8122    - regex: '(?:Z861BL|Z862VL)[);/ ]'
     8123      model: 'ZFive L LTE'
     8124    - regex: 'Z916BL'
     8125      model: 'ZMax Grand LTE'
     8126    - regex: 'Z917VL'
     8127      model: 'ZMax Champ LTE'
     8128    - regex: '(?:Z958|Z955A)[);/ ]'
     8129      model: 'ZMax 2'
    74928130    - regex: 'Z986DL'
    74938131      model: 'MAX Blue LTE'
    7494 
     8132    - regex: 'Z999'
     8133      model: 'Axon M'
     8134    - regex: 'A2017U'
     8135      model: 'Axon 7'
     8136    - regex: 'B2017G'
     8137      model: 'Axon 7 Mini'
     8138    - regex: 'Z667T'
     8139      model: 'Zinger'
     8140     
    74958141    - regex: 'AxonPhone ([^;/]+) Build'
    74968142      model: 'AxonPhone $1'
     
    75248170# Zen
    75258171Zen:
    7526   regex: '(Admire[_ ][^/;]+|Cinemax[^/;)]+)(?:Build|\) U)'
     8172  regex: '(Admire[_ ][^/;]+|Cinemax[^/;)]+)(?:Build|\))'
    75278173  device: 'smartphone'
    75288174  model: '$1'
     8175
     8176# Zync
     8177Zync:
     8178  regex: 'ZYNC|(Cloud Z5|Z1000|Z18|Z99 Dual Core|Z99[_ ][23]G|Z99|Z900[_ ]Plus|Z909|Z930[+]|Z930)'
     8179  device: 'tablet'
     8180  models:
     8181    - regex: '(Z18|Z99 Dual Core|Z99[_ ][23]G|Z99|Z900[_ ]Plus|Z909|Z930[+]|Z930)'
     8182      model: '$1'
     8183    - regex: '(Z1000[^/;]+)Build'
     8184      model: '$1'
     8185    - regex: 'Cloud (Z5)'
     8186      model: 'Cloud $1'
     8187    - regex: 'ZYNC Cloud[ _]([^;]+)Build'
     8188      model: 'Cloud $1'
     8189    - regex: 'ZYNC[ _]([^;]+)Build'
     8190      model: '$1'
     8191
     8192# Lemhoov
     8193Lemhoov:
     8194  regex: 'Lemhoov'
     8195  device: 'smartphone'
     8196  models:
     8197    - regex: 'Lemhoov[ _-]([^/;]+) Build'
     8198      model: '$1'
     8199
     8200#MTC
     8201MTC:
     8202  regex: 'MTC[ _](978|982[OT]|982)|SMART[ _]Race[ _]4G'
     8203  device: 'smartphone'
     8204  models:
     8205    - regex: 'MTC[ _](978|982[OT]|982)'
     8206      model: '$1'
     8207    - regex: 'SMART[ _]Race[ _]4G'
     8208      model: 'Smart Race 4G'
    75298209
    75308210# Devices with undectable brand, but detectable model
     
    75348214  model: 'Web TV'
    75358215
     8216# Savio
     8217Savio:
     8218  regex: 'TB-PO1 Build'
     8219  device: 'tv'
     8220  models:
     8221    - regex: '(TB-PO1)'
     8222      model: '$1'
  • wp-visitorflow/trunk/vendor/piwik/device-detector/regexes/oss.yml

    r1961143 r2024059  
    108108  version: ''
    109109
     110- regex: '(?:TwitterAndroid).*[ /](?:[a-z]+ )?(\d+[\.\d]*)'
     111  name: 'Android'
     112  version: '$1'
     113
    110114- regex: 'BeyondPod|AntennaPod|Podkicker|DoggCatcher|Player FM|okhttp|Podcatcher Deluxe'
    111115  name: 'Android'
     
    471475  version: '10.2'
    472476
    473 - regex: 'Mac OS X(?: (?:Version )?(\d+(?:[_\.]\d+)+))?'
     477- regex: 'Mac[ +]OS[ +]X(?:[ /](?:Version )?(\d+(?:[_\.]\d+)+))?'
    474478  name: 'Mac'
    475479  version: '$1'
  • wp-visitorflow/trunk/vendor/symfony/options-resolver/LICENSE

    r1961143 r2024059  
    1 Copyright (c) 2004-2018 Fabien Potencier
     1Copyright (c) 2004-2019 Fabien Potencier
    22
    33Permission is hereby granted, free of charge, to any person obtaining a copy
  • wp-visitorflow/trunk/wp-visitorflow.php

    r1989178 r2024059  
    44 * Plugin URI: https://www.datacodedesign.de/index.php/wp-visitorflow/
    55 * Description: Detailed web analytics and visualization of your website's visitor flow
    6  * Version: 1.5.5
     6 * Version: 1.5.6
    77 * Author: Onno Gabriel, DataCodeDesign
    88 * Author URI: http://www.onno-gabriel.de
     
    5050    if ( is_admin() ) {
    5151        function wp_visitorflow_php_notice() {
    52             ?>
    53             <div class="error below-h2"><p>
    54                 <?php printf(
    55                     __('The WP VisitorFlow plugin requires at least PHP version %s, but installed is version %s.'),
     52            $class = 'notice notice-error';
     53            $message = __(
     54                sprintf(
     55                    'The WP VisitorFlow plugin requires at least PHP version %s, but installed is version %s.',
    5656                    WP_VISITORFLOW_REQUIRED_PHP_VERSION,
    5757                    PHP_VERSION
    58                 ); ?>
    59             </p></div>
    60             <?php
     58                ),
     59                'wp-visitorflow'
     60            );
     61            printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), esc_html( $message ) );
    6162        }
    6263        add_action('admin_notices', 'wp_visitorflow_php_notice');
     
    137138        // Warning message inside the dashboard
    138139        function wp_visitorflow_error_notice() {
    139             ?>
    140             <div class="error below-h2"><p>
    141                 <?php echo __('An error occured during installation/update of the WP VisitorFlow plugin.'); ?>
    142             </p></div>
    143             <?php
     140            $class = 'notice notice-error';
     141            $message = __('An error occurred during installation/update of the WP VisitorFlow plugin.', 'wp-visitorflow');
     142            printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), esc_html( $message ) );
    144143        }
    145144        add_action('admin_notices', 'wp_visitorflow_error_notice');
Note: See TracChangeset for help on using the changeset viewer.