From 80b0524d939ff09a7d5c4cbe7e48fbea97d1f0cf Mon Sep 17 00:00:00 2001 From: Niels Leenheer Date: Thu, 18 Feb 2016 10:49:54 +0100 Subject: [PATCH] Automatically build from WhichBrowser/Parser and WhichBrowser/Server --- data/indices/models-android.php | 6741 +++++++++++++++++ data/indices/models-asha.php | 24 + data/indices/models-bada.php | 23 + data/indices/models-brew.php | 113 + data/indices/models-feature.php | 201 + data/indices/models-firefoxos.php | 55 + data/indices/models-kddi.php | 393 + data/indices/models-palmos.php | 115 + data/indices/models-s30plus.php | 20 + data/indices/models-s40.php | 249 + data/indices/models-symbian.php | 343 + data/indices/models-tizen.php | 88 + data/indices/models-touchwiz.php | 54 + data/indices/models-wm.php | 521 ++ data/indices/models-wp.php | 511 ++ data/models-android.php | 2 +- data/models-wm.php | 37 +- data/models-wp.php | 2 +- src/Analyser/Header/Useragent/Browser.php | 26 +- .../Header/Useragent/Device/Mobile.php | 25 + src/Data/DeviceModels.php | 222 +- 21 files changed, 9664 insertions(+), 101 deletions(-) create mode 100644 data/indices/models-android.php create mode 100644 data/indices/models-asha.php create mode 100644 data/indices/models-bada.php create mode 100644 data/indices/models-brew.php create mode 100644 data/indices/models-feature.php create mode 100644 data/indices/models-firefoxos.php create mode 100644 data/indices/models-kddi.php create mode 100644 data/indices/models-palmos.php create mode 100644 data/indices/models-s30plus.php create mode 100644 data/indices/models-s40.php create mode 100644 data/indices/models-symbian.php create mode 100644 data/indices/models-tizen.php create mode 100644 data/indices/models-touchwiz.php create mode 100644 data/indices/models-wm.php create mode 100644 data/indices/models-wp.php diff --git a/data/indices/models-android.php b/data/indices/models-android.php new file mode 100644 index 0000000..5397194 --- /dev/null +++ b/data/indices/models-android.php @@ -0,0 +1,6741 @@ + + array ( + 0 => 'A[0-9]{3,3}!!', + 1 => 'E[0-9]{2,2}0?!!', + 2 => 'S[0-9]{2,2}0?!!', + 3 => 'V[0-9]{2,2}0!!', + 4 => 'Z[0-9]{3,3}!!', + 5 => '(CUBE ?)?[KU][0-9]{1,2}GT!!', + 6 => 'E[78]0[0-9]{2,2}H[DG]!!', + 7 => '[0-9]0[0-9]F!!', + 8 => '(Haier[- ])?H[ETW]- ?[A-Z][0-9]!!', + 9 => '[SX0][0-9]{2,2}HT!!', + 10 => '(Huawei )?[MSTX][1278]\\-[A-Z0-9][0-9]{2,2}!!', + 11 => 'G[0-9]{3,3}!!', + 12 => 'Y[0-9]{3,3}!!', + 13 => '[0-9AS][0-9]{2,2}HW!!', + 14 => 'T[89][0-9]{3,3}!!', + 15 => 'U[89][0-9]{3,3}!!', + 16 => '(USCC-)?C[0-9]{4,4}!!', + 17 => '[0-9]0[0-9]KC?!!', + 18 => '(XOLO )?[ABQX][0-9]{3,4}!!', + 19 => '(Lenovo ?)?(IdeaTab ?)?[AB][0-9]{4,4}!!', + 20 => '(Lenovo )?(Tab ?)?(2 ?)?[AS](7|8|10)!!', + 21 => '(Lenovo ?)?(IdeaTab ?)?[KSV][0-9]{4,4}!!', + 22 => '[0-9]0[0-9]LG!!', + 23 => 'M\\-PP!!', + 24 => 'M\\-MP!!', + 25 => 'M\\-IPRO!!', + 26 => '(MEDION|(MD )?LIFETAB)!!', + 27 => 'M\\.T\\.T\\.!!', + 28 => 'O\\+!!', + 29 => '[0-9]{2,2}PFH6[0-9]{3,3}!', + 30 => '[45A]0[0-9]SH!!', + 31 => 'C[0-9]{4,4}!!', + 32 => 'D[0-9]{4,4}!!', + 33 => 'E[0-9]{4,4}!!', + 34 => 'E[0-9]{2,2}[a-z]!!', + 35 => 'L[0-9]{2,2}[a-z]!!', + 36 => '(SNM\\-)?M[0-9]{2,2}[a-z]!!', + 37 => 'S[0-9]{2,2}[a-z]!!', + 38 => '(CSL[- ])?(Spice[- ]?)?Mi-?[0-9]{3,3}!!', + 39 => '[a-z][a-z](?:-[a-z][a-z])?, SmartTabII7!', + ), + '@00' => + array ( + 0 => '001DL', + 1 => '003P', + 2 => '003Z', + 3 => '008Z', + 4 => '009Z', + ), + '@0P' => + array ( + 0 => '0PCV1', + 1 => '0PM92', + 2 => '0PJA1!', + 3 => '0PJA2!', + 4 => '0PKV1', + 5 => '0PAJ5', + ), + '@10' => + array ( + 0 => '101DL', + 1 => '101N', + 2 => '101T', + 3 => '101P', + 4 => '102P', + ), + '@11' => + array ( + 0 => 1105, + 1 => 1107, + ), + '@12' => + array ( + 0 => '1216[X]!', + ), + '@2 ' => + array ( + 0 => '(Lenovo )?(Tab ?)?(2 ?)?[AS](7|8|10)!!', + ), + '@20' => + array ( + 0 => '201M', + 1 => 2013061, + 2 => '2014216 TD-LTE', + 3 => '20141(12)!', + 4 => '20148(11|12|13|17|18|19|21)!', + 5 => '20145(02)!', + 6 => 2013122, + 7 => '(Xiaomi )?20130(22|23)!', + 8 => '20140(11)!', + 9 => '20145(01)!', + ), + '@30' => + array ( + 0 => '30[0-9]SH!!', + ), + '@3G' => + array ( + 0 => '3G7334i', + ), + '@40' => + array ( + 0 => '4003[A]!', + 1 => '4008[A]!', + 2 => '4009[ADEFMSX]!', + 3 => '4013[ADEJKMX]!', + 4 => '4014[X]!', + 5 => '4015[ANTX]!', + 6 => '4015[D]!', + 7 => '4016[ADX]!', + 8 => '4017[DEFX]!', + 9 => '4018[ADEMX]!', + 10 => '4024[DX]!', + 11 => '4027[ADNX]!', + 12 => '4028[AEJ]!', + 13 => '4032[ADEX]!', + 14 => '4035[ADYX]!', + 15 => '4036[E]!', + 16 => '4037[AX]!', + 17 => '4037[T]!', + 18 => '4045[ADEX]!', + 19 => '40[0-9]SC!!', + 20 => '40[0-9]SO!!', + 21 => '402ZT', + ), + '@50' => + array ( + 0 => '5015[ADEX]!', + 1 => '5016[A]!', + 2 => '5017[B]!', + 3 => '5017[ADEOX]!', + 4 => '5020[A]!', + 5 => '5022[DX]!', + 6 => '5025[D]!', + 7 => '5038[ADEX]!', + 8 => '5042[ADEFGTWXY]!', + 9 => '5050[ASYX]!', + 10 => '5054[OSX]!', + 11 => '5054[NW]!', + 12 => '5065[ADJWX]!', + 13 => '504Q', + 14 => '504Q+', + 15 => '504QP', + 16 => '501LV', + 17 => '5080C Pro', + 18 => '502ZT', + ), + '@55' => + array ( + 0 => '5560S', + ), + '@58' => + array ( + 0 => 5832, + 1 => 5855, + 2 => 5860, + 3 => '5860A', + 4 => '5860E', + 5 => '5860S', + 6 => 5870, + ), + '@60' => + array ( + 0 => '6014[DX]!', + 1 => '6016[ADEX]!', + 2 => '6036[AYX]!', + 3 => '6037[BIKY]!', + 4 => '6039[AHJKSY]!', + 5 => '6042[D]!', + 6 => '6043[AD]!', + 7 => '6045[BGIKOXY]!', + 8 => '6050[AFWY]!', + 9 => '6055[BHIKY]!', + 10 => '6070[K]!', + 11 => '6034R ORANGE Niva', + ), + '@70' => + array ( + 0 => '7030[L]!', + 1 => '7040[N]!', + 2 => '7040[T]!', + 3 => '7043[AEKY]!', + 4 => '7044[AXY]!', + 5 => '7045[Y]!', + 6 => '7046[T]!', + 7 => '7048[AX]!', + 8 => '7050[Y]!', + 9 => '7051[X]!', + 10 => '7053[D]!', + 11 => '7055[AW]!', + ), + '@71' => + array ( + 0 => '710C', + ), + '@72' => + array ( + 0 => 7260, + 1 => 7266, + ), + '@75' => + array ( + 0 => '7500IPS', + ), + '@80' => + array ( + 0 => '8020[D]!', + 1 => '8030[BY]!', + 2 => 8022, + 3 => '801ES', + 4 => '801a', + 5 => '801s', + 6 => '802w', + ), + '@81' => + array ( + 0 => '8190Q', + ), + '@83' => + array ( + 0 => '831C', + ), + '@87' => + array ( + 0 => 8720, + 1 => '8720L', + ), + '@88' => + array ( + 0 => 8810, + ), + '@89' => + array ( + 0 => 8950, + ), + '@8X' => + array ( + 0 => '8x-1000', + ), + '@90' => + array ( + 0 => '9007[A]!', + 1 => '9005[X]!', + 2 => '9022[X]!', + 3 => '9021A', + 4 => '909d', + 5 => 9088, + 6 => '9020[A]!', + ), + '@93' => + array ( + 0 => 9300, + 1 => '9300+', + 2 => '932i', + ), + '@97' => + array ( + 0 => '97FC', + ), + '@A0' => + array ( + 0 => 'A0001', + 1 => 'A0002', + ), + '@A1' => + array ( + 0 => 'A1-[0-9]{3,3}!!', + 1 => 'A10', + 2 => 'A13-?MID!', + 3 => 'A101B', + 4 => 'A101C', + 5 => 'A101B2-LZ', + 6 => 'A101IT', + 7 => 'A10 MID', + 8 => 'A10MID', + 9 => 'A101B-CF', + 10 => 'A1001T', + 11 => 'A19S', + 12 => 'A11', + 13 => 'A111', + 14 => 'A106', + 15 => 'A1 07', + 16 => 'A13', + 17 => 'A110Q', + 18 => 'A110Q Canvas 2 Plus', + 19 => 'A110Q Canvas 2+', + 20 => 'A1680', + 21 => 'A1001', + 22 => 'A10H(D5W6)', + 23 => 'A10HD(N9A3)', + 24 => 'A10t(5DM3)', + 25 => 'A10T(8DM1)', + 26 => 'A11(M5A7)', + 27 => 'A11s(M5A7)', + 28 => 'A15(E6C2)', + ), + '@A2' => + array ( + 0 => 'A206G', + 1 => 'A2', + 2 => 'A21', + ), + '@A3' => + array ( + 0 => 'A3-A[0-9]{2,2}!!', + 1 => 'A32', + 2 => 'A35DE', + 3 => 'A320a', + 4 => 'A3380', + 5 => 'A30t', + 6 => 'A31', + 7 => 'A31c', + 8 => 'A3', + ), + '@A4' => + array ( + 0 => 'A480G', + 1 => 'A43', + 2 => 'A400CG', + 3 => 'A45', + 4 => 'A4', + ), + '@A5' => + array ( + 0 => 'A560G', + 1 => 'A562G', + 2 => 'A564R', + 3 => 'A564C', + 4 => 'A55i', + 5 => 'A52', + 6 => 'A5000', + 7 => 'a5', + ), + '@A6' => + array ( + 0 => 'A6277', + 1 => 'A6S', + ), + '@A7' => + array ( + 0 => 'A70HB', + 1 => 'A70BHT', + 2 => 'A70BHT-LZ', + 3 => 'A70BHT-PR', + 4 => 'A70CHT', + 5 => 'A70H', + 6 => 'A70S', + 7 => 'A7EB', + 8 => 'a7272', + 9 => 'A7272+(HTC DesireZ)', + 10 => 'A7 HD', + 11 => 'A7*', + 12 => 'A7+', + 13 => 'A750', + 14 => 'A7272+', + 15 => 'A70(CY6T)', + 16 => 'A78h四核(C1V3)', + ), + '@A8' => + array ( + 0 => 'A845L', + 1 => 'A851L', + 2 => 'A862W', + 3 => 'A80KSC!', + 4 => 'A80HF', + 5 => 'A853', + 6 => 'A853 Milestone', + 7 => 'A878 Duo', + 8 => 'A898 Duo', + 9 => 'A8HD', + 10 => 'A80h双核(A4P9)', + 11 => 'A80 se??(M5MA)', + 12 => 'A80 se四核(M5MC)', + 13 => 'A80HD四核(C4H6)', + 14 => 'A88 mini四核(M1C5)', + 15 => 'A81E', + ), + '@A9' => + array ( + 0 => 'A995L', + 1 => '(GIO-)?(GiONEE[- ])?A9$!', + 2 => 'A90S', + 3 => 'A953', + ), + '@AC' => + array ( + 0 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + 1 => 'ACM3066-8', + 2 => '(Explay|X-tremer|ActiveD|Informer|Surfer)!!', + 3 => 'ACT2000', + 4 => 'Acqua', + ), + '@AD' => + array ( + 0 => 'ADVAN Q7A', + 1 => 'ADVAN E1C+', + 2 => 'ADVAN S3', + 3 => 'ADVAN S3+', + 4 => 'ADVAN S3A', + 5 => 'ADVAN S3C', + 6 => 'ADVAN S4', + 7 => 'ADVAN S4+', + 8 => 'ADVAN S4A', + 9 => 'ADVAN S4C', + 10 => 'ADVAN S4E', + 11 => 'ADVAN S5E', + 12 => 'ADVAN S5E Pro', + 13 => 'ADVAN S5H', + 14 => 'ADVAN S5I', + 15 => 'Advan S5K', + 16 => 'ADVAN S5M', + 17 => 'ADVAN S6A', + 18 => 'ADVAN T1G', + 19 => 'ADVAN T1J', + 20 => 'ADVAN T1J+', + 21 => 'ADVAN T1L', + 22 => 'ADVAN T2E', + 23 => 'ADVAN T2F', + 24 => 'ADVAN T3E+', + 25 => 'ADVAN T5C', + 26 => 'Advent Vega', + 27 => 'ADR3010', + 28 => 'AD683G', + 29 => '(HTC|PC|USCC)?ADR[0-9]{4,4}!!', + 30 => 'Adam', + 31 => 'ADM816KC', + 32 => 'ADM816HC', + 33 => 'ADM712HC', + 34 => 'ADM8000KP A', + 35 => 'ADM8000KP B', + 36 => 'ADR8995!', + 37 => 'ADR910L', + 38 => 'ADR910L 4G', + 39 => 'ADR930L', + 40 => 'ADR930L 4G', + 41 => 'AD686G', + 42 => 'AD687G', + 43 => 'AD6893G', + ), + '@AE' => + array ( + 0 => 'Aero A2-110', + 1 => 'Aegis2', + ), + '@AF' => + array ( + 0 => 'AFTB', + 1 => 'AFTS', + 2 => 'AFTM', + ), + '@AG' => + array ( + 0 => 'AG Chrome Selfie', + 1 => 'AG CHROME ULTRA', + 2 => 'AG Chrome Go Tab 7.0', + 3 => '(KATBL|Agora)!!', + ), + '@AI' => + array ( + 0 => 'aigoPad', + 1 => 'aigoPadM60', + 2 => 'AigoPad M60', + 3 => 'aigoPad M80D', + 4 => 'aigoPad M80E', + 5 => 'Ainovo Aurora-II', + 6 => 'Ainovo Flame (Nexus 7)', + 7 => 'AIRIS GN135', + 8 => 'AIRIS S211', + 9 => 'AIRIS TM51Q', + 10 => 'AIRIS TM54QM', + 11 => 'AIRIS TM60D', + 12 => 'AIRIS TM400', + 13 => 'AIRIS TM421M', + 14 => 'AIRIS TM500', + 15 => 'AirBook TTJ702', + 16 => '(DNS )?(Airtab )?(E|M|MA|MF|MW|P|PC|PF)[0-9]{2,4}!!', + 17 => 'Air!!', + 18 => 'Aiki-4S', + 19 => 'Aiki-5', + ), + '@AK' => + array ( + 0 => 'AK330', + 1 => 'AK330s', + 2 => 'AKAI NEO', + 3 => 'AKAI N8800', + 4 => 'AKAI PHA-4800', + 5 => 'AKAIPHA 5800', + 6 => 'AKAI MIDMA-7002S', + ), + '@AL' => + array ( + 0 => 'alien jolla bionic', + 1 => 'alien ubuntu qt', + 2 => 'Alcatel A851L', + 3 => 'Alcatel one touch 908F', + 4 => 'Alcatel one touch 918', + 5 => 'Alcatel ONETOUCH 918', + 6 => 'ALCATEL OT 919', + 7 => 'Alcatel one touch 990', + 8 => 'Alcatel OT M\'pop 5020D', + 9 => 'Alcor Access Q913M', + 10 => 'Alcor Zest Q813I', + 11 => 'Alcor Zest Q813IS', + 12 => 'Alcor Zest Q813IX', + 13 => 'Alcor Zest Q933R', + 14 => 'ALLVIEW A4ALL', + 15 => 'ALLVIEW A6 Quad', + 16 => 'Allview P2', + 17 => 'ALLVIEW P4', + 18 => 'ALLVIEW P4i', + 19 => 'Allview P5', + 20 => 'Allview P5-Mini', + 21 => 'ALLVIEW P5 Quad', + 22 => 'ALLVIEW P5 Qmax', + 23 => 'ALLVIEW P6', + 24 => 'ALLVIEW P6 Quad', + 25 => 'ALLVIEW TX1 Quasar', + 26 => '(Allview|Alldro)!!', + 27 => 'Allwinner A10', + 28 => '(Highscreen|Alpha|Cosmo|Explosion|Zera)!!', + 29 => '(HUAWEI )?(ALE|D2|G6|G7|GRA|M100|P2|P6|P7|RIO|SC|Sophia)!!', + 30 => 'Alfa L', + 31 => 'Ally', + ), + '@AM' => + array ( + 0 => 'amd brazos', + 1 => 'amd persimmon', + 2 => 'Amlogic M1 reference board', + 3 => 'AML8726M', + 4 => 'AMLOGIC8726MX', + 5 => 'AM335XEVM', + 6 => 'AM335XEVM SK', + 7 => 'am3517evm', + 8 => 'AM437XEVM', + 9 => 'Amazon Kindle Fire!', + 10 => 'Amazon Otter', + 11 => 'Amazon OtterX', + 12 => 'Amazon Otter2', + 13 => 'Amazon Tate', + 14 => 'Amazon Jem', + 15 => 'AMI-TT2', + 16 => 'AMI-TT2C', + 17 => 'AMI-TT4', + 18 => 'AMI-TTFORCE', + 19 => 'AML-MX REF', + 20 => '(AMO-)?AMOI!!', + 21 => 'AMD120', + 22 => '(Amaze|Hitech)!!', + 23 => 'Amaze 4G', + 24 => '(Amazing|Fantastic)!!', + ), + '@AN' => + array ( + 0 => 'Android', + 1 => 'Android-for-Rockchip-2818', + 2 => 'AN7CG2', + 3 => 'AN7G2', + 4 => 'AN7G2DTE', + 5 => 'AN7G2I', + 6 => 'AN7G3', + 7 => 'AN7BG2', + 8 => 'AN7BG2DT', + 9 => 'AN7BG3', + 10 => 'AN7CG3', + 11 => 'AN7DG3', + 12 => 'AN7DG3B', + 13 => 'AN7DG3-CP', + 14 => 'AN7DG3ST-CP', + 15 => 'AN7FG3', + 16 => 'AN7HG3', + 17 => 'AN7IG3', + 18 => 'AN8G2', + 19 => 'AN8G2I', + 20 => 'AN8G3', + 21 => 'AN8BG2', + 22 => 'AN8BG3', + 23 => 'AN8CG3', + 24 => 'AN9G2', + 25 => 'AN9G2I', + 26 => 'AN9G3', + 27 => 'AN10G2', + 28 => 'AN10G2-KN', + 29 => 'AN10G2-LN', + 30 => 'AN10G2I', + 31 => 'AN10BG2', + 32 => 'AN10BG2DT', + 33 => 'AN10BG2I', + 34 => 'AN10BG3', + 35 => 'AN10BG3DT', + 36 => 'AN10CG3', + 37 => 'AN10DG3', + 38 => 'AN13FP', + 39 => 'AN8BG3-LZ', + 40 => 'AN10G2-LZ', + 41 => 'AN10BG3-LZ', + 42 => 'AN7DG3C', + 43 => '(iBall )?Andi!!', + 44 => 'AND1', + 45 => 'AND1E', + 46 => 'AND1E TV', + 47 => 'Android edition by sfr STARADDICT', + 48 => 'Android Edition Starnaute', + 49 => 'Android Edition StarText', + 50 => 'Android Edition StarTrail', + 51 => '(Smartfren|Andromax)!!', + 52 => 'Androtab 7', + 53 => '(Starway )?Andromeda!!', + 54 => 'Andy 3.5EI', + 55 => 'Andy A4', + 56 => 'Andy A5', + 57 => 'ANDY A5QP', + 58 => 'Andy C3.5EI', + 59 => 'Andy C5V', + 60 => 'Andy C5VP', + 61 => 'ANDY-3.5EI', + 62 => 'Andy 4E', + 63 => 'Andy 4EI', + 64 => 'ANDY 5EI', + ), + '@AO' => + array ( + 0 => 'AOLE 828', + 1 => 'AOSON G18', + 2 => 'Aoson M11', + 3 => 'Aoson M19', + 4 => 'aoson m33', + 5 => 'aoson M33 3G', + 6 => 'AOSON M1016', + 7 => '(cm|aokp) tenderloin!', + ), + '@AP' => + array ( + 0 => 'App Runtime for Chrome', + 1 => 'apollo', + 2 => 'Apanda.A60!', + 3 => 'apanda-A80S', + 4 => 'apanda-A100', + 5 => 'apanda-A101', + 6 => 'Aprix D97+', + ), + '@AQ' => + array ( + 0 => '(bq|Aquaris|Edison|Maxwell)!!', + 1 => 'AQUILA 080-1008', + 2 => 'AQUILA 097-1006', + 3 => '(Intex )?Aqua!!', + 4 => 'AQUOS!!', + ), + '@AR' => + array ( + 0 => 'ARCHM901', + 1 => 'Arnova 7G2', + 2 => 'ARNOVA8G2', + 3 => 'Arnova 10G2', + 4 => 'ARNOVA 90G3', + 5 => 'ARNOVA 90 G4', + 6 => 'ARNOVA 97G4', + 7 => 'ARNOVA 101 G4', + 8 => 'ARCHOS 50PL', + 9 => 'ARCHOS 79XE', + 10 => 'Archos5', + 11 => 'ARCHOS 70it2', + 12 => 'Archos 80 Internet Tablet', + 13 => 'Archos!!', + 14 => 'Artes D708', + 15 => 'Artes D821', + 16 => 'Artes i701', + 17 => 'ARTES I709', + 18 => 'Artes Q812', + 19 => 'Arya A1+', + 20 => 'Arya Z2', + 21 => 'ARMM2V', + 22 => 'ARMM3V', + 23 => 'Arc', + 24 => 'Arc S', + ), + '@AS' => + array ( + 0 => 'Astone A108', + 1 => 'aspire1000s', + 2 => 'Aspire!!', + 3 => 'ASK SP[0-9]{3,3}!!', + 4 => 'ASTRI', + 5 => 'asus laptop', + 6 => 'ASUS T20', + 7 => 'Asus Fonepad ME371MG 8GB', + 8 => 'ASUS ZenFone 2E', + 9 => 'asus google cube', + 10 => 'ASP-4300W', + 11 => 'ASP-4500Z', + 12 => 'ASP-5000H', + 13 => '(Huawei|Ascend|HW-)!!', + 14 => 'AS740', + 15 => 'AS870 4G', + 16 => 'AS985', + ), + '@AT' => + array ( + 0 => 'AT390', + 1 => 'AT102HC', + 2 => 'AT104GS', + 3 => 'AT107F', + 4 => 'AT108F', + 5 => 'AT197F', + 6 => 'AT10H-A10WP', + 7 => 'AT101-014', + 8 => 'AT101T-114', + 9 => 'AT1A*', + 10 => 'AT1C', + 11 => 'AT1C*', + 12 => 'AT1D', + 13 => 'AT1G*', + 14 => 'ATP515CKIT', + 15 => '(HW-|HUAWEI )?(ATH|CHE|CHM|HN3|H30|H60|HOL|KIW|PE|PLK|SCL)!!', + 16 => 'aTab9.7 IPS', + 17 => 'AT735', + 18 => 'Atrix 2', + 19 => 'Atrix 2 WeifanZ', + 20 => 'Atrix 4G', + 21 => 'Atrix 4G ME860', + 22 => 'Atrix HD', + 23 => 'AtrixHD', + 24 => 'ATP7526', + 25 => 'ATP7683', + 26 => 'AT1S0', + 27 => 'AT7-A', + 28 => 'AT7-B', + 29 => 'AT7-C', + 30 => 'AT10-A', + 31 => 'AT10LE-A', + 32 => 'AT10PE-A', + 33 => 'AT100', + 34 => 'AT200', + 35 => 'AT270', + 36 => 'AT300', + 37 => 'AT300SE', + 38 => 'AT330', + 39 => 'AT374', + 40 => 'AT400', + 41 => 'AT470', + 42 => 'AT500', + 43 => 'AT500a', + 44 => 'AT503', + 45 => 'AT570', + 46 => 'AT703', + 47 => 'AT830', + 48 => 'AT-A[QS][0-9]{2,2}!!', + ), + '@AU' => + array ( + 0 => 'Aurora-II', + 1 => 'AUX!!', + 2 => '(Aura|iberry|AUXUS)!!', + 3 => 'AURUS III', + ), + '@AV' => + array ( + 0 => '(Ilium )?Avvio!!', + ), + '@AX' => + array ( + 0 => '(Axioo[\\- ])?PICO!!', + 1 => '(AXPAD|Axxion)!!', + 2 => '(Bmobile )?AX[0-9]{3,4}!!', + ), + '@AZ' => + array ( + 0 => 'Azumi!!', + 1 => '(AZ|BT)[0-9]{3,3}!!', + ), + '@B1' => + array ( + 0 => 'B1-[A0-9][0-9]{2,2}!!', + 1 => 'B15Q', + ), + '@B3' => + array ( + 0 => 'B3000', + ), + '@B9' => + array ( + 0 => 'B916C', + ), + '@BA' => + array ( + 0 => 'Bay Trail Generic Platform', + 1 => 'Bayley Bay', + 2 => 'baoxue', + 3 => 'Barnes & Noble Nook Tablet', + 4 => 'Barnes & Noble Nook HD', + 5 => 'Barnes & Noble Nook HD+', + 6 => 'Backflip', + 7 => 'Bambook S1', + 8 => 'BARRY', + 9 => 'BASE Lutea 2', + 10 => 'BASE Lutea 3', + 11 => 'BASE Varia', + 12 => 'BASE Tab', + 13 => 'BASE Tab 7.1', + ), + '@BB' => + array ( + 0 => 'BB EH7', + 1 => 'BB EH7LE', + 2 => '(BB )?Q5$!', + 3 => '(BB )?Q10$!', + 4 => '(BB )?Z10$!', + 5 => '(BB )?Z30$!', + 6 => '(BBG-|VIV-)?vivo!!', + ), + '@BC' => + array ( + 0 => 'bcm platform', + 1 => 'bcm7231', + 2 => 'bcm7425', + 3 => 'bcm7429', + 4 => 'bcm7435', + 5 => 'bcm7439', + 6 => 'bcm7445', + 7 => 'bcm7584', + 8 => 'BCM21654!', + 9 => 'BCM21664!', + 10 => 'BCM23550!', + 11 => 'BCM28145!', + 12 => 'BCM28155!', + 13 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + 14 => 'BC1003', + ), + '@BD' => + array ( + 0 => '(BDS|BHX|BKO)\\-!!', + ), + '@BE' => + array ( + 0 => 'BEAGLEBONE', + 1 => 'BeagleBone Black', + 2 => 'BEAGLEBONEBLACK', + 3 => 'BEAGLEBONEBLACK.A5C', + 4 => 'berlin bg2!', + 5 => 'berlin generic!', + 6 => 'BenQ JD-130', + 7 => 'BenQ Android TV', + 8 => 'BenWee 5100', + 9 => 'BEE 9500', + 10 => 'BenQ!!', + 11 => 'BenWee!!', + 12 => 'BePhone UN030', + 13 => 'Best ?sonny!!', + 14 => 'BEAN 454', + 15 => 'Beeline Pro 2', + 16 => 'Beeline Pro 3', + 17 => 'Beeline Smart', + 18 => 'Beeline Smart2', + 19 => 'Beeline Smart 2', + 20 => 'Beeline Smart 3', + 21 => 'Beeline Smart 4', + 22 => 'Beeline Smart 5', + 23 => 'Beeline E300', + 24 => 'Beeline E400', + 25 => 'Beeline E600', + 26 => 'Beeline M2', + 27 => 'Beeline Tab', + 28 => 'Beeline Tab 2', + 29 => 'Beeline Tab Fast', + 30 => 'Beeline Tab Pro', + ), + '@BF' => + array ( + 0 => 'BF[ \\-]!!', + 1 => 'BFB!!', + 2 => 'BF[0-9]{2,2}00!!', + ), + '@BG' => + array ( + 0 => 'bg2 !', + 1 => 'bg2ct !', + 2 => 'bg2q4k !', + 3 => 'bg2qa0v4 !', + 4 => 'bg2qv4 !', + ), + '@BH' => + array ( + 0 => '(BDS|BHX|BKO)\\-!!', + ), + '@BI' => + array ( + 0 => 'bird75v2', + 1 => 'BioniQ!!', + 2 => 'Bird!!', + 3 => 'BIP-6000', + 4 => 'BIRDY', + ), + '@BK' => + array ( + 0 => '(BDS|BHX|BKO)\\-!!', + ), + '@BL' => + array ( + 0 => 'Blaze', + 1 => 'Blaze Tablet', + 2 => 'BlueStacks!', + 3 => 'BlackBerry Runtime for Android Apps', + 4 => 'BLACKBERRY P\'9982', + 5 => '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!', + 6 => 'Blaze S180', + 7 => 'BLACK', + 8 => '(BLF-)?lephone!!', + 9 => 'Blackphone 2', + 10 => 'BLOOM', + 11 => 'BLADE III IL', + 12 => 'Blade G LTE', + 13 => 'Blade G Lux', + 14 => 'Blade G2', + 15 => 'Blade Super', + 16 => 'Blade S', + 17 => 'Blade S6', + 18 => 'Blade S6 Plus', + 19 => 'Blade L2', + 20 => 'Blade L2 Plus', + 21 => 'Blade L3', + 22 => 'Blade L5 Plus', + 23 => 'Blade Q', + 24 => 'Blade Q Lux', + 25 => 'Blade Q Maxi', + 26 => 'Blade S Lite', + 27 => 'Blade S6 Lite', + 28 => 'Blade V6', + 29 => 'Blade V880', + 30 => 'Blade(-V880|-opda)?$!', + 31 => 'BLADEII', + 32 => 'Blade2', + 33 => 'Blade III', + ), + '@BM' => + array ( + 0 => 'BMOBILE DASH 3.5', + 1 => '(Bmobile )?AX[0-9]{3,4}!!', + 2 => 'Bmobile T35AC', + 3 => 'BM999', + ), + '@BN' => + array ( + 0 => '(NOOK )?BNRV(200|300)!', + 1 => '(NOOK )?BNTV250!', + 2 => '(NOOK )?BNRV350!', + 3 => '(NOOK )?BNTV(400)!', + 4 => '(NOOK )?BNTV(600)!', + 5 => '(NOOK )?BNTV(800)!', + 6 => 'BN Nook HD', + 7 => 'BN NookHD+', + ), + '@BO' => + array ( + 0 => 'BO-FRSP4', + 1 => 'BO-LFSPBS5', + 2 => 'BOVO S-F16', + 3 => 'BOWAY!!', + 4 => 'Bouygues Telecom Bs 351', + 5 => 'Bouygues Telecom Bs 402', + 6 => 'Bouygues Telecom Bs 403', + 7 => 'Bouygues Telecom Bs 451', + 8 => 'Boston 4G', + ), + '@BP' => + array ( + 0 => 'BP710A', + ), + '@BQ' => + array ( + 0 => '(bq|Aquaris|Edison|Maxwell)!!', + ), + '@BR' => + array ( + 0 => 'Bravo', + 1 => 'BRAVIA 2015', + 2 => 'BRAVIA 4K 2015', + 3 => 'BroadSign Xpress!', + 4 => 'Broncho M7', + 5 => '(BRS-)?BROR!!', + 6 => 'BRAVIA', + ), + '@BS' => + array ( + 0 => 'Bs 451', + 1 => 'Bs 501', + 2 => 'Bs541', + 3 => 'BSTB-200C', + ), + '@BT' => + array ( + 0 => '(AZ|BT)[0-9]{3,3}!!', + ), + '@BU' => + array ( + 0 => 'BUSH!!', + 1 => 'Burst S280', + 2 => 'Butterfly S', + ), + '@C2' => + array ( + 0 => 'C2', + ), + '@C5' => + array ( + 0 => '(GIO-)?(GiONEE[- ])?C500!', + 1 => 'C525c', + ), + '@C6' => + array ( + 0 => '(GIO-)?(GiONEE[- ])?C600!', + 1 => '(GIO-)?(GiONEE[- ])?C610!', + 2 => '(GIO-)?(GiONEE[- ])?C620!', + ), + '@C7' => + array ( + 0 => 'C771', + 1 => '(GIO-)?(GiONEE[- ])?C700!', + ), + '@C8' => + array ( + 0 => 'C811 4G', + 1 => 'C8660', + 2 => '(GIO-)?(GiONEE[- ])?C800!', + 3 => 'C8[0-9]{3,3}!!', + 4 => 'C868', + ), + '@C9' => + array ( + 0 => 'C908', + ), + '@CA' => + array ( + 0 => 'Cardhu', + 1 => 'CA907AAC0G', + 2 => 'Camangi-Mangrove7', + 3 => 'CAPTIVA!!', + 4 => 'Carpad T5', + 5 => 'Carpad T61 2g', + 6 => 'CAL21', + 7 => 'CA201SP', + 8 => 'Casper VIA!!', + 9 => 'CAT!!', + 10 => 'Candy TV', + 11 => 'calgary', + 12 => 'Captivate-I897', + ), + '@CE' => + array ( + 0 => 'cedartrail', + 1 => 'CENTURION', + 2 => 'CENTURION 3', + 3 => 'Celkon!!', + ), + '@CH' => + array ( + 0 => 'ChangHong!!', + 1 => 'CHER!!', + 2 => 'Cherry Mobile Burst', + 3 => 'Cherry Life', + 4 => 'Cherry Razor', + 5 => 'Cherry Mobile Razor', + 6 => 'CHERRY SNAP', + 7 => 'Cherry Sonic', + 8 => 'Cherry thunder2.0', + 9 => 'Cherry Mobile Amber W380', + 10 => 'Cherry w500', + 11 => 'CHUWI!!', + 12 => 'CHONG!!', + 13 => '(HW-|HUAWEI )?(ATH|CHE|CHM|HN3|H30|H60|HOL|KIW|PE|PLK|SCL)!!', + 14 => '(HUAWEI )?(CHC|KII)!!', + 15 => 'chagall', + ), + '@CI' => + array ( + 0 => 'CIUS-7!', + 1 => 'Citycall!!', + 2 => 'CINK+', + 3 => 'CINK FIVE', + 4 => 'CINK KING', + 5 => 'CINK PEAX', + 6 => 'CINK PEAX+', + 7 => 'CINK PEAX 2', + 8 => 'CINK SLIM', + 9 => 'Cink Slim A', + 10 => 'Cink Slim B', + 11 => 'CINK SLIM 2', + ), + '@CJ' => + array ( + 0 => '(CJ-)?ThL!!', + ), + '@CL' => + array ( + 0 => 'Clarion Mirage 2', + 1 => '(Cloudfone|CloudPad|Excite|Thrill)!!', + 2 => 'Clanga 079-1016', + 3 => 'Clanga 097-2016', + 4 => 'Clanga SE 097-1008', + 5 => 'CLP281X', + 6 => 'Click', + 7 => '(Intex )?Cloud!!', + 8 => 'CLIQ', + 9 => 'CLIQ XT', + 10 => 'CLIQ2', + ), + '@CM' => + array ( + 0 => 'CMP!!', + 1 => '(cm|aokp) tenderloin!', + 2 => 'CM980', + 3 => 'CM990', + ), + '@CN' => + array ( + 0 => 'CnM!!', + ), + '@CO' => + array ( + 0 => 'Colibri-T20', + 1 => 'Commodore!!', + 2 => 'Commtiva-HD710', + 3 => 'Commtiva-N700', + 4 => 'Connspeed IP71', + 5 => '(Colorfly|CT[0-9]{3,3})!!', + 6 => 'Colors!!', + 7 => 'ConCorde!!', + 8 => 'Coolgen!!', + 9 => 'Coolpad!!', + 10 => 'COSHIP F2', + 11 => 'COWON!!', + 12 => 'COZCO C1 Plus', + 13 => 'Collo DG100', + 14 => 'Collo 2 DG120', + 15 => '(Highscreen|Alpha|Cosmo|Explosion|Zera)!!', + 16 => 'Coquettish Red', + 17 => 'Comet', + 18 => 'Corvair', + 19 => 'COOLPIX S800c', + ), + '@CP' => + array ( + 0 => 'CP-DX!!', + 1 => 'CP3700A', + ), + '@CR' => + array ( + 0 => 'Crespo!', + 1 => 'CRESTA.CTP888', + 2 => 'Cross!!', + 3 => 'Crosscall!!', + 4 => '(HUAWEI )?(CRR|MATE|MT1|MT2|MT7|M200|NXT|Z100)!!', + 5 => 'Crescent', + ), + '@CS' => + array ( + 0 => '(CSL[- ])?(Spice[- ]?)?Mi-?[0-9]{3,3}!!', + ), + '@CT' => + array ( + 0 => 'CT[0-9]{3,4}!!', + 1 => 'CT710', + 2 => 'CT910', + 3 => '(Colorfly|CT[0-9]{3,3})!!', + 4 => 'CTP828BT', + 5 => '(GIO-)?(GiONEE[- ])?Ctrl V1!', + 6 => '(GIO-)?(GiONEE[- ])?Ctrl V2!', + 7 => '(GIO-)?(GiONEE[- ])?Ctrl V3!', + 8 => '(GIO-)?(GiONEE[- ])?Ctrl V4!', + 9 => '(GIO-)?(GiONEE[- ])?Ctrl V5!', + ), + '@CU' => + array ( + 0 => 'CUBOT!!', + 1 => '(CUBE ?)?[KU][0-9]{1,2}GT!!', + 2 => 'CUBE!!', + ), + '@CW' => + array ( + 0 => 'CW[- ]!!', + ), + '@CX' => + array ( + 0 => 'CX-919', + 1 => 'CX-921', + 2 => 'CX-921B', + 3 => 'CX-929', + 4 => 'CX-950', + 5 => 'CX-958', + ), + '@CY' => + array ( + 0 => 'Cydle M7!', + 1 => 'Cynus!!', + 2 => 'Cyclone!!', + ), + '@D2' => + array ( + 0 => 'D2-[0-9]{3,3}!!', + 1 => '(HUAWEI )?(ALE|D2|G6|G7|GRA|M100|P2|P6|P7|RIO|SC|Sophia)!!', + ), + '@D5' => + array ( + 0 => 'D530', + 1 => 'D539', + ), + '@D7' => + array ( + 0 => 'D709', + 1 => 'D7800AD', + 2 => 'D70W', + ), + '@D8' => + array ( + 0 => 'D820X', + 1 => 'D816(d|t|v|w|x)!', + 2 => 'D820mt', + 3 => 'D80', + ), + '@D9' => + array ( + 0 => 'D9702', + 1 => 'D91', + ), + '@DA' => + array ( + 0 => 'DA2[0-9]{2,2}[A-Z]+!!', + 1 => '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!', + 2 => 'Dakele A380', + 3 => 'DAKELE MC001', + 4 => 'DATAM803HC', + 5 => 'DATAM805HC', + 6 => 'DATAM819HD!', + 7 => 'DARKFULL', + 8 => 'DARKMOON', + 9 => 'DARKNIGHT', + 10 => 'DARKSIDE', + ), + '@DE' => + array ( + 0 => 'Dell XCD35', + 1 => 'DEM752HCF', + 2 => '(DENVER-)?TA[CD]-[0-9]{4,5}!!', + 3 => 'deovo V5', + 4 => 'DESAY!!', + 5 => 'Desire 816', + 6 => 'Desire ?HD!', + 7 => 'Desire L by HTC', + 8 => 'Desire ?S!', + 9 => 'Desire X', + 10 => 'Desire Z', + 11 => 'Desire!', + 12 => 'DEOX', + 13 => 'DEFY', + 14 => 'Defy(\\+| Plus)!', + 15 => 'DEDY+', + 16 => 'Dext', + 17 => 'Devour', + 18 => 'DEM752NC', + ), + '@DI' => + array ( + 0 => 'Dialog!!', + 1 => 'DIT[0-9]{4,6}!!', + 2 => 'DIGICEL DL800', + 3 => '(Digma )?iD[jmnsx][DQ]?[0-9]*!!', + 4 => 'DISTAB9000R', + 5 => 'DishTV Smartvu A2020', + 6 => 'Discovery DG500', + 7 => 'DIAMOND D1', + 8 => 'DIAMOND S3', + ), + '@DJ' => + array ( + 0 => 'DJC Touchtab3', + ), + '@DK' => + array ( + 0 => 'Dk1031', + ), + '@DL' => + array ( + 0 => 'DLX', + 1 => 'DLXU', + 2 => 'dL1', + ), + '@DM' => + array ( + 0 => 'DM0[0-9]{2,2}(K|SH)!!', + 1 => 'DMC-CM1', + ), + '@DN' => + array ( + 0 => 'DNS Airbook TYT701', + 1 => '(DNS )?(Airtab )?(E|M|MA|MF|MW|P|PC|PF)[0-9]{2,4}!!', + 2 => 'DNS S!!', + 3 => 'DNS4502M', + ), + '@DO' => + array ( + 0 => 'Dooderbutt!', + 1 => 'domod G20', + 2 => 'DOOV!!', + 3 => 'Doro Liberto!!', + 4 => 'Docomo HT-03A', + ), + '@DP' => + array ( + 0 => 'DPS Dream 7', + 1 => 'DPS Dream 9', + 2 => 'DPH-D710', + ), + '@DR' => + array ( + 0 => 'Dream', + 1 => '(GIO-)?(GiONEE[- ])?Dream D1!', + 2 => 'Droid Incredible', + 3 => 'DroniX-0.5', + 4 => 'Droid', + 5 => 'DROID', + 6 => 'DROID ?2!', + 7 => 'DROID ?3!', + 8 => 'DROID ?4!', + 9 => 'DROID Pro', + 10 => 'DROID BIONIC!', + 11 => 'DROID RAZR HD!', + 12 => 'DROID ?RAZR!', + 13 => 'DROID SPYDER', + 14 => 'DROID ?X2!', + 15 => 'DROID ?X!', + ), + '@DS' => + array ( + 0 => 'Dslide!!', + ), + '@DT' => + array ( + 0 => 'dtab01', + ), + '@DY' => + array ( + 0 => 'dyno 7.80', + 1 => 'dyno 7.85', + 2 => 'Dynamic Fun', + 3 => 'Dynamic Jump', + 4 => 'Dynamic Maxi', + 5 => 'Dynamic Milo', + 6 => 'Dynamic Racing 2', + 7 => 'Dynamic Raging Go', + 8 => 'Dynamic Shake', + 9 => 'Dynamic Wide', + 10 => 'Dynamic Wing', + ), + '@E' => + array ( + 0 => '(DNS )?(Airtab )?(E|M|MA|MF|MW|P|PC|PF)[0-9]{2,4}!!', + ), + '@E-' => + array ( + 0 => '(E-Boda|Eruption|Essential|Supreme|Storm|Revo)!!', + ), + '@E1' => + array ( + 0 => 'E1 v360', + 1 => 'E170BS', + 2 => 'E1031', + 3 => 'e1808 v75!', + 4 => 'e1109 v73!', + ), + '@E2' => + array ( + 0 => 'E239', + 1 => 'E270BSA', + 2 => 'E2281', + 3 => '(Moto)?E2$!', + 4 => '(Moto)?E2\\(4G-LTE\\)$!', + ), + '@E3' => + array ( + 0 => '(GIO-)?(GiONEE[- ])?E3T!', + 1 => '(GIO-)?(GiONEE[- ])?E3$!', + ), + '@E5' => + array ( + 0 => '(GIO-)?(GiONEE[- ])?E5$!', + ), + '@E6' => + array ( + 0 => '(GIO-)?(GiONEE[- ])?E6mini!', + 1 => '(GIO-)?(GiONEE[- ])?E6$!', + 2 => '(GIO-)?(GiONEE[- ])?E6T$!', + 3 => 'E6782', + 4 => 'E650', + ), + '@E7' => + array ( + 0 => '(GIO-)?(GiONEE[- ])?E7$!', + 1 => 'E780', + 2 => 'E731', + ), + '@E8' => + array ( + 0 => 'E860', + 1 => 'E800', + 2 => 'E815', + 3 => 'E812', + 4 => 'E810', + ), + '@E9' => + array ( + 0 => 'E900', + 1 => 'E912', + ), + '@EA' => + array ( + 0 => 'eagle75v1 2', + 1 => 'EasyPhone EP5', + 2 => 'EasyPad 971', + ), + '@EB' => + array ( + 0 => 'EBEN!!', + 1 => 'EBEST!!', + 2 => 'EB-4063-X', + 3 => 'EB-A71GJ', + 4 => 'EB-W51GJ', + ), + '@ED' => + array ( + 0 => '(bq|Aquaris|Edison|Maxwell)!!', + 1 => 'edgejr', + 2 => 'edenTAB ET-701', + ), + '@EE' => + array ( + 0 => 'eeepc', + 1 => 'eee 701', + 2 => '(Eee Pad )?Transformer Prime TF201!', + ), + '@EF' => + array ( + 0 => 'EFM710A', + ), + '@EG' => + array ( + 0 => 'EG98', + 1 => 'EG680', + 2 => 'EG968B', + ), + '@EK' => + array ( + 0 => 'EK-[GK][CN][0-9]{3,3}!!', + ), + '@EL' => + array ( + 0 => 'EL72B', + 1 => 'ELF-II', + 2 => 'Elephone!!', + 3 => 'ELIYA S1', + 4 => 'Elektra L', + 5 => 'Elektra XL', + 6 => 'Electrify', + 7 => '(SENCOR )?ELEMENT!!', + ), + '@EM' => + array ( + 0 => 'EMR1879', + ), + '@EN' => + array ( + 0 => 'Endeavour!!', + 1 => 'ENR U', + 2 => 'EndeavorU', + 3 => 'Enjoy 7 Plus', + ), + '@EP' => + array ( + 0 => 'EPAD', + 1 => 'epade!!', + ), + '@EQ' => + array ( + 0 => 'equiso.smart.tv.pro', + ), + '@ER' => + array ( + 0 => '(E-Boda|Eruption|Essential|Supreme|Storm|Revo)!!', + ), + '@ES' => + array ( + 0 => '(E-Boda|Eruption|Essential|Supreme|Storm|Revo)!!', + 1 => 'eSTAR!!', + ), + '@ET' => + array ( + 0 => 'ETBW11AA', + 1 => 'Etel!!', + 2 => 'ET1', + 3 => 'Etisalat Smartphone', + ), + '@EV' => + array ( + 0 => 'EVOKE HDI Box', + 1 => 'EVDO1000', + 2 => 'EvoPAD!!', + 3 => 'EVERPAD SC-710', + 4 => 'Ever!!', + 5 => '(EVAS )?EVERCOSS[- ]A!!', + 6 => 'EVO', + 7 => 'Evo HD2', + 8 => 'EVO ?3D!', + 9 => 'EVO 4G', + 10 => 'Evo V 4G', + 11 => '(EV|KM)-[ES][0-9]{3,3}!!', + 12 => 'Event', + 13 => 'EVERY35', + ), + '@EX' => + array ( + 0 => 'Exynos5410', + 1 => '(Cloudfone|CloudPad|Excite|Thrill)!!', + 2 => '(Explay|X-tremer|ActiveD|Informer|Surfer)!!', + 3 => '(Highscreen|Alpha|Cosmo|Explosion|Zera)!!', + 4 => 'Explorer A310e', + ), + '@EZ' => + array ( + 0 => 'Ezcast', + 1 => 'eZee!!', + ), + '@F&' => + array ( + 0 => 'F&U ETB!!', + ), + '@F-' => + array ( + 0 => 'F-[0-9]{2,2}[A-Z]!!', + ), + '@F1' => + array ( + 0 => 'f12[a-z]{3,3}!!', + 1 => '(GIO-)?(GiONEE[- ])?F103!', + 2 => 'F100', + 3 => 'F13', + 4 => 'F15', + ), + '@F3' => + array ( + 0 => '(GIO-)?(GiONEE[- ])?F301!', + ), + '@F5' => + array ( + 0 => 'F50Q', + ), + '@F6' => + array ( + 0 => 'F600', + ), + '@FA' => + array ( + 0 => 'Fablet F3', + 1 => '(Amazing|Fantastic)!!', + ), + '@FC' => + array ( + 0 => 'FC6100', + ), + '@FD' => + array ( + 0 => 'FDT!!', + ), + '@FI' => + array ( + 0 => 'FIH-FB0', + 1 => 'FIH-!!', + 2 => 'Find 5', + 3 => 'FIND7', + ), + '@FJ' => + array ( + 0 => 'FJ[LT][0-9]{2,2}!!', + ), + '@FL' => + array ( + 0 => 'Flo', + 1 => 'Flounder', + 2 => 'Flame2', + 3 => 'Flare S100', + 4 => 'Flare 2.0', + 5 => 'Flare 2.1', + 6 => 'Flare2X', + 7 => 'Fly F[0-9]{2,3}!!', + 8 => 'Fly Phoenix 2', + 9 => 'Fly Ego Art 2', + 10 => '(Fly )?IQ ?[0-9]{3,4}!!', + 11 => 'Flylife!!', + 12 => 'Fly Flylife Web 7.85 Slim', + ), + '@FN' => + array ( + 0 => '(tablet )?fnac!!', + ), + '@FO' => + array ( + 0 => 'Forward Active', + 1 => 'Forward Art', + 2 => 'Forward Escape', + 3 => 'Forward Endurance', + 4 => 'FORWARD EVOLVE', + 5 => 'Forward Infinity', + 6 => 'Forward Next', + 7 => 'Forward Prime', + 8 => 'Forward Racing 3', + 9 => 'Forward Ruby', + 10 => 'Forward Shake', + 11 => 'ForwardXtreme', + 12 => 'Forward Young', + 13 => 'ForwardZero', + 14 => 'Forward 5 5', + 15 => 'Forward 5.5', + 16 => 'Folio 100', + 17 => 'folio100', + ), + '@FR' => + array ( + 0 => 'Freelander I20', + 1 => '(MODECOM )?FreeTAB!!', + ), + '@FS' => + array ( + 0 => 'FS403', + ), + '@FU' => + array ( + 0 => 'full Android on Microsoft Windows, pad, pc, n*books', + 1 => 'Fusion Bolt', + 2 => 'FUSIONideos', + ), + '@FW' => + array ( + 0 => 'FWS[0-9]{3,3}!!', + ), + '@FZ' => + array ( + 0 => 'FZ-A1(A|B)!', + 1 => 'FZ-B2(B|D)!', + 2 => 'FZ-X1', + ), + '@G ' => + array ( + 0 => 'G Watch', + 1 => 'G Watch R', + ), + '@G0' => + array ( + 0 => 'G0775', + ), + '@G1' => + array ( + 0 => 'G100W', + 1 => 'G17(B5DV)', + 2 => 'G17(B7DV)', + 3 => 'G17h 3G??(K5E2)', + 4 => 'G17h 3G??(K6E2', + 5 => 'G17h 3G四核(K5E2)', + 6 => 'G17h 3G四核(K6E2)', + 7 => 'G17s 3G', + 8 => 'G17s 3G??(K5E5)', + 9 => 'G17s 3G四核(K5E5)', + 10 => 'G17s 3G四核(K5E4)', + 11 => 'G17s 3G四核(K5E3)', + 12 => 'G18 3G四核(C6B9)', + 13 => 'G18mini(C5B9)', + 14 => 'G18d 3G四核(D3A2)', + 15 => 'G18d mini(FV2C)', + ), + '@G2' => + array ( + 0 => 'G2S', + ), + '@G3' => + array ( + 0 => '(Moto)?G3$!', + 1 => '(Moto)?G3-TE$!', + ), + '@G6' => + array ( + 0 => '(HUAWEI )?(ALE|D2|G6|G7|GRA|M100|P2|P6|P7|RIO|SC|Sophia)!!', + ), + '@G7' => + array ( + 0 => '(HUAWEI )?(ALE|D2|G6|G7|GRA|M100|P2|P6|P7|RIO|SC|Sophia)!!', + ), + '@G9' => + array ( + 0 => 'G9', + ), + '@GA' => + array ( + 0 => '(Google )?Galaxy Nexus!', + 1 => 'Galaxy S4 Google Editon', + 2 => 'Garmin!!', + 3 => 'Galaxy!!', + ), + '@GE' => + array ( + 0 => 'generic', + 1 => 'generic x86', + 2 => 'Gear Live', + 3 => 'Genius!!', + 4 => '(GP-|Geeksphone)!!', + 5 => 'Gemei!!', + 6 => 'GEM[0-9]{4,4}!!', + 7 => 'GETAWAY', + ), + '@GF' => + array ( + 0 => 'GFIVE!!', + ), + '@GH' => + array ( + 0 => 'GHIA!!', + ), + '@GI' => + array ( + 0 => '(Gsmart|Gigabyte|Rio)!!', + 1 => 'Gigaset!!', + 2 => '(GIO-)?(GiONEE[- ])?A9$!', + 3 => '(GIO-)?(GiONEE[- ])?C500!', + 4 => '(GIO-)?(GiONEE[- ])?C600!', + 5 => '(GIO-)?(GiONEE[- ])?C610!', + 6 => '(GIO-)?(GiONEE[- ])?C620!', + 7 => '(GIO-)?(GiONEE[- ])?C700!', + 8 => '(GIO-)?(GiONEE[- ])?C800!', + 9 => '(GIO-)?(GiONEE[- ])?Dream D1!', + 10 => '(GIO-)?(GiONEE[- ])?E3T!', + 11 => '(GIO-)?(GiONEE[- ])?E3$!', + 12 => '(GIO-)?(GiONEE[- ])?E5$!', + 13 => '(GIO-)?(GiONEE[- ])?E6mini!', + 14 => '(GIO-)?(GiONEE[- ])?E6$!', + 15 => '(GIO-)?(GiONEE[- ])?E6T$!', + 16 => '(GIO-)?(GiONEE[- ])?E7$!', + 17 => '(GIO-)?(GiONEE[- ])?F103!', + 18 => '(GIO-)?(GiONEE[- ])?F301!', + 19 => '(GIO-)?(GiONEE[- ])?GN100T!', + 20 => '(GIO-)?(GiONEE[- ])?GN100!', + 21 => '(GIO-)?(GiONEE[- ])?GN105!', + 22 => '(GIO-)?(GiONEE[- ])?GN106!', + 23 => '(GIO-)?(GiONEE[- ])?GN107!', + 24 => '(GIO-)?(GiONEE[- ])?GN108!', + 25 => '(GIO-)?(GiONEE[- ])?GN109!', + 26 => '(GIO-)?(GiONEE[- ])?GN135!', + 27 => '(GIO-)?(GiONEE[- ])?GN136!', + 28 => '(GIO-)?(GiONEE[- ])?GN137!', + 29 => '(GIO-)?(GiONEE[- ])?GN139!', + 30 => '(GIO-)?(GiONEE[- ])?GN150!', + 31 => '(GIO-)?(GiONEE[- ])?GN151!', + 32 => '(GIO-)?(GiONEE[- ])?GN160T!', + 33 => '(GIO-)?(GiONEE[- ])?GN160!', + 34 => '(GIO-)?(GiONEE[- ])?GN168T!', + 35 => '(GIO-)?(GiONEE[- ])?GN170!', + 36 => '(GIO-)?(GiONEE[- ])?GN180!', + 37 => '(GIO-)?(GiONEE[- ])?GN181!', + 38 => '(GIO-)?(GiONEE[- ])?GN200!', + 39 => '(GIO-)?(GiONEE[- ])?GN205!', + 40 => '(GIO-)?(GiONEE[- ])?GN210!', + 41 => '(GIO-)?(GiONEE[- ])?GN305!', + 42 => '(GIO-)?(GiONEE[- ])?GN320!', + 43 => '(GIO-)?(GiONEE[- ])?GN360!', + 44 => '(GIO-)?(GiONEE[- ])?GN380!', + 45 => '(GIO-)?(GiONEE[- ])?GN600!', + 46 => '(GIO-)?(GiONEE[- ])?GN700T!', + 47 => '(GIO-)?(GiONEE[- ])?GN700W!', + 48 => '(GIO-)?(GiONEE[- ])?GN705T!', + 49 => '(GIO-)?(GiONEE[- ])?GN705W!', + 50 => '(GIO-)?(GiONEE[- ])?GN706L!', + 51 => '(GIO-)?(GiONEE[- ])?GN708T!', + 52 => '(GIO-)?(GiONEE[- ])?GN708W!', + 53 => '(GIO-)?(GiONEE[- ])?GN787!', + 54 => '(GIO-)?(GiONEE[- ])?GN800!', + 55 => '(GIO-)?(GiONEE[- ])?GN810!', + 56 => '(GIO-)?(GiONEE[- ])?GN818T!', + 57 => '(GIO-)?(GiONEE[- ])?GN858!', + 58 => '(GIO-)?(GiONEE[- ])?GN868!', + 59 => '(GIO-)?(GiONEE[- ])?GN878!', + 60 => '(GIO-)?(GiONEE[- ])?GN9000!', + 61 => '(GIO-)?(GiONEE[- ])?GN9001!', + 62 => '(GIO-)?(GiONEE[- ])?GN9002!', + 63 => '(GIO-)?(GiONEE[- ])?GN9004!', + 64 => '(GIO-)?(GiONEE[- ])?GN9005!', + 65 => 'Gionee M1', + 66 => 'Gionee M2', + 67 => 'Gionee M3S', + 68 => 'Gionee M5', + 69 => '(GIO-)?(GiONEE[- ])?S101!', + 70 => 'GiONEE TD500', + 71 => '(GIO-)?(GiONEE[- ])?V182!', + 72 => '(GIO-)?(GiONEE[- ])?V185!', + 73 => '(GIO-)?(GiONEE[- ])?V188!', + 74 => '(GIO-)?(GiONEE[- ])?W800!', + 75 => '(GIO-)?(GiONEE[- ])?X817!', + 76 => '(GIO-)?(GiONEE[- ])?Ctrl V1!', + 77 => '(GIO-)?(GiONEE[- ])?Ctrl V2!', + 78 => '(GIO-)?(GiONEE[- ])?Ctrl V3!', + 79 => '(GIO-)?(GiONEE[- ])?Ctrl V4!', + 80 => '(GIO-)?(GiONEE[- ])?Ctrl V5!', + 81 => '(GIO-)?(GiONEE[- ])?Pioneer P1!', + 82 => '(GIO-)?(GiONEE[- ])?Pioneer P2!', + 83 => '(GIO-)?(GiONEE[- ])?Pioneer P3!', + 84 => '(GIO-)?(GiONEE[- ])?Pioneer P4!', + 85 => 'Gionee P3', + 86 => 'Gionee P4', + 87 => '(GIO-)?(GiONEE[- ])?Gpad G1!', + 88 => '(GIO-)?(GiONEE[- ])?Gpad G2!', + 89 => '(GIO-)?(GiONEE[- ])?Gpad G3!', + 90 => 'GinDream/GinMagic', + ), + '@GK' => + array ( + 0 => 'GK802', + ), + '@GL' => + array ( + 0 => 'Glass 1', + 1 => 'GLADIATOR', + 2 => 'GLADIATOR-2', + 3 => 'GLADIATOR 3', + 4 => 'GLADIATOR 4', + 5 => 'Glory', + 6 => 'Glory 2', + 7 => 'Glory3', + 8 => 'GLORY 4', + 9 => 'GloryG1000', + 10 => 'GL-900', + 11 => 'GLX!!', + 12 => 'GL07S', + ), + '@GN' => + array ( + 0 => '(GIO-)?(GiONEE[- ])?GN100T!', + 1 => '(GIO-)?(GiONEE[- ])?GN100!', + 2 => '(GIO-)?(GiONEE[- ])?GN105!', + 3 => '(GIO-)?(GiONEE[- ])?GN106!', + 4 => '(GIO-)?(GiONEE[- ])?GN107!', + 5 => '(GIO-)?(GiONEE[- ])?GN108!', + 6 => '(GIO-)?(GiONEE[- ])?GN109!', + 7 => '(GIO-)?(GiONEE[- ])?GN135!', + 8 => '(GIO-)?(GiONEE[- ])?GN136!', + 9 => '(GIO-)?(GiONEE[- ])?GN137!', + 10 => '(GIO-)?(GiONEE[- ])?GN139!', + 11 => '(GIO-)?(GiONEE[- ])?GN150!', + 12 => '(GIO-)?(GiONEE[- ])?GN151!', + 13 => '(GIO-)?(GiONEE[- ])?GN160T!', + 14 => '(GIO-)?(GiONEE[- ])?GN160!', + 15 => '(GIO-)?(GiONEE[- ])?GN168T!', + 16 => '(GIO-)?(GiONEE[- ])?GN170!', + 17 => '(GIO-)?(GiONEE[- ])?GN180!', + 18 => '(GIO-)?(GiONEE[- ])?GN181!', + 19 => '(GIO-)?(GiONEE[- ])?GN200!', + 20 => '(GIO-)?(GiONEE[- ])?GN205!', + 21 => '(GIO-)?(GiONEE[- ])?GN210!', + 22 => '(GIO-)?(GiONEE[- ])?GN305!', + 23 => '(GIO-)?(GiONEE[- ])?GN320!', + 24 => '(GIO-)?(GiONEE[- ])?GN360!', + 25 => '(GIO-)?(GiONEE[- ])?GN380!', + 26 => '(GIO-)?(GiONEE[- ])?GN600!', + 27 => '(GIO-)?(GiONEE[- ])?GN700T!', + 28 => '(GIO-)?(GiONEE[- ])?GN700W!', + 29 => '(GIO-)?(GiONEE[- ])?GN705T!', + 30 => '(GIO-)?(GiONEE[- ])?GN705W!', + 31 => '(GIO-)?(GiONEE[- ])?GN706L!', + 32 => '(GIO-)?(GiONEE[- ])?GN708T!', + 33 => 'GN 708T', + 34 => '(GIO-)?(GiONEE[- ])?GN708W!', + 35 => '(GIO-)?(GiONEE[- ])?GN787!', + 36 => '(GIO-)?(GiONEE[- ])?GN800!', + 37 => '(GIO-)?(GiONEE[- ])?GN810!', + 38 => '(GIO-)?(GiONEE[- ])?GN818T!', + 39 => '(GIO-)?(GiONEE[- ])?GN858!', + 40 => '(GIO-)?(GiONEE[- ])?GN868!', + 41 => '(GIO-)?(GiONEE[- ])?GN878!', + 42 => '(GIO-)?(GiONEE[- ])?GN9000!', + 43 => '(GIO-)?(GiONEE[- ])?GN9001!', + 44 => '(GIO-)?(GiONEE[- ])?GN9002!', + 45 => '(GIO-)?(GiONEE[- ])?GN9004!', + 46 => '(GIO-)?(GiONEE[- ])?GN9005!', + 47 => 'Gnappo Ideos', + ), + '@GO' => + array ( + 0 => 'google sdk', + 1 => 'Google Ion', + 2 => '(Google )?Nexus S!', + 3 => '(Google )?Galaxy Nexus!', + 4 => '(Google )?Nexus ?4!', + 5 => '(Google )?Nexus ?5!', + 6 => '(Google )?Nexus ?6!', + 7 => '(Google )?Nexus ?7 2013!', + 8 => '(Google )?Nexus ?7!', + 9 => '(Google )?Nexus ?9!', + 10 => '(Google )?Nexus ?10!', + 11 => 'google cube', + 12 => 'GOCL!!', + 13 => 'GO Live!!', + 14 => 'GOOPHONE!!', + 15 => 'GO !!', + 16 => 'GOA', + 17 => 'GO778', + 18 => 'GO980', + 19 => 'Gomobile GO1001', + ), + '@GP' => + array ( + 0 => '(GP-|Geeksphone)!!', + 1 => 'GP-431', + 2 => 'GP-720', + 3 => 'GPLUS GN708W', + 4 => 'GPLUS N809', + 5 => '(GIO-)?(GiONEE[- ])?Gpad G1!', + 6 => '(GIO-)?(GiONEE[- ])?Gpad G2!', + 7 => '(GIO-)?(GiONEE[- ])?Gpad G3!', + ), + '@GR' => + array ( + 0 => 'Grouper', + 1 => 'GR-TB!!', + 2 => '(HUAWEI )?(ALE|D2|G6|G7|GRA|M100|P2|P6|P7|RIO|SC|Sophia)!!', + 3 => 'greenridge', + 4 => 'Grand Memo lite', + 5 => 'Grand S Flex', + 6 => 'Grand X Quad Lite', + 7 => 'Grand X2', + 8 => 'Grand X', + 9 => 'Grand X In', + 10 => 'Grand X Intel', + 11 => 'Grand X Pro', + ), + '@GS' => + array ( + 0 => 'GS01', + 1 => '(Gsmart|Gigabyte|Rio)!!', + 2 => 'GS02', + 3 => 'GS03', + ), + '@GT' => + array ( + 0 => 'GT-I9505G', + 1 => 'GT-[HN][0-9]{4,4}!!', + 2 => 'GT-[0-9]{4,4}!!', + 3 => 'GT-i9377', + 4 => 'GT540', + 5 => 'GTV100', + 6 => 'GT-B[0-9]{4,4}!!', + 7 => 'GT-I[0-9]{3,4}!!', + 8 => 'GT-N[0-9]{4,4}!!', + 9 => 'GT-P[0-9]{4,4}!!', + 10 => 'GT-S[0-9]{4,4}!!', + 11 => 'GT-T959!', + 12 => 'GT9100', + 13 => 'GTablet', + 14 => 'GtabComb', + ), + '@GV' => + array ( + 0 => 'GVON 898', + ), + '@GW' => + array ( + 0 => 'GW620', + ), + '@GX' => + array ( + 0 => 'GX1210V TV', + ), + '@H1' => + array ( + 0 => 'H120', + ), + '@H2' => + array ( + 0 => 'H2000+', + ), + '@H3' => + array ( + 0 => '(HW-|HUAWEI )?(ATH|CHE|CHM|HN3|H30|H60|HOL|KIW|PE|PLK|SCL)!!', + ), + '@H6' => + array ( + 0 => '(HW-|HUAWEI )?(ATH|CHE|CHM|HN3|H30|H60|HOL|KIW|PE|PLK|SCL)!!', + ), + '@H7' => + array ( + 0 => 'H701', + 1 => 'H7500+', + ), + '@H8' => + array ( + 0 => 'H866C', + 1 => 'H882L', + ), + '@H9' => + array ( + 0 => 'H9500', + ), + '@HA' => + array ( + 0 => 'HammerHead', + 1 => '(Haier[- ])?H[ETW]- ?[A-Z][0-9]!!', + 2 => 'Haier-SY0880', + 3 => 'HannsComb', + 4 => 'Hannspadd', + 5 => 'Hayabusa', + ), + '@HB' => + array ( + 0 => 'HB-100 DASAN', + 1 => 'HB-100 DASAN Networks, Inc.', + 2 => 'HB-1000', + ), + '@HD' => + array ( + 0 => 'HD2', + 1 => 'HD7 Pro', + ), + '@HE' => + array ( + 0 => 'HEDY!!', + 1 => 'HERO H7500+', + 2 => 'Hero', + 3 => 'HERO CDMA', + 4 => 'HERO200', + ), + '@HI' => + array ( + 0 => '(Highscreen|Alpha|Cosmo|Explosion|Zera)!!', + 1 => 'HIKe!!', + 2 => 'HILIVE H7', + 3 => '(HS-)?Hisense!!', + 4 => 'Hisense AD686G', + 5 => '(Hisense )?LED[0-9]{2,2}(K|EC)!!', + 6 => 'Hisense Google TV TV', + 7 => 'hisense gx1200v', + 8 => '(Amaze|Hitech)!!', + 9 => 'HITO HT-3', + 10 => 'HIGHWAY', + 11 => 'HIGHWAY SIGNS', + ), + '@HK' => + array ( + 0 => 'HKPHONE H8-3G', + ), + '@HL' => + array ( + 0 => 'HLV-T!!', + ), + '@HM' => + array ( + 0 => 'HM 1', + 1 => 'HM 1A', + 2 => 'HM 1AC', + 3 => 'HM 1S', + 4 => 'HM 1SC', + 5 => 'HM 1SLTETD', + 6 => 'HM 1STD', + 7 => 'HM 1SW', + 8 => 'HM 2A', + 9 => 'HM NOTE', + 10 => 'HM NOTE 1LTE', + 11 => 'HM NOTE 1LTETD', + 12 => 'HM NOTE 1LTEW', + 13 => 'HM NOTE 1LTEGLOBAL', + 14 => 'HM NOTE 1TD', + 15 => 'HM NOTE 1S', + 16 => 'HM NOTE 1W', + ), + '@HN' => + array ( + 0 => '(HW-|HUAWEI )?(ATH|CHE|CHM|HN3|H30|H60|HOL|KIW|PE|PLK|SCL)!!', + ), + '@HO' => + array ( + 0 => 'HOSIN!!', + 1 => '(HW-|HUAWEI )?(ATH|CHE|CHM|HN3|H30|H60|HOL|KIW|PE|PLK|SCL)!!', + 2 => 'Honor3c2G-T', + 3 => 'HOMESYNCT2WIFI', + ), + '@HP' => + array ( + 0 => '(HP|Slate)!!', + 1 => 'HP-TouchPad', + 2 => '(HP )?Touchpad!', + ), + '@HS' => + array ( + 0 => 'HS-[0-9]{1,2}DTB!!', + 1 => 'HS-[EFHITUX][0-9]!!', + 2 => 'HS-E[GT][0-9]{3,3}!!', + 3 => '(HS-)?Hisense!!', + ), + '@HT' => + array ( + 0 => '(HTC )?Nexus ?One!', + 1 => 'HTC One', + 2 => 'HTC!!', + 3 => '(HTC|PC|USCC)?ADR[0-9]{4,4}!!', + 4 => '(HTC )?HT[LV][0-9]{2,2}!!', + 5 => 'HTX21', + 6 => 'HTC T-Mobile myTouch 3G Slide', + 7 => 'HTC my ?Touch 3G Slide!', + 8 => 'HTC Glacier', + 9 => 'HTC Panache', + 10 => 'HTC My ?Touch ?4G$!', + 11 => 'HTC myTouch 4G Slide', + ), + '@HU' => + array ( + 0 => 'Huawei MediaPad', + 1 => 'Huawei OsiMood MediaPad', + 2 => '(Huawei )?[MSTX][1278]\\-[A-Z0-9][0-9]{2,2}!!', + 3 => '(HUAWEI )?(CRR|MATE|MT1|MT2|MT7|M200|NXT|Z100)!!', + 4 => '(HUAWEI )?(TIT)!!', + 5 => '(HW-|HUAWEI )?(ATH|CHE|CHM|HN3|H30|H60|HOL|KIW|PE|PLK|SCL)!!', + 6 => '(HUAWEI )?(CHC|KII)!!', + 7 => '(HUAWEI )?(ALE|D2|G6|G7|GRA|M100|P2|P6|P7|RIO|SC|Sophia)!!', + 8 => '(Huawei|Ascend|HW-)!!', + 9 => 'HUAWEI Honor 3c w', + 10 => 'Huawei S7', + 11 => 'Hudl HT7S3', + 12 => 'Hudl 2', + 13 => 'HUAWEI U8686', + ), + '@HW' => + array ( + 0 => '(HW-|HUAWEI )?(ATH|CHE|CHM|HN3|H30|H60|HOL|KIW|PE|PLK|SCL)!!', + 1 => '(Huawei|Ascend|HW-)!!', + 2 => 'HW-01E', + 3 => 'HW-03E', + ), + '@HY' => + array ( + 0 => 'HY5001', + 1 => 'HYUNDAI!!', + ), + '@I ' => + array ( + 0 => 'I 7520', + ), + '@I-' => + array ( + 0 => 'i-Joy i-Call', + 1 => 'i-Call 300', + 2 => 'i-Call 300v2', + 3 => 'i-Call 504', + 4 => 'i-mobile i651', + 5 => 'i-mobile 697', + 6 => 'i-mobile i691', + 7 => 'i-mobile i692', + 8 => 'i-mobile i693', + 9 => 'i-mobile i695', + 10 => 'i-mobile i698', + 11 => 'i-mobile i810', + 12 => 'i-mobile i858', + 13 => 'i-mobile i858 Plus', + 14 => 'i-mobile 3G 8500', + 15 => 'i-mobile IQ 1', + 16 => 'i-mobile IQ1-1', + 17 => 'I-mobile IQ1-1A', + 18 => 'i-mobile IQ 2', + 19 => 'i-mobile IQ II', + 20 => 'i-mobile IQ 2A', + 21 => 'i-mobile IQ 3', + 22 => 'I-mobile IQ 4', + 23 => 'i-mobile IQ 5', + 24 => 'i-mobile IQ 5A', + 25 => 'i-mobile IQ 5.1', + 26 => 'i-mobile IQ 5.1A', + 27 => 'i-mobile IQ5.1 Pro', + 28 => 'i-mobile IQ5.1A Pro', + 29 => 'i-mobile IQ 5.3', + 30 => 'i-mobile IQ 5.5', + 31 => 'i-mobile IQ 5.7', + 32 => 'i-mobile IQ 5.8 DTV', + 33 => 'i-mobile IQ 6', + 34 => 'i-mobile IQ 6A', + 35 => 'i-mobile IQ 6.1', + 36 => 'i-mobile IQ 6.2', + 37 => 'i-mobile IQ6.3', + 38 => 'i-mobile IQ6.6', + 39 => 'i-mobile IQ 6.9 DTV', + 40 => 'i-mobile IQ 9', + 41 => 'i-mobile IQ 9A', + 42 => 'i-mobile IQ 9.2', + 43 => 'i-mobile IQ 9.2A', + 44 => 'i-mobile IQ X', + 45 => 'i-mobile IQ X zeen', + 46 => 'i-mobile IQ XA', + 47 => 'i-mobile IQ X2', + 48 => 'i-mobile IQ X3', + 49 => 'i-mobile IQ X3A', + 50 => 'i-mobile IQ BIG', + 51 => 'i-mobile IQX BLIZ!', + 52 => 'i-mobile IQ 1068', + 53 => 'i-STYLE 1', + 54 => 'i-mobile i-STYLE 1', + 55 => 'I-STYLE 1 I', + 56 => 'i-mobile i-STYLE 1 i', + 57 => 'i-mobile i-STYLE 2', + 58 => 'i-mobile i-STYLE 2i', + 59 => 'i-STYLE2.1', + 60 => 'i-STYLE2.1A', + 61 => 'i-mobile i-STYLE 2.2', + 62 => 'i-mobile i-style 2.3', + 63 => 'i-mobile i-style 2.3A', + 64 => 'i-mobile i-STYLE 2.4', + 65 => 'i-mobile i-STYLE 2.5', + 66 => 'i-mobile i-style 2.6', + 67 => 'i-mobile i-style 2.6A', + 68 => 'i-mobile i-STYLE 2.9', + 69 => 'i-mobile i-style 3', + 70 => 'i-mobile i-style 3i', + 71 => 'i-mobile i-STYLE 4', + 72 => 'i-style 4', + 73 => 'i-mobile i-STYLE 4i', + 74 => 'i-MOBILE i-STYLE 5', + 75 => 'i-MOBILE i-STYLE 5i', + 76 => 'i-mobile i-STYLE 6', + 77 => 'i-mobile i-STYLE 6A', + 78 => 'i-mobile i-STYLE 7', + 79 => 'i-mobile i-STYLE 7A', + 80 => 'i-mobile i-style 7.1', + 81 => 'i-mobile i-STYLE 7.2', + 82 => 'i-mobile i-STYLE 7.3', + 83 => 'i-mobile i-STYLE 7.3A', + 84 => 'i-mobile i-STYLE 7.5', + 85 => 'i-mobile i-STYLE 7.5A', + 86 => 'i-STYLE 7.6', + 87 => 'i-mobile i-STYLE 7.7 DTV', + 88 => 'i-mobile i-STYLE 7.8 DTV', + 89 => 'i-mobile i-style 8', + 90 => 'i-mobile i-STYLE 8.1', + 91 => 'i-mobile i-STYLE 8.2', + 92 => 'i-mobile i-STYLE 8.2A', + 93 => 'i-mobile i-STYLE 8.3 DTV', + 94 => 'i-mobile i-STYLE 8.6 DTV', + 95 => 'i-mobile i-STYLE 210', + 96 => 'i-mobile i-STYLE 215', + 97 => 'i-mobile I-STYLE 217', + 98 => 'i-mobile i-STYLE 218', + 99 => 'i-mobile i-style Q1', + 100 => 'I-mobile I-style Q1i', + 101 => 'i-mobile i-STYLE Q2', + 102 => 'i-mobile i-STYLE Q2 DUO', + 103 => 'i-STYLE Q2 DUO!', + 104 => 'i-mobile i-style Q3', + 105 => 'i-mobile i-style Q3i', + 106 => 'i-STYLE Q4', + 107 => 'i-STYLE Q4A', + 108 => 'i-mobile i-STYLE Q 5', + 109 => 'i-mobile i-STYLE Q 5A', + 110 => 'i-mobile i-STYLE Q6', + 111 => 'i-mobile i-STYLE Q6A', + 112 => 'i-mobile I-Note', + 113 => 'I-note WiFi 1.1', + 114 => 'i-mobile i-note WiFi', + 115 => 'I-mobile I-note S', + 116 => 'i-mobile i-note 2', + 117 => 'i-mobile i-NOTE WIFI 2', + 118 => 'i-mobile i-note 3', + 119 => 'i-mobile i-note WIFI3', + 120 => 'i-mobile i-note WiFi 7', + 121 => 'i-mobile i-note WiFi 9', + ), + '@I1' => + array ( + 0 => 'i1', + ), + '@I3' => + array ( + 0 => 'i3000', + ), + '@I5' => + array ( + 0 => 'i5300', + 1 => 'i5350', + ), + '@I6' => + array ( + 0 => 'i6000', + ), + '@I7' => + array ( + 0 => 'I7500', + ), + '@I8' => + array ( + 0 => 'i8400', + 1 => 'i8450', + 2 => 'i803w', + 3 => 'I897', + ), + '@I9' => + array ( + 0 => 'I9220', + 1 => 'i9400', + 2 => 'i9430', + 3 => 'i9480', + 4 => 'i9500', + 5 => 'i9570', + 6 => 'I9000', + ), + '@IB' => + array ( + 0 => '(iBall )?Andi!!', + 1 => 'iBall!!', + 2 => '(Aura|iberry|AUXUS)!!', + ), + '@IC' => + array ( + 0 => 'ICONIA!!', + 1 => 'IconBit NetTab Thor Mini', + ), + '@ID' => + array ( + 0 => '(Digma )?iD[jmnsx][DQ]?[0-9]*!!', + 1 => 'IDEOS!!', + 2 => 'IdeaPad A1', + 3 => 'IdeaPadA10', + 4 => 'Ideapad K1!', + 5 => 'Ideapad S10-3T', + 6 => '(Lenovo ?)?(IdeaTab ?)?[AB][0-9]{4,4}!!', + 7 => '(Lenovo ?)?(IdeaTab ?)?[KSV][0-9]{4,4}!!', + 8 => 'idea ?tv!!', + ), + '@IF' => + array ( + 0 => 'ifive!!', + ), + '@IG' => + array ( + 0 => 'IGGY', + ), + '@IL' => + array ( + 0 => '(Ilium )?Avvio!!', + 1 => 'ILT-MX100', + 2 => '(Lanix )?Ilium!!', + ), + '@IM' => + array ( + 0 => 'imx50!', + 1 => 'imx51!', + 2 => 'imx53!', + 3 => 'imx6q!', + 4 => 'IMO!!', + 5 => 'Im(Smart|PAD)!!', + 6 => '(SKY )?IM[- ][A-Z][0-9]{3,3}!!', + ), + '@IN' => + array ( + 0 => '(Explay|X-tremer|ActiveD|Informer|Surfer)!!', + 1 => 'Incredible', + 2 => 'Incredible 2', + 3 => 'Incredible ?S!', + 4 => 'Incredible ?2!', + 5 => 'Incredible 4G LTE', + 6 => 'Inspire HD', + 7 => 'Inspire 4G', + 8 => 'INFOBAR!!', + 9 => 'Infinix!!', + 10 => 'IN[0-9]{3,3}!!', + 11 => 'Infocus!!', + 12 => 'INHON PAPILIO G1', + 13 => 'intki E86', + 14 => 'Innos!!', + 15 => '(Intex )?Aqua!!', + 16 => '(Intex )?Cloud!!', + 17 => 'INTEX IRIS-II', + 18 => 'INQ Cloud Touch', + 19 => '(iNote|itel)!!', + ), + '@IO' => + array ( + 0 => 'iOCEAN!!', + ), + '@IP' => + array ( + 0 => 'IPRO i5S', + ), + '@IQ' => + array ( + 0 => '(Fly )?IQ ?[0-9]{3,4}!!', + 1 => 'iQ(Talk|Tab)!!', + 2 => 'IQ 5.5', + 3 => 'IQ 5.6', + 4 => 'IQ 5.6A', + 5 => 'IQ9.1', + ), + '@IR' => + array ( + 0 => 'Iris!!', + ), + '@IS' => + array ( + 0 => 'IS11CA', + 1 => 'ISW?[0-9]{2,2}F!!', + 2 => 'ISW[0-9]{2,2}HT!!', + 3 => 'ISW11K', + 4 => 'IS11LG', + 5 => 'ISW11M', + 6 => 'IS12M', + 7 => 'IS11N', + 8 => 'IS06', + 9 => 'IS11PT', + 10 => 'IS703C', + 11 => 'IS801C', + 12 => 'ISW11SC', + 13 => 'IS0[0-9]!!', + 14 => 'ISW?1[0-9]SH!!', + 15 => 'IS[0-9]{2,2}S!!', + 16 => 'IS04', + 17 => 'IS11T', + ), + '@IT' => + array ( + 0 => '(iNote|itel)!!', + ), + '@IV' => + array ( + 0 => 'IVIO!!', + ), + '@IW' => + array ( + 0 => 'iwoo i900', + ), + '@IX' => + array ( + 0 => 'iX101T1', + 1 => 'iX101T1-2G', + 2 => 'iX101T1-XS', + ), + '@JA' => + array ( + 0 => 'Jaguar3', + 1 => 'Jaguar7', + ), + '@JC' => + array ( + 0 => 'JC-S9220', + 1 => 'JC-A[0-9]{3,3}!!', + 2 => 'JC-KSP8000', + ), + '@JI' => + array ( + 0 => '(JIAYU|JY-)!!', + 1 => 'JIMMY', + ), + '@JJ' => + array ( + 0 => 'JJ5S+', + ), + '@JO' => + array ( + 0 => 'Jolla', + ), + '@JT' => + array ( + 0 => 'JT SmartPC02', + 1 => 'JT-Smart PC01', + 2 => 'JT-H580VT', + 3 => 'JT-H581VT', + ), + '@JX' => + array ( + 0 => 'JXD!!', + ), + '@JY' => + array ( + 0 => '(JIAYU|JY-)!!', + ), + '@K-' => + array ( + 0 => 'K-?Touch!!', + ), + '@K0' => + array ( + 0 => 'K00C', + 1 => 'K010', + 2 => 'K018', + 3 => 'K00G', + 4 => 'K00E', + 5 => 'K00X', + 6 => 'K00Y', + 7 => 'K00Z', + 8 => 'K00R', + 9 => 'K007', + 10 => 'K013', + 11 => 'K017', + 12 => 'K01A', + 13 => 'K00S', + 14 => 'K00U', + 15 => 'K00L', + 16 => 'K011', + 17 => 'K015', + 18 => 'K00F', + 19 => 'K012', + 20 => 'K019', + 21 => 'K014', + 22 => 'K016', + 23 => 'K01E', + 24 => 'K01N', + 25 => 'K01Q', + 26 => 'K080', + ), + '@K1' => + array ( + 0 => 'K11', + 1 => 'K1', + ), + '@K3' => + array ( + 0 => 'K3', + ), + '@KA' => + array ( + 0 => 'Karbonn!!', + 1 => '(Karbonn|Titanium)!!', + 2 => '(KAZAM|Tornado|Trooper)!!', + 3 => '(KATBL|Agora)!!', + ), + '@KB' => + array ( + 0 => 'KB901', + ), + '@KE' => + array ( + 0 => 'KENEKSI', + ), + '@KF' => + array ( + 0 => 'KFOTE?!', + 1 => 'KFTT', + 2 => 'KFJW(I|A)!', + 3 => 'KFJMWI', + 4 => 'KFSOWI', + 5 => 'KFTHW(I|A)!', + 6 => 'KFAPW(I|A)!', + 7 => 'KFARWI', + 8 => 'KFASWI', + 9 => 'KFSAW(I|A)!', + 10 => 'KFFOWI', + 11 => 'KFMEWI', + 12 => 'KFTBWI', + ), + '@KI' => + array ( + 0 => 'Kindle Fire', + 1 => '(HW-|HUAWEI )?(ATH|CHE|CHM|HN3|H30|H60|HOL|KIW|PE|PLK|SCL)!!', + 2 => '(HUAWEI )?(CHC|KII)!!', + 3 => 'KIOTO 793', + 4 => 'KITE', + ), + '@KM' => + array ( + 0 => '(EV|KM)-[ES][0-9]{3,3}!!', + ), + '@KO' => + array ( + 0 => 'Konka Amber3', + 1 => 'KOMU!!', + 2 => 'KONKA!!', + 3 => 'Koobe!!', + ), + '@KP' => + array ( + 0 => 'KPT!!', + 1 => 'KPN Smart 200', + 2 => 'KPN Smart 300', + 3 => 'KPN Smart 400', + ), + '@KS' => + array ( + 0 => 'KSP8000', + ), + '@KU' => + array ( + 0 => 'Kurio!!', + 1 => 'KU9500', + ), + '@KY' => + array ( + 0 => 'Kyivstar Aqua', + 1 => 'KYV33', + 2 => 'Kyobo mirasol eReader', + 3 => 'KYL[0-9]{2,2}!!', + 4 => 'KYOCERA-E[0-9]{4,4}!!', + 5 => 'KY[LTYV][0-9]{2,2}!!', + ), + '@L-' => + array ( + 0 => 'L-0[0-9][A-Z]!!', + ), + '@L3' => + array ( + 0 => 'L3', + ), + '@L9' => + array ( + 0 => 'l97D', + ), + '@LA' => + array ( + 0 => 'LA-!!', + 1 => '(Lanix )?Ilium!!', + 2 => 'Lark!!', + 3 => 'LAVA iris 351', + 4 => 'LAVA iRIS 504q', + 5 => 'LAVA S12', + 6 => 'LaVieTab!!', + 7 => 'LA-I Dual core', + 8 => 'LA-M3', + 9 => 'LA1-L', + 10 => 'LA2-E', + 11 => 'LA2-E1', + 12 => 'LA2-L', + 13 => 'LA2-T', + 14 => 'LA2-T1', + 15 => 'LA2-W', + 16 => 'LA2-W1', + 17 => 'LA3-W', + 18 => 'LA3S', + 19 => 'LA5-W', + ), + '@LC' => + array ( + 0 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + 1 => 'LC-55LE860H', + 2 => 'LC-55LE860M', + ), + '@LD' => + array ( + 0 => 'LDK-ICK v1.4', + ), + '@LE' => + array ( + 0 => '(Hisense )?LED[0-9]{2,2}(K|EC)!!', + 1 => 'Legend', + 2 => 'leepoo!!', + 3 => 'Lenco!!', + 4 => 'LENCM900HZ', + 5 => 'Lenovo A1-32AB0', + 6 => 'Lenovo A1-32AJ0', + 7 => 'Lenovo IdeaPad Yoga 11S', + 8 => 'Lenovo IdeaPad Yoga 13', + 9 => '(Lenovo ?)?(IdeaTab ?)?[AB][0-9]{4,4}!!', + 10 => '(Lenovo )?(Tab ?)?(2 ?)?[AS](7|8|10)!!', + 11 => '(Lenovo ?)?(IdeaTab ?)?[KSV][0-9]{4,4}!!', + 12 => 'lepad 001b', + 13 => 'lepad 001n', + 14 => '(Lenovo|Lephone)!!', + 15 => 'Lenovo!!', + 16 => 'LenovoTV 40S9', + 17 => 'LenovoTV 50S52', + 18 => '(BLF-)?lephone!!', + 19 => 'Le Pan TC802A', + 20 => 'Le Pan TC1010', + 21 => 'Le Pan TC1020', + 22 => 'LePanII', + 23 => 'Le Pan S', + 24 => 'LENNY', + ), + '@LG' => + array ( + 0 => 'LGE-lap crespo', + 1 => 'LGE-lap maguro', + 2 => 'LGE-maguro cappuccino', + 3 => 'LGE-lap mako', + 4 => 'LG-Nexus5', + 5 => 'LG Watch Urbane', + 6 => 'LG-AN160', + 7 => 'LG-?AS[0-9]{3,3}!!', + 8 => 'LG-?C[0-9]{3,3}!!', + 9 => 'LG-CX670', + 10 => 'LG-?D[0-9]{3,3}!!', + 11 => 'LG-DS1203', + 12 => 'LG-?E[0-9]{3,3}!!', + 13 => 'LG-F[0-9]{3,3}!!', + 14 => 'LG-GT540!', + 15 => 'LG-GW620!', + 16 => 'LG-H[0-9]{3,3}!!', + 17 => 'LG-KH5200', + 18 => 'LG-KS1024', + 19 => 'LG-KU[0-9]{4,4}!!', + 20 => 'LG-?L[0-9]{2,3}[A-Z]!!', + 21 => 'LG-LG[0-9]{3,3}!!', + 22 => 'LGLK430', + 23 => 'LG-?LS[0-9]{3,3}!!', + 24 => 'LG-LU[0-9]{4,4}!!', + 25 => 'LG-LW690', + 26 => 'LG-LW770', + 27 => 'LG-?MS[0-9]{3,3}!!', + 28 => 'LG-P[0-9]{3,3}!!', + 29 => 'LG-SU[0-9]{3,3}!!', + 30 => 'LGUK410', + 31 => 'LG-UN350', + 32 => 'LG-?US[0-9]{3,3}!!', + 33 => 'LG-V[0-9]{3,3}!!', + 34 => 'LG-VK[0-9]{3,3}!!', + 35 => 'LG-VN[0-9]{3,3}!!', + 36 => 'LG-VM[0-9]{3,3}!!', + 37 => 'LG-VS[0-9]{3,3}!!', + 38 => 'LG-X[0-9]{3,3}!!', + 39 => 'lge-F160!', + 40 => 'LGE-E988!', + 41 => 'lgp-970', + 42 => 'LG[LV][0-9]{2,2}!!', + 43 => 'LG!!', + 44 => 'LG-Google TV!!', + 45 => 'LG-ANDROID MINI BOX', + 46 => 'LG-P999', + 47 => 'LG-E739', + 48 => 'LG-C800', + ), + '@LI' => + array ( + 0 => 'Liquid!!', + 1 => '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!', + 2 => 'Liberty', + 3 => '(MEDION|(MD )?LIFETAB)!!', + 4 => 'Liberty Tab G100', + 5 => 'Live ?With ?Walkman!', + 6 => 'Light Tab 2', + 7 => 'Light Tab 2W', + ), + '@LO' => + array ( + 0 => 'LogicPD Zoom2', + 1 => 'Loox', + ), + '@LS' => + array ( + 0 => 'LS670', + 1 => 'LS740', + ), + '@LT' => + array ( + 0 => 'LT[0-9]{4,4}!!', + 1 => 'LT-NA7', + 2 => 'LT-NA7F', + 3 => 'LT-TLA', + 4 => '(SNM\\-)?LT[0-9]{2,2}[a-z]?!!', + ), + '@LU' => + array ( + 0 => 'LUXURY', + 1 => 'LUXURY 3', + 2 => 'LUXURY 4', + 3 => 'LUXURY 5', + 4 => 'Lucky Ultra Sonic U8650', + 5 => 'LU2300', + 6 => 'Lumia800', + 7 => 'Lumia 900', + 8 => 'Luna TAB07-920N', + 9 => 'Luna TAB07-100', + 10 => 'Luna TAB07-101', + 11 => 'Luna TAB274', + 12 => 'Luna TAB374', + 13 => 'Luna TAB474', + 14 => 'Luna TAB10-150', + 15 => 'Luno', + ), + '@M' => + array ( + 0 => '(DNS )?(Airtab )?(E|M|MA|MF|MW|P|PC|PF)[0-9]{2,4}!!', + ), + '@M ' => + array ( + 0 => 'M POP 5020A', + 1 => 'M POP', + ), + '@M-' => + array ( + 0 => 'M-270', + 1 => 'M-PAD N8', + ), + '@M0' => + array ( + 0 => 'M009F', + 1 => 'M030', + 2 => 'M031', + 3 => 'M032', + 4 => 'M040', + 5 => 'M045', + ), + '@M1' => + array ( + 0 => 'M19', + 1 => '(HUAWEI )?(ALE|D2|G6|G7|GRA|M100|P2|P6|P7|RIO|SC|Sophia)!!', + 2 => 'M1050S', + 3 => 'm1 note', + 4 => 'M1001', + 5 => 'M12', + ), + '@M2' => + array ( + 0 => '(HUAWEI )?(CRR|MATE|MT1|MT2|MT7|M200|NXT|Z100)!!', + 1 => 'M210', + 2 => 'm2 note', + ), + '@M3' => + array ( + 0 => 'M3 Enjoy TV Box', + 1 => 'M310', + 2 => 'M370i', + 3 => 'M351', + 4 => 'M353', + 5 => 'M355', + 6 => 'M356', + ), + '@M4' => + array ( + 0 => 'M4301', + 1 => 'M470BSA', + 2 => 'M470BSE', + 3 => 'M4(TEL)? SS[0-9]{3,4}!!', + ), + '@M5' => + array ( + 0 => 'M532', + 1 => 'M571C', + 2 => 'M578C', + ), + '@M7' => + array ( + 0 => 'M701C', + 1 => 'M758A', + 2 => 'M7CDTU', + 3 => 'M70', + 4 => 'M726HC', + 5 => 'M70014', + ), + '@M8' => + array ( + 0 => 'M801', + 1 => 'M860', + 2 => 'M865', + 3 => 'M886', + 4 => 'M8', + 5 => 'M8 pro', + ), + '@M9' => + array ( + 0 => 'M975', + 1 => 'M9300', + 2 => 'M9', + 3 => 'M9-unlocked', + 4 => 'M9 pro', + 5 => 'M9000', + ), + '@MA' => + array ( + 0 => 'Maguro', + 1 => 'Mako', + 2 => 'manta', + 3 => '(bq|Aquaris|Edison|Maxwell)!!', + 4 => '(DNS )?(Airtab )?(E|M|MA|MF|MW|P|PC|PF)[0-9]{2,4}!!', + 5 => '(HUAWEI )?(CRR|MATE|MT1|MT2|MT7|M200|NXT|Z100)!!', + 6 => 'Malata!!', + 7 => 'Masstel!!', + 8 => 'MASTONE!!', + 9 => 'Maxtron!!', + 10 => 'MagicBox', + ), + '@MB' => + array ( + 0 => 'MBX DVBT reference board (c03ref)', + 1 => 'MBX Dongle board!', + 2 => 'MBX reference board!', + 3 => '(NMP|MBR|XDK|XDS|XMP)\\-!!', + 4 => 'MBS BEAN 454', + 5 => 'MB[0-9]{3,3}!!', + ), + '@MC' => + array ( + 0 => 'MC002', + 1 => 'MC32N0', + 2 => 'MC40N0', + 3 => 'MC67NA', + ), + '@MD' => + array ( + 0 => '(MEDION|(MD )?LIFETAB)!!', + 1 => 'MD-[0-9]{4,4}!!', + ), + '@ME' => + array ( + 0 => 'ME102A', + 1 => 'ME180A', + 2 => 'ME171', + 3 => 'ME172V', + 4 => 'ME173X', + 5 => 'ME301T', + 6 => 'ME302C', + 7 => 'ME302KL', + 8 => 'ME370T', + 9 => 'ME371MG', + 10 => 'ME372CG', + 11 => 'ME372CL-FF', + 12 => 'ME560CG', + 13 => 'ME581CL', + 14 => 'MeMO Pad 7', + 15 => 'MediaPad!!', + 16 => 'Mediacom 810C', + 17 => '(MEDION|(MD )?LIFETAB)!!', + 18 => 'MEEG!!', + 19 => 'meizu m1note', + 20 => 'MEIZU M9', + 21 => 'MEIZU MX', + 22 => '(MEO )?Smart A!!', + 23 => 'MEU AN!!', + 24 => 'ME[0-9]{3,3}!!', + 25 => 'MEM02', + 26 => 'MegaFon SP-AI', + 27 => 'MegaFon SP-A5', + 28 => 'MegaFon V9', + 29 => 'MegaFon V9+', + ), + '@MF' => + array ( + 0 => 'mfld (dv10|dv20|gi|lw00|pr2|pr3)!', + 1 => '(DNS )?(Airtab )?(E|M|MA|MF|MW|P|PC|PF)[0-9]{2,4}!!', + 2 => 'MFC[0-9]!!', + ), + '@MI' => + array ( + 0 => 'MID1040C', + 1 => 'MID[0-9]{4,4}!!', + 2 => 'MID1018', + 3 => 'MID1028', + 4 => 'MITO!!', + 5 => 'Mi438S', + 6 => 'MID Ser(ai|ia)ls!', + 7 => 'MIUI.us Sensation 4G', + 8 => 'MID[0-9]!!', + 9 => 'Mi-A402', + 10 => 'Micromax!!', + 11 => 'Mio!!', + 12 => 'MIZ Z2', + 13 => 'Milestone XT711', + 14 => 'Milestone XT720', + 15 => 'Milestone', + 16 => 'Milestone X', + 17 => 'Milestone X2', + 18 => 'MILESTONE3', + 19 => 'MID7C', + 20 => 'MID43C', + 21 => 'MID74C', + 22 => 'MID77C', + 23 => 'MID82C', + 24 => 'MID84C', + 25 => 'MID102C', + 26 => 'MID103C', + 27 => 'MID104C', + 28 => 'MID114C', + 29 => 'MID[C012]!!', + 30 => '(CSL[- ])?(Spice[- ]?)?Mi-?[0-9]{3,3}!!', + 31 => 'miTab!!', + 32 => 'MI-ONE', + 33 => 'MI-ONEC1', + 34 => 'MI-ONE C1', + 35 => 'MI-ONE Plus!', + 36 => 'mione plus', + 37 => 'MI ONE plus', + 38 => 'MI-ONEPlus', + 39 => 'MI 1S', + 40 => 'MI 1SC', + 41 => 'MI1/1s', + 42 => 'MI-TWO', + 43 => 'MI-TWOPlus', + 44 => 'MI2', + 45 => 'MI 2', + 46 => 'MI 2C', + 47 => 'MI 2A!', + 48 => 'MI2A', + 49 => 'MI 2S', + 50 => 'MI 2SC', + 51 => 'MI 2/2S', + 52 => 'Mi3', + 53 => 'MI-Three', + 54 => 'MI-ThreePlus', + 55 => 'MI 3', + 56 => 'MI 3C', + 57 => 'MI 3W', + 58 => 'Mi3W', + 59 => 'MI 4', + 60 => 'MI 4LTE', + 61 => 'MI 4C', + 62 => 'MI 4W', + 63 => 'Mi-4c', + 64 => 'Mi 4i', + 65 => 'MI NOTE LTE', + 66 => 'MI NOTE Pro', + 67 => 'MI PAD', + 68 => 'MiBOX iCNTV', + 69 => 'MiBOX1S', + 70 => 'MiBOX2', + ), + '@MK' => + array ( + 0 => 'MK808', + 1 => 'MK808B', + 2 => 'MK809B', + 3 => 'MK809IV', + 4 => 'MK818B', + 5 => 'MK908', + 6 => 'MK908II', + 7 => 'MK16(a|i)!', + ), + '@ML' => + array ( + 0 => 'MLLED!!', + ), + '@MO' => + array ( + 0 => 'Moto E', + 1 => 'Moto G', + 2 => 'Moto G LTE', + 3 => 'Moto G 2014', + 4 => 'Moto G 2014 LTE', + 5 => 'Moto G (2014)', + 6 => 'Moto X', + 7 => 'Moto 360', + 8 => 'Mobile Sosh', + 9 => 'Mobiistar!!', + 10 => 'MOCHE SMART A16', + 11 => '(MODECOM )?FreeTAB!!', + 12 => 'MOGU!!', + 13 => 'moii!!', + 14 => 'MORAL N01', + 15 => 'Motorola Pro XT610', + 16 => 'Motorola Milestone MAXX', + 17 => 'Motorola Backflip Me600', + 18 => 'Moto ME860', + 19 => '(Moto)?E2$!', + 20 => '(Moto)?E2\\(4G-LTE\\)$!', + 21 => '(Moto)?G3$!', + 22 => '(Moto)?G3-TE$!', + 23 => 'Moto Backflip', + 24 => 'MOTOROLA XOOM MZ606', + 25 => 'MOTOROLA RAZR', + 26 => 'MOTWX435KT', + 27 => '(PLOYER-)?MOMO!!', + 28 => 'Mobii 7', + 29 => 'MoFing', + 30 => 'Movistar Motion', + 31 => 'MOVE', + ), + '@MP' => + array ( + 0 => 'MP[0-9]{3,3}C!!', + 1 => 'MP717', + 2 => 'MP843', + 3 => 'MP888', + 4 => 'MP959', + 5 => 'MP969', + 6 => 'MP1010', + 7 => 'MP7007', + 8 => 'MPDC100 BT', + 9 => 'MPDC110 BT IPS', + 10 => 'MPDC112 BT IPS', + 11 => 'MPDC8 BT', + 12 => 'MPDC88 BT IPS', + 13 => 'MPDC903', + 14 => 'MPQC704 HD', + 15 => 'MPQC784 IPS', + 16 => 'MPQC804HD', + ), + '@MS' => + array ( + 0 => 'MStar Amber3', + 1 => 'MSM', + 2 => 'msm(7227|7627)!', + 3 => 'msm7630!', + 4 => 'msm8660!', + 5 => 'msm(8x25|8625|8960)!', + 6 => 'msm8x30!', + 7 => 'msm8610!', + 8 => 'msm8909!', + 9 => 'msm(8226|8228)!', + 10 => 'MSM8926!', + 11 => 'msm8916!', + 12 => 'msm8952!', + 13 => 'msm8974!', + 14 => 'MSM8992!', + 15 => 'msm8994!', + 16 => 'MS840 4G', + 17 => 'MS3B', + 18 => 'MS4A', + ), + '@MT' => + array ( + 0 => 'mt5396!', + 1 => 'mt5399!', + 2 => 'mt5861!', + 3 => 'mt5880!', + 4 => 'mt5882!', + 5 => 'mt5890!', + 6 => 'mt6515!', + 7 => 'MTK6515', + 8 => 'mt6517!', + 9 => 'mt6571!', + 10 => 'mt6572!', + 11 => 'mt6575!', + 12 => 'mt6577!', + 13 => 'mt6582!', + 14 => 'mt6589!', + 15 => 'MTK-MT6589', + 16 => 'MTK6589!', + 17 => 'mt6592!', + 18 => 'MTK-MT6592', + 19 => 'MTK6592', + 20 => 'mt6595!', + 21 => 'mt6599!', + 22 => 'mt8125!', + 23 => 'mt8127!', + 24 => 'mt8135!', + 25 => 'MTK--8312', + 26 => 'mt8377!', + 27 => 'mt8389!', + 28 => 'mt8580!', + 29 => 'mt8658!', + 30 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + 31 => '(HUAWEI )?(CRR|MATE|MT1|MT2|MT7|M200|NXT|Z100)!!', + 32 => 'MTC Android', + 33 => 'MT70[0-9]{2,2}!!', + 34 => 'MTK6516', + 35 => 'MT[0-9]{3,3}!!', + 36 => 'MTS-SP100', + 37 => 'MTS-SP101', + 38 => 'MT[0-9]{2,2}[a-z]!!', + 39 => 'MT7A', + 40 => 'MTC 916', + 41 => 'MTC 950', + 42 => 'MTC 955', + 43 => 'MTC 960', + 44 => 'MTC-962', + 45 => 'MTC 968', + 46 => 'MTC 970!', + 47 => 'MTC 972', + 48 => 'MTC975', + 49 => 'MTC 978', + 50 => 'MTC980', + 51 => 'MTC 982', + 52 => 'MTC 1055', + 53 => 'MTC 1065', + 54 => 'MTC 1078', + 55 => 'MTC 982O', + 56 => 'MTC Evo', + 57 => 'MTC Fit', + 58 => 'MTC Neo', + 59 => 'MTC Mini', + 60 => 'MTC SMART Sprint 4G', + 61 => 'MTC Viva', + ), + '@MU' => + array ( + 0 => 'Multilaser Diamond', + 1 => 'Multilaser Orion', + 2 => 'Multilaser Oxy', + 3 => 'Multilaser Titanium', + ), + '@MW' => + array ( + 0 => 'mw07', + 1 => 'MW0710', + 2 => 'MW0711', + 3 => 'MW0712', + 4 => 'MW0731', + 5 => 'MW0731PLUS', + 6 => 'MW0733', + 7 => 'MW0811', + 8 => 'MW0812', + 9 => 'MW0812 V2.0', + 10 => 'MW0821', + 11 => 'MW0821 V2.0', + 12 => 'MW0821+', + 13 => 'MW0831', + 14 => 'MW0831Plus', + 15 => 'MW0922', + 16 => 'MW0931', + 17 => '(DNS )?(Airtab )?(E|M|MA|MF|MW|P|PC|PF)[0-9]{2,4}!!', + 18 => 'MW1031', + ), + '@MX' => + array ( + 0 => 'MX Enjoy TV BOX', + 1 => 'MX2', + 2 => 'MX4', + 3 => 'MX4 Pro', + ), + '@MY' => + array ( + 0 => 'MyPhone A818g Duo', + 1 => 'MyPhone A818 Slim Duo', + 2 => 'MyPhone A848 Duo', + 3 => 'MyPhone A848i Duo', + 4 => 'MyPhone A848g Duo', + 5 => 'MyPhone A888', + 6 => 'MyPhone A888 Duo', + 7 => 'My|Phone A888 Duo', + 8 => 'MyPhone A919 Duo', + 9 => 'MyPhone A919 3D Duo', + 10 => 'MyPhone A919i', + 11 => 'MyPhone A919i Duo', + 12 => 'MyPhone Agua Cyclone', + 13 => 'MyPhone Agua Hail', + 14 => 'MyPhone Agua Iceberg', + 15 => 'MyPhone Agua Iceberg Mini', + 16 => 'MyPhone Agua Iceberg Slim', + 17 => 'MyPhone Agua Infinity', + 18 => 'MyPhone Agua Ocean Lite', + 19 => 'MyPhone Agua Ocean Mini', + 20 => 'MyPhone Agua Ocean Pro', + 21 => 'MyPhone Agua Rain 2G', + 22 => 'MyPhone Agua Rain 3G', + 23 => 'MyPhone Agua Rio', + 24 => 'MyPhone Agua Rio Fun', + 25 => 'MyPhone Agua Rio Lite', + 26 => 'MyPhone Agua Storm', + 27 => 'MyPhone Agua Vortex', + 28 => 'myPhone C Smart', + 29 => 'myPhone Cube', + 30 => 'myPhone Cube 16GB', + 31 => 'myPhone Duosmart', + 32 => 'myPhone FUN 2', + 33 => 'myPhone Funky', + 34 => 'myPhone Hammer', + 35 => 'myPhone INFINITY 3G', + 36 => 'myPhone NEXT', + 37 => 'myPhone NEXTS', + 38 => 'myPhone NEXT S', + 39 => 'myPhone Smart', + 40 => 'myPhone S-line', + 41 => 'MyPhone Rio Craze', + 42 => 'MyPhone Rio Grande', + 43 => 'MyPhone Rio Junior TV', + 44 => 'MyPhone Rio 2 Fun', + 45 => 'MyPhone UNO', + 46 => 'MyPhone Xperia Rain 3G', + 47 => 'MyPad 2', + 48 => 'MyPad 750HD', + 49 => 'MyPad 1000 HD', + 50 => 'MY ?SAGA!!', + 51 => 'My ?Touch ?4G$!', + 52 => 'myTouch 4G Slide', + 53 => 'myTouch Slide 4G', + ), + '@MZ' => + array ( + 0 => 'MZ-m2 note', + 1 => 'MZ-MX4', + 2 => 'MZ[0-9]{3,3}!!', + ), + '@N-' => + array ( + 0 => 'N-0[0-9][A-Z]!!', + ), + '@N1' => + array ( + 0 => 'N1', + 1 => 'N12', + 2 => 'N12R', + 3 => 'N101 DUAL CORE!', + ), + '@N2' => + array ( + 0 => 'N2T', + ), + '@N3' => + array ( + 0 => 'N320', + ), + '@N5' => + array ( + 0 => 'N51[11|17]!', + 1 => 'N5207', + 2 => 'N5PRO2jingying', + 3 => 'N50', + 4 => 'N50DT!', + 5 => 'N50GT', + 6 => 'N50GT A', + ), + '@N6' => + array ( + 0 => 'N612', + 1 => 'N6', + ), + '@N7' => + array ( + 0 => 'N700', + 1 => 'N710', + 2 => 'N70', + 3 => 'N70 3G', + 4 => 'N70 C', + 5 => 'N70DC', + 6 => 'N70-S', + 7 => 'N70HD', + 8 => 'N70 DUAL CORE', + 9 => 'N70DC-S', + 10 => 'N70DC-T', + 11 => 'N762', + 12 => 'N799D', + ), + '@N8' => + array ( + 0 => 'N80($| from moage.com)!', + 1 => 'N80DC', + 2 => 'N80IPS', + 3 => 'N800', + 4 => 'N810', + 5 => 'N860', + 6 => 'N861', + 7 => 'N880', + 8 => 'N8000', + 9 => 'N8000 USA Cricket', + 10 => 'N8000 USA RS', + 11 => 'N8000 WHTE CKT', + ), + '@N9' => + array ( + 0 => 'N930', + 1 => 'N90', + 2 => 'N90 DUAL CORE!', + 3 => 'N90FHDRK', + 4 => 'N986', + 5 => 'N9100', + 6 => 'N9101', + 7 => 'N9130', + 8 => 'N9180', + 9 => 'N9500', + 10 => 'N9510', + 11 => 'N9515', + 12 => 'N9520', + 13 => 'N9810', + 14 => 'N9835', + 15 => 'N958St', + 16 => 'N918St', + ), + '@NA' => + array ( + 0 => 'NABI!!', + 1 => 'NaviPad TM-7055HD 3G', + 2 => 'NaviPad TM-7855 3G', + 3 => 'NaviPad TM-7858 3G (revision 1)', + ), + '@NB' => + array ( + 0 => 'NB036', + 1 => 'NBX-T7013N', + 2 => 'NBX-T7023N', + ), + '@NE' => + array ( + 0 => '(HTC )?Nexus ?One!', + 1 => '(Google )?Nexus S!', + 2 => '(Google )?Nexus ?4!', + 3 => 'Nexus 5X', + 4 => '(Google )?Nexus ?5!', + 5 => 'Nexus 6P', + 6 => '(Google )?Nexus ?6!', + 7 => '(Google )?Nexus ?7 2013!', + 8 => '(Google )?Nexus ?7!', + 9 => '(Google )?Nexus ?9!', + 10 => '(Google )?Nexus ?10!', + 11 => 'Nexus Player', + 12 => 'NEO-G4', + 13 => 'NEO-G4-108A', + 14 => 'NEO-G4 a', + 15 => 'NEO-X5', + 16 => 'NEO X5', + 17 => 'Neo-X5-B', + 18 => 'NEO-X5-116A', + 19 => 'NEO-X5-mini', + 20 => 'NEO X5 mini', + 21 => 'NEO-X6', + 22 => 'NEO-X7-216A', + 23 => 'NEO-X7-mini', + 24 => 'NEO-X8', + 25 => 'NEO-X8-H', + 26 => 'NEO-X8H-PLUS', + 27 => '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!', + 28 => 'NexusHD2', + 29 => 'Nexus HD2', + 30 => 'Neon7', + 31 => 'Neon9', + 32 => '(NetTab|NT-)!!', + 33 => 'Newman K1', + 34 => 'NewmanK1', + 35 => 'Newman K2', + 36 => 'Newman N1', + 37 => 'Newman N2!', + 38 => 'Newman-N2!', + 39 => 'Newpad', + 40 => 'Newpad-K97', + 41 => 'Newpad-NP900', + 42 => 'Newpad P9', + 43 => 'Newpad P72', + 44 => 'Newsmy P72', + 45 => 'Newsmy P72-C', + 46 => 'Newsmy T3', + 47 => 'Newsmy T7II', + 48 => 'NEC PC-TE508S1', + 49 => 'NEC-101S', + 50 => 'NECTEL-101S', + 51 => 'NEC-101T', + 52 => 'NEC-101TH', + 53 => 'NEC-102', + 54 => 'NE-103T', + 55 => 'NE-202', + 56 => 'NE-201A1A', + 57 => 'NEC-NE-201A1A', + 58 => 'NEC-NEC-NE-201A1A', + 59 => 'neken!!', + 60 => 'NEO!!', + 61 => '(Nexian )?NX-A[0-9]{3,3}!!', + 62 => 'Nextbook Premium 7', + 63 => 'Next7C12!', + 64 => 'Next7D12!', + 65 => 'Next7P12!', + 66 => 'Next7Q12!', + 67 => 'Next7P', + 68 => 'Next7S', + 69 => 'Nextbook Premium 7 SE', + 70 => 'NEXT8P', + 71 => 'Next8P11', + 72 => 'Next8P12', + 73 => 'Next9P', + 74 => 'Next10P12', + 75 => 'New Andromax-i', + 76 => 'Neo V', + 77 => 'NEBULA6.9', + ), + '@NG' => + array ( + 0 => 'NGM Black Hole', + 1 => 'NGM Dynamic Racing 2', + 2 => 'NGM Dynamic Racing 3', + 3 => 'NGM Dynamic Star', + 4 => 'NGM Forward Infinity', + 5 => 'NGM Forward Racing HD', + 6 => 'NGM Forward Young', + 7 => 'NGM Harley', + 8 => 'NGM Orion', + 9 => 'NGM Spirit', + 10 => 'NGM Time', + 11 => 'NGM Vanity Smart', + 12 => 'NGM Action', + 13 => 'NGM Legend', + 14 => 'NGM-Legend/Legend', + 15 => 'NGM Legend2', + 16 => 'NGM LegendXL', + 17 => 'NGM Miracle', + 18 => 'NGM P0laris', + 19 => 'NGM Wilco', + 20 => 'NGM WINN', + ), + '@NI' => + array ( + 0 => 'NITROGEN6X', + 1 => 'Nibiru H1', + 2 => 'nine i7400', + ), + '@NM' => + array ( + 0 => '(NMP|MBR|XDK|XDS|XMP)\\-!!', + ), + '@NO' => + array ( + 0 => 'Novo7', + 1 => 'Novo7 -?Aurora!', + 2 => 'novo Aurora', + 3 => 'Novo 7 Aurora', + 4 => 'Novo7 Advanced', + 5 => 'Novo7Advanced!', + 6 => 'Novo7 Advanced2', + 7 => 'Novo7 Basic', + 8 => 'NovoCrystal', + 9 => 'Novo 7 Crystal!', + 10 => 'Novo7 ELF', + 11 => 'Novo7 Fire', + 12 => 'Novo7 Flame', + 13 => 'Novo7 Grace', + 14 => 'Novo7 Legend', + 15 => 'novo7Legend!', + 16 => 'NOVO7 Mars', + 17 => 'Novo7 PALADIN', + 18 => 'Novo7 Rainbow', + 19 => 'Novo7 -Rainbow', + 20 => 'NOVO7 Tornados', + 21 => 'Novo7 Venus', + 22 => 'Novo 7 Venus', + 23 => 'Novo7 Venus QuadCore', + 24 => 'Novo 7 Venus QuadCore', + 25 => 'Novo8 Advanced', + 26 => 'Novo8 Discover Quadcore', + 27 => 'Novo8 Disover Quadcore', + 28 => 'Novo8 Dream QuadCore', + 29 => 'Novo8mini', + 30 => 'novo9-Spark', + 31 => 'NOVO9 Spark II', + 32 => 'Novo 10 Hero', + 33 => 'Novo10 ?Hero!', + 34 => 'Novo 10 Hero QuadCore', + 35 => 'Novo Captain', + 36 => 'Novo10 captain QuadCore', + 37 => 'NOOK', + 38 => 'Nook ?Color!', + 39 => '(NOOK )?BNRV(200|300)!', + 40 => 'Nook ?Tablet!', + 41 => 'NOOK Slate', + 42 => '(NOOK )?BNTV250!', + 43 => '(NOOK )?BNRV350!', + 44 => '(NOOK )?BNTV(400)!', + 45 => '(NOOK )?BNTV(600)!', + 46 => '(NOOK )?BNTV(800)!', + 47 => 'Nook HD', + 48 => 'Nook HD+', + 49 => 'Novapad!!', + 50 => 'Nova!!', + 51 => 'NO1 S6', + 52 => 'NOAIN!!', + 53 => 'Nokia N9', + 54 => 'Nokia N900', + 55 => 'Nokia X', + 56 => 'Nokia X Dual SIM', + 57 => 'Nokia X+', + 58 => 'Nokia Xplus', + 59 => 'Nokia XL 4G', + 60 => 'Nokia XL', + 61 => 'Nokia XL Dual SIM', + 62 => 'Nokia X2', + 63 => 'NokiaX2DS', + 64 => 'Notion Ink ADAM', + 65 => 'Note III', + 66 => 'Nozomi', + 67 => 'Noble TAB07-485', + 68 => 'Noir A7', + 69 => 'Noir A8', + ), + '@NP' => + array ( + 0 => 'npm702-NOVO7PALADIN', + ), + '@NS' => + array ( + 0 => 'NS115', + 1 => 'NS2816', + 2 => 'NS-14T002', + 3 => 'NS-13T001', + 4 => 'NSZ-G[A-Z][0-9]!!', + ), + '@NT' => + array ( + 0 => '(NetTab|NT-)!!', + ), + '@NU' => + array ( + 0 => 'Numy!!', + 1 => 'NuclearSX-SP5', + 2 => 'nubia Z5', + 3 => 'Nura 2', + ), + '@NW' => + array ( + 0 => 'NWZ?-Z1000Series!', + ), + '@NX' => + array ( + 0 => '(HUAWEI )?(CRR|MATE|MT1|MT2|MT7|M200|NXT|Z100)!!', + 1 => '(Nexian )?NX-A[0-9]{3,3}!!', + 2 => 'NXM726', + 3 => 'NXM726HN', + 4 => 'NXM726HN C030', + 5 => 'NXM726HN HASTINGS', + 6 => 'NXM727KC!', + 7 => 'NXM803HC', + 8 => 'NXM803HD', + 9 => 'NX868QW8G', + 10 => 'NXM805ND', + 11 => 'NXM805ND EN', + 12 => 'NXM908HC', + 13 => 'NXM703U', + 14 => 'NXM901', + 15 => 'NXM736', + 16 => 'NX700QC', + 17 => 'NX785QC8G', + 18 => 'NX40X', + 19 => 'NX40X APT', + 20 => 'NX402', + 21 => 'NX403A', + 22 => 'NX404H', + 23 => 'NX405H', + 24 => 'NX501', + 25 => 'NX50X', + 26 => 'NX503', + 27 => 'NX503A', + 28 => 'NX503J', + 29 => 'NX505J', + 30 => 'NX506J', + 31 => 'NX507H', + 32 => 'NX507J', + 33 => 'NX508J', + 34 => 'NX510J', + 35 => 'NX511J', + 36 => 'NX512J', + 37 => 'NX513J', + 38 => 'NX601J', + ), + '@NY' => + array ( + 0 => 'NYX!!', + ), + '@O2' => + array ( + 0 => 'O2 Joggler', + ), + '@OB' => + array ( + 0 => 'OB-OPPO A31c', + 1 => 'OB-OPPO 3005', + 2 => 'Obreey SURFpad', + ), + '@OC' => + array ( + 0 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + ), + '@OD' => + array ( + 0 => 'ODROID-A', + 1 => 'ODROID-U', + 2 => 'ODROID-U2', + 3 => 'ODROID-X', + 4 => 'ODROID-XU', + 5 => 'ODROID-XU3', + 6 => 'ODROID-X2', + 7 => 'ODYS-Chrono', + 8 => 'ODYS-EVO', + 9 => 'Odys-Loox', + 10 => 'ODYS-NOON', + 11 => 'ODYS-Q', + 12 => 'ODYS Space', + 13 => 'ODYS Space TKI BRR233v7', + 14 => 'ODYS Space TKI BRR233v9', + 15 => 'ODYS-Xpress', + 16 => 'ODYS Xtreme', + ), + '@OL' => + array ( + 0 => 'Olivetti Olipad 100', + ), + '@OM' => + array ( + 0 => 'Omap5panda', + 1 => 'OMAP', + 2 => 'OMAP SS', + 3 => 'omap3evm', + 4 => 'OMAP3ETPP', + 5 => 'Omap5sevm', + 6 => 'OMS TTD', + 7 => 'Omega 5.0', + 8 => 'Omega 5.5', + 9 => 'OMS1 6', + ), + '@ON' => + array ( + 0 => 'OnePAD 785I', + 1 => 'OnePAD 900HD', + 2 => 'OnePAD 970', + 3 => 'OnePAD 1100x2', + 4 => 'ONETOUCH Flash Plus', + 5 => 'one touch 890!', + 6 => 'one touch 891!', + 7 => 'one touch 900!', + 8 => 'one touch 903!', + 9 => 'one touch 906!', + 10 => 'one touch 908!', + 11 => 'one touch 909!', + 12 => 'one touch 910!', + 13 => 'one touch 916!', + 14 => 'one touch 918!', + 15 => 'one touch 922!', + 16 => 'one touch 927!', + 17 => 'one touch 928!', + 18 => 'one touch 930!', + 19 => 'one touch 960!', + 20 => 'one touch 979!', + 21 => 'one touch 980!', + 22 => 'one touch 981!', + 23 => 'one touch 983!', + 24 => 'one touch 985!', + 25 => 'one touch 986!', + 26 => 'one touch 988!', + 27 => 'one touch 990!', + 28 => 'one touch 991!', + 29 => 'one touch 992!', + 30 => 'ONE TOCH 992D', + 31 => 'one touch 993!', + 32 => 'one touch 995!', + 33 => 'one touch 997!', + 34 => 'one touch 998!', + 35 => 'one touch D662', + 36 => 'one touch D668', + 37 => 'one touch D820', + 38 => 'one touch D920', + 39 => 'one touch J320', + 40 => 'one ?touch 40(05|10|11)!', + 41 => 'one ?touch 4007!', + 42 => 'one ?touch 4008!', + 43 => 'one ?touch 4009!', + 44 => 'one ?touch 4013!', + 45 => 'one ?touch 4014!', + 46 => 'one ?touch 40(15|16)!', + 47 => 'one ?touch 4030!', + 48 => 'one ?touch 4033!', + 49 => 'ONETOUCH POPC3', + 50 => 'one ?touch 40(35|36|37)!', + 51 => 'one ?touch 5045!', + 52 => 'one ?touch 5020!', + 53 => 'one ?touch 5021!', + 54 => 'one ?touch 5035!', + 55 => 'one ?touch 50(36|37)!', + 56 => 'one ?touch 50(38)!', + 57 => 'one ?touch 5042!', + 58 => 'one ?touch 5050!', + 59 => 'one ?touch 6010!', + 60 => 'one ?touch 6012!', + 61 => 'ONE TOUCH IDOL MINI', + 62 => 'one ?touch 6014!', + 63 => 'one ?touch 6016!', + 64 => 'one ?touch 6030!', + 65 => 'one ?touch 6032!', + 66 => 'one ?touch 6033!', + 67 => 'one ?touch 60(34|35)!', + 68 => 'one ?touch 6036!', + 69 => 'one ?touch 6037!', + 70 => 'one ?touch 6039!', + 71 => 'one ?touch 6040!', + 72 => 'one ?touch 6043!', + 73 => 'one ?touch 6045!', + 74 => 'one ?touch 6050!', + 75 => 'one ?touch 7024!', + 76 => 'one touch fierce!', + 77 => 'one ?touch 70(25|30)!', + 78 => 'one ?touch 70(40|41)!', + 79 => 'one ?touch 7042!', + 80 => 'one ?touch 7043!', + 81 => 'one ?touch 7044!', + 82 => 'one ?touch 7045!', + 83 => 'one ?touch 7047!', + 84 => 'one ?touch 7050!', + 85 => 'one ?touch 8000!', + 86 => 'one ?touch 8008!', + 87 => 'one ?touch 8020!', + 88 => 'one ?touch 8030!', + 89 => 'one ?touch T10!', + 90 => 'one ?touch T20!', + 91 => 'one ?touch T60!', + 92 => 'ONE TOUCH TAB 7', + 93 => 'ONE TOUCH TAB 7HD', + 94 => 'ONE TOUCH TAB 8HD', + 95 => 'ONE TOUCH EVO7', + 96 => 'onetouch EVO7', + 97 => 'ONE TOUCH EVO 7HD', + 98 => 'ONE TOUCH EVO7HD', + 99 => 'ONE TOUCH EVO8HD', + 100 => 'ONE ?TOUCH P310(A|X)!', + 101 => 'ONE ?TOUCH P320(A|X)!', + 102 => 'ONE ?TOUCH P321!', + 103 => 'ONE ?TOUCH POP 8S P350X!', + 104 => 'One S', + 105 => 'One X', + 106 => 'One X+', + 107 => 'One V', + 108 => 'One', + 109 => 'One M7', + 110 => 'one m8', + 111 => 'One A0001', + 112 => 'OnePlus One', + 113 => 'OnePlus One A0001', + 114 => 'ONE A2001', + 115 => 'ONE A2003', + 116 => 'ONE A2005', + 117 => 'ONE E1000', + 118 => 'ONE E1001', + 119 => 'ONE E1003', + 120 => 'ONE E1005', + 121 => 'ONDA MID', + 122 => 'ONDA A9 Core4', + 123 => 'ONDA VI10', + 124 => 'Onda V812', + 125 => 'ONDA v975m', + 126 => 'ONDA V989', + 127 => 'ONDA V989 Core8', + ), + '@OP' => + array ( + 0 => 'OPPOLenovo A60', + 1 => 'Optimus!!', + 2 => 'Opus One', + 3 => 'OPS-DRD Digital Signage Player', + 4 => 'OP110', + 5 => 'OPPO A800', + 6 => 'OPPOX905', + 7 => 'OPPOX907', + 8 => 'OPPO Find5', + 9 => 'OPPOX909', + 10 => 'OPPO X909', + 11 => 'OPPOX9015', + 12 => 'OPPOX9017', + 13 => 'OPPO find7', + 14 => 'OPPOR601', + 15 => 'OPPOR801', + 16 => 'OPPOR803', + 17 => 'OPPOR805', + 18 => 'OPPOR807', + 19 => 'OPPO R811', + 20 => 'OPPO R815', + 21 => 'OPPOR817', + 22 => 'Oppo R819', + 23 => 'OPPO R821', + 24 => 'OPPO R831', + 25 => 'Oppo R831 Limited Edition', + 26 => 'OPPO R1001', + 27 => 'OPPOR8015', + 28 => 'OPPOR8111', + 29 => 'OPPOT29', + 30 => '(OPPO-?)?T703!', + 31 => 'OPPOU701', + 32 => 'OPPOU7011', + 33 => 'OPPOU7015', + 34 => 'OPPO N1', + 35 => 'OPPO R7', + 36 => 'OPPO R7s', + 37 => 'OPPO R7 Plus', + 38 => 'OPSSON!!', + 39 => 'OP0118-12', + 40 => 'Optimus Barcelona', + 41 => 'Optimus Boston', + 42 => 'Optimus Madrid', + 43 => 'Optimus Monte Carlo', + 44 => 'Optimus San Francisco', + 45 => 'Optimus San Remo', + ), + '@OR' => + array ( + 0 => 'Orange HUAWEI GRA-L09', + 1 => 'Orange Boston', + 2 => 'Orange Covo', + 3 => 'Orange Daytona', + 4 => 'Orange Dublin', + 5 => 'Orange Fova', + 6 => 'Orange Gova', + 7 => 'Orange Hi 4G', + 8 => 'Orange Hiro', + 9 => 'Orange infinity 996', + 10 => 'Orange Infinity 8008X', + 11 => 'Orange Kivo', + 12 => 'Orange Monte Carlo', + 13 => 'Orange Niva', + 14 => 'Orange Nura', + 15 => 'Orange Reyo', + 16 => 'Orange Rono', + 17 => 'Orange Roya', + 18 => 'Orange San Francisco', + 19 => 'Orange Tactile internet 2', + 20 => 'Orange Tado', + 21 => 'Orange Yomi', + 22 => 'Orange Yumo', + 23 => 'Orange Zali', + ), + '@OT' => + array ( + 0 => 'OT 918', + 1 => 'OT-990C', + 2 => 'OT 990M', + 3 => 'OT-995', + ), + '@OU' => + array ( + 0 => 'OUYA( Console)?!', + ), + '@OV' => + array ( + 0 => '(OV-|Overmax|Vertis)!!', + ), + '@OY' => + array ( + 0 => 'Oysters Pacific 800', + 1 => 'Oysters T3 3G', + 2 => 'Oysters T7X 3G', + 3 => 'OYSTERS T14N 3G', + ), + '@OZ' => + array ( + 0 => 'OZZY', + ), + '@P' => + array ( + 0 => '(DNS )?(Airtab )?(E|M|MA|MF|MW|P|PC|PF)[0-9]{2,4}!!', + ), + '@P-' => + array ( + 0 => 'P-0[0-9][A-Z]!!', + ), + '@P0' => + array ( + 0 => 'P01Z', + 1 => 'P01T 1', + 2 => 'P024', + ), + '@P1' => + array ( + 0 => 'P10AN', + 1 => 'P105', + 2 => 'P10HD??(E6NA)', + 3 => 'P11HD', + 4 => 'P11HD四核(G9X6)', + 5 => 'P11HD??(G9X6)', + 6 => 'P11HD四核(G9X7)', + 7 => 'P19HD(E1K3)', + 8 => 'P19HD(E1K5)', + ), + '@P2' => + array ( + 0 => 'P2A700', + 1 => '(HUAWEI )?(ALE|D2|G6|G7|GRA|M100|P2|P6|P7|RIO|SC|Sophia)!!', + ), + '@P3' => + array ( + 0 => 'P330X', + 1 => 'P350X', + 2 => 'P360X', + 3 => 'P300(Funbook)', + ), + '@P4' => + array ( + 0 => 'P4i', + 1 => 'P4D Sirius', + ), + '@P5' => + array ( + 0 => 'P5', + ), + '@P6' => + array ( + 0 => 'P6 Quad', + 1 => '(HUAWEI )?(ALE|D2|G6|G7|GRA|M100|P2|P6|P7|RIO|SC|Sophia)!!', + ), + '@P7' => + array ( + 0 => '(HUAWEI )?(ALE|D2|G6|G7|GRA|M100|P2|P6|P7|RIO|SC|Sophia)!!', + 1 => 'P700i', + 2 => 'P7', + 3 => 'P70 3G八核(C2B7)', + 4 => 'P70h(A5C2)', + 5 => 'P72', + 6 => 'P72w', + 7 => 'P75a(G7E3)', + 8 => 'P75HD(M3E5)', + 9 => 'P76a(K3G5)', + 10 => 'P76a双核(M4Q5)', + 11 => 'P76e(A3E1)', + 12 => 'P76e(G6R8)', + 13 => 'P76h双核(K8V1)', + 14 => 'P76s双核(DKH5)', + 15 => 'P76TI', + 16 => 'P76v(A3V5)', + 17 => 'P78双核(G1M5)', + 18 => 'P78s(G1M5)', + 19 => 'P78s(G1M6)', + 20 => 'P78s(G1M7)', + 21 => 'P78HD四核(C4A5)', + 22 => 'P78HD??(C4A5)', + 23 => 'P79HD(A3V9)', + 24 => 'P79HD 3G(C4K5)', + 25 => 'p7901a', + ), + '@P8' => + array ( + 0 => 'P80 四核 (BV8K)', + 1 => 'P80 四核 (BV9K)', + 2 => 'P80s 四核(EF6W)', + 3 => 'P80 3G四核 (B1KC)', + 4 => 'P80 3G四核 (B4KC)', + 5 => 'P80 3G八核(A4LL)', + 6 => 'P80 3G八核(A5LL)', + 7 => 'P80 3G八核(A6LL)', + 8 => 'P80 4G(K2G3)', + 9 => 'P81HD', + 10 => 'P85(A9D3)', + 11 => 'P85(A9D5)', + 12 => 'P85(R8A1)', + 13 => 'P85mini(DT8W)', + 14 => 'P85s mini(EWE8)', + 15 => 'P85t mini(KW8P)', + 16 => 'P85HD双核(K6N2)', + 17 => 'P86(F8G6)', + 18 => 'P88双核(H3D7)', + 19 => 'P88(H3D7)', + 20 => 'P88(GT4K)', + 21 => 'P88s mini??(F2V6)', + 22 => 'P88s mini四核(F2V7)', + 23 => 'P88HD(C5GV)', + 24 => 'P89 3G八核(D1H8)', + 25 => 'P89 3Gk8(D1H8)', + 26 => 'P89mini(E2W6)', + 27 => 'P89 mini(E2W6)', + 28 => 'P89s(F8A5)', + 29 => 'P89s mini(F8A2)', + ), + '@P9' => + array ( + 0 => 'P940', + 1 => 'P990', + 2 => 'P90(H3U6)', + 3 => 'P90(H3U7)', + 4 => 'P98(F2K9)', + 5 => 'P98 八核(B9A3)', + 6 => 'P98 3Gk8(A4HY)', + 7 => 'P98 3G??(A4HY)', + 8 => 'P98 3G(M1Q2)', + 9 => 'P98 3G八核(A3HY)', + 10 => 'P98 3G八核(A4HY)', + 11 => 'P98 4G??(A8H6)', + 12 => 'P98 Air?? (C6V8)', + 13 => 'P98Air(C6V8)', + 14 => 'P98HD(A2Q6)', + 15 => 'P98HD+M6', + 16 => 'P98T(K3C4)', + ), + '@PA' => + array ( + 0 => 'Panda(Board)?!', + 1 => 'Passion', + 2 => '(Transformer )?(Pad )?TF300(T|TG|TL)!', + 3 => '(Transformer )?(Pad )?TF502(T)!', + 4 => '(Transformer )?(Pad )?TF700(T|K)!', + 5 => 'PadFone', + 6 => 'PadFone 2', + 7 => 'PadFone Infinity', + 8 => 'PadFone Infinity A86', + 9 => 'PadFone T004', + 10 => 'PadFone-T004', + 11 => 'PadFone T008', + 12 => 'PadFone T00C', + 13 => 'PadFone X', + 14 => 'PadFone X mini', + 15 => 'PAD[0-9]{3,3}!!', + 16 => 'Panasonic!!', + 17 => 'pandigital9hr', + 18 => 'pandigital9hr2', + 19 => 'pandigitalopc1', + 20 => 'pandigitalopp1', + 21 => 'pandigitalp1hr', + 22 => 'PantechP!!', + 23 => 'PAT712W', + 24 => 'PATG7506HD', + 25 => 'PAP[0-9]{4,4}!!', + 26 => 'PAD1001', + ), + '@PB' => + array ( + 0 => 'PB99400', + ), + '@PC' => + array ( + 0 => 'PC1038', + 1 => '(DNS )?(Airtab )?(E|M|MA|MF|MW|P|PC|PF)[0-9]{2,4}!!', + 2 => '(HTC|PC|USCC)?ADR[0-9]{4,4}!!', + 3 => 'PC36100!', + ), + '@PD' => + array ( + 0 => 'PD10-DYD', + 1 => 'PD6D1J', + ), + '@PE' => + array ( + 0 => '(HW-|HUAWEI )?(ATH|CHE|CHM|HN3|H30|H60|HOL|KIW|PE|PLK|SCL)!!', + 1 => 'Penta!!', + 2 => 'Pentagram!!', + 3 => 'pepper', + ), + '@PF' => + array ( + 0 => '(DNS )?(Airtab )?(E|M|MA|MF|MW|P|PC|PF)[0-9]{2,4}!!', + ), + '@PG' => + array ( + 0 => 'PG06100', + 1 => 'PG41200', + 2 => 'PG86100!', + 3 => 'PGM 398', + ), + '@PH' => + array ( + 0 => 'PHA-3850', + 1 => 'PHA-3880', + 2 => 'PHA-4850', + 3 => 'PHA-5850', + 4 => 'photon', + 5 => 'PH44100', + 6 => 'Photon', + 7 => 'Photon 4G', + 8 => 'Photon Q', + 9 => 'PH350', + 10 => 'PH520', + 11 => 'PHICOMM!!', + 12 => 'Philips I908', + 13 => 'Philips I928', + 14 => 'Philips S301', + 15 => 'Philips S308', + 16 => 'Philips S358', + 17 => 'Philips S388!', + 18 => 'Philips S398', + 19 => 'Philips T3566', + 20 => 'Philips PI5000', + 21 => 'Philips V387', + 22 => 'Philips W336', + 23 => 'Philips W536', + 24 => 'Philips W626', + 25 => 'Philips W632', + 26 => 'Philips W635', + 27 => 'Philips W737', + 28 => 'Philips W832', + 29 => 'Philips W3500', + 30 => 'Philips W3568', + 31 => 'Philips W6350', + 32 => 'Philips W6610', + 33 => 'Philips W6618', + 34 => 'Philips W7555', + 35 => 'Philips-W8500', + 36 => 'Philips W8510', + 37 => 'Philips W8555', + 38 => 'Philips W8560', + 39 => 'PHABLET 4S', + 40 => 'Phablet 4.5Q', + 41 => 'Phablet 5,3 Q', + ), + '@PI' => + array ( + 0 => 'Pixel C', + 1 => '(Axioo[\\- ])?PICO!!', + 2 => '(GIO-)?(GiONEE[- ])?Pioneer P1!', + 3 => '(GIO-)?(GiONEE[- ])?Pioneer P2!', + 4 => '(GIO-)?(GiONEE[- ])?Pioneer P3!', + 5 => '(GIO-)?(GiONEE[- ])?Pioneer P4!', + 6 => 'PI7000', + 7 => '(PNR-)?Pioneer!!', + 8 => 'PIRANHA!!', + ), + '@PJ' => + array ( + 0 => 'PJ83100', + 1 => 'PJ35100', + ), + '@PL' => + array ( + 0 => '(HW-|HUAWEI )?(ATH|CHE|CHM|HN3|H30|H60|HOL|KIW|PE|PLK|SCL)!!', + 1 => 'Planet II v2', + 2 => 'Play 6X-1000', + 3 => 'Play8X-1100', + 4 => 'Playboy PB-S3', + 5 => '(PLOYER-)?MOMO!!', + 6 => 'PlayTabPro', + 7 => 'PLT!!', + 8 => 'PlayBook', + ), + '@PM' => + array ( + 0 => 'PM36100', + 1 => 'PM63100', + 2 => 'PMID!!', + 3 => 'PMP[0-9]{4,4}!!', + 4 => 'PMT[0-9]{4,4}!!', + ), + '@PN' => + array ( + 0 => 'pnx8473 kiryung', + 1 => 'PNDPP4MT9G2', + 2 => 'PNDPP44QC7', + 3 => 'PNDPP48GP', + 4 => 'PNDPP4MT9G3', + 5 => 'PNDPP410GP', + 6 => '(PNR-)?Pioneer!!', + ), + '@PO' => + array ( + 0 => 'PocketBook A7', + 1 => 'PocketBook A10', + 2 => 'PocketBook A10 3G', + 3 => 'PocketBook SURFpad2', + 4 => 'PocketBook SURFpad 3 (7,85")', + 5 => 'PocketBook SURFpad 4 S', + 6 => 'PocketBook SURFpad 4 M', + 7 => 'PocketBook SURFpad 4 L', + 8 => 'POV-Mobii-7', + 9 => 'POV Mobii 7', + 10 => 'POV TAB-P506!', + 11 => 'POV TAB-P517!', + 12 => 'POV TAB-P527!', + 13 => 'POV TAB-P629!', + 14 => 'POV TAB-P701!', + 15 => 'POV TAB-P703!', + 16 => 'POV TAB-P720!', + 17 => 'POV TAB-P721A!', + 18 => 'POV TAB-P721!', + 19 => 'POV TAB-P722C!', + 20 => 'POV TAB-P731N!', + 21 => 'POV TAB-P825!', + 22 => 'POV TAB-P925!', + 23 => 'POV TAB-PR945!', + 24 => 'POV TAB-P1025!', + 25 => 'POV TAB-P1030!', + 26 => 'POV TAB-P1325!', + 27 => '(POV )?TAB-PLAYTABPRO!', + 28 => '(POV )?TAB-PROTAB25!', + 29 => '(POV )?TAB-PROTAB26!', + 30 => 'POV TAB-PROTAB27', + 31 => '(POV )?TAB-PROTAB30!', + 32 => '(POV )?TAB-PROTAB2XXL(4)!', + 33 => '(POV )?TAB NAVI7 3G M!', + 34 => 'POV TAB-P547(v1.0)', + 35 => 'POV TV-HDMI-200BT', + 36 => 'POV TV-HDMI-200BT(V2.0)', + 37 => 'POV TV-HDMI-210', + 38 => 'POV TV-HDMI-KB-01', + 39 => 'POV TV-SMARTTV-500', + 40 => 'Polaroid PSPT401', + 41 => 'Polaroid PSPC505', + 42 => 'POLY ?PAD!!', + 43 => 'POLYTRON!!', + 44 => 'POMP!!', + 45 => 'Positivo Mini', + 46 => 'POSITIVO YPY 07FTB', + 47 => 'Positivo Ypy AB7E', + 48 => 'Positivo Ypy AB7EC', + 49 => 'Positivo Ypy AB7F', + 50 => 'Positivo AB7F', + 51 => 'Positivo Ypy AB7H', + 52 => 'Positivo Ypy AB10E', + 53 => 'Positivo Ypy AB10EC', + 54 => 'Positivo Ypy AB10H', + 55 => 'Positivo BGH Ypy L700', + 56 => 'Positivo Ypy L700', + 57 => 'Positivo Ypy L700 Ed. Especial', + 58 => 'Positivo Ypy L700+', + 59 => 'Positivo Ypy L700 Kids', + 60 => 'Positivo BGH Ypy L700 Kids', + 61 => 'Positivo Ypy L700+ Kids', + 62 => 'Positivo Ypy L1000', + 63 => 'Positivo Ypy L1000AB', + 64 => 'Positivo Ypy L1000F', + 65 => 'Positivo Ypy L1050', + 66 => 'Positivo Ypy L1050E', + 67 => 'Positivo Ypy L1050F', + 68 => 'Positivo S380', + 69 => 'Positivo S440', + 70 => 'Positivo S480', + 71 => 'Positivo S550', + 72 => 'Positivo X400', + 73 => 'Positivo X800', + ), + '@PP' => + array ( + 0 => 'PP4MT-7', + 1 => 'PP4MT-9', + ), + '@PR' => + array ( + 0 => 'Pro 10 dual core', + 1 => 'Prada 3.0', + 2 => 'Primo76', + 3 => 'Primo 91', + 4 => 'PROTAB2XXL', + 5 => 'PROV!!', + 6 => 'PRO!!', + 7 => 'PRBT 100', + 8 => 'PRS-T1', + 9 => 'PRIMO7', + 10 => 'PRIMO8', + 11 => 'Primo C2', + 12 => 'Primo C3 3G', + 13 => 'Primo D2', + 14 => 'Primo D4', + 15 => 'Primo E1', + 16 => 'Primo E2', + 17 => 'PRIMO E3', + 18 => 'Primo E4', + 19 => 'Primo EF', + 20 => 'Primo EF2', + 21 => 'Primo F1', + 22 => 'Primo F2', + 23 => 'Primo-F2', + 24 => 'Primo F3', + 25 => 'Primo F3i', + 26 => 'Primo F4', + 27 => 'Primo F6', + 28 => 'Primo-G1', + 29 => 'Primo G2', + 30 => 'Primo-G3', + 31 => 'Primo G4', + 32 => 'Primo G5', + 33 => 'Primo G6', + 34 => 'Primo GF2', + 35 => 'Primo GF4', + 36 => 'Primo GH+', + 37 => 'Primo-GH2', + 38 => 'Primo GH2', + 39 => 'Primo GH3', + 40 => 'Primo GM', + 41 => 'Primo H2', + 42 => 'Primo-H3', + 43 => 'Primo H3', + 44 => 'Primo HM', + 45 => 'Primo-N', + 46 => 'Primo-N1', + 47 => 'Primo NF', + 48 => 'Primo NX', + 49 => 'Primo NX2', + 50 => 'Primo R2', + 51 => 'Primo R3', + 52 => 'Primo RH', + 53 => 'Primo RX2', + 54 => 'Primo S1', + 55 => 'Primo S3', + 56 => 'Primo S3 mini', + 57 => 'Primo V1', + 58 => '(WALTON )?Primo-X1!', + 59 => 'Primo-X2', + 60 => 'Primo X2mini', + 61 => 'Primo-ZX', + 62 => 'Primo Walpad 7', + 63 => 'Primo Walpad 8', + 64 => 'Primo Walpad 8W', + 65 => 'Proton Lite', + 66 => 'Prism II', + ), + '@PS' => + array ( + 0 => 'PSPT350', + 1 => 'PSP[0-9]{4,4}!!', + 2 => 'PS47', + ), + '@PT' => + array ( + 0 => 'PTL21', + ), + '@PU' => + array ( + 0 => 'PURE XL', + 1 => 'PULID F6', + 2 => 'PULID F7', + 3 => 'PULID F11', + 4 => 'PULID T3', + 5 => 'Pulse', + 6 => 'Pulse Mini', + ), + '@PY' => + array ( + 0 => 'Pyramid', + ), + '@Q-' => + array ( + 0 => 'Q-Wave!!', + 1 => 'Q-Smart FLY 01', + 2 => 'Q-Smart S1', + 3 => 'Q-Smart model S6', + 4 => 'Q-mobile S10', + 5 => 'Q-mobile S11!', + 6 => 'Q-Smart S12', + 7 => 'Q-Smart S16', + 8 => 'Q-Smart S18', + 9 => 'Q-Smart S19', + 10 => 'Q-Smart S20', + 11 => 'Q-Smart S21', + 12 => 'Q-Smart S29', + 13 => 'Q-Smart QS16', + 14 => 'Q-Smart QS550', + ), + '@Q0' => + array ( + 0 => 'Q07CL01', + ), + '@Q1' => + array ( + 0 => '(BB )?Q10$!', + ), + '@Q5' => + array ( + 0 => '(BB )?Q5$!', + ), + '@QI' => + array ( + 0 => 'Qilive!!', + ), + '@QM' => + array ( + 0 => 'QM151E', + 1 => 'QM152E', + 2 => 'QM734-8G', + 3 => 'QM735-8G', + 4 => 'QMobile A1', + 5 => 'QMobile A2 Lite', + 6 => 'QMobile A2 Classic', + 7 => 'QMobile A4', + 8 => 'QMobile A5', + 9 => 'QMobile A7', + 10 => 'QMobile A8', + 11 => 'QMobile A10', + 12 => 'QMobile A10 Noir', + 13 => 'QMobile Noir A10', + 14 => 'QMobile A10 Lite', + 15 => 'QMobile A11Note', + 16 => 'QMobile A12', + 17 => 'QMobile A20', + 18 => 'QMobile A30', + 19 => 'QMobile A34', + 20 => 'QMobile A35', + 21 => 'QMobile A36', + 22 => 'QMobile A51', + 23 => 'QMobile A63', + 24 => 'QMobile A65', + 25 => 'QMobile A75', + 26 => 'QMobile A80', + 27 => 'QMobile A120', + 28 => 'QMobile A170', + 29 => 'QMobile A290', + 30 => 'QMobile A300', + 31 => 'Qmobile A500', + 32 => 'QMobile A700', + 33 => 'Qmobile A900', + 34 => 'QMobile A910', + 35 => 'QMobile i5', + 36 => 'QMobile i5i', + 37 => 'QMobile i7', + 38 => 'QMobile i8', + 39 => 'QMobile i9', + 40 => 'Qmobile Noir i9', + 41 => 'QMobile i10', + 42 => 'QMobile i12', + 43 => 'QMobile S1', + 44 => 'QMobile S5', + 45 => 'Qmobile-S11', + 46 => 'Qmobile S13', + 47 => 'QMobile V4', + 48 => 'QMobile X2', + 49 => 'QMobile X5', + 50 => 'QMobile X6', + 51 => 'QMobile X11', + 52 => 'QMobile X25', + 53 => 'QMobile X500', + 54 => 'QMobile Z8', + 55 => 'QMV7A', + 56 => 'QMV7B', + ), + '@QO' => + array ( + 0 => 'QOOQ', + ), + '@QS' => + array ( + 0 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + ), + '@QT' => + array ( + 0 => 'QTab Q100', + 1 => 'QTab Q300', + 2 => 'QTab Q850', + ), + '@QU' => + array ( + 0 => 'Quicki-811', + 1 => 'Quechua Phone 5', + ), + '@QV' => + array ( + 0 => 'QV151E', + ), + '@QW' => + array ( + 0 => 'QW ?TB-[0-9]{4,4}!!', + ), + '@R1' => + array ( + 0 => 'R1001', + ), + '@R2' => + array ( + 0 => 'R2010', + 1 => 'R2017', + ), + '@R3' => + array ( + 0 => 'R30GT', + ), + '@R6' => + array ( + 0 => 'R6006', + 1 => 'R6007', + ), + '@R7' => + array ( + 0 => 'R7005', + 1 => 'R7007', + ), + '@R8' => + array ( + 0 => 'R801', + 1 => 'R801T', + 2 => 'R803', + 3 => 'R805', + 4 => 'R807', + 5 => 'R809T', + 6 => 'R811', + 7 => 'R813T', + 8 => 'R815', + 9 => 'R815T', + 10 => 'R815W', + 11 => 'R817', + 12 => 'R817T', + 13 => 'R819', + 14 => 'R819T!', + 15 => 'R821', + 16 => 'R821T', + 17 => 'R823T', + 18 => 'R827', + 19 => 'R827T', + 20 => 'R829', + 21 => 'R829T', + 22 => 'R830', + 23 => 'R830S', + 24 => 'R831K', + 25 => 'R831L', + 26 => 'R831T', + 27 => 'R831S', + 28 => 'R831', + 29 => 'R833T', + 30 => 'R850', + 31 => 'R883T', + 32 => 'R8000', + 33 => 'R8006', + 34 => 'R8007', + 35 => 'R8015', + 36 => 'R8106', + 37 => 'R8107', + 38 => 'R8109', + 39 => 'R8111', + 40 => 'R8113', + 41 => 'R8200', + 42 => 'R8201', + 43 => 'R8205', + 44 => 'R8206', + 45 => 'R8207', + 46 => 'R800(a|at|i|iv|x)!', + ), + '@RA' => + array ( + 0 => 'RAZR', + 1 => 'RAZR HD', + 2 => 'RAZR M', + 3 => 'RAZR MAXX', + 4 => 'Ramosi8', + 5 => 'Ramosi8c', + 6 => 'Ramosi9', + 7 => 'Ramosi9-3G', + 8 => 'Ramos i9s', + 9 => 'Ramos i9s Series', + 10 => 'Ramos i9s pro', + 11 => 'Ramosi10', + 12 => 'Ramosi12c', + 13 => 'Ramos W6HD', + 14 => 'Ramos W12', + 15 => 'Ramos W12HD', + 16 => 'Ramos W17Pro V3.0', + 17 => 'Ramos W21', + 18 => 'Ramos W25HD', + 19 => 'Ramos W27Pro', + 20 => 'Ramos W31', + 21 => 'Ramos w36', + 22 => 'Ramos W41', + 23 => 'Ramos W41 QuadCore', + 24 => 'Ramos X10 PRO!', + 25 => 'Rayhov!!', + 26 => 'RAINBOW', + 27 => 'RAINBOW 4G', + 28 => 'RacerII', + 29 => 'Racer', + ), + '@RB' => + array ( + 0 => 'RBK-490', + ), + '@RC' => + array ( + 0 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + ), + '@RE' => + array ( + 0 => 'redhookbay', + 1 => '(E-Boda|Eruption|Essential|Supreme|Storm|Revo)!!', + 2 => 'Rezound', + 3 => 'Renesas!', + 4 => 'Readboy!!', + 5 => 'ReederA8R', + 6 => 'Redmi', + 7 => 'Redmi 1S', + 8 => 'REDMI NOTE', + 9 => 'Redmi Note 4G (LTE)', + 10 => 'Redmi Note 2', + 11 => 'Redmi Note 3', + 12 => 'RedRice', + ), + '@RI' => + array ( + 0 => 'Rikomagic MK802', + 1 => 'Rikomagic MK802 ?II!', + 2 => 'Rikomagic MK802III', + 3 => 'Rikomagic MK802IIIS', + 4 => '(Gsmart|Gigabyte|Rio)!!', + 5 => '(HUAWEI )?(ALE|D2|G6|G7|GRA|M100|P2|P6|P7|RIO|SC|Sophia)!!', + 6 => 'Rise', + 7 => '(Ritmix )?RM[DP]-?[0-9]{3,3}!!', + 8 => 'RIDGE', + 9 => 'RIDGE 4G', + 10 => 'RIDGE FAB 4G', + ), + '@RK' => + array ( + 0 => 'rksdk', + 1 => 'rk2808(sdk)?!', + 2 => 'rk2818(sdk)?!', + 3 => 'RK2906', + 4 => 'RK2918', + 5 => 'rk2926-q8', + 6 => 'rk2928sdk', + 7 => 'rk29sdk', + 8 => 'rk30sdk!', + 9 => 'rk30mtk', + 10 => 'rk3026', + 11 => 'rk3028a', + 12 => 'rk3028sdk', + 13 => 'rk3036', + 14 => 'rk3066', + 15 => 'rk31sdk', + 16 => 'rk31 5931', + 17 => 'rk31 8089', + 18 => 'rk31 872xu', + 19 => 'rk31au', + 20 => 'rk31rtl', + 21 => 'rk312x', + 22 => 'rk3188!', + 23 => 'rk3288!', + 24 => 'rk3990!', + 25 => 'RKM MK602', + 26 => 'RKM MK802IIIS', + 27 => 'RKM MK802IV', + 28 => 'RKM MK902', + 29 => 'RKM MK902II', + ), + '@RM' => + array ( + 0 => 'RM-980', + 1 => 'RM-1061', + 2 => '(Ritmix )?RM[DP]-?[0-9]{3,3}!!', + 3 => 'RMD-[0-9]{2,3}G!!', + ), + '@RO' => + array ( + 0 => 'roiX', + 1 => 'RoverPad 3W T71D', + 2 => 'ROAR', + 3 => 'Roar A50', + ), + '@RT' => + array ( + 0 => 'RTC-700A', + ), + '@S-' => + array ( + 0 => 'S-F16', + ), + '@S1' => + array ( + 0 => '(GIO-)?(GiONEE[- ])?S101!', + 1 => 'S1005KTAB', + ), + '@S2' => + array ( + 0 => 'S222', + 1 => 'S2', + ), + '@S3' => + array ( + 0 => 's3c6410', + 1 => 'S308', + 2 => 'S3', + ), + '@S4' => + array ( + 0 => 'S4', + ), + '@S5' => + array ( + 0 => 'S5PV210', + 1 => 'S5-F', + 2 => 'S50', + 3 => 'S500', + 4 => 'S5', + 5 => 'S5 Mini!', + 6 => 'S51SE', + ), + '@S6' => + array ( + 0 => 'S658t', + 1 => 'S6 Edge+!', + ), + '@S7' => + array ( + 0 => 'S710d', + 1 => 'S710D', + 2 => 'S720i', + 3 => 'S7', + 4 => 's732', + ), + '@S8' => + array ( + 0 => 'S8600', + 1 => 'S88 DISCOVERY', + 2 => 'S880', + ), + '@SA' => + array ( + 0 => 'sama5d3', + 1 => 'SABRESD-MX6DQ', + 2 => 'saltbay', + 3 => 'Salora E1', + 4 => 'Satellite!!', + 5 => 'San Remo Mini', + 6 => 'San Francisco', + 7 => 'San Francisco for', + 8 => 'San Francisco II', + ), + '@SB' => + array ( + 0 => 'SBM[0-9]0[0-9]SH!!', + ), + '@SC' => + array ( + 0 => '(HW-|HUAWEI )?(ATH|CHE|CHM|HN3|H30|H60|HOL|KIW|PE|PLK|SCL)!!', + 1 => '(HUAWEI )?(ALE|D2|G6|G7|GRA|M100|P2|P6|P7|RIO|SC|Sophia)!!', + 2 => 'SCH-[iI][0-9]{3,3}!!', + 3 => 'SCH-L710', + 4 => 'SCH-M828!', + 5 => 'SCH-N719', + 6 => 'SCH-P[0-9]{3,3}!!', + 7 => 'SCH-R[0-9]{3,3}!!', + 8 => 'SCH-S[0-9]{3,3}!!', + 9 => 'SCH-V727', + 10 => 'SCH-W[0-9]{3,4}!!', + 11 => 'SC-?0[0-9][A-Z]!!', + 12 => 'SC[LT]2[0-9]!!', + 13 => 'Scroll!!', + 14 => 'SC-!!', + ), + '@SD' => + array ( + 0 => 'sdk', + 1 => 'SD4930UR', + ), + '@SE' => + array ( + 0 => 'sec smdkc210', + 1 => 'sec smdkv210', + 2 => 'SENSUELLE', + 3 => 'SensationXE!', + 4 => 'SensationXL!', + 5 => 'Sensation!', + 6 => '(SENCOR )?ELEMENT!!', + 7 => 'SENSEIT R390', + 8 => 'SENWA S970', + ), + '@SF' => + array ( + 0 => 'SFR-G8800', + 1 => 'SFR-G8800 TV', + 2 => 'SFR StarTab', + ), + '@SG' => + array ( + 0 => 'SGH-[EILNMS][0-9]{3,4}!!', + 1 => 'SGH-T[0-9]{3,3}!!', + 2 => 'SGH-W2013!', + 3 => 'SGP[ST0-9][0-9]{2,2}!!', + ), + '@SH' => + array ( + 0 => 'Shark Bay Client platform', + 1 => 'shamu', + 2 => 'SHIELD Android TV', + 3 => 'SHIELD', + 4 => 'SHIELD Tablet', + 5 => 'SHIELD Tablet K1', + 6 => 'SH940C-LN', + 7 => 'SH940C-LN TV', + 8 => 'SHV-E[0-9]{3,3}!!', + 9 => 'SHW-M[0-9]{3,3}!!', + 10 => 'SH01D', + 11 => 'SH-[01][0-9][A-Z]!!', + 12 => '(SHP-)?(SHARP )?SH[0-9]{2,3}!!', + 13 => 'SH[FLTV][0-9]{2,2}!!', + 14 => 'SHARP-ADS1', + ), + '@SI' => + array ( + 0 => 'SiRF Dream', + 1 => 'simvalley SP-142', + ), + '@SK' => + array ( + 0 => '(SKY )?IM[- ][A-Z][0-9]{3,3}!!', + 1 => 'Skyworth!!', + 2 => 'SK17(a|i|iv|i-o)!', + 3 => 'Skate', + 4 => 'Skate Pro', + ), + '@SL' => + array ( + 0 => 'Slider SL101', + 1 => '(HP|Slate)!!', + 2 => 'Slidepad!!', + 3 => 'SLIDE', + ), + '@SM' => + array ( + 0 => 'smdk6410', + 1 => 'SMDKC110', + 2 => 'SMDKV210', + 3 => 'SMDK4x12', + 4 => 'SMDK4412', + 5 => 'SMDK5250', + 6 => 'SMDK5410', + 7 => 'smp86xx', + 8 => 'smp8734', + 9 => 'smp8756', + 10 => 'SM-G900FG', + 11 => 'SmartWatch 3', + 12 => 'Smart!!', + 13 => 'SmartTab1', + 14 => 'SmartPad!!', + 15 => '(MEO )?Smart A!!', + 16 => 'SMT-E5015', + 17 => 'SMT-i9100', + 18 => 'SM-A[0-9]{3,3}!!', + 19 => 'SM-C[0-9]{3,3}!!', + 20 => 'SM-E[0-9]{3,3}!!', + 21 => 'SM-G[0-9]{3,3}!!', + 22 => 'SM-I9500', + 23 => 'SM-J[0-9]{3,3}!!', + 24 => 'SM-N[0-9]{3,4}!!', + 25 => 'SM-P[0-9]{3,3}!!', + 26 => 'SM-S[0-9]{3,3}!!', + 27 => 'SM-T[0-9]{3,3}!!', + 28 => 'SM-V700', + 29 => 'SM-W[0-9]{4,4}!!', + 30 => 'Smartphone Android by SFR STARADDICT II', + 31 => '(Smartfren|Andromax)!!', + 32 => 'Smartfren Tab 7', + 33 => 'SmartQ!!', + 34 => 'SMART Sprint', + 35 => 'SmartTab2', + 36 => 'SmartTab7', + 37 => 'SmartTabII7', + 38 => 'SmartTabII10', + 39 => 'SmartTab10', + ), + '@SN' => + array ( + 0 => 'SN[0-9]!!', + 1 => 'Snexian!!', + 2 => '(SNM\\-)?LT[0-9]{2,2}[a-z]?!!', + 3 => '(SNM\\-)?M[0-9]{2,2}[a-z]!!', + ), + '@SO' => + array ( + 0 => 'SoftwinerEvb', + 1 => 'SoftwinerEvb0308', + 2 => 'SoftwinerEvd', + 3 => 'Softwinerkf026', + 4 => 'Softwinerf721', + 5 => 'Softwinerf761', + 6 => 'Softwinerf761I', + 7 => 'Softwinerf900', + 8 => 'SoftwinerEvbV13', + 9 => 'soho', + 10 => '(HUAWEI )?(ALE|D2|G6|G7|GRA|M100|P2|P6|P7|RIO|SC|Sophia)!!', + 11 => 'SONIC', + 12 => 'Sonim!!', + 13 => 'SO-0[0-9][A-Z]!!', + 14 => 'SO[LTV][0-9]{2,2}!!', + 15 => 'Soshphone 4G', + ), + '@SP' => + array ( + 0 => 'Sprint!!', + 1 => 'Sparkle V', + 2 => 'SPH-D[0-9]{3,3}!!', + 3 => 'SPH-L[0-9]{3,3}!!', + 4 => 'SPH-M[0-9]{3,3}!!', + 5 => 'SPH-P[0-9]{3,3}!!', + 6 => 'SPX-5', + 7 => 'SPX-5 3G', + 8 => 'SPX-6', + 9 => 'SPX-12', + 10 => 'SpeedUp S3', + 11 => '(CSL[- ])?(Spice[- ]?)?Mi-?[0-9]{3,3}!!', + 12 => 'SPICE IV', + 13 => 'SP-A20i', + ), + '@SR' => + array ( + 0 => 'SRT!!', + ), + '@ST' => + array ( + 0 => 'ste l8540!', + 1 => 'ste u8500', + 2 => 'ste u9540', + 3 => 'Stingray', + 4 => 'Stream', + 5 => 'STV100-1', + 6 => 'STV100-2', + 7 => '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!', + 8 => 'streak7', + 9 => '(E-Boda|Eruption|Essential|Supreme|Storm|Revo)!!', + 10 => 'ST10', + 11 => 'STM[0-9]{3,3}H!!', + 12 => 'Stylo', + 13 => 'STARXTREM', + 14 => 'STARXTREM II', + 15 => 'STARXTREM 4', + 16 => 'STARXTREM5', + 17 => 'STARADDICT II Plus', + 18 => 'STARADDICT III', + 19 => 'STARADDICT 4', + 20 => 'STARADDICT 5', + 21 => 'STARNAUTE II', + 22 => 'Starshine', + 23 => 'STARSHINE II', + 24 => 'STARSHINE III', + 25 => 'STARSHINE 4', + 26 => 'STARTEXT II', + 27 => 'STARTRAIL II', + 28 => 'StarTrail III', + 29 => 'STARTRAIL4', + 30 => 'STARTRAIL 4', + 31 => 'STARTRAIL5', + 32 => 'STARTRAIL 6 4G', + 33 => 'STARTRAIL6', + 34 => 'STARTRAIL7', + 35 => 'ST[0-9]{2,2}[a-z]?!!', + 36 => 'Star N8000', + 37 => 'Star N9500', + 38 => 'Star Q9000', + 39 => 'STAR S5', + 40 => 'STAR S7589', + 41 => 'Starmobile!!', + 42 => '(Starway )?Andromeda!!', + 43 => 'STX!!', + 44 => 'STOREX LinkBox', + 45 => 'StarTab 715x', + 46 => 'ST[0-9]{5,5}-[0-9]!!', + 47 => 'STAIRWAY', + 48 => 'StarTrail TT', + ), + '@SU' => + array ( + 0 => 'Surfing TAB B 9.7 3G', + 1 => 'Surfing Tab C 3G', + 2 => '(E-Boda|Eruption|Essential|Supreme|Storm|Revo)!!', + 3 => '(Explay|X-tremer|ActiveD|Informer|Surfer)!!', + 4 => 'SUPRA', + 5 => 'SUBLIM', + 6 => 'SUNSET', + ), + '@SV' => + array ( + 0 => 'sv8860', + ), + '@SX' => + array ( + 0 => 'SXZ-PD!!', + 1 => 'SX9701W', + ), + '@SY' => + array ( + 0 => 'Sygnus', + 1 => 'SYTABEX7-2', + 2 => '(Symphony|Xplorer)!!', + 3 => 'Synrgic Uno M1', + ), + '@SZ' => + array ( + 0 => 'SZENIO!!', + ), + '@T-' => + array ( + 0 => 'T-07B', + 1 => 'T-800', + 2 => 'T-Smart!!', + 3 => 'T-01C', + 4 => 'T-01D', + 5 => 'T-02D', + 6 => 'T-Mobile G1', + 7 => 'T-Mobile G2', + 8 => 'T-Mobile G2 Touch', + 9 => 'T-Mobile myTouch', + 10 => 'T-Mobile myTouch 3G', + 11 => 'T-Mobile myTouch 3G Slide', + 12 => 'T-mobile my touch 3g slide', + 13 => 'T-Mobile Espresso', + 14 => 'T-Mobile myTouch 4G', + 15 => 'T-Mobile myTouch Q', + 16 => 'T-Mobile Opal', + 17 => 'T-Mobile Vivacity', + 18 => 'T-Hub2', + ), + '@T0' => + array ( + 0 => 'T01', + 1 => 'T02', + 2 => 'T00C', + 3 => 'T00E', + 4 => 'T00D', + 5 => 'T00N', + 6 => 'T001', + 7 => 'T00I', + 8 => 'T00I-D', + 9 => 'T00F', + 10 => 'T00J', + 11 => 'T00J-D', + 12 => 'T00K', + 13 => 'T00P', + 14 => 'T00G', + 15 => 'T00Q', + 16 => 'T00S', + 17 => 'T00T', + ), + '@T1' => + array ( + 0 => 'T1-B', + 1 => 'T1-D', + 2 => 'T1-E', + 3 => 'T1K Plus', + 4 => 'T1 7.0', + 5 => 'T11AD!', + ), + '@T2' => + array ( + 0 => 'T20', + ), + '@T3' => + array ( + 0 => 'T320a', + 1 => 'T30', + 2 => 'T3696', + 3 => 'T301', + ), + '@T6' => + array ( + 0 => 'T6', + ), + '@T7' => + array ( + 0 => '(OPPO-?)?T703!', + 1 => 'T720 SE', + 2 => 'T760 from moage.com', + ), + '@T9' => + array ( + 0 => 'T9108', + 1 => 'T92', + 2 => 'T9199h', + 3 => 'T959', + 4 => 'T98 4G??(C6R2)', + ), + '@TA' => + array ( + 0 => '(DENVER-)?TA[CD]-[0-9]{4,5}!!', + 1 => 'Tablet-P27', + 2 => 'TA10CA3', + 3 => '(tablet )?fnac!!', + 4 => 'TA-FONE!!', + 5 => 'TAB1011', + 6 => 'TAB-1030', + 7 => '(Lenovo )?(Tab ?)?(2 ?)?[AS](7|8|10)!!', + 8 => 'TAB950', + 9 => 'TAB1062', + 10 => 'TAB192', + 11 => '(POV )?TAB-PLAYTABPRO!', + 12 => '(POV )?TAB-PROTAB25!', + 13 => '(POV )?TAB-PROTAB26!', + 14 => '(POV )?TAB-PROTAB30!', + 15 => 'TAB-PROTAB2-IPS9', + 16 => 'TAB-PROTAB2-IPS-3G', + 17 => 'TAB-PROTAB2-IPS-16', + 18 => 'TAB-PROTAB2.4', + 19 => 'TAB-PROTAB2XL', + 20 => 'TAB-PROTAB2.4XL', + 21 => 'TAB-PROTAB2XXL', + 22 => 'TAB-PROTAB2XXL(4)', + 23 => '(POV )?TAB-PROTAB2XXL(4)!', + 24 => '(POV )?TAB NAVI7 3G M!', + 25 => 'Tablet P', + 26 => 'Tablet S', + 27 => 'Tabra QAV801', + 28 => 'TAB 7 3G V8', + 29 => 'TAB 8 3G V8', + 30 => 'TAB9 3G', + 31 => 'TAB9 3G V8', + 32 => 'TAB 10 3G V16', + 33 => 'TAB 10Q', + 34 => 'TAB09-410', + 35 => 'TAB10-410', + 36 => 'TAB07-485', + 37 => 'TAB07-200', + 38 => 'TAB9-200', + 39 => 'TAB10-201', + 40 => 'TAB210', + 41 => 'TAB220', + 42 => 'TAB224', + 43 => 'TAB250', + 44 => 'TAB275', + 45 => 'TAB260', + 46 => 'TAB264', + 47 => 'TAB360', + 48 => 'TAB364', + 49 => 'TAB410', + 50 => 'TAB411', + 51 => 'TAB420', + 52 => 'TAB424', + 53 => 'TAB450', + 54 => 'TAB460', + 55 => 'TAB461', + 56 => 'TAB464', + 57 => 'TAB465EUK', + 58 => 'TAB469', + 59 => 'TAB466EUK', + 60 => 'TAB467', + 61 => 'TAB462', + ), + '@TB' => + array ( + 0 => 'TB07FTA', + 1 => 'TB100', + 2 => 'TB782B', + 3 => 'TBD753B', + 4 => 'TBDB763', + 5 => 'TBDB863', + 6 => 'TBDC1093', + 7 => 'TBDG734', + 8 => 'TBDG874', + 9 => 'TBDG1073', + 10 => 'TBQC1063', + ), + '@TC' => + array ( + 0 => 'TCC8920 STB!', + 1 => 'TCC893X!', + 2 => 'TCC8935 HDMI!', + 3 => 'TCC8975 STB!', + 4 => 'TCC8920 EVM', + 5 => 'TCC8925 HDMI DONGLE', + 6 => 'TCC8930 STB EV', + 7 => 'TCC8930 STB1', + 8 => 'TCC8935 HDMI DONGLE', + 9 => 'TC970', + 10 => 'TC970 (Wi-Fi)', + 11 => 'TC975', + 12 => 'TC55', + 13 => 'TC55CH', + 14 => 'TC70', + 15 => 'TC75', + 16 => 'TCL!!', + ), + '@TD' => + array ( + 0 => 'TD600', + 1 => 'TD-1010', + 2 => 'TD506', + ), + '@TE' => + array ( + 0 => 'Telechips M801 Evaluation Board', + 1 => 'Telechips TCC8900 Evaluation Board', + 2 => 'Tegra!!', + 3 => 'TECNO!!', + 4 => 'Teclast A10', + 5 => 'Teclast P76e!', + 6 => 'Teclast P85!', + 7 => 'Teclast X80h', + 8 => 'tegav2', + 9 => 'Tele2fon V3', + 10 => 'Tele2fon v5', + 11 => 'TELEFUNKEN Diamond TD1', + 12 => 'Telpad Dual S', + 13 => 'Telpad Quad S', + 14 => 'Telpad QS', + 15 => 'Tensent S9000', + 16 => 'teXet X-alpha', + 17 => 'teXet iX-mini', + 18 => 'teXet X-navi', + 19 => 'TEXET TM-4677', + 20 => 'TeamDRH ICS for GTablet', + 21 => 'Telenor OneTouch', + 22 => 'Telenor One Touch C', + 23 => 'Telenor One Touch S', + 24 => 'Telenor Touch Plus', + 25 => 'Telenor S800', + 26 => 'Telenor Smart', + 27 => 'Telenor Smart 2', + 28 => 'Telenor Smart HD', + 29 => 'Telenor Smart Pro', + 30 => 'Telenor Smart Pro 2', + 31 => 'TELENOR SMART TOUCH MINI', + 32 => 'Telenor Touch Pad', + ), + '@TF' => + array ( + 0 => 'TF101', + 1 => 'TF101-WiMAX', + 2 => 'TF201', + 3 => 'tf201t', + 4 => '(Transformer )?(Pad )?TF300(T|TG|TL)!', + 5 => '(Transformer )?(Pad )?TF502(T)!', + 6 => '(Transformer )?(Pad )?TF700(T|K)!', + ), + '@TH' => + array ( + 0 => 'thor', + 1 => 'Thunder S220', + 2 => '(Cloudfone|CloudPad|Excite|Thrill)!!', + 3 => 'ThinkPad( Tablet)?!', + 4 => '(CJ-)?ThL!!', + 5 => 'THRiVE', + ), + '@TI' => + array ( + 0 => 'Tilapia', + 1 => 'Titan TV S320', + 2 => '(HUAWEI )?(TIT)!!', + 3 => '(Karbonn|Titanium)!!', + 4 => 'TI320-DU', + 5 => 'TI320-DU TV', + 6 => 'TizzBird!!', + ), + '@TL' => + array ( + 0 => 'TLINK[0-9]{3,3}!!', + ), + '@TM' => + array ( + 0 => 'TM400', + 1 => 'TM105', + 2 => 'TM105A', + 3 => 'TM-3200R', + 4 => 'TM-3204R', + 5 => 'TM-4004', + 6 => 'TM-4377', + 7 => 'TM-4577', + 8 => 'TM-4677', + 9 => 'TM-5200', + 10 => 'TM-5377', + 11 => 'TM-7011', + 12 => 'TM-7016', + 13 => 'TM-7021', + 14 => 'TM-7023', + 15 => 'TM-7024', + 16 => 'TM-7025', + 17 => 'TM-7026', + 18 => 'TM-7026 (revision 4)', + 19 => 'TM-7037W', + 20 => 'TM-7038W', + 21 => 'TM-7041', + 22 => 'TM-7043XD', + 23 => 'TM-7047HD 3G', + 24 => 'TM-7096', + 25 => 'TM-7854', + 26 => 'TM-8041HD', + 27 => 'TM-8051', + 28 => 'TM-9720', + 29 => 'TM-9725', + 30 => 'TM-9740', + 31 => 'TM-9741', + 32 => 'TM-9743W', + 33 => 'TM-9747!', + 34 => 'TM-9748 3G', + 35 => 'TM-9750HD', + 36 => 'TM-9751HD', + 37 => 'TM-9757', + 38 => 'TM-9757 3G rev1', + 39 => 'TM-9767', + 40 => 'TM-1058', + 41 => 'tmn smart a7', + 42 => 'tmn smart a8', + 43 => 'tmn smart a15', + 44 => 'tmn smart a18', + 45 => 'tmn smart a20', + 46 => 'tmn smart a60', + ), + '@TO' => + array ( + 0 => 'Toro', + 1 => 'Toro-VZW', + 2 => 'TOUCAN Stick HD', + 3 => 'TOUCAN Stick G4', + 4 => 'Toucan Stick 4K', + 5 => 'TOUCHBOOK7.0 3G', + 6 => '(HP )?Touchpad!', + 7 => 'Touch Pro 2', + 8 => '(KAZAM|Tornado|Trooper)!!', + 9 => 'Torque', + 10 => 'tolino tab!!', + 11 => 'TomTom Bridge', + 12 => 'TomTom PRO 8275', + 13 => 'TOOKY!!', + 14 => 'TOSHIBA AC AND AZ', + 15 => 'TOSHIBA FOLIO AND A', + 16 => 'Tostab03', + ), + '@TP' => + array ( + 0 => 'TPA60W', + ), + '@TQ' => + array ( + 0 => 'TQ150', + ), + '@TR' => + array ( + 0 => 'Transformer', + 1 => 'Transformer TF101(G)?!', + 2 => '(Eee Pad )?Transformer Prime TF201!', + 3 => 'Transformer TF201G', + 4 => 'Transformer Prime', + 5 => 'Transformer Prime TF300T', + 6 => 'Transformer Pad', + 7 => '(Transformer )?(Pad )?TF300(T|TG|TL)!', + 8 => '(Transformer )?(Pad )?TF502(T)!', + 9 => '(Transformer )?(Pad )?TF700(T|K)!', + 10 => 'Transformer (Pad )?Infinity!', + 11 => 'TR720F', + 12 => 'TR10CS1', + 13 => 'TripNiCE Pyramid', + 14 => '(KAZAM|Tornado|Trooper)!!', + 15 => 'Triumph', + 16 => 'TRACER OXYGEN GS1', + 17 => 'Trevi PHABLET 4C', + 18 => 'Trevi PHABLET 5 S', + 19 => 'TREQ!!', + 20 => 'Trevi REVERSE 5.5Q', + 21 => 'Trevi PHABLET 6 S', + 22 => 'TRUE BEYOND 3G', + ), + '@TS' => + array ( + 0 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + 1 => 'TSP21', + 2 => 'TSB CLOUD COMPANION;TOSHIBA AC AND AZ', + ), + '@TT' => + array ( + 0 => 'TT101', + ), + '@TU' => + array ( + 0 => 'TURBO DG2014', + 1 => 'Turbo-X pi', + 2 => 'Turbo-X Ice', + 3 => 'Turbo-X Tablet Spice III', + 4 => 'Turkcell Maxi Plus 5', + 5 => 'TURKCELL MaxiPRO5', + 6 => 'Turkcell T10', + 7 => 'Turkcell T11', + 8 => 'Turkcell T20', + 9 => 'TURKCELL T40', + 10 => 'TURKCELL T50', + 11 => 'TURKCELL TURBO T50', + 12 => 'TURKCELL T60', + ), + '@TV' => + array ( + 0 => 'TVPAD Slim K3409', + ), + '@TX' => + array ( + 0 => 'TX201LA', + 1 => 'TX201LAF', + 2 => 'TX85', + ), + '@U1' => + array ( + 0 => 'U1203', + ), + '@U2' => + array ( + 0 => 'U20(a|i|iv)!', + ), + '@U7' => + array ( + 0 => 'U701', + 1 => 'U701T', + 2 => 'U702', + 3 => 'U705', + 4 => 'U705T', + 5 => 'U705W', + 6 => 'U707', + 7 => 'U707T', + 8 => 'U7011', + 9 => 'U7015', + ), + '@U8' => + array ( + 0 => 'U880', + 1 => 'U880E', + 2 => 'U880s', + 3 => 'U8220', + ), + '@UL' => + array ( + 0 => 'Ultimix!!', + 1 => 'Ultimate10', + 2 => 'Ultimate10-Android4.0', + 3 => 'Ultimate 10', + 4 => 'ultrafone 303', + 5 => 'ultrafone 303 Play', + 6 => 'ultrafone 304', + 7 => 'ultrafone 308', + 8 => 'ultrafone 501', + 9 => 'ultrafone 502', + 10 => 'ultrafone 503', + 11 => 'ultrafone 701HD', + 12 => 'ultrafone 701FHD', + 13 => 'Ultym 5', + 14 => 'Ultym 5L', + 15 => 'Ultym 5.2', + ), + '@UM' => + array ( + 0 => 'UM840', + 1 => 'UMI!!', + ), + '@UN' => + array ( + 0 => 'unknown M200-L09', + 1 => 'UNO X10', + 2 => 'Unusual!!', + ), + '@UO' => + array ( + 0 => 'UOOGOU!!', + ), + '@UR' => + array ( + 0 => 'URBANO PROGRESSO', + ), + '@US' => + array ( + 0 => '(HTC|PC|USCC)?ADR[0-9]{4,4}!!', + 1 => 'USCCADR[0-9]{4,4}!!', + 2 => '(USCC-)?C[0-9]{4,4}!!', + 3 => 'USCC-(LG)?US!!', + 4 => 'Usmart!!', + ), + '@UT' => + array ( + 0 => 'UTime!!', + ), + '@V-' => + array ( + 0 => 'V-T100', + ), + '@V1' => + array ( + 0 => 'V1 Viper', + 1 => 'V1 Viper E', + 2 => 'V1 Viper I', + 3 => 'V1 Viper I4G', + 4 => 'V1 Viper I4G PL', + 5 => 'V1 ViperS', + 6 => 'V1 Viper S4G', + 7 => 'V11', + 8 => 'V17HD', + 9 => '(GIO-)?(GiONEE[- ])?V182!', + 10 => '(GIO-)?(GiONEE[- ])?V185!', + 11 => '(GIO-)?(GiONEE[- ])?V188!', + 12 => 'V1', + 13 => 'V1277', + ), + '@V3' => + array ( + 0 => 'v360 E1', + ), + '@V5' => + array ( + 0 => 'V5U-simvalley SP-142', + 1 => 'V55', + ), + '@V7' => + array ( + 0 => 'V701s Core4', + 1 => 'V711s Core4', + 2 => 'V712 Core4', + 3 => 'V719 3G', + ), + '@V8' => + array ( + 0 => 'V801 Core4', + 1 => 'V801s Core4', + 2 => 'V811 Core4', + 3 => 'V812 Core4', + 4 => 'V813 Core4', + 5 => 'V813s Core4', + 6 => 'V818', + 7 => 'V818mini', + 8 => 'V819mini', + 9 => 'V819 3G', + 10 => 'V819i', + 11 => 'V865M', + 12 => 'V880', + 13 => 'V8000 USA Cricket', + 14 => 'V8110', + 15 => 'V8403', + 16 => 'V8409', + 17 => 'V8412', + 18 => 'V8413', + 19 => 'V8501', + 20 => 'V8502', + 21 => 'V8503', + 22 => 'V8505', + 23 => 'V8507', + 24 => 'V8508', + 25 => 'V8510', + 26 => 'V8511', + 27 => 'V8603', + ), + '@V9' => + array ( + 0 => 'V99', + 1 => 'V936', + 2 => 'V971 Core4', + 3 => 'V971s Core4', + 4 => 'V972 Core4', + 5 => 'V973 Core4', + 6 => 'V975 Core4', + 7 => 'V975i', + 8 => 'V975m', + 9 => 'V975m Core4', + 10 => 'V975s Core4', + 11 => 'V961', + 12 => 'V9', + 13 => 'V9S', + 14 => 'V9e', + 15 => 'V9e+', + 16 => 'V9A', + 17 => 'V9C', + ), + '@VA' => + array ( + 0 => 'Vandroid S5E', + 1 => 'Vandroid T1J', + 2 => 'Vandroid T3-A', + 3 => 'Vandroid T3i', + 4 => 'Vandroid T', + 5 => 'VAP430', + ), + '@VE' => + array ( + 0 => 'vexpress a9', + 1 => 'Ventana', + 2 => 'Vendor Optimus', + 3 => 'VEOLO', + 4 => 'VEOLO2', + 5 => 'Vega', + 6 => 'VegaBean!', + 7 => 'Venture', + 8 => 'Venue!!', + 9 => '(OV-|Overmax|Vertis)!!', + 10 => 'VEGA NO.6', + 11 => 'verykool!!', + 12 => 'Vertu Aster T', + 13 => 'VERTU Ti', + ), + '@VI' => + array ( + 0 => 'VirtualBox!', + 1 => 'victoriabay', + 2 => '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!', + 3 => 'VICTORY', + 4 => 'Victory 2', + 5 => 'Victory 3', + 6 => 'Vibo-A688', + 7 => 'VitMod ExtraLite 1.6.5.fullodex for HTC HD7 Pro', + 8 => 'Vivid 4G', + 9 => 'Vibrantmtd', + 10 => 'Vibrant T959', + 11 => 'victorys s8', + 12 => 'Victorys V8', + 13 => 'Videocon!!', + 14 => 'ViewSonic-V350', + 15 => 'ViewPhone3', + 16 => 'ViewPad 4', + 17 => 'ViewSonic-ViewPad4', + 18 => 'ViewPad7', + 19 => 'ViewPad 7D', + 20 => 'ViewPad 7D Pro', + 21 => 'ViewSonic-ViewPad7e', + 22 => 'ViewPad7e', + 23 => 'ViewPad 7Q', + 24 => 'ViewPad 7Q Pro', + 25 => 'ViewPad7X', + 26 => 'ViewPad 9Q', + 27 => 'ViewPad 10e', + 28 => 'ViewPad 10S', + 29 => 'ViewPad 70Q', + 30 => 'ViewPad97A', + 31 => 'ViewPad97a K1', + 32 => 'ViewPad97a Pro', + 33 => 'ViewPad 97Q', + 34 => 'ViewPad 100Q', + 35 => 'ViewPad 100N Pro', + 36 => 'ViewSonic VB733', + 37 => 'VINUS!!', + 38 => '(BBG-|VIV-)?vivo!!', + 39 => 'Viettel i5', + 40 => 'VIETTEL V8404!', + 41 => 'Viettel V8410', + 42 => 'VIETTEL V8411', + 43 => 'Viettel V8502', + 44 => 'VIETTEL V8506', + 45 => 'VIETTEL V8509', + ), + '@VK' => + array ( + 0 => 'VK700', + 1 => 'VK810 4G', + 2 => 'VK815', + ), + '@VL' => + array ( + 0 => 'VL-[0-9]{3,3}!!', + ), + '@VM' => + array ( + 0 => 'VMware Virtual Platform', + 1 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + 2 => 'VM670', + ), + '@VO' => + array ( + 0 => 'Vogue', + 1 => 'Volantis', + 2 => 'Volantisg', + 3 => 'VOYAGER DG300', + 4 => 'VOYAGER2 DG310', + 5 => 'Vortex', + 6 => 'vollo Vi86', + 7 => 'VOTO V5', + 8 => 'VOTO VT868', + 9 => 'VOTO VT888', + 10 => 'VOTO W5300', + 11 => 'VOTO X2', + 12 => 'VOYO A15', + 13 => 'voyo X6', + 14 => 'Vodafone 785', + 15 => 'Vodafone 845', + 16 => 'Vodafone 858', + 17 => 'Vodafone 861', + 18 => 'Vodafone 875', + 19 => 'Vodafone 890N', + 20 => 'Vodafone 945', + 21 => 'Vodafone 958', + 22 => 'Vodafone 975!', + 23 => 'Vodafone 980', + 24 => 'Vodafone 985N', + 25 => 'Vodafone Blade V', + 26 => 'Vodafone Smart ll', + 27 => 'Vodafone Smart II!', + 28 => 'Vodafone Smart 4', + 29 => 'Vodafone Smart 4 max', + 30 => 'Vodafone Smart 4 turbo', + 31 => 'Vodafone Smart 4G', + 32 => 'VodafoneSmartChat!', + 33 => 'Vodafone Smart Chat', + 34 => 'Vodafone Smart ultra 6', + 35 => 'Vodafone SmartTab II 10', + 36 => 'Vodafone Smart Tab III 7', + 37 => 'Vodafone Smart Tab III 10', + 38 => 'Vodafone Smart Tab 4', + 39 => 'Vodafone Smart Tab 3G!', + 40 => 'Vodafone Smart Tab 4G!', + ), + '@VS' => + array ( + 0 => 'VS[0-9]{3,3}!!', + 1 => 'VS TOUCH!!', + 2 => 'VSD220', + 3 => 'VSD221', + 4 => 'VSD231', + 5 => 'VSD241', + 6 => 'Vsun i9', + 7 => 'Vsun V9', + ), + '@VT' => + array ( + 0 => 'VT6078', + 1 => 'VTAB1008', + 2 => 'VTAB3010', + ), + '@VX' => + array ( + 0 => 'VX-100', + 1 => 'VX580A', + 2 => 'VX580W', + 3 => 'VX610A', + ), + '@W1' => + array ( + 0 => 'W10', + 1 => 'W10 V2.0', + 2 => 'w13pro', + 3 => 'W13PRO V2.0', + 4 => 'W17PRO(Dualcore)', + 5 => 'W17PRO JB Dualcore', + 6 => 'W100', + ), + '@W2' => + array ( + 0 => 'W200', + 1 => 'W22PRO', + 2 => 'W22PRO 3G', + 3 => 'W27(Dualcore)', + 4 => 'W28(Dualcore)', + 5 => 'W20', + ), + '@W3' => + array ( + 0 => 'W30(QuadCore)', + 1 => 'w30hd(QuadCore)', + 2 => 'W30HDPRO', + ), + '@W4' => + array ( + 0 => 'w42(QuadCore)', + ), + '@W6' => + array ( + 0 => 'W606', + 1 => 'W619', + 2 => 'W686', + 3 => 'W626', + 4 => 'W6350', + 5 => 'W6360', + 6 => 'W6500', + 7 => 'W6', + 8 => 'W6HD ICS', + 9 => 'W6HD ICS FULL', + ), + '@W7' => + array ( + 0 => 'W711', + 1 => 'W700', + 2 => 'W732', + ), + '@W8' => + array ( + 0 => 'W820', + 1 => '(GIO-)?(GiONEE[- ])?W800!', + 2 => 'W800', + 3 => 'W806', + 4 => 'W808', + 5 => 'W810', + 6 => 'W880', + 7 => 'W8', + 8 => 'W8 beyond', + ), + '@W9' => + array ( + 0 => 'W900', + 1 => 'W990', + ), + '@WA' => + array ( + 0 => 'WALSUN S1 Pro', + 1 => 'WALSUN S2', + 2 => 'Walton Primo', + 3 => 'WALTON Primo C1', + 4 => 'WALTON Primo-D1', + 5 => 'Walton Primo F2', + 6 => 'WALTON Primo-G1', + 7 => 'WALTON Primo G1', + 8 => 'Walton Primo H3', + 9 => 'WALTON H3', + 10 => 'WALTON Primo HMmini', + 11 => 'WALTON Primo-N1', + 12 => 'Walton Primo R1', + 13 => 'WALTON Primo S3', + 14 => '(WALTON )?Primo-X1!', + 15 => 'Walpad 8b', + 16 => 'Walpad 8x', + 17 => 'WAX', + ), + '@WE' => + array ( + 0 => 'WellcoM-A86', + 1 => 'WellcoM-A88', + 2 => 'WellcoM-A89', + 3 => 'WellcoM-A89-Plus', + 4 => 'WellcoM-A99', + 5 => 'WellcoM-A800', + 6 => 'WEXLER. ZEN 5', + 7 => 'WEXLER TAB7ID', + 8 => 'WEXLER-TAB-7iS', + 9 => 'WEXLER-TAB-7T', + 10 => 'WEXLER.BOOK T7008', + ), + '@WF' => + array ( + 0 => 'WF7C', + ), + '@WH' => + array ( + 0 => 'WHAM WG40', + ), + '@WI' => + array ( + 0 => 'Wingray', + 1 => 'Wildfire S!', + 2 => 'Wildfire!', + 3 => 'Wiko Cink Five', + 4 => 'Wiko Cink Peax', + 5 => 'WIKO-CINK PEAX', + 6 => 'Wiko Cink Slim', + 7 => 'WIKO-CINK SLIM', + 8 => 'Wiko Rainbow', + 9 => 'Wiko Stairway', + ), + '@WL' => + array ( + 0 => 'WL-101GQC', + ), + '@WM' => + array ( + 0 => 'WM8650', + 1 => 'WM8650-mid', + 2 => 'wm8710-tvbox', + 3 => 'WM8850-mid', + ), + '@WO' => + array ( + 0 => 'Woxter!!', + ), + '@WS' => + array ( + 0 => 'WS171', + ), + '@WT' => + array ( + 0 => 'WT[0-9]{2,2}[a-z]!!', + ), + '@WX' => + array ( + 0 => 'WX04K', + 1 => 'WX10K', + 2 => 'WX[0-9]{3,3}!!', + 3 => 'WX04SH', + 4 => 'WX05SH', + 5 => 'Wxt Tab PC 65CXi', + ), + '@X-' => + array ( + 0 => '(Explay|X-tremer|ActiveD|Informer|Surfer)!!', + 1 => 'X-treme PQ11', + 2 => 'X-treme PQ15', + 3 => 'X-tremePQ22', + 4 => 'X-basic', + 5 => 'X-basic2', + 6 => 'X-maxi', + 7 => 'X-medium', + ), + '@X0' => + array ( + 0 => 'X002', + 1 => 'X003', + 2 => 'X005', + ), + '@X1' => + array ( + 0 => 'X1 Soul', + 1 => 'X1 Soul Mini', + 2 => 'X1 mini Soul', + 3 => 'X1 Soul Xtreme', + 4 => 'X1 Xtreme Mini', + 5 => 'X1', + 6 => 'X1 7.0', + 7 => 'X1 Grand', + 8 => 'X10(a|i|iv|i-o|s)?$!', + 9 => 'X10 ?(Mini ?Pro)$!', + 10 => 'X10 ?(Mini)$!', + 11 => 'X10H(G3C5)', + 12 => 'X10HD 3G(M6K6)', + 13 => 'X16 Power(D6F7)', + 14 => 'X16HD (K3J3)', + 15 => 'X16HD 3G(M5J5)', + ), + '@X2' => + array ( + 0 => 'X2 Soul', + 1 => 'X2 Soul Mini', + 2 => 'X2 Soul Mini TM', + 3 => 'X2 Soul PRO', + 4 => 'X2 Twin', + ), + '@X3' => + array ( + 0 => 'X325a', + 1 => 'X3-Ice MIUI XT720 Memorila Classics', + ), + '@X4' => + array ( + 0 => 'X403', + ), + '@X5' => + array ( + 0 => 'X515d', + 1 => 'X515e', + 2 => 'X525a', + 3 => 'X506', + 4 => 'X506S', + 5 => 'X507Q', + 6 => 'X500', + 7 => 'X500 USA General', + 8 => 'X501 USA Cricket', + 9 => 'X501 USA RS', + ), + '@X7' => + array ( + 0 => 'X710d', + 1 => 'X720D', + 2 => 'X710E', + 3 => 'X7G', + 4 => 'X720', + 5 => 'X70 3G (C5D9)', + 6 => 'X70 R(C7F9)', + 7 => 'X708S', + ), + '@X8' => + array ( + 0 => '(GIO-)?(GiONEE[- ])?X817!', + 1 => 'X8', + 2 => 'X80(C4M5)', + 3 => 'X80h', + 4 => 'X80h(FB5M)', + 5 => 'X80h(FB6M)', + 6 => 'X80HD(G2N5)', + 7 => 'X80HD(G2N6)', + 8 => 'X80HD(G2N8)', + 9 => 'X80HD(G2N9)', + 10 => 'X81-8G3D', + 11 => 'X89 (E7ED)', + 12 => 'X89HD (H21C)', + ), + '@X9' => + array ( + 0 => 'X920e', + 1 => 'X9', + 2 => 'X903', + 3 => 'X905', + 4 => 'X906', + 5 => 'X907', + 6 => 'X909', + 7 => 'X909T', + 8 => 'X9000', + 9 => 'X9006', + 10 => 'X9007', + 11 => 'X9015', + 12 => 'X9017', + 13 => 'X9070', + 14 => 'X9076', + 15 => 'X9077', + 16 => 'X90HD (M2PC)', + 17 => 'X98 3G(HKC1)', + 18 => 'X98 3G(HKC2)', + 19 => 'X98 3G(HKC3)', + 20 => 'X98 3G(lite)', + 21 => 'X98 Air(C5KN)', + 22 => 'X98 Air 3G(Smile)', + 23 => 'X98 Air 3G(C5J5)', + 24 => 'X98 Air 3G(C5J6)', + 25 => 'X98 Air 3G(C5J8)', + 26 => 'X98 Air 3G(C6J6)', + 27 => 'X98 Air 3G(C8J6)', + 28 => 'X98 Air 3G(C8J7)', + 29 => 'X98 Air 3G(C9J6)', + 30 => 'X98 Air 3G(C9J7)', + 31 => 'X98 Air 3G(C9J8)', + 32 => 'X98 Air II', + 33 => 'X98 Air II(HG5N)', + 34 => 'X98 Air II(HG6M)', + 35 => 'X98 Air II(HG7N)', + 36 => 'X98 Air II(HG9M)', + 37 => 'X98 Air II(HG9N)', + 38 => 'X98 Air III(M5C5)', + 39 => 'X98 Air III(M5C6)', + 40 => 'X98 Pro (K9C6)', + ), + '@XA' => + array ( + 0 => 'Xamarin Android Player!', + ), + '@XC' => + array ( + 0 => 'XCD 28', + 1 => 'XCD35', + ), + '@XD' => + array ( + 0 => '(NMP|MBR|XDK|XDS|XMP)\\-!!', + ), + '@XE' => + array ( + 0 => 'XELIO', + 1 => 'XELIO7PHONETAB', + 2 => 'Xelio 7 pro', + 3 => 'XELIO7PRO', + 4 => 'XELIO10 QUAD', + 5 => 'XELIO10EXTREME', + 6 => 'Xelio 10 Pro', + 7 => 'Xelio10Pro', + 8 => 'XELIO P900A', + 9 => 'Xenta-TAB07-210', + 10 => 'Xenta-TAB07-211', + 11 => 'Xenta TAB07-200', + 12 => 'Xenta TAB08-200', + 13 => 'Xenta TAB08-201-3G', + 14 => 'Xenta TAB9-200', + 15 => 'Xenta TAB09-211', + 16 => 'Xenta TAB10-211', + 17 => 'Xenta TAB10-201', + 18 => 'Xenta TAB13-201', + ), + '@XI' => + array ( + 0 => 'Xiaomi M1', + 1 => 'Xiaomi MI-2S', + 2 => 'xiaomi M3', + 3 => 'Xiaomi Mi 4', + 4 => 'xiaomi M4', + 5 => 'Xiaomi M5', + 6 => 'Xiaomi Redmi', + 7 => 'Xiaomi Redmi 1s', + 8 => 'Xiaomi Redmi One S', + 9 => 'Xiaomi Note 4G', + 10 => 'Xiaomi Note2', + 11 => '(Xiaomi )?20130(22|23)!', + ), + '@XL' => + array ( + 0 => 'XL39h', + ), + '@XM' => + array ( + 0 => '(NMP|MBR|XDK|XDS|XMP)\\-!!', + 1 => 'XM50h', + 2 => 'XM50t', + ), + '@XO' => + array ( + 0 => '(XOLO )?[ABQX][0-9]{3,4}!!', + 1 => 'XOLO One', + 2 => 'XOLO Play', + 3 => 'XOLO T1000', + 4 => 'Xolo QC800', + 5 => 'XOOM', + 6 => 'XOOM 2!', + 7 => 'XOOM MZ606', + 8 => 'Xoom Wifi', + 9 => 'Xoom LTE', + 10 => 'Xoom 3G', + 11 => 'XO Learning tablet', + ), + '@XP' => + array ( + 0 => 'Xperia Z Ultra', + 1 => 'Xperia!!', + 2 => '(Symphony|Xplorer)!!', + 3 => 'xPAD-70', + ), + '@XT' => + array ( + 0 => 'XT[0-9]{3,3}!!', + 1 => 'xt880b', + 2 => 'Xteam Smartpad 810c', + 3 => 'Xteam 4.8 Smartpad 810c', + 4 => 'XT[0-9]{3,4}!!', + 5 => 'Xtab1081HD', + 6 => 'Xtreme V10', + 7 => 'Xtreme V20', + 8 => 'Xtreme-V30', + 9 => 'xTAB-7X', + 10 => 'xTAB-9', + 11 => 'xTAB-70!', + 12 => 'xTAB-100!', + 13 => 'Xtouch X405', + 14 => 'Xtreamer Mobile AiKi', + 15 => 'Xtreamer Mobile AiKi a7*', + 16 => 'Xtreamer Joyz', + ), + '@XW' => + array ( + 0 => 'XW-I8', + ), + '@Y2' => + array ( + 0 => 'Y2', + ), + '@YD' => + array ( + 0 => 'YD201', + ), + '@YE' => + array ( + 0 => 'yezz Andy A3.5EP', + 1 => 'YEZZ-A4M', + 2 => 'YEZZ-A5QP', + 3 => 'Yezz-AC4EI', + 4 => 'YEZZ-4E', + 5 => 'Yezz-ANDY5EL', + 6 => 'Yezz-T7FD', + ), + '@YO' => + array ( + 0 => 'youwave custom', + 1 => 'YOGA Tablet!!', + ), + '@YP' => + array ( + 0 => 'YPY-72SIM', + 1 => 'YPY-73G', + 2 => 'Ypy 7 - TB07FTA', + 3 => 'YPY 07FTA', + 4 => 'YPY 07FTAB', + 5 => 'YPY 07FTAB PA', + 6 => 'YPY 07FTB', + 7 => 'YPY 07FTBF', + 8 => 'Ypy 7 - TB07STA', + 9 => 'YPY 07STB', + 10 => 'YPY 07STBF', + 11 => 'YPY 10FTA', + 12 => 'YPY10FTA', + 13 => 'YPY 10FTB', + 14 => 'YPY 10FTBF', + 15 => 'YPY 10STB', + 16 => 'YPY 10STBF', + 17 => 'YPY AB7D', + 18 => 'YPY AB7DC', + 19 => 'YPY AB10D', + 20 => 'YPY AB10DC', + 21 => 'YPY ABXD', + 22 => 'YPY J213', + 23 => 'YPY S350', + 24 => 'YPY S350 PLUS', + 25 => 'YPY S400', + 26 => 'YPY S405', + 27 => 'YPY S450', + 28 => 'YPY S460', + 29 => 'YPY S500', + 30 => 'YPY TQ7', + 31 => 'YP-G!!', + 32 => 'YP712', + ), + '@YU' => + array ( + 0 => 'yukkabeach', + 1 => 'YUSUN E98', + 2 => 'YUSUN L71', + 3 => 'YUSUN L88', + 4 => 'YUSUN LA2-T', + 5 => 'YUSUN LA2 T', + 6 => 'YUSUN LA2-T1', + 7 => 'YUSUN LA2 T1', + 8 => 'YUSUN LA2-W', + 9 => 'YUSUN LA2 W1', + 10 => 'YUSUN T22', + 11 => 'YUSUN T30', + 12 => 'YUSUN T31', + 13 => 'YUSUN T50', + 14 => 'YUSUN T85', + 15 => 'YUSUN W90', + 16 => 'YUSUN W306', + 17 => 'yusun W702', + 18 => 'YUSUN W706', + 19 => 'YUSUN W708', + 20 => 'YUSUN - W 800', + 21 => 'YUSUN--W 800', + 22 => 'YUSUN W808', + 23 => 'YUSUN -- W 900', + ), + '@YX' => + array ( + 0 => 'YX-YUSUN E80', + 1 => 'YX-YUSUN E89', + 2 => 'YX-YUSUN E96', + ), + '@Z0' => + array ( + 0 => 'Z002', + 1 => 'Z007', + 2 => 'Z008', + 3 => 'Z008D', + 4 => 'Z00A', + 5 => 'Z00AD', + 6 => 'Z00ADA', + 7 => 'Z00ADB', + 8 => 'Z00D', + 9 => 'Z00ED', + 10 => 'Z00LD', + 11 => 'Z00RD', + 12 => 'Z00TD', + 13 => 'Z011D', + 14 => 'Z00UD', + 15 => 'Z00UDB', + 16 => 'Z00VD', + 17 => 'Z00XS', + 18 => 'Z010D', + 19 => 'Z010DA', + 20 => 'Z010DD', + ), + '@Z1' => + array ( + 0 => '(BB )?Z10$!', + 1 => '(HUAWEI )?(CRR|MATE|MT1|MT2|MT7|M200|NXT|Z100)!!', + 2 => 'Z1i', + ), + '@Z2' => + array ( + 0 => 'Z282 C91', + ), + '@Z3' => + array ( + 0 => '(BB )?Z30$!', + ), + '@Z4' => + array ( + 0 => 'Z4', + 1 => 'Z4 mini', + ), + '@Z5' => + array ( + 0 => 'Z520m', + ), + '@Z6' => + array ( + 0 => 'Z660G', + 1 => 'Z665C', + 2 => 'Z667', + 3 => 'Z667G', + 4 => 'Z667T', + ), + '@Z7' => + array ( + 0 => 'Z71', + 1 => 'Z710', + 2 => 'Z710e', + 3 => 'Z715e', + 4 => 'Z730', + 5 => 'Z740', + 6 => 'Z740G', + 7 => 'Z750C', + 8 => 'Z752C', + 9 => 'Z753G', + 10 => 'Z768G', + 11 => 'Z777', + 12 => 'Z787', + 13 => 'Z788G', + 14 => 'Z791G', + 15 => 'Z792', + 16 => 'Z795G', + 17 => 'Z796C', + 18 => 'Z797C', + ), + '@Z8' => + array ( + 0 => 'Z818L', + 1 => 'Z819L', + ), + '@Z9' => + array ( + 0 => 'Z930L', + 1 => 'Z932L', + 2 => 'Z936L', + 3 => 'Z970', + 4 => 'Z987', + ), + '@ZA' => + array ( + 0 => 'Zaffire 785', + 1 => 'Zaffire 970', + 2 => 'ZA950', + 3 => 'ZA966', + 4 => 'ZA985', + ), + '@ZB' => + array ( + 0 => 'ZBOX-ID18', + 1 => 'ZBOX-ID81', + ), + '@ZE' => + array ( + 0 => 'ZenWatch', + 1 => 'Zenfone 5 LTE', + 2 => '(Highscreen|Alpha|Cosmo|Explosion|Zera)!!', + 3 => 'ZEN 4.5', + 4 => 'ZEN 4.7', + 5 => 'ZENITHINK C94!', + ), + '@ZI' => + array ( + 0 => 'Zii!!', + 1 => 'Zio P2', + 2 => 'Zio', + 3 => 'ZiiLABS ViewBook 730', + 4 => 'Zigo Eon6i', + 5 => 'Zigo Eon7i', + 6 => 'Zigo Nebula Tab 7.1', + 7 => 'Ziss Ranger HD', + 8 => 'Zilo', + ), + '@ZO' => + array ( + 0 => '(Zopo )?ZP100!', + 1 => 'Zopo zp300', + 2 => 'Zopo ZP300+', + 3 => '(Zopo )?ZP900!', + 4 => 'ZOPO 900H', + 5 => 'ZOPO C2', + 6 => 'Zopo 980', + 7 => 'Zopo ZP980', + 8 => 'ZOPO ZP980+', + 9 => 'ZOPO ZP998', + ), + '@ZP' => + array ( + 0 => '(Zopo )?ZP100!', + 1 => 'ZP200', + 2 => 'ZP200+', + 3 => 'ZP300', + 4 => 'ZP300S', + 5 => 'ZP300+', + 6 => 'ZP330', + 7 => 'ZP500', + 8 => 'ZP500S', + 9 => 'ZP500+', + 10 => 'ZP520', + 11 => 'ZP530', + 12 => 'ZP580', + 13 => 'ZP600 EX', + 14 => 'ZP600+', + 15 => 'ZP700', + 16 => 'ZP780', + 17 => 'ZP800', + 18 => 'ZP800H', + 19 => 'ZP810', + 20 => 'ZP810H DUAL SIM', + 21 => 'ZP820', + 22 => '(Zopo )?ZP900!', + 23 => 'ZP 900H', + 24 => 'ZP908', + 25 => 'ZP910', + 26 => 'ZP920', + 27 => 'ZP950', + 28 => 'ZP950H', + 29 => 'ZP950H DUAL SIM', + 30 => 'ZP950+', + 31 => 'ZP958', + 32 => 'ZP980', + 33 => 'ZP980+', + 34 => 'ZP980 PLUS', + 35 => 'ZP990', + 36 => 'ZP990+', + 37 => 'ZP998', + 38 => 'ZP999', + ), + '@ZT' => + array ( + 0 => 'zt180', + 1 => 'ZTE Libra', + 2 => 'ZTE LINK', + 3 => 'ZTE T T9', + 4 => 'ZTE V7073', + 5 => 'ZTE V9', + 6 => 'ZTE V9A', + 7 => 'ZTE C V9E', + 8 => 'ZTE V7273', + 9 => 'ZTE Q2S-C', + 10 => 'ZTE Q2S-T', + 11 => 'ZTE Q5-T', + 12 => 'ZTE Q7', + 13 => 'ZTE Q7-C', + 14 => 'ZTE T12', + 15 => 'ZTE T22', + 16 => 'ZTE R22', + 17 => 'ZTE V70', + 18 => 'ZTE V72', + 19 => 'ZTE V72A', + 20 => 'ZTE T80', + 21 => 'ZTE T81', + 22 => 'ZTE T82', + 23 => 'ZTE T83', + 24 => 'ZTE T86', + 25 => 'ZTE K97', + 26 => 'ZTE T T98', + 27 => 'ZTE Blade', + 28 => 'ZTE Blade 2', + 29 => 'ZTE Blade III Pro', + 30 => 'ZTE Blade Apex', + 31 => 'ZTE Blade Apex2', + 32 => 'ZTE Blade A430', + 33 => 'ZTE Blade A450', + 34 => 'ZTE Blade A570', + 35 => 'ZTE BLADE C', + 36 => 'ZTE Blade C2 Plus', + 37 => 'ZTE Blade C310', + 38 => 'ZTE Blade C341', + 39 => 'ZTE Blade G', + 40 => 'ZTE Blade G Lux', + 41 => 'ZTE Blade G2', + 42 => 'ZTE Blade HN', + 43 => 'ZTE Blade S6', + 44 => 'ZTE Blade S6 Plus', + 45 => 'ZTE Blade L2', + 46 => 'ZTE Blade L3', + 47 => 'ZTE Blade L3 Lite', + 48 => 'ZTE Blade Q', + 49 => 'ZTE Blade Q Lux', + 50 => 'ZTE Blade Q Maxi', + 51 => 'ZTE Blade Q Mini', + 52 => 'ZTE Blade Q1', + 53 => 'ZTE Blade V', + 54 => 'ZTE Blade V2', + 55 => 'ZTE Blade V6', + 56 => 'ZTE Blade V220', + 57 => 'ZTE Blade Vec', + 58 => 'ZTE Blade Vec 4G', + 59 => 'ZTE Blade Vec Pro', + 60 => 'ZTE Geek', + 61 => 'ZTE 975', + 62 => 'ZTE Geek 2', + 63 => 'ZTE Geek 2 LTE', + 64 => 'ZTE GEEK II 4G', + 65 => 'ZTE GEEK II Pro 4G', + 66 => 'ZTE Grand Memo', + 67 => 'ZTE Grand Memo lite', + 68 => 'ZTE Grand S', + 69 => 'ZTE Grand S lite', + 70 => 'ZTE Grand S II', + 71 => 'ZTE Grand S II LTE', + 72 => 'ZTE Grand X Classic', + 73 => 'ZTE Grand X Quad', + 74 => 'ZTE Grand X Quad Lite', + 75 => 'ZTE Grand X2', + 76 => 'ZTE Grand X 2', + 77 => 'ZTE Kis Q', + 78 => 'ZTE Kis Lite', + 79 => 'ZTE KIS II Max', + 80 => 'ZTE Kis II Max plus', + 81 => 'ZTE Kis 3', + 82 => 'ZTE Kis3 max', + 83 => 'ZTE Skate', + 84 => 'ZTE Skate 2', + 85 => 'ZTE STAR', + 86 => 'ZTE Star 1', + 87 => 'ZTE Tureis', + 88 => 'ZTE Q101T', + 89 => 'ZTE S118', + 90 => 'ZTE Q201T', + 91 => 'ZTE S251', + 92 => 'ZTE S291', + 93 => 'ZTE Q301C', + 94 => 'ZTE Q302C', + 95 => 'ZTE X500', + 96 => 'ZTE C X500', + 97 => 'ZTE Q501T', + 98 => 'ZTE Q501U', + 99 => 'ZTE Q503U', + 100 => 'ZTE Q505T', + 101 => 'ZTE Q507T', + 102 => 'ZTE Q508U', + 103 => 'ZTE Q509T', + 104 => 'ZTE Q529C', + 105 => 'ZTE Q529E', + 106 => 'ZTE Q529T', + 107 => 'ZTE C N600!', + 108 => 'ZTE C N606', + 109 => 'ZTE Z667', + 110 => 'ZTE Z667G', + 111 => 'ZTE Z669', + 112 => 'ZTE C N700', + 113 => 'ZTE Q701C', + 114 => 'ZTE Q705U', + 115 => 'ZTE G717C', + 116 => 'ZTE G718C', + 117 => 'ZTE G719C', + 118 => 'ZTE G720C', + 119 => 'ZTE G720T', + 120 => 'ZTE U N720', + 121 => 'ZTE U N721', + 122 => 'ZTE G721C', + 123 => 'ZTE P727A', + 124 => 'ZTE Z740', + 125 => 'ZTE Z740G', + 126 => 'ZTE C R750', + 127 => 'ZTE C R750+', + 128 => 'ZTE Z753G', + 129 => 'ZTE Z755', + 130 => 'ZTE C N760', + 131 => 'ZTE U V760', + 132 => 'ZTE LEO M1', + 133 => 'ZTE LEO S1', + 134 => 'ZTE LEO Q1', + 135 => 'ZTE V765M', + 136 => 'ZTE V768', + 137 => 'ZTE V769M', + 138 => 'ZTE Z777', + 139 => 'ZTE C N780', + 140 => 'ZTE Z787', + 141 => 'ZTE N788', + 142 => 'ZTE Kis Pro', + 143 => 'ZTE V788!', + 144 => 'ZTE U788!', + 145 => 'ZTE N789', + 146 => 'ZTE B790', + 147 => 'ZTE N790!', + 148 => 'ZTE T790', + 149 => 'ZTE U790', + 150 => 'ZTE V790', + 151 => 'ZTE U791!', + 152 => 'ZTE V791', + 153 => 'ZTE Z791G', + 154 => 'ZTE U793', + 155 => 'ZTE V793', + 156 => 'ZTE B795', + 157 => 'ZTE N795', + 158 => 'ZTE U795!', + 159 => 'ZTE V795', + 160 => 'ZTE N798!', + 161 => 'ZTE N799!', + 162 => 'ZTE Q801L', + 163 => 'ZTE Q801U', + 164 => 'ZTE T U802', + 165 => 'ZTE Q802C', + 166 => 'ZTE Q802D', + 167 => 'ZTE Q802T', + 168 => 'ZTE Q805T', + 169 => 'ZTE T U805', + 170 => 'ZTE T U806', + 171 => 'ZTE N807', + 172 => 'ZTE U807', + 173 => 'ZTE U807N', + 174 => 'ZTE V807', + 175 => 'ZTE U808', + 176 => 'ZTE U809', + 177 => 'ZTE V809', + 178 => 'ZTE V811', + 179 => 'ZTE V811W', + 180 => 'ZTE Z812', + 181 => 'ZTE V815W', + 182 => 'ZTE T U812', + 183 => 'ZTE Z813', + 184 => 'ZTE V816W', + 185 => 'ZTE U817', + 186 => 'ZTE V817', + 187 => 'ZTE N818', + 188 => 'ZTE U818', + 189 => 'ZTE V818', + 190 => 'ZTE U819', + 191 => 'ZTE GV821', + 192 => 'ZTE V829', + 193 => 'ZTE T U830', + 194 => 'ZTE V830W', + 195 => 'ZTE Z830', + 196 => 'ZTE Racer', + 197 => 'ZTE U X850', + 198 => 'ZTE X850', + 199 => 'ZTE U V852', + 200 => 'ZTE N855D', + 201 => 'ZTE N855D+', + 202 => 'ZTE U V856', + 203 => 'ZTE V856', + 204 => 'ZTE U V857', + 205 => 'ZTE U V859', + 206 => 'ZTE-U V859', + 207 => 'ZTE U? X876!', + 208 => 'ZTE X876', + 209 => 'ZTE V877!', + 210 => 'ZTE U879', + 211 => 'ZTE A880', + 212 => 'ZTE B880', + 213 => 'ZTE C N880!', + 214 => 'ZTE R880H', + 215 => 'ZTE ?U880!', + 216 => 'ZTE T ?U880!', + 217 => 'ZTE (U )?V880!', + 218 => 'ZTE U(V)880+', + 219 => 'ZTE U-V880', + 220 => 'ZTE U V-880', + 221 => 'ZTE N880E!', + 222 => 'ZTE N880F', + 223 => 'ZTE N880G', + 224 => 'ZTE N881E', + 225 => 'ZTE N881F', + 226 => 'ZTE U V881', + 227 => 'ZTE V881', + 228 => 'ZTE V882', + 229 => 'ZTE N882E', + 230 => 'ZTE ?U885!', + 231 => 'ZTE U887', + 232 => 'ZTE V887', + 233 => 'ZTE U889', + 234 => 'ZTE V889!', + 235 => 'ZTE U V889D', + 236 => 'ZTE Blade III', + 237 => 'ZTE N900', + 238 => 'ZTE N900D', + 239 => 'ZTE T ?U900!', + 240 => 'ZTE M901C', + 241 => 'ZTE N909', + 242 => 'ZTE N909D', + 243 => 'ZTE N910', + 244 => 'ZTE N919', + 245 => 'ZTE N919D', + 246 => 'ZTE C X920', + 247 => 'ZTE U930!', + 248 => 'ZTE Grand X', + 249 => 'ZTE U930 Ultimate', + 250 => 'ZTE U930HD', + 251 => 'ZTE U935', + 252 => 'ZTE U950', + 253 => 'ZTE V955', + 254 => 'ZTE Z955L', + 255 => 'ZTE U956', + 256 => 'ZTE V956', + 257 => 'ZTE Z958', + 258 => 'ZTE N960', + 259 => 'ZTE (U )?V960!', + 260 => 'ZTE T ?U960!', + 261 => 'ZTE U960E', + 262 => 'ZTE U960s2', + 263 => 'ZTE U960s3', + 264 => 'ZTE V965', + 265 => 'ZTE V967S', + 266 => 'ZTEv967s', + 267 => 'ZTE U968', + 268 => 'ZTE U969', + 269 => 'ZTE N970', + 270 => 'ZTE U970!', + 271 => 'ZTE V970!', + 272 => 'ZTE Mimosa X', + 273 => 'ZTE V975', + 274 => 'ZTE N980', + 275 => 'ZTE N983', + 276 => 'ZTE V983', + 277 => 'ZTE Grand Era', + 278 => 'ZTE U985', + 279 => 'ZTE V985', + 280 => 'ZTE N986', + 281 => 'ZTE V ?987!', + 282 => 'ZTE Z987', + 283 => 'ZTE U988S', + 284 => 'ZTE V988', + 285 => 'ZTE Roamer', + 286 => 'ZTE Z990!', + 287 => 'ZTE Z992', + 288 => 'ZTE Z993', + 289 => 'ZTE Z995', + 290 => 'ZTE V998', + 291 => 'ZTE Z998', + 292 => 'ZTE V9800', + 293 => 'ZTE U9810', + 294 => 'ZTE U9815', + 295 => 'ZTE V9815', + 296 => 'ZTE Grand Memo LTE', + 297 => 'ZTE V9820', + 298 => 'ZTE N9120', + 299 => 'ZTE N9511', + 300 => 'ZTE Nubia Z7', + 301 => 'ZTE Nubia X6', + 302 => 'ZTE N5', + 303 => 'ZTE N5L', + 304 => 'ZTE N5S', + 305 => 'ZTE U5', + 306 => 'ZTE U5S', + 307 => 'ZTE V5S', + 308 => 'ZTE A2015', + 309 => 'ZTE A2016', + 310 => 'ZTE B2015', + 311 => 'ZTE C2016', + 312 => 'ZTE S2004', + 313 => 'ZTE S2005', + 314 => 'ZTE S2010', + ), + '@ZU' => + array ( + 0 => 'ZUK Z1', + ), + '@ZX' => + array ( + 0 => 'ZXY-ZTE-C X920', + 1 => 'ZXY-ZTE V6700', + 2 => 'ZXY-ZTE N8010', + 3 => 'ZXY-ZTE N8300', + 4 => 'ZXY-NX512J', + ), +); diff --git a/data/indices/models-asha.php b/data/indices/models-asha.php new file mode 100644 index 0000000..47fdbdc --- /dev/null +++ b/data/indices/models-asha.php @@ -0,0 +1,24 @@ + + array ( + 0 => 500, + 1 => 501, + 2 => '501s', + 3 => '501.1', + 4 => '501.2', + 5 => 502, + 6 => 503, + 7 => '503s', + ), + '@AS' => + array ( + 0 => 'Asha230SingleSIM', + 1 => 'Asha230DualSIM', + 2 => 'Asha500SingleSIM', + 3 => 'Asha500DualSIM', + ), +); diff --git a/data/indices/models-bada.php b/data/indices/models-bada.php new file mode 100644 index 0000000..21d5d92 --- /dev/null +++ b/data/indices/models-bada.php @@ -0,0 +1,23 @@ + + array ( + 0 => 'GT- ?S52(50|53)!', + 1 => 'GT-S53(30|33)!', + 2 => 'GT-S5380!', + 3 => 'GT-S57(50|53)!', + 4 => 'GT-S57(80)!', + 5 => 'GT-S72(30|33)!', + 6 => 'GT-S7250!', + 7 => 'GT-S8500!', + 8 => 'GT- ?S8530!', + 9 => 'GT- ?S8600!', + ), + '@SH' => + array ( + 0 => 'SHW-M410', + ), +); diff --git a/data/indices/models-brew.php b/data/indices/models-brew.php new file mode 100644 index 0000000..46f32fa --- /dev/null +++ b/data/indices/models-brew.php @@ -0,0 +1,113 @@ + + array ( + 0 => 'CDM8999', + 1 => 'CDM8992', + ), + '@CO' => + array ( + 0 => 'Coolpad D508', + 1 => 'Coolpad E600', + ), + '@E4' => + array ( + 0 => 'E4255', + ), + '@HS' => + array ( + 0 => 'HS-E316!', + ), + '@HU' => + array ( + 0 => 'HUAWEI U2801!', + 1 => 'HUAWEI U5200!', + ), + '@LG' => + array ( + 0 => 'LG272', + 1 => 'LG510', + ), + '@LN' => + array ( + 0 => 'LN510', + ), + '@LX' => + array ( + 0 => 'LX610', + ), + '@M2' => + array ( + 0 => 'M260!', + ), + '@M3' => + array ( + 0 => 'M390!', + ), + '@M5' => + array ( + 0 => 'M550!', + ), + '@P5' => + array ( + 0 => 'P5000', + ), + '@P6' => + array ( + 0 => 'P6020', + 1 => 'P6030', + ), + '@PL' => + array ( + 0 => 'PLS M330', + ), + '@S2' => + array ( + 0 => 'S2151!', + ), + '@SA' => + array ( + 0 => 'sam-r631', + ), + '@SC' => + array ( + 0 => 'SCH-B309!', + 1 => 'SCH-F839', + 2 => 'SCH-M519!', + 3 => 'SCH-S559!', + 4 => 'SCH-S579!', + 5 => 'SCH-U380', + 6 => 'SCH-U485', + 7 => 'SCH-U820', + 8 => 'SCH-W709!', + 9 => 'SCP-6750', + 10 => 'SCP6760', + 11 => 'SCP-6760', + 12 => 'SCP6780', + ), + '@SP' => + array ( + 0 => 'SPH M330', + ), + '@TX' => + array ( + 0 => 'TXT8045', + ), + '@VN' => + array ( + 0 => 'VN170', + 1 => 'VN271', + 2 => 'VN280', + 3 => 'VN360', + 4 => 'VN530', + ), + '@VX' => + array ( + 0 => 'VX9200!', + 1 => 'VX9600!', + 2 => 'VX11000', + ), +); diff --git a/data/indices/models-feature.php b/data/indices/models-feature.php new file mode 100644 index 0000000..6ef1a14 --- /dev/null +++ b/data/indices/models-feature.php @@ -0,0 +1,201 @@ + + array ( + 0 => 'CK13[ai]?$!', + 1 => 'CK15[ai]?$!', + ), + '@CO' => + array ( + 0 => 'COCOON', + ), + '@EF' => + array ( + 0 => 'EF71', + ), + '@EX' => + array ( + 0 => 'EX115', + 1 => 'EX118', + 2 => 'EX119', + 3 => 'EX128', + 4 => 'EX225', + 5 => 'EX226', + 6 => 'EX430', + ), + '@F1' => + array ( + 0 => 'F100[ai]?$!', + ), + '@GM' => + array ( + 0 => 'GM360', + ), + '@GR' => + array ( + 0 => 'GR700', + ), + '@GS' => + array ( + 0 => 'GS290', + 1 => 'GS500', + ), + '@GT' => + array ( + 0 => 'GT500!', + 1 => 'GT550', + 2 => 'GT-B2710', + 3 => 'GT-B3210', + 4 => 'GT-B3313', + 5 => 'GT-C3200', + 6 => 'GT-C3222', + 7 => 'GT-C3322', + 8 => 'GT-C3500', + 9 => 'GT-E1282!', + 10 => 'GT-E2152', + 11 => 'GT-E2220', + 12 => 'GT-E2222', + 13 => 'GT-E2202', + 14 => 'GT-E2250', + 15 => 'GT-E2252', + 16 => 'GT-E3213', + 17 => 'GT-E3309I', + 18 => 'GT-M8910', + 19 => 'GT-S3332', + 20 => 'GT-S33(50|53)!', + 21 => 'GT-S35(70|72)!', + 22 => 'GT-S5229', + 23 => 'GT-S5270!', + 24 => 'GT-S5610!', + 25 => 'GT-I6410!', + 26 => 'GT-I8320!', + 27 => 'GT-I8330!', + ), + '@J1' => + array ( + 0 => 'J105[ai]?$!', + 1 => 'J108[ai]?$!', + 2 => 'J10(i2?)?$!', + ), + '@J2' => + array ( + 0 => 'J20[ai]?$!', + ), + '@K6' => + array ( + 0 => 'K612', + ), + '@KC' => + array ( + 0 => 'KC910i', + ), + '@KP' => + array ( + 0 => 'KP500!', + 1 => 'KP570!', + ), + '@KU' => + array ( + 0 => 'KU990i', + ), + '@LI' => + array ( + 0 => 'Lightpipe', + ), + '@M3' => + array ( + 0 => 'm3510c', + ), + '@MO' => + array ( + 0 => 'MOTOQA1', + ), + '@P7' => + array ( + 0 => 'P7000', + ), + '@P9' => + array ( + 0 => 'P9020', + 1 => 'P9050', + ), + '@PL' => + array ( + 0 => 'PLS6600KJ', + ), + '@PM' => + array ( + 0 => 'PM-8200', + ), + '@S7' => + array ( + 0 => 'S7350', + ), + '@SA' => + array ( + 0 => 'sam-r560', + ), + '@SC' => + array ( + 0 => 'SCP-5500', + 1 => 'SCP-6600', + 2 => 'SCH-W169', + 3 => 'SCH-W279', + ), + '@SG' => + array ( + 0 => 'SGH-A667', + 1 => 'SGH-A697', + 2 => 'SGH-A877', + 3 => 'SGH-A927', + 4 => 'SGH-A997', + 5 => 'SGH-D880', + 6 => 'SGH-G600', + 7 => 'SGH-J700V', + 8 => 'SGH-S390G', + 9 => 'SGH-T189N', + 10 => 'SGHX660V', + 11 => 'SGH-Z107!', + 12 => 'SGH-Z130!', + 13 => 'SGH-Z500!', + ), + '@SM' => + array ( + 0 => 'SM-B313E', + 1 => 'SM-B350E', + 2 => 'SM-B780(A|W)!', + ), + '@TE' => + array ( + 0 => 'tecnot36', + ), + '@U1' => + array ( + 0 => 'U100[ai]?$!', + 1 => 'U10[ai]?$!', + ), + '@VO' => + array ( + 0 => 'Vodafone 575', + ), + '@W1' => + array ( + 0 => 'W100i?$!', + 1 => 'W150i?$!', + ), + '@W2' => + array ( + 0 => 'W20i?$!', + ), + '@WT' => + array ( + 0 => 'WT13i$!', + ), + '@X5' => + array ( + 0 => 'X5i$!', + ), +); diff --git a/data/indices/models-firefoxos.php b/data/indices/models-firefoxos.php new file mode 100644 index 0000000..d988e23 --- /dev/null +++ b/data/indices/models-firefoxos.php @@ -0,0 +1,55 @@ + + array ( + 0 => 'ALCATEL ONE TOUCH FIRE', + 1 => 'ALCATEL ONE TOUCH 4012A', + 2 => 'ALCATEL ONE TOUCH 4012X', + 3 => 'ALCATELOneTouch4012A!', + 4 => 'ALCATELOneTouch4012X!', + 5 => 'ALCATELOneTouch4019A!', + 6 => 'ALCATELOneTouch4019X!', + 7 => 'ALCATELOneTouch4020D!', + 8 => 'ALCATELOneTouch4022!', + 9 => 'ALCATELOneTouch4023!', + 10 => 'ALCATELOneTouch6015X!', + ), + '@HU' => + array ( + 0 => 'HUAWEI Ascend Y300-F1', + 1 => 'HUAWEIY300-F1', + ), + '@LG' => + array ( + 0 => 'LG-D3(00|01)!', + 1 => 'LGL25', + ), + '@MA' => + array ( + 0 => 'madai', + ), + '@ON' => + array ( + 0 => 'OneTouch4019A', + ), + '@OP' => + array ( + 0 => 'OPEN', + 1 => 'OpenC', + 2 => 'Open C', + 3 => 'OPENC2', + 4 => 'OPEN2', + ), + '@OR' => + array ( + 0 => 'Orange KLIF', + 1 => 'Orange KLIFD', + ), + '@ZT' => + array ( + 0 => 'ZTEOPEN', + ), +); diff --git a/data/indices/models-kddi.php b/data/indices/models-kddi.php new file mode 100644 index 0000000..044fc9b --- /dev/null +++ b/data/indices/models-kddi.php @@ -0,0 +1,393 @@ + + array ( + 0 => 'CA11', + 1 => 'CA12', + 2 => 'CA13', + 3 => 'CA14', + 4 => 'CA21', + 5 => 'CA22', + 6 => 'CA23', + 7 => 'CA24', + 8 => 'CA25', + 9 => 'CA26', + 10 => 'CA27', + 11 => 'CA28', + 12 => 'CA31', + 13 => 'CA32', + 14 => 'CA33', + 15 => 'CA34', + 16 => 'CA35', + 17 => 'CA36', + 18 => 'CA37', + 19 => 'CA38', + 20 => 'CA39', + 21 => 'CA3A', + 22 => 'CA3B', + 23 => 'CA3C', + 24 => 'CA3D', + 25 => 'CA3E', + 26 => 'CA3F', + 27 => 'CA3G', + 28 => 'CA3H', + 29 => 'CA3I', + 30 => 'CA3J', + 31 => 'CA3K', + ), + '@DN' => + array ( + 0 => 'DN01', + 1 => 'DN11', + ), + '@ER' => + array ( + 0 => 'ERK0', + ), + '@FJ' => + array ( + 0 => 'FJ31', + ), + '@HI' => + array ( + 0 => 'HI01', + 1 => 'HI02', + 2 => 'HI11', + 3 => 'HI12', + 4 => 'HI13', + 5 => 'HI14', + 6 => 'HI21', + 7 => 'HI23', + 8 => 'HI24', + 9 => 'HI31', + 10 => 'HI32', + 11 => 'HI33', + 12 => 'HI34', + 13 => 'HI35', + 14 => 'HI36', + 15 => 'HI37', + 16 => 'HI38', + 17 => 'HI39', + 18 => 'HI3A', + 19 => 'HI3B', + 20 => 'HI3C', + 21 => 'HI3D', + 22 => 'HI3E', + 23 => 'HI3F', + 24 => 'HI3G', + 25 => 'HI3H', + ), + '@KC' => + array ( + 0 => 'KC3Q', + 1 => 'KC3S', + 2 => 'KC3V', + 3 => 'KC11', + 4 => 'KC12', + 5 => 'KC13', + 6 => 'KC14', + 7 => 'KC15', + 8 => 'KC21', + 9 => 'KC22', + 10 => 'KC23', + 11 => 'KC24', + 12 => 'KC25', + 13 => 'KC26', + 14 => 'KC27', + 15 => 'KC28', + 16 => 'KC29', + 17 => 'KC2A', + 18 => 'KC31', + 19 => 'KC32', + 20 => 'KC33', + 21 => 'KC34', + 22 => 'KC35', + 23 => 'KC36', + 24 => 'KC37', + 25 => 'KC38', + 26 => 'KC39', + 27 => 'KC3A', + 28 => 'KC3B', + 29 => 'KC3D', + 30 => 'KC3E', + 31 => 'KC3G', + 32 => 'KC3H', + 33 => 'KC3I', + 34 => 'KC3K', + 35 => 'KC3M', + 36 => 'KC3N', + 37 => 'KC3O', + 38 => 'KC3P', + 39 => 'KC3R', + 40 => 'KC3T', + 41 => 'KC3U', + 42 => 'KC3W', + 43 => 'KC3X', + 44 => 'KC3Y', + 45 => 'KC3Z', + 46 => 'KC41', + 47 => 'KC42', + 48 => 'KC43', + 49 => 'KC44', + 50 => 'KC45', + 51 => 'KC46', + 52 => 'KC47', + 53 => 'KC48', + 54 => 'KC4A', + 55 => 'KCC1', + 56 => 'KCC2', + 57 => 'KCI1', + 58 => 'KCI2', + 59 => 'KCT1', + 60 => 'KCT2', + 61 => 'KCT3', + 62 => 'KCT4', + 63 => 'KCT5', + 64 => 'KCT6', + 65 => 'KCT7', + 66 => 'KCT8', + 67 => 'KCT9', + 68 => 'KCTA', + 69 => 'KCTB', + 70 => 'KCTC', + ), + '@MA' => + array ( + 0 => 'MA11', + 1 => 'MA12', + 2 => 'MA13', + 3 => 'MA21', + 4 => 'MA31', + 5 => 'MA32', + 6 => 'MA33', + 7 => 'MA34', + 8 => 'MA35', + 9 => 'MAC1', + 10 => 'MAC2', + 11 => 'MAI1', + 12 => 'MAI2', + 13 => 'MAT1', + 14 => 'MAT2', + 15 => 'MAT3', + ), + '@MI' => + array ( + 0 => 'MIT1', + ), + '@PT' => + array ( + 0 => 'PT21', + 1 => 'PT23', + 2 => 'PT33', + 3 => 'PT34', + 4 => 'PT35', + 5 => 'PT36', + ), + '@SA' => + array ( + 0 => 'SA21', + 1 => 'SA22', + 2 => 'SA24', + 3 => 'SA25', + 4 => 'SA26', + 5 => 'SA27', + 6 => 'SA28', + 7 => 'SA29', + 8 => 'SA2A', + 9 => 'SA31', + 10 => 'SA32', + 11 => 'SA33', + 12 => 'SA34', + 13 => 'SA35', + 14 => 'SA36', + 15 => 'SA37', + 16 => 'SA38', + 17 => 'SA39', + 18 => 'SA3A', + 19 => 'SA3B', + 20 => 'SA3C', + 21 => 'SA3D', + 22 => 'SA3E', + ), + '@SH' => + array ( + 0 => 'SH31', + 1 => 'SH32', + 2 => 'SH33', + 3 => 'SH34', + 4 => 'SH35', + 5 => 'SH36', + 6 => 'SH37', + 7 => 'SH38', + 8 => 'SH39', + 9 => 'SH3A', + 10 => 'SH3B', + 11 => 'SH3C', + 12 => 'SH3D', + 13 => 'SH3E', + 14 => 'SH3F', + 15 => 'SH3G', + 16 => 'SH3H', + 17 => 'SH3I', + 18 => 'SH3J', + 19 => 'SH3K', + 20 => 'SH3L', + ), + '@SN' => + array ( + 0 => 'SN3K', + 1 => 'SN3T', + 2 => 'SN11', + 3 => 'SN13', + 4 => 'SN14', + 5 => 'SN15', + 6 => 'SN16', + 7 => 'SN17', + 8 => 'SN21', + 9 => 'SN22', + 10 => 'SN23', + 11 => 'SN24', + 12 => 'SN25', + 13 => 'SN26', + 14 => 'SN27', + 15 => 'SN28', + 16 => 'SN29', + 17 => 'SN31', + 18 => 'SN32', + 19 => 'SN33', + 20 => 'SN34', + 21 => 'SN35', + 22 => 'SN36', + 23 => 'SN37', + 24 => 'SN38', + 25 => 'SN39', + 26 => 'SN3A', + 27 => 'SN3B', + 28 => 'SN3C', + 29 => 'SN3D', + 30 => 'SN3E', + 31 => 'SN3F', + 32 => 'SN3G', + 33 => 'SN3H', + 34 => 'SN3I', + 35 => 'SN3J', + 36 => 'SN3L', + 37 => 'SN3M', + 38 => 'SN3N', + 39 => 'SN3O', + 40 => 'SN3P', + 41 => 'SN3Q', + 42 => 'SN3R', + 43 => 'SN3S', + 44 => 'SN3U', + 45 => 'SN3V', + ), + '@ST' => + array ( + 0 => 'ST22', + 1 => 'ST33', + 2 => 'ST11', + 3 => 'ST12', + 4 => 'ST13', + 5 => 'ST14', + 6 => 'ST21', + 7 => 'ST23', + 8 => 'ST24', + 9 => 'ST25', + 10 => 'ST26', + 11 => 'ST27', + 12 => 'ST28', + 13 => 'ST29', + 14 => 'ST2A', + 15 => 'ST2C', + 16 => 'ST2D', + 17 => 'ST31', + 18 => 'ST32', + 19 => 'ST34', + ), + '@SY' => + array ( + 0 => 'SY12', + 1 => 'SY13', + 2 => 'SY14', + 3 => 'SY15', + 4 => 'SYC1', + 5 => 'SYT1', + 6 => 'SYT2', + 7 => 'SYT3', + 8 => 'SYT4', + 9 => 'SY01', + 10 => 'SY02', + 11 => 'SY03', + 12 => 'SY11', + ), + '@TS' => + array ( + 0 => 'TS3Q', + 1 => 'TS3U', + 2 => 'TS3W', + 3 => 'TS01', + 4 => 'TS11', + 5 => 'TS12', + 6 => 'TS13', + 7 => 'TS14', + 8 => 'TS21', + 9 => 'TS22', + 10 => 'TS23', + 11 => 'TS24', + 12 => 'TS25', + 13 => 'TS26', + 14 => 'TS27', + 15 => 'TS28', + 16 => 'TS29', + 17 => 'TS2A', + 18 => 'TS2B', + 19 => 'TS2C', + 20 => 'TS2D', + 21 => 'TS2E', + 22 => 'TS31', + 23 => 'TS32', + 24 => 'TS33', + 25 => 'TS34', + 26 => 'TS35', + 27 => 'TS36', + 28 => 'TS37', + 29 => 'TS38', + 30 => 'TS39', + 31 => 'TS3A', + 32 => 'TS3B', + 33 => 'TS3C', + 34 => 'TS3D', + 35 => 'TS3E', + 36 => 'TS3G', + 37 => 'TS3H', + 38 => 'TS3I', + 39 => 'TS3J', + 40 => 'TS3K', + 41 => 'TS3L', + 42 => 'TS3M', + 43 => 'TS3N', + 44 => 'TS3O', + 45 => 'TS3P', + 46 => 'TS3R', + 47 => 'TS3S', + 48 => 'TS3T', + 49 => 'TS3V', + 50 => 'TS3X', + 51 => 'TS3Y', + 52 => 'TS3Z', + 53 => 'TS41', + 54 => 'TSC1', + 55 => 'TSI1', + 56 => 'TST1', + 57 => 'TST2', + 58 => 'TST3', + 59 => 'TST4', + 60 => 'TST5', + 61 => 'TST6', + 62 => 'TST7', + ), +); diff --git a/data/indices/models-palmos.php b/data/indices/models-palmos.php new file mode 100644 index 0000000..3fed398 --- /dev/null +++ b/data/indices/models-palmos.php @@ -0,0 +1,115 @@ + + array ( + 0 => 'acer-momo', + 1 => 'acer-coco', + 2 => 'Acea-MZ01', + 3 => 'Acea-PD01', + ), + '@GR' => + array ( + 0 => 'grmn-3200', + 1 => 'grmn-3600', + 2 => 'grmn-3700', + ), + '@GS' => + array ( + 0 => 'gsRl-zicn', + 1 => 'gsRl-zcn2', + 2 => 'gsRl-zcn5', + ), + '@HS' => + array ( + 0 => 'hspr-H101', + 1 => 'hspr-H102', + ), + '@KW' => + array ( + 0 => 'kwc.-7135', + ), + '@PA' => + array ( + 0 => 'Palm-D061', + 1 => 'Palm-D062', + 2 => 'Palm-TunX', + 3 => 'Palm-stuj', + 4 => 'Palm-hbbs', + 5 => 'Palm-trnd', + 6 => 'Palm-ecty', + 7 => 'Palm-lith', + 8 => 'Palm-sky1', + 9 => 'Palm-D053', + 10 => 'Palm-D052', + 11 => 'Palm-D060', + 12 => 'Palm-MT64', + 13 => 'Palm-Cct1', + 14 => 'Palm-Zir4', + 15 => 'Palm-Frg1', + 16 => 'Palm-Frg2', + 17 => 'Palm-Arz1', + 18 => 'Palm-TnT5', + 19 => 'Palm-atc1', + 20 => 'Palm-D050', + 21 => 'Palm-Cubs', + 22 => 'Palm-Zi21', + 23 => 'Palm-D051', + 24 => 'Palm-Zi22', + 25 => 'Palm-Zpth', + 26 => 'Palm-Zi72', + ), + '@QC' => + array ( + 0 => 'qcom-qc20', + ), + '@SM' => + array ( + 0 => 'smsn-phix', + 1 => 'smsn-Phx2', + 2 => 'smsn-blch', + 3 => 'smsn-BLFM', + 4 => 'smsn-glxy', + ), + '@SO' => + array ( + 0 => 'sony-ystn', + 1 => 'sony-ysmt', + 2 => 'sony-ysm2', + 3 => 'sony-nsca', + 4 => 'sony-nsc2', + 5 => 'sony-vnce', + 6 => 'sony-mdna', + 7 => 'sony-npls', + 8 => 'sony-rdwd', + 9 => 'sony-crdb', + 10 => 'sony-tldo', + 11 => 'sony-mdrd', + 12 => 'sony-grnd', + 13 => 'sony-frta', + 14 => 'sony-cocs', + 15 => 'sony-glps', + 16 => 'sony-mcnd', + 17 => 'sony-vrna', + 18 => 'sony-atom', + 19 => 'sony-goha', + 20 => 'sony-leia', + 21 => 'sony-hwai', + 22 => 'sony-goku', + 23 => 'sony-luke', + 24 => 'sony-amno', + 25 => 'sony-prmr', + 26 => 'sony-ancy', + ), + '@TP' => + array ( + 0 => 'Tpwv-Rdog', + ), + '@TR' => + array ( + 0 => 'trgp-trg1', + 1 => 'trgp-trg2', + ), +); diff --git a/data/indices/models-s30plus.php b/data/indices/models-s30plus.php new file mode 100644 index 0000000..75b0dfd --- /dev/null +++ b/data/indices/models-s30plus.php @@ -0,0 +1,20 @@ + + array ( + 0 => 215, + ), + '@22' => + array ( + 0 => 220, + 1 => 222, + 2 => 225, + ), + '@23' => + array ( + 0 => 230, + ), +); diff --git a/data/indices/models-s40.php b/data/indices/models-s40.php new file mode 100644 index 0000000..8ec1e7a --- /dev/null +++ b/data/indices/models-s40.php @@ -0,0 +1,249 @@ + + array ( + 0 => 109, + ), + '@11' => + array ( + 0 => 110, + 1 => 111, + 2 => '111.1', + 3 => 112, + 4 => 114, + ), + '@16' => + array ( + 0 => '1682c', + ), + '@20' => + array ( + 0 => 200, + 1 => 201, + 2 => 202, + 3 => 203, + 4 => 205, + 5 => '205.1', + 6 => '205.3', + 7 => 206, + 8 => '206.1', + 9 => 208, + 10 => '208.1', + 11 => '208.2', + 12 => '208.3', + 13 => '208.4', + 14 => 2055, + 15 => 2060, + ), + '@21' => + array ( + 0 => 210, + 1 => '210.2', + 2 => '210.3', + 3 => '210.4', + 4 => '210.5', + ), + '@22' => + array ( + 0 => '2220s!', + ), + '@23' => + array ( + 0 => '2320c!', + 1 => '2322c!', + 2 => '2323c!', + 3 => '2330c!', + ), + '@26' => + array ( + 0 => '2600c!', + 1 => '2680s!', + 2 => 2690, + 3 => 2692, + ), + '@27' => + array ( + 0 => '2700c!', + 1 => '2710c', + 2 => '2710c-2', + 3 => '2720a!', + 4 => '2730c!', + ), + '@30' => + array ( + 0 => 300, + 1 => 301, + 2 => '301.1', + 3 => 302, + 4 => 303, + 5 => 305, + 6 => 306, + 7 => 308, + 8 => 309, + 9 => 3020, + ), + '@31' => + array ( + 0 => 310, + 1 => 311, + 2 => '3109c', + 3 => '3110c', + 4 => '3120c', + 5 => '3120classic', + ), + '@32' => + array ( + 0 => '3208c', + ), + '@35' => + array ( + 0 => '3500c', + 1 => '3555b', + ), + '@36' => + array ( + 0 => '3600s', + 1 => '3610a', + ), + '@37' => + array ( + 0 => '3710fold', + 1 => '3720c', + ), + '@50' => + array ( + 0 => '5000!', + ), + '@51' => + array ( + 0 => 515, + 1 => '515.2', + 2 => '5130!', + 3 => '5130c!', + 4 => 5132, + ), + '@52' => + array ( + 0 => '5200!', + 1 => '5220!', + ), + '@53' => + array ( + 0 => '5300!', + 1 => '5310!', + 2 => 5330, + 3 => '5330-1d', + ), + '@56' => + array ( + 0 => '5610d!', + ), + '@60' => + array ( + 0 => '6070!', + ), + '@62' => + array ( + 0 => '6208c', + 1 => '6212c', + 2 => '6260s!', + 3 => '6230i!', + 4 => 6233, + 5 => 6234, + 6 => '6263!', + 7 => 6280, + ), + '@63' => + array ( + 0 => 6300, + 1 => '6300i', + 2 => 6301, + 3 => '6303c', + 4 => '6303classic', + 5 => '6303iclassic', + 6 => '6303ci', + 7 => 6350, + ), + '@65' => + array ( + 0 => '6500s!', + ), + '@66' => + array ( + 0 => '6600f!', + 1 => '6600s!', + 2 => '6600i!', + ), + '@67' => + array ( + 0 => '6700c!', + 1 => '6750c', + ), + '@70' => + array ( + 0 => '7070!', + ), + '@71' => + array ( + 0 => '7100s!', + ), + '@72' => + array ( + 0 => '7210s!', + 1 => '7210Supernova!', + 2 => '7230!', + ), + '@73' => + array ( + 0 => '7310c!', + ), + '@75' => + array ( + 0 => 7500, + 1 => '7510Supernova!', + ), + '@76' => + array ( + 0 => '7610Supernova!', + ), + '@88' => + array ( + 0 => '8800!', + ), + '@C1' => + array ( + 0 => 'C1-01!', + 1 => 'C1-02!', + 2 => 'C1-03!', + ), + '@C2' => + array ( + 0 => 'C2-00!', + 1 => 'C2-01!', + 2 => 'C2-02!', + 3 => 'C2-03!', + 4 => 'C2-05!', + 5 => 'C2-06!', + ), + '@C3' => + array ( + 0 => 'C3-00!', + 1 => 'C3-01!', + ), + '@X2' => + array ( + 0 => 'X2-00!', + 1 => 'X2-01!', + 2 => 'X2-02!', + 3 => 'X2-03!', + 4 => 'X2-05!', + ), + '@X3' => + array ( + 0 => 'X3-00!', + 1 => 'X3-02!', + ), +); diff --git a/data/indices/models-symbian.php b/data/indices/models-symbian.php new file mode 100644 index 0000000..44e63a4 --- /dev/null +++ b/data/indices/models-symbian.php @@ -0,0 +1,343 @@ + + array ( + 0 => '(?i)U1(a|i|iv)?$!', + 1 => '(?i)U5(a|i|iv)?$!', + 2 => '(?i)U8(a|i)?$!', + ), + '@32' => + array ( + 0 => 3230, + 1 => 3250, + ), + '@36' => + array ( + 0 => 3650, + 1 => 3660, + ), + '@50' => + array ( + 0 => 500, + ), + '@52' => + array ( + 0 => 5228, + 1 => '5233!', + 2 => '5230!', + 3 => 5232, + 4 => '5235!', + 5 => 5236, + 6 => 5238, + 7 => 5250, + ), + '@53' => + array ( + 0 => '5320!', + ), + '@55' => + array ( + 0 => '5500d!', + 1 => '5530!', + ), + '@56' => + array ( + 0 => '5630!', + ), + '@57' => + array ( + 0 => '5700!', + 1 => '5730!', + ), + '@58' => + array ( + 0 => '5800!', + ), + '@60' => + array ( + 0 => 600, + 1 => 603, + ), + '@61' => + array ( + 0 => '6110Navigator', + 1 => '6120c!', + 2 => '6121c!', + 3 => '6122c!', + 4 => '6124c', + ), + '@62' => + array ( + 0 => '6210 ?Navigator!', + 1 => '6220c!', + 2 => 6260, + 3 => '6290!', + ), + '@66' => + array ( + 0 => 6600, + 1 => 6630, + 2 => '6650d!', + 3 => 6670, + 4 => 6680, + 5 => 6681, + ), + '@67' => + array ( + 0 => '6700s', + 1 => 6708, + 2 => '6710s', + 3 => '6720c!', + 4 => '6730c!', + 5 => '6760s!', + 6 => 6788, + 7 => '6788i', + 8 => '6790s-1b!', + 9 => '6790s-1c!', + ), + '@70' => + array ( + 0 => 700, + 1 => 701, + 2 => '702T', + ), + '@76' => + array ( + 0 => 7610, + 1 => 7650, + 2 => 7660, + ), + '@80' => + array ( + 0 => '801T', + 1 => 808, + 2 => '808PureView', + 3 => '808 PureView', + ), + '@A1' => + array ( + 0 => 'A1000', + ), + '@A9' => + array ( + 0 => 'A920', + 1 => 'A925', + ), + '@BE' => + array ( + 0 => 'BenQ P30', + 1 => 'BenQ P31', + ), + '@C5' => + array ( + 0 => 'C5-00!', + 1 => 'C5-01', + 2 => 'C5-03!', + 3 => 'C5-04', + 4 => 'C5-05', + 5 => 'C5-06', + ), + '@C6' => + array ( + 0 => 'C6-00!', + 1 => 'C6-01!', + ), + '@C7' => + array ( + 0 => 'C7-00!', + ), + '@CO' => + array ( + 0 => 'ConstellationT', + 1 => 'ConstellationQuest', + ), + '@E-' => + array ( + 0 => 'E-90-1', + ), + '@E5' => + array ( + 0 => 'E5-00!', + 1 => 'E50(-[1-9])?$!', + 2 => 'E51(-[1-9])?$!', + 3 => 'E52(-[1-9])?$!', + 4 => 'E55(-[1-9])?$!', + ), + '@E6' => + array ( + 0 => 'E6', + 1 => 'E6-00', + 2 => 'E60(-[1-9])?$!', + 3 => 'E61i!', + 4 => 'E61(-[1-9])?$!', + 5 => 'E62(-[1-9])?$!', + 6 => 'E63(-[1-9])?$!', + 7 => 'E65(-[1-9])?$!', + 8 => 'E66(-[1-9])?$!', + ), + '@E7' => + array ( + 0 => 'E7-00', + 1 => 'E70(-[1-9])?$!', + 2 => 'E71x', + 3 => 'E71(-[1-9])?$!', + 4 => 'E72(-[1-9])?$!', + 5 => 'E73(-[1-9])?$!', + 6 => 'E75(-[1-9])?$!', + ), + '@E9' => + array ( + 0 => 'E90(-[1-9])?$!', + ), + '@G7' => + array ( + 0 => 'G700', + ), + '@G9' => + array ( + 0 => 'G900', + ), + '@I7' => + array ( + 0 => 'I7710', + ), + '@I8' => + array ( + 0 => 'I8510', + 1 => 'I8910', + ), + '@LG' => + array ( + 0 => 'LG KS10', + 1 => 'LGKT610', + 2 => 'LGKT615', + ), + '@M1' => + array ( + 0 => 'M1000', + ), + '@M6' => + array ( + 0 => 'M600i', + ), + '@N-' => + array ( + 0 => 'N-Gage', + 1 => 'N-GageQD', + ), + '@N5' => + array ( + 0 => 'N5233!', + ), + '@N7' => + array ( + 0 => 'N70(-[1-9])?$!', + 1 => 'N71(-[1-9])?$!', + 2 => 'N72(-[1-9])?$!', + 3 => 'N73(-[1-9])?$!', + 4 => 'N75(-[1-9])?$!', + 5 => 'N76(-[1-9])?$!', + 6 => 'N77(-[1-9])?$!', + 7 => 'N78(-[1-9])?$!', + 8 => 'N79(-[1-9])?$!', + ), + '@N8' => + array ( + 0 => 'N8-00', + 1 => 'N80(-[1-9])?$!', + 2 => 'N81(-[1-9])?$!', + 3 => 'N82(-[1-9])?$!', + 4 => 'N85(-[1-9])?$!', + 5 => 'N86(-[1-9])?$!', + 6 => 'N86 ?8MP$!', + ), + '@N9' => + array ( + 0 => 'N90(-[1-9])?$!', + 1 => 'N91(-[1-9])?$!', + 2 => 'N92(-[1-9])?$!', + 3 => 'N93(-[1-9])?$!', + 4 => 'N93i', + 5 => 'N95(-[1-9])?$!', + 6 => 'N95[ -]8GB(-[1-9])?!', + 7 => 'N96(-[1-9])?$!', + 8 => 'N97(-[1-3])?$!', + 9 => 'N97i', + 10 => 'N97(-[4-5])?$!', + 11 => 'N97 ?mini!', + ), + '@NO' => + array ( + 0 => 'Nokia N81', + 1 => 'Nokia N81 8GB', + ), + '@OR' => + array ( + 0 => 'Oro', + ), + '@P1' => + array ( + 0 => 'P1i', + ), + '@P9' => + array ( + 0 => 'P910i', + 1 => 'P990i', + ), + '@PA' => + array ( + 0 => 'Panasonic-X700', + 1 => 'Panasonic-X800', + ), + '@RI' => + array ( + 0 => 'RIZR-Z8', + 1 => 'RIZR-Z10', + ), + '@SG' => + array ( + 0 => 'SGH-D720', + 1 => 'SGH-D728', + 2 => 'SGH-D730', + 3 => 'SGH-i400!', + 4 => 'SGH-i408!', + 5 => 'SGH-i450!', + 6 => 'SGH-i455!', + 7 => 'SGH-i458!', + 8 => 'SGH-i520!', + 9 => 'SGH-i550!', + 10 => 'SGH-i560!', + 11 => 'SGH-i568!', + 12 => 'SGH-i570!', + 13 => 'SGH-G810', + ), + '@T7' => + array ( + 0 => 'T7-00', + ), + '@U' => + array ( + 0 => 'U', + ), + '@W9' => + array ( + 0 => 'W950i', + 1 => 'W960i', + ), + '@X5' => + array ( + 0 => 'X5-00', + 1 => 'X5-01', + ), + '@X6' => + array ( + 0 => 'X6-00!', + ), + '@X7' => + array ( + 0 => 'X7-00!', + ), +); diff --git a/data/indices/models-tizen.php b/data/indices/models-tizen.php new file mode 100644 index 0000000..3ef9d83 --- /dev/null +++ b/data/indices/models-tizen.php @@ -0,0 +1,88 @@ + + array ( + 0 => '(ARMV7 )?SM-Z9005!', + ), + '@BA' => + array ( + 0 => 'Baltic', + ), + '@EM' => + array ( + 0 => 'Emulator', + ), + '@GT' => + array ( + 0 => 'GT-I8800!', + 1 => 'GT-I8805!', + 2 => 'GT-I9500!', + ), + '@HA' => + array ( + 0 => 'hawkp', + ), + '@KI' => + array ( + 0 => 'KIRAN', + ), + '@MO' => + array ( + 0 => 'Mobile-RD-PQ', + 1 => 'Mobile-Emulator', + ), + '@NX' => + array ( + 0 => 'NX300', + ), + '@SC' => + array ( + 0 => 'SC-03F', + ), + '@SD' => + array ( + 0 => 'sdk', + ), + '@SE' => + array ( + 0 => 'SEC SC-001', + 1 => 'SEC SC-03F', + ), + '@SG' => + array ( + 0 => 'SGH-N099', + ), + '@SM' => + array ( + 0 => 'SM-HIGGS', + 1 => '(ARMV7 )?SM-Z9005!', + 2 => 'SM-Z130!', + 3 => 'SM-Z300!', + 4 => 'SM-Z500!', + 5 => 'SM-Z700!', + 6 => 'SM-Z900!', + 7 => 'SM-Z910!', + 8 => 'SM-R750!', + ), + '@TI' => + array ( + 0 => 'TIZEN SM-Z130!', + 1 => 'TIZEN SM-Z300!', + 2 => 'TIZEN Emulator', + ), + '@TM' => + array ( + 0 => 'TM1', + ), + '@XU' => + array ( + 0 => 'xu3', + ), + '@Z3' => + array ( + 0 => 'Z3 Z910F', + ), +); diff --git a/data/indices/models-touchwiz.php b/data/indices/models-touchwiz.php new file mode 100644 index 0000000..dbcd4ca --- /dev/null +++ b/data/indices/models-touchwiz.php @@ -0,0 +1,54 @@ + + array ( + 0 => 'GT-B5310!', + 1 => 'GT-B3410', + 2 => 'GT-B7722', + 3 => 'GT-C3262', + 4 => 'GT-C33(00|03)!', + 5 => 'GT-C3312R', + 6 => 'GT-C3312!', + 7 => 'GT-C3330', + 8 => 'GT-C6712', + 9 => 'GT-E2652!', + 10 => 'GT-I6230!', + 11 => 'GT-I6712!', + 12 => 'GT-M3710', + 13 => 'GT-M5650', + 14 => 'GT-S3370!', + 15 => 'GT-S36(50|53)!', + 16 => 'GT-S3770!', + 17 => 'GT-S38(00|02)!', + 18 => 'GT-S3850', + 19 => 'GT-S5220', + 20 => 'GT-S5222R', + 21 => 'GT-S5222', + 22 => 'GT-S52(30|33)!', + 23 => 'GT-S5260P', + 24 => 'GT-S52(60|63)!', + 25 => 'GT-S5292R', + 26 => 'GT-S5292', + 27 => 'GT-S5560!', + 28 => 'GT-S5600', + 29 => 'GT-S5603', + 30 => 'GT-S5620!', + 31 => 'GT-S5680', + 32 => 'GT-S7550', + 33 => 'GT-S8003', + ), + '@S8' => + array ( + 0 => 'S80(00|03)!', + ), + '@SG' => + array ( + 0 => 'SGH-A597', + 1 => 'SGH-F480', + 2 => 'SGH-F480I', + 3 => 'SGH-T528g', + ), +); diff --git a/data/indices/models-wm.php b/data/indices/models-wm.php new file mode 100644 index 0000000..1fa22e4 --- /dev/null +++ b/data/indices/models-wm.php @@ -0,0 +1,521 @@ + + array ( + 0 => '.*T5555!', + 1 => '.*T8585!', + 2 => '.*S521!', + 3 => '.*T33(20|33|35)!', + 4 => '.*T5353!', + 5 => '.*P3700!', + 6 => '.*T82(82|83)!', + 7 => '.*T73(73|80)!', + 8 => '.*T7272!', + 9 => '.*T2223!', + ), + '@-G' => + array ( + 0 => '-GalaxyII', + 1 => '-GalaxyMini', + ), + '@-P' => + array ( + 0 => '-P525!', + 1 => '-P526!', + 2 => '-P527!', + 3 => '-P552w!', + 4 => '-P552!', + 5 => '-P565!', + 6 => '-P735!', + ), + '@12' => + array ( + 0 => 1210, + ), + '@A3' => + array ( + 0 => 'A3100', + 1 => 'A3300c', + ), + '@A4' => + array ( + 0 => 'A4500!', + ), + '@AM' => + array ( + 0 => 'Ameo!', + ), + '@BI' => + array ( + 0 => 'Bird T900', + ), + '@C6' => + array ( + 0 => 'C6625', + ), + '@CH' => + array ( + 0 => 'CHT 9100!', + ), + '@CO' => + array ( + 0 => 'Coolpad F800', + ), + '@DA' => + array ( + 0 => 'Datalogic Memor', + ), + '@DO' => + array ( + 0 => 'Dopod838Pro', + 1 => 'DopodD810', + 2 => 'dopod-S900c', + 3 => 'dopodT5588', + 4 => 'dopodT8388', + 5 => 'dopodT8588', + ), + '@DX' => + array ( + 0 => 'DX900', + ), + '@E1' => + array ( + 0 => 'E100', + ), + '@ES' => + array ( + 0 => 'ES405B!', + ), + '@F9' => + array ( + 0 => 'F900', + ), + '@GA' => + array ( + 0 => 'garmin-asus-Nuvifone-M10', + ), + '@GI' => + array ( + 0 => 'GIGABYTE-MS800', + ), + '@GM' => + array ( + 0 => 'GM730', + 1 => 'GM750Q', + ), + '@GT' => + array ( + 0 => 'GT-B5722', + 1 => 'GT-B6520', + 2 => 'GT-B7300', + 3 => 'GT-B7320!', + 4 => 'GT-B7330!', + 5 => 'GT-B7350', + 6 => 'GT-B7610', + 7 => 'GT-C6625', + 8 => 'GT-I8000!', + ), + '@GW' => + array ( + 0 => 'GW550', + 1 => 'GW825', + ), + '@H-' => + array ( + 0 => 'H-21', + ), + '@HD' => + array ( + 0 => '(HTC )?HD mini!', + 1 => '(HTC )?HD2!', + ), + '@HP' => + array ( + 0 => 'HP iPAQ 510', + 1 => 'HPiPAQ510!', + 2 => 'HPiPAQ610', + 3 => 'HPiPAQ910!', + 4 => 'HP iPAQ h6300', + 5 => 'HP iPAQ hw6500!', + 6 => 'HPiPAQhw6900!', + 7 => 'HPiPAQrw6800!', + 8 => 'HPiPAQrw6815!', + 9 => 'HPiPAQDataMessenger!', + 10 => 'HPiPAQVoiceMessenger!', + 11 => 'HPiPAQGlisten', + 12 => 'HP KB1', + ), + '@HT' => + array ( + 0 => 'HTC8500', + 1 => 'HTC P3300', + 2 => 'HTC love', + 3 => 'HTC P3350', + 4 => 'HTC P3400!', + 5 => 'HTC P3450!', + 6 => 'HTC HERALD', + 7 => 'HTC P6300', + 8 => 'HTC P6500', + 9 => 'HTC X7500', + 10 => 'HTC X7510', + 11 => '(HTC )?HD mini!', + 12 => '(HTC )?HD2!', + 13 => 'HTC T8290', + 14 => 'HTC MAX 4G', + 15 => 'HTC Prophet', + 16 => 'HTC Snap!', + 17 => 'HTC Maple S520', + 18 => 'HTC S620!', + 19 => 'HTC Excalibur', + 20 => 'HTC S630', + 21 => 'HTC S710', + 22 => 'HTC S730', + 23 => 'HTC S740', + 24 => 'HTC Touch', + 25 => 'HTC Elf', + 26 => 'HTC 6900', + 27 => 'HTC TouchDual', + 28 => 'HTC Touch 3G!', + 29 => 'HTC Jade', + 30 => 'HTC Mega!', + 31 => 'HTC Touch2!', + 32 => 'HTC Touch Cruise!', + 33 => 'HTC P3651', + 34 => 'HTC Polaris', + 35 => 'HTC Touch Diamond2!', + 36 => 'HTC Touch Diamond!', + 37 => 'HTC Diamond', + 38 => 'HTC P3701', + 39 => 'HTC P5500', + 40 => 'HTC P5310!', + 41 => 'HTC Touch HD2!', + 42 => 'HTC Touch HD!', + 43 => 'HTC Touch Pro2!', + 44 => 'HTC Touch Pro!', + 45 => 'HTC P4600', + 46 => 'HTC Raphael', + 47 => 'HTC Touch Viva!', + 48 => 'HTC Trinity', + 49 => 'HTC P3600', + 50 => 'HTC TyTN II', + 51 => 'HTC Kaiser', + 52 => 'HTC TyTN!', + 53 => 'HTC Mercury', + 54 => 'HTC wizard', + 55 => 'HTCPPC6850!', + 56 => 'HTC VDA V', + 57 => 'HTC v1510', + 58 => 'HTC VPACompactIV', + 59 => 'HT01A', + ), + '@I-' => + array ( + 0 => 'i-mate JAMA', + 1 => 'i-mate JAMAQ', + 2 => 'i-mate JAMin', + 3 => 'i-mate JASJAM', + 4 => 'i-mate JAQ', + 5 => 'i-mate JAQ3', + 6 => 'i-mate K-JAM', + 7 => 'i-mate PDAL', + 8 => 'i-mate 6150', + 9 => 'i-mate 8150!', + 10 => 'i-mate 8502', + 11 => 'i-mate 9502!', + ), + '@K-' => + array ( + 0 => 'K-Touch W366!', + ), + '@KD' => + array ( + 0 => 'KDDI-HT01', + ), + '@KY' => + array ( + 0 => 'Kyocera-E4000', + ), + '@LE' => + array ( + 0 => 'Lenovo ET860', + 1 => 'LENOVO-ET980', + ), + '@LG' => + array ( + 0 => 'LG-GM730!', + 1 => 'LG-GM750!', + 2 => 'LG-GW550!', + 3 => 'LG-KS20', + 4 => 'LG-MS25', + 5 => 'LGE VS750', + ), + '@M1' => + array ( + 0 => 'M1i', + ), + '@M5' => + array ( + 0 => 'M530w!', + ), + '@M9' => + array ( + 0 => 'M930!', + ), + '@MC' => + array ( + 0 => 'MC45!', + 1 => 'MC659B!', + ), + '@MD' => + array ( + 0 => 'MDA III!', + 1 => 'MDA compact II!', + 2 => 'MDA compact!', + 3 => 'MDA Pro!', + 4 => 'MDA Touch!', + 5 => 'MDA Vario!', + ), + '@NU' => + array ( + 0 => 'Nuvifone-M10', + 1 => 'Nuvifone-M20', + ), + '@O2' => + array ( + 0 => 'o2 Xda comet', + 1 => 'O2 Xda 2mini', + 2 => 'O2 Xda 2s', + ), + '@P3' => + array ( + 0 => 'P3470!', + 1 => 'P3450', + 2 => 'P3650', + 3 => 'P3650t', + 4 => 'P3600!', + ), + '@P4' => + array ( + 0 => 'P400', + 1 => 'P4350!', + 2 => 'P4550', + ), + '@P5' => + array ( + 0 => 'P550', + ), + '@P7' => + array ( + 0 => 'P750', + ), + '@PA' => + array ( + 0 => 'Palm500!', + 1 => 'Palm750', + 2 => 'Palm Treo850e', + 3 => 'PANTECH-C810', + ), + '@PP' => + array ( + 0 => 'PPC6850!', + ), + '@Q-' => + array ( + 0 => 'Q-UMTS', + ), + '@Q8' => + array ( + 0 => 'Q8', + ), + '@Q9' => + array ( + 0 => 'Q9', + 1 => 'Q9c!', + 2 => 'Q9m!', + ), + '@S0' => + array ( + 0 => 'S01SH', + 1 => 'S01SH2', + ), + '@S1' => + array ( + 0 => 'S11HT', + 1 => 'S12HT', + ), + '@S2' => + array ( + 0 => 'S200', + 1 => 'S21HT', + 2 => 'S22HT', + ), + '@SC' => + array ( + 0 => 'SCH-M490', + 1 => 'SCH-M710', + 2 => 'SCH-M715', + 3 => 'SCH-i220!', + 4 => 'SCH-i225!', + 5 => 'SCH-i760!', + 6 => 'SCH-i770!', + 7 => 'SCHI910!', + 8 => 'SCH-i920', + 9 => 'SC-01B', + ), + '@SF' => + array ( + 0 => 'SFR v3650!', + ), + '@SG' => + array ( + 0 => 'SGH-i600!', + 1 => 'SGH-i601!', + 2 => 'SGH-I607', + 3 => 'SGH-i608!', + 4 => 'SGH-I617', + 5 => 'SGH-I637', + 6 => 'SGH-i640!', + 7 => 'SGH-i718', + 8 => 'SGH-i718plus', + 9 => 'SGH-i728', + 10 => 'SGH-i780!', + 11 => 'SGH-i900!', + 12 => 'SGH-i908E', + ), + '@SI' => + array ( + 0 => 'SIE-SX66', + 1 => 'sigmarion3', + ), + '@SP' => + array ( + 0 => 'Sprint:MotoQ9c', + 1 => 'Sprint Treo850e', + 2 => 'SPH-M7200', + 3 => 'SPH-M7350', + 4 => 'SPH-M8400', + 5 => 'SPHI325!', + 6 => 'Spice D1100', + 7 => 'SPV E600', + 8 => 'SPV E650', + 9 => 'SPV M700', + 10 => 'SPV M2000', + 11 => 'SPV M3100', + 12 => 'Sprint S511', + 13 => 'Sprint:SPH-ip830w', + 14 => 'Sprint:PPC6600-1', + 15 => 'Sprint:PPC-6700', + 16 => 'Sprint:PPC6800', + 17 => 'Sprint PPC6850SP', + 18 => 'Sprint MP6850SP', + 19 => 'Sprint MP6900SP', + 20 => 'Sprint MP6950SP', + ), + '@T-' => + array ( + 0 => 'T-Mobile Atlas', + 1 => 'T-Mobile Dash', + 2 => 'T-Mobile LEO', + 3 => 'T-Mobile Cleopatra', + 4 => 'T-01A!', + 5 => 'T-01B!', + ), + '@T5' => + array ( + 0 => 'T5388', + ), + '@T9' => + array ( + 0 => 'T9188', + 1 => 'T9199', + ), + '@TG' => + array ( + 0 => '(Toshiba[- ])?TG01!', + ), + '@TO' => + array ( + 0 => '(Toshiba[- ])?TG01!', + ), + '@TR' => + array ( + 0 => 'Treo800w', + ), + '@V1' => + array ( + 0 => 'v1415', + 1 => 'v1240', + 2 => 'v1210', + 3 => 'v1640', + ), + '@VE' => + array ( + 0 => 'Velocity', + ), + '@VI' => + array ( + 0 => 'VIP12!', + ), + '@VP' => + array ( + 0 => 'VPA Touch', + ), + '@W3' => + array ( + 0 => 'W366', + ), + '@WS' => + array ( + 0 => 'WS003SH', + 1 => 'WS004SH', + 2 => 'WS007SH', + 3 => 'WS011SH', + 4 => 'WS020SH', + 5 => 'WS027SH', + ), + '@X0' => + array ( + 0 => 'X01T', + 1 => 'X02T!', + 2 => 'X01HT', + 3 => 'X02HT', + 4 => 'X03HT', + 5 => 'X04HT', + 6 => 'X05HT', + 7 => 'X01SC', + ), + '@X1' => + array ( + 0 => 'X1', + 1 => 'X1[ia]!', + ), + '@X2' => + array ( + 0 => 'X2', + 1 => 'X2[ia]!', + ), + '@XD' => + array ( + 0 => 'Xda diamond', + 1 => 'Xda neo', + 2 => 'Xda nova', + 3 => 'Xda orbit', + 4 => 'Xda terra', + 5 => 'Xda trion', + ), + '@XV' => + array ( + 0 => 'XV6175!', + 1 => 'XV6875!', + 2 => 'XV6900', + 3 => 'XV6975', + ), + '@ZT' => + array ( + 0 => 'ZTE E N72', + 1 => 'ZTE E X70', + ), +); diff --git a/data/indices/models-wp.php b/data/indices/models-wp.php new file mode 100644 index 0000000..4ecd9fa --- /dev/null +++ b/data/indices/models-wp.php @@ -0,0 +1,511 @@ + + array ( + 0 => '(HD7|.*T92(92|95|96))!', + 1 => '((7 )?Mozart|.*T86(97|98))!', + 2 => '(7 Pro|.*T75(75|76))!', + 3 => '.*T8788!', + 4 => '((7 )?Trophy|.*T8686)!', + 5 => '(Radar|.*C110e)!', + 6 => '.*X310e!', + 7 => '(Lumia ?|Nokia ?)?[0-9]{3,4}!!', + ), + '@- ' => + array ( + 0 => '- BUSH Windows Phone', + 1 => '- Lazer SMART WIND', + ), + '@0P' => + array ( + 0 => '0P6B140', + 1 => '0P6B180', + ), + '@40' => + array ( + 0 => '40 Cesium', + ), + '@47' => + array ( + 0 => 47, + ), + '@4A' => + array ( + 0 => '4Afrika', + ), + '@69' => + array ( + 0 => '6990LVW', + ), + '@7 ' => + array ( + 0 => '((7 )?Mozart|.*T86(97|98))!', + 1 => '7 HTC MOZART', + 2 => '(7 Pro|.*T75(75|76))!', + 3 => '7 Surround', + 4 => '((7 )?Trophy|.*T8686)!', + ), + '@75' => + array ( + 0 => '75eL0N', + ), + '@8S' => + array ( + 0 => '8S', + 1 => '8S by HTC', + ), + '@8X' => + array ( + 0 => '8X', + 1 => '8X by HTC', + ), + '@;H' => + array ( + 0 => ';HD2', + ), + '@;P' => + array ( + 0 => ';PD67100', + ), + '@ + array ( + 0 => '!', + ), + '@A6' => + array ( + 0 => 'A620(b|d|e|m|t)!', + ), + '@AC' => + array ( + 0 => 'AC50CE', + 1 => 'ACD U', + 2 => 'Accord', + ), + '@AL' => + array ( + 0 => 'Allegro', + ), + '@AN' => + array ( + 0 => 'Andi4L', + 1 => 'Android!', + ), + '@AT' => + array ( + 0 => 'Ativ S', + 1 => 'ATIV S Neo', + ), + '@BI' => + array ( + 0 => 'Billy 4.7', + ), + '@BP' => + array ( + 0 => 'BP30.BM180', + ), + '@C6' => + array ( + 0 => 'C620(d|e|t)!', + 1 => 'C625(a|b)!', + ), + '@CE' => + array ( + 0 => 'CETUS', + ), + '@DO' => + array ( + 0 => 'DolphinCT50', + ), + '@E2' => + array ( + 0 => 'E260T+', + ), + '@E6' => + array ( + 0 => 'E600', + ), + '@ET' => + array ( + 0 => 'Eternity', + ), + '@FI' => + array ( + 0 => 'FierceXL', + ), + '@FO' => + array ( + 0 => 'Focus i917!', + 1 => 'FOCUS S', + ), + '@FT' => + array ( + 0 => 'FTJ152E', + 1 => 'FTJ152F', + ), + '@FZ' => + array ( + 0 => 'FZ-E1', + ), + '@GA' => + array ( + 0 => 'Galaxy6', + ), + '@GO' => + array ( + 0 => 'Gold', + ), + '@GT' => + array ( + 0 => 'GT-[IS][0-9]{4,4}!!', + ), + '@GW' => + array ( + 0 => 'GW910', + ), + '@H8' => + array ( + 0 => 'H883G', + ), + '@HA' => + array ( + 0 => 'Harley Davidson', + 1 => 'Harley-Davidson', + 2 => 'Haden', + ), + '@HD' => + array ( + 0 => 'HD2', + 1 => 'HD2(Leo', + 2 => 'HD2 LEO', + 3 => '(HD7|.*T92(92|95|96))!', + ), + '@HE' => + array ( + 0 => 'HELSINKI', + ), + '@HT' => + array ( + 0 => 'HTC HD2', + 1 => 'HTC Mozart', + 2 => 'htc mpw6958', + 3 => 'htcmpw6958', + 4 => 'HTC 7 Trophy', + 5 => 'HTC Trophy', + 6 => 'HTC6690LVW', + 7 => 'HTC6990LVW', + 8 => 'HTC6990LVW 4G', + 9 => 'htc 8x', + 10 => 'HTCPO881', + 11 => 'HTC6995LVW', + ), + '@HU' => + array ( + 0 => 'HUAWEI Ascend W1!', + 1 => 'HUAWEI ?W1-(C00|U00|U34)!', + 2 => 'HUAWEI ?W2-(T00|T01|U00|U051)!', + ), + '@I9' => + array ( + 0 => 'I917', + ), + '@ID' => + array ( + 0 => 'id[0-9]{3,3}!!', + ), + '@IM' => + array ( + 0 => 'Impera I', + 1 => 'Impera M', + 2 => 'Impera S', + ), + '@IN' => + array ( + 0 => 'InfoPath!', + ), + '@IQ' => + array ( + 0 => 'IQ400W', + ), + '@IR' => + array ( + 0 => 'iris Win 1', + ), + '@IS' => + array ( + 0 => 'IS12T', + ), + '@IX' => + array ( + 0 => 'Ixion W 5', + ), + '@LE' => + array ( + 0 => 'LEO', + ), + '@LG' => + array ( + 0 => 'LG-E740!', + 1 => 'LG-E-?900!', + 2 => 'LG-E906', + 3 => 'LG-C900!', + ), + '@LI' => + array ( + 0 => 'Linux!', + ), + '@LU' => + array ( + 0 => '(Lumia ?|Nokia ?)?[0-9]{3,4}!!', + ), + '@M2' => + array ( + 0 => 'M220', + ), + '@M3' => + array ( + 0 => 'M310', + ), + '@M5' => + array ( + 0 => 'M5w', + ), + '@MA' => + array ( + 0 => 'Mazaa', + ), + '@ME' => + array ( + 0 => 'MegaFon SP-W1', + ), + '@MI' => + array ( + 0 => 'MICROMAX-W121', + 1 => 'MI4', + 2 => 'Microsoft!', + ), + '@MO' => + array ( + 0 => 'MOBILE Alpha Luxe', + 1 => 'MOBILE Alpha Style', + 2 => 'Mondrian', + 3 => '((7 )?Mozart|.*T86(97|98))!', + 4 => 'MouseComputer MADOSMA Q501', + ), + '@MW' => + array ( + 0 => 'MWP6885', + 1 => 'mwp6985', + 2 => 'MWP-47!', + ), + '@N8' => + array ( + 0 => 'N880e!', + ), + '@NE' => + array ( + 0 => 'NEO', + ), + '@NO' => + array ( + 0 => '(Lumia ?|Nokia ?)?[0-9]{3,4}!!', + ), + '@OM' => + array ( + 0 => 'Omega', + 1 => 'OM(NI|IN)A ?7!', + 2 => 'Omnia W', + ), + '@ON' => + array ( + 0 => 'ONE TOUCH 5040X', + ), + '@PC' => + array ( + 0 => 'PC93100', + 1 => 'PC40100', + ), + '@PD' => + array ( + 0 => 'PD67100', + ), + '@PI' => + array ( + 0 => 'PI39100', + 1 => 'PI86100', + ), + '@PK' => + array ( + 0 => 'PKT-407', + ), + '@PM' => + array ( + 0 => 'PM23300', + ), + '@PR' => + array ( + 0 => 'PRESTIGIO-PSP8500DUO', + ), + '@PS' => + array ( + 0 => 'PSP8400DUO', + 1 => 'PSP8500DUO', + ), + '@QS' => + array ( + 0 => 'QSMART DREAM W473', + ), + '@QU' => + array ( + 0 => 'Quantum', + ), + '@RA' => + array ( + 0 => '(Radar|.*C110e)!', + ), + '@RI' => + array ( + 0 => 'RIO U', + ), + '@RM' => + array ( + 0 => 'RM-[0-9]{3,4}!!', + ), + '@S5' => + array ( + 0 => 'S58', + ), + '@S6' => + array ( + 0 => 'S606', + ), + '@SC' => + array ( + 0 => 'Schubert!', + 1 => 'SCH-R860U', + 2 => 'SCH-I930', + ), + '@SE' => + array ( + 0 => 'SeaRay', + ), + '@SG' => + array ( + 0 => 'SGH-[IT][0-9]{3,3}!!', + ), + '@SM' => + array ( + 0 => 'SM-W750V', + ), + '@SO' => + array ( + 0 => 'SOUL2', + ), + '@SP' => + array ( + 0 => 'Spark', + 1 => 'SPH-I800', + ), + '@SU' => + array ( + 0 => 'Surround', + 1 => 'Surface Phone', + ), + '@TA' => + array ( + 0 => 'Taylor', + 1 => 'Tania', + ), + '@TC' => + array ( + 0 => 'TC70', + ), + '@TG' => + array ( + 0 => 'TG01', + ), + '@TH' => + array ( + 0 => 'Thunder 450W', + ), + '@TI' => + array ( + 0 => 'Titan', + 1 => 'Titanium Wind W4', + ), + '@TO' => + array ( + 0 => 'Touch-IT HD7', + 1 => 'Touch-IT Trophy', + ), + '@TR' => + array ( + 0 => '((7 )?Trophy|.*T8686)!', + ), + '@TS' => + array ( + 0 => 'TSUNAGI', + ), + '@UL' => + array ( + 0 => 'Ultimate', + ), + '@US' => + array ( + 0 => 'USCCHTC-PC93100', + 1 => 'USCCN859', + ), + '@V9' => + array ( + 0 => 'V965W', + ), + '@VE' => + array ( + 0 => 'Venue Pro', + ), + '@VI' => + array ( + 0 => 'Virtual!', + ), + '@VW' => + array ( + 0 => 'VW820', + ), + '@W1' => + array ( + 0 => 'W10', + 1 => 'W1-(C00|U00|U34)!', + 2 => 'W121', + ), + '@W2' => + array ( + 0 => 'W2-(T00|T01|U00)!', + ), + '@WI' => + array ( + 0 => 'WIN HD LTE', + 1 => 'WIN HD W510l', + 2 => 'WIN HD W510u', + 3 => 'WIN JR LTE', + 4 => 'WIN JR W410a', + 5 => 'WIN JR W410i', + 6 => 'WIN JR W410u', + 7 => 'WIN 400', + 8 => 'WINJOY', + 9 => 'WinWin', + 10 => 'Windows Phone 8X by HTC', + 11 => 'WindowsPhone8Xby', + 12 => 'Windows Phone 8S by HTC', + 13 => 'WindowsPhone8Sby', + 14 => 'Win1', + 15 => 'Win-Q900S', + 16 => 'Win Q1000', + 17 => 'Windows!', + ), + '@XX' => + array ( + 0 => 'XXX!', + ), +); diff --git a/data/models-android.php b/data/models-android.php index 9786ff0..95c1db8 100644 --- a/data/models-android.php +++ b/data/models-android.php @@ -6366,7 +6366,7 @@ 'LAVA iRIS 504q' => [ 'Lava', 'Iris 504Q' ], 'LAVA S12' => [ 'Lava', 'S12' ], - '(XOLO )?[ABQX[0-9]{3,4}!!' => [ + '(XOLO )?[ABQX][0-9]{3,4}!!' => [ 'A500L' => [ 'Lava', 'XOLO A500L' ], 'A500s' => [ 'Lava', 'XOLO A500s' ], 'A500S IPS' => [ 'Lava', 'XOLO A500s' ], diff --git a/data/models-wm.php b/data/models-wm.php index 9e429b2..4762849 100644 --- a/data/models-wm.php +++ b/data/models-wm.php @@ -4,7 +4,7 @@ use WhichBrowser\Constants\DeviceType; -DeviceModels::$WINDOWS_MOBILE_MODELS = [ +DeviceModels::$WM_MODELS = [ 'DX900' => [ 'Acer', 'Tempo DX900' ], 'E100' => [ 'Acer', 'beTouch E100' ], 'F900' => [ 'Acer', 'Tempo F900' ], @@ -63,13 +63,16 @@ 'HTC P6500' => [ 'HTC', 'P6500' ], 'HTC X7500' => [ 'HTC', 'Advantage' ], 'HTC X7510' => [ 'HTC', 'Advantage' ], - '((HTC )?HD mini|.*T5555)!' => [ 'HTC', 'HD mini' ], - '((HTC )?HD2|.*T8585)!' => [ 'HTC', 'HD2' ], + '(HTC )?HD mini!' => [ 'HTC', 'HD mini' ], + '.*T5555!' => [ 'HTC', 'HD mini' ], + '(HTC )?HD2!' => [ 'HTC', 'HD2' ], + '.*T8585!' => [ 'HTC', 'HD2' ], 'HTC T8290' => [ 'HTC', 'MAX 4G' ], 'HTC MAX 4G' => [ 'HTC', 'MAX 4G' ], 'P3470!' => [ 'HTC', 'Pharos' ], 'HTC Prophet' => [ 'HTC', 'Prophet' ], - '(HTC Snap|.*S521)!' => [ 'HTC', 'S511 Snap' ], + 'HTC Snap!' => [ 'HTC', 'S511 Snap' ], + '.*S521!' => [ 'HTC', 'S511 Snap' ], 'HTC Maple S520' => [ 'HTC', 'S520 Maple' ], 'HTC S620!' => [ 'HTC', 'S620 Excalibur' ], 'HTC Excalibur' => [ 'HTC', 'S620 Excalibur' ], @@ -85,25 +88,33 @@ 'HTC Touch 3G!' => [ 'HTC', 'Touch 3G' ], 'HTC Jade' => [ 'HTC', 'Touch 3G' ], 'HTC Mega!' => [ 'HTC', 'Touch 2' ], - '(HTC Touch2|.*T33(20|33|35))!' => [ 'HTC', 'Touch 2' ], + 'HTC Touch2!' => [ 'HTC', 'Touch 2' ], + '.*T33(20|33|35)!' => [ 'HTC', 'Touch 2' ], 'P3650' => [ 'HTC', 'Touch Cruise' ], 'P3650t' => [ 'HTC', 'Touch Cruise' ], 'HTC Touch Cruise!' => [ 'HTC', 'Touch Cruise' ], 'HTC P3651' => [ 'HTC', 'Touch Cruise' ], 'HTC Polaris' => [ 'HTC', 'Touch Cruise' ], - '(HTC Touch Diamond2|.*T5353)!' => [ 'HTC', 'Touch Diamond 2' ], - '(HTC Touch Diamond|.*P3700)!' => [ 'HTC', 'Touch Diamond' ], + 'HTC Touch Diamond2!' => [ 'HTC', 'Touch Diamond 2' ], + '.*T5353!' => [ 'HTC', 'Touch Diamond 2' ], + 'HTC Touch Diamond!' => [ 'HTC', 'Touch Diamond' ], + '.*P3700!' => [ 'HTC', 'Touch Diamond' ], 'HTC Diamond' => [ 'HTC', 'Touch Diamond' ], 'HTC P3701' => [ 'HTC', 'Touch Diamond' ], 'HTC P5500' => [ 'HTC', 'Touch Dual' ], 'HTC P5310!' => [ 'HTC', 'Touch Dual' ], - '(HTC Touch HD2|.*T8585)!' => [ 'HTC', 'Touch HD2' ], - '(HTC Touch HD|.*T82(82|83))!' => [ 'HTC', 'Touch HD' ], - '(HTC Touch Pro2|.*T73(73|80))!' => [ 'HTC', 'Touch Pro 2' ], - '(HTC Touch Pro|.*T7272)!' => [ 'HTC', 'Touch Pro' ], + 'HTC Touch HD2!' => [ 'HTC', 'Touch HD2' ], + '.*T8585!' => [ 'HTC', 'Touch HD2' ], + 'HTC Touch HD!' => [ 'HTC', 'Touch HD' ], + '.*T82(82|83)!' => [ 'HTC', 'Touch HD' ], + 'HTC Touch Pro2!' => [ 'HTC', 'Touch Pro 2' ], + '.*T73(73|80)!' => [ 'HTC', 'Touch Pro 2' ], + 'HTC Touch Pro!' => [ 'HTC', 'Touch Pro' ], + '.*T7272!' => [ 'HTC', 'Touch Pro' ], 'HTC P4600' => [ 'HTC', 'Touch Pro' ], 'HTC Raphael' => [ 'HTC', 'Touch Pro' ], - '(HTC Touch Viva |.*T2223)!' => [ 'HTC', 'Touch Viva' ], + 'HTC Touch Viva!' => [ 'HTC', 'Touch Viva' ], + '.*T2223!' => [ 'HTC', 'Touch Viva' ], 'P3600!' => [ 'HTC', 'Trinity' ], 'HTC Trinity' => [ 'HTC', 'Trinity' ], 'HTC P3600' => [ 'HTC', 'Trinity' ], @@ -156,7 +167,7 @@ 'Q9m!' => [ 'Motorola', 'MOTO Q9m' ], 'VIP12!' => [ 'Motorola', 'VIP 1200', DeviceType::TELEVISION ], 'H-21' => [ 'Opticom', 'H-21' ], - '\/Palm500!' => [ 'Palm', 'Treo 500v' ], + 'Palm500!' => [ 'Palm', 'Treo 500v' ], 'Palm750' => [ 'Palm', 'Treo 750' ], 'Treo800w' => [ 'Palm', 'Treo 800w' ], 'Palm Treo850e' => [ 'Palm', 'Treo Pro' ], diff --git a/data/models-wp.php b/data/models-wp.php index 455d69d..f0a6879 100644 --- a/data/models-wp.php +++ b/data/models-wp.php @@ -2,7 +2,7 @@ namespace WhichBrowser\Data; -DeviceModels::$WINDOWS_PHONE_MODELS = [ +DeviceModels::$WP_MODELS = [ 'Allegro' => [ 'Acer', 'Allegro' ], 'M310' => [ 'Acer', 'Allegro' ], 'S58' => [ 'Acer', 'Jade Primo' ], diff --git a/src/Analyser/Header/Useragent/Browser.php b/src/Analyser/Header/Useragent/Browser.php index 69f74a3..de04890 100644 --- a/src/Analyser/Header/Useragent/Browser.php +++ b/src/Analyser/Header/Useragent/Browser.php @@ -957,11 +957,33 @@ private function detectUC($ua) $this->data->device = Data\DeviceModels::identify('android', $match[2]); } - if (preg_match('/; Adr ([0-9\.]+)(?:-update[0-9])?; [^;]+; ([^;]*[^\s])\)/u', $ua, $match)) { + if (preg_match('/\(MIDP-2.0; U; [^;]+; ([^;]*[^\s])\)/u', $ua, $match)) { + $this->data->os->name = 'Android'; + + $this->data->device->model = $match[1]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('android', $match[1]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if (preg_match('/\((?:Linux|MIDP-2.0); U; Adr ([0-9\.]+)(?:-update[0-9])?; [^;]+; ([^;]*[^\s])\)/u', $ua, $match)) { $this->data->os->name = 'Android'; $this->data->os->version = new Version([ 'value' => $match[1] ]); - $this->data->device = Data\DeviceModels::identify('android', $match[2]); + $this->data->device->model = $match[2]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('android', $match[2]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } } if (preg_match('/\((?:iOS|iPhone);/u', $ua)) { diff --git a/src/Analyser/Header/Useragent/Device/Mobile.php b/src/Analyser/Header/Useragent/Device/Mobile.php index 0d1d28c..682ee2e 100644 --- a/src/Analyser/Header/Useragent/Device/Mobile.php +++ b/src/Analyser/Header/Useragent/Device/Mobile.php @@ -1043,10 +1043,35 @@ private function detectGenericMobileLocations($ua) 'sun4m', 'sun4c', 'sun4u', 'i86pc', 'X11', 'NaenaraBrowser', 'QuickTime', 'IBM', 'QQBrowser', 'x86_64', 'i686', 'i386', 'Chrome', 'TenFourFox', 'Swing', 'NetFrontBrowserNX', 'Mac_PowerPC', + 'NetCast.TV-2012', 'NetCast.TV-2011', 'NetCast.Media-2011', + 'PaleMoon', 'Fedora', 'SUSE', 'iCab', 'Googlebot', 'Pixi', + 'Pre', 'ELinks', 'developer', 'beta', 'BingPreview', 'IBrowse', '+http:' ]); $candidates = array_unique($candidates); + foreach ($candidates as $i => $id) { + if (preg_match('/^[0-9\.]+$/u', $id)) { + unset($candidates[$i]); + continue; + } + + if (preg_match('/^[0-9]+[xX][0-9]+$/u', $id)) { + unset($candidates[$i]); + continue; + } + + if (preg_match('/^\[?[a-z]{2,2}(\-[a-z]{2,2})?\]?$/ui', $id)) { + unset($candidates[$i]); + continue; + } + + if (strlen($id) < 4) { + unset($candidates[$i]); + continue; + } + } + foreach ($candidates as $i => $id) { $this->identifyBasedOnIdUsingOs($id); diff --git a/src/Data/DeviceModels.php b/src/Data/DeviceModels.php index cccb851..8b60cc9 100644 --- a/src/Data/DeviceModels.php +++ b/src/Data/DeviceModels.php @@ -14,8 +14,8 @@ class DeviceModels public static $FIREFOXOS_MODELS = []; public static $TIZEN_MODELS = []; public static $TOUCHWIZ_MODELS = []; - public static $WINDOWS_MOBILE_MODELS = []; - public static $WINDOWS_PHONE_MODELS = []; + public static $WM_MODELS = []; + public static $WP_MODELS = []; public static $PALMOS_MODELS = []; public static $S30PLUS_MODELS = []; public static $S40_MODELS = []; @@ -25,76 +25,107 @@ class DeviceModels public static $IOS_MODELS = []; public static $KDDI_MODELS = []; + public static $ANDROID_INDEX = []; + public static $ASHA_INDEX = []; + public static $BADA_INDEX = []; + public static $BREW_INDEX = []; + public static $FIREFOXOS_INDEX = []; + public static $TIZEN_INDEX = []; + public static $TOUCHWIZ_INDEX = []; + public static $WM_INDEX = []; + public static $WP_INDEX = []; + public static $PALMOS_INDEX = []; + public static $S30PLUS_INDEX = []; + public static $S40_INDEX = []; + public static $SYMBIAN_INDEX = []; + public static $FEATURE_INDEX = []; + public static $KDDI_INDEX = []; + public static function identify($type, $model) { require_once __DIR__ . '/../../data/models-' . $type . '.php'; + if ($type != 'blackberry' && $type != 'ios') { + require_once __DIR__ . '/../../data/indices/models-' . $type . '.php'; + } + switch ($type) { case 'android': return self::identifyAndroid($model); case 'asha': - return self::identifyList(self::$ASHA_MODELS, $model); + return self::identifyList(self::$ASHA_INDEX, self::$ASHA_MODELS, $model); case 'bada': - return self::identifyList(self::$BADA_MODELS, $model); + return self::identifyList(self::$BADA_INDEX, self::$BADA_MODELS, $model); case 'blackberry': return self::identifyBlackBerry($model); case 'brew': - return self::identifyList(self::$BREW_MODELS, $model); + return self::identifyList(self::$BREW_INDEX, self::$BREW_MODELS, $model); case 'firefoxos': - return self::identifyList(self::$FIREFOXOS_MODELS, $model, false); + return self::identifyList(self::$FIREFOXOS_INDEX, self::$FIREFOXOS_MODELS, $model, false); case 'ios': return self::identifyIOS($model); case 'tizen': - return self::identifyList(self::$TIZEN_MODELS, $model); + return self::identifyList(self::$TIZEN_INDEX, self::$TIZEN_MODELS, $model); case 'touchwiz': - return self::identifyList(self::$TOUCHWIZ_MODELS, $model); + return self::identifyList(self::$TOUCHWIZ_INDEX, self::$TOUCHWIZ_MODELS, $model); case 'wm': - return self::identifyList(self::$WINDOWS_MOBILE_MODELS, $model); + return self::identifyList(self::$WM_INDEX, self::$WM_MODELS, $model); case 'wp': - return self::identifyList(self::$WINDOWS_PHONE_MODELS, $model); + return self::identifyList(self::$WP_INDEX, self::$WP_MODELS, $model); case 's30plus': - return self::identifyList(self::$S30PLUS_MODELS, $model); + return self::identifyList(self::$S30PLUS_INDEX, self::$S30PLUS_MODELS, $model); case 's40': - return self::identifyList(self::$S40_MODELS, $model); + return self::identifyList(self::$S40_INDEX, self::$S40_MODELS, $model); case 'symbian': - return self::identifyList(self::$SYMBIAN_MODELS, $model); + return self::identifyList(self::$SYMBIAN_INDEX, self::$SYMBIAN_MODELS, $model); case 'palmos': - return self::identifyList(self::$PALMOS_MODELS, $model); + return self::identifyList(self::$PALMOS_INDEX, self::$PALMOS_MODELS, $model); case 'kddi': - return self::identifyList(self::$KDDI_MODELS, $model); + return self::identifyList(self::$KDDI_INDEX, self::$KDDI_MODELS, $model); case 'feature': - return self::identifyList(self::$FEATURE_MODELS, $model); + return self::identifyList(self::$FEATURE_INDEX, self::$FEATURE_MODELS, $model); } } public static function identifyIOS($model) { + $original = $model; + $model = str_replace('Unknown ', '', $model); $model = preg_replace("/iPh([0-9],[0-9])/", 'iPhone\\1', $model); $model = preg_replace("/iPd([0-9],[0-9])/", 'iPod\\1', $model); - return self::identifyList(self::$IOS_MODELS, $model); - } + $device = new Device([ + 'type' => Constants\DeviceType::MOBILE, + 'identified' => Constants\Id::NONE, + 'manufacturer' => null, + 'model' => $model, + 'identifier' => $original, + 'generic' => false + ]); - public static function identifyAndroid($model) - { - $result = self::identifyList(self::$ANDROID_MODELS, $model); + if (isset(self::$IOS_MODELS[$model])) { + $match = self::$IOS_MODELS[$model]; - if (!$result->identified) { - $model = self::cleanup($model); - if (preg_match('/AndroVM/iu', $model) || $model == 'Emulator' || $model == 'x86 Emulator' || $model == 'x86 VirtualBox' || $model == 'vm') { - return new Device([ - 'type' => Constants\DeviceType::EMULATOR, - 'identified' => Constants\Id::PATTERN, - 'manufacturer' => null, - 'model' => null, - 'generic' => false - ]); + $device->manufacturer = $match[0]; + $device->model = $match[1]; + $device->identified = Constants\Id::MATCH_UA; + + if (isset($match[2]) || isset($match['type'])) { + $type = isset($match[2]) ? $match[2] : $match['type']; + if (is_array($type)) { + $device->type = $type[0]; + $device->subtype = $type[1]; + } else { + $device->type = $type; + } } + + return $device; } - return $result; + return $device; } public static function identifyBlackBerry($model) @@ -115,13 +146,9 @@ public static function identifyBlackBerry($model) ]); if (preg_match("/^[1-9][0-9][0-9][0-9][ei]?$/u", $model)) { - $device = new Device([ - 'type' => Constants\DeviceType::MOBILE, - 'identified' => Constants\Id::PATTERN, - 'manufacturer' => 'RIM', - 'model' => 'BlackBerry ' . $model, - 'generic' => false - ]); + $device->manufacturer = 'RIM'; + $device->model = 'BlackBerry ' . $model; + $device->identified = Constants\Id::PATTERN; if (isset(self::$BLACKBERRY_MODELS[$model])) { $device->model = 'BlackBerry ' . self::$BLACKBERRY_MODELS[$model] . ' ' . $model; @@ -132,7 +159,27 @@ public static function identifyBlackBerry($model) return $device; } - public static function identifyList($list, $model, $cleanup = true) + public static function identifyAndroid($model) + { + $result = self::identifyList(self::$ANDROID_INDEX, self::$ANDROID_MODELS, $model); + + if (!$result->identified) { + $model = self::cleanup($model); + if (preg_match('/AndroVM/iu', $model) || $model == 'Emulator' || $model == 'x86 Emulator' || $model == 'x86 VirtualBox' || $model == 'vm') { + return new Device([ + 'type' => Constants\DeviceType::EMULATOR, + 'identified' => Constants\Id::PATTERN, + 'manufacturer' => null, + 'model' => null, + 'generic' => false + ]); + } + } + + return $result; + } + + public static function identifyList(&$index, &$list, $model, $cleanup = true) { $original = $model; @@ -149,54 +196,61 @@ public static function identifyList($list, $model, $cleanup = true) 'generic' => false ]); - foreach ($list as $m => $v) { - $match = null; - $pattern = null; - - if (self::hasMatch($m, $model)) { - if (substr($m, -2) == "!!") { - foreach ($v as $m2 => $v2) { - if (self::hasMatch($m2, $model)) { - $match = $v2; - $pattern = $m2; - break; + $keys = [ '@' . strtoupper(substr($model, 0, 2)), '@' ]; + + $pattern = null; + $match = null; + + foreach ($keys as $k => $key) { + if (isset($index[$key])) { + foreach ($index[$key] as $m => $v) { + if (self::hasMatch($v, $model)) { + if ($v) { + if (substr($v, -2) == "!!") { + foreach ($list[$v] as $m2 => $v2) { + if (self::hasMatch($m2, $model)) { + $match = $v2; + $pattern = $m2; + break; + } + } + } else { + $match = $list[$v]; + $pattern = $v; + } } - } - } else { - $match = $v; - $pattern = $m; - } - } - if ($match) { - $device->manufacturer = $match[0]; - $device->model = self::applyMatches($match[1], $model, $pattern); - $device->identified = Constants\Id::MATCH_UA; - - if (isset($match[2]) || isset($match['type'])) { - $type = isset($match[2]) ? $match[2] : $match['type']; - if (is_array($type)) { - $device->type = $type[0]; - $device->subtype = $type[1]; - } else { - $device->type = $type; + if ($match) { + $device->manufacturer = $match[0]; + $device->model = self::applyMatches($match[1], $model, $pattern); + $device->identified = Constants\Id::MATCH_UA; + + if (isset($match[2]) || isset($match['type'])) { + $type = isset($match[2]) ? $match[2] : $match['type']; + if (is_array($type)) { + $device->type = $type[0]; + $device->subtype = $type[1]; + } else { + $device->type = $type; + } + } + + if (isset($match[3]) || isset($match['flag'])) { + $device->flag = isset($match[3]) ? $match[3] : $match['flag']; + } + + if (isset($match['carrier'])) { + $device->carrier = $match['carrier']; + } + + if ($device->manufacturer == null && $device->model == null) { + $device->identified = Constants\Id::PATTERN; + } + + return $device; + } } } - - if (isset($match[3]) || isset($match['flag'])) { - $device->flag = isset($match[3]) ? $match[3] : $match['flag']; - } - - - if (isset($match['carrier'])) { - $device->carrier = $match['carrier']; - } - - if ($device->manufacturer == null && $device->model == null) { - $device->identified = Constants\Id::PATTERN; - } - - return $device; } }