UNPKG

472 kBJavaScriptView Raw
1// Chance.js 1.1.12
2// https://chancejs.com
3// (c) 2013 Victor Quinn
4// Chance may be freely distributed or modified under the MIT license.
5
6(function () {
7
8 // Constants
9 var MAX_INT = 9007199254740992;
10 var MIN_INT = -MAX_INT;
11 var NUMBERS = '0123456789';
12 var CHARS_LOWER = 'abcdefghijklmnopqrstuvwxyz';
13 var CHARS_UPPER = CHARS_LOWER.toUpperCase();
14 var HEX_POOL = NUMBERS + "abcdef";
15
16 // Errors
17 function UnsupportedError(message) {
18 this.name = 'UnsupportedError';
19 this.message = message || 'This feature is not supported on this platform';
20 }
21
22 UnsupportedError.prototype = new Error();
23 UnsupportedError.prototype.constructor = UnsupportedError;
24
25 // Cached array helpers
26 var slice = Array.prototype.slice;
27
28 // Constructor
29 function Chance (seed) {
30 if (!(this instanceof Chance)) {
31 if (!seed) { seed = null; } // handle other non-truthy seeds, as described in issue #322
32 return seed === null ? new Chance() : new Chance(seed);
33 }
34
35 // if user has provided a function, use that as the generator
36 if (typeof seed === 'function') {
37 this.random = seed;
38 return this;
39 }
40
41 if (arguments.length) {
42 // set a starting value of zero so we can add to it
43 this.seed = 0;
44 }
45
46 // otherwise, leave this.seed blank so that MT will receive a blank
47
48 for (var i = 0; i < arguments.length; i++) {
49 var seedling = 0;
50 if (Object.prototype.toString.call(arguments[i]) === '[object String]') {
51 for (var j = 0; j < arguments[i].length; j++) {
52 // create a numeric hash for each argument, add to seedling
53 var hash = 0;
54 for (var k = 0; k < arguments[i].length; k++) {
55 hash = arguments[i].charCodeAt(k) + (hash << 6) + (hash << 16) - hash;
56 }
57 seedling += hash;
58 }
59 } else {
60 seedling = arguments[i];
61 }
62 this.seed += (arguments.length - i) * seedling;
63 }
64
65 // If no generator function was provided, use our MT
66 this.mt = this.mersenne_twister(this.seed);
67 this.bimd5 = this.blueimp_md5();
68 this.random = function () {
69 return this.mt.random(this.seed);
70 };
71
72 return this;
73 }
74
75 Chance.prototype.VERSION = "1.1.12";
76
77 // Random helper functions
78 function initOptions(options, defaults) {
79 options = options || {};
80
81 if (defaults) {
82 for (var i in defaults) {
83 if (typeof options[i] === 'undefined') {
84 options[i] = defaults[i];
85 }
86 }
87 }
88
89 return options;
90 }
91
92 function range(size) {
93 return Array.apply(null, Array(size)).map(function (_, i) {return i;});
94 }
95
96 function testRange(test, errorMessage) {
97 if (test) {
98 throw new RangeError(errorMessage);
99 }
100 }
101
102 /**
103 * Encode the input string with Base64.
104 */
105 var base64 = function() {
106 throw new Error('No Base64 encoder available.');
107 };
108
109 // Select proper Base64 encoder.
110 (function determineBase64Encoder() {
111 if (typeof btoa === 'function') {
112 base64 = btoa;
113 } else if (typeof Buffer === 'function') {
114 base64 = function(input) {
115 return new Buffer(input).toString('base64');
116 };
117 }
118 })();
119
120 // -- Basics --
121
122 /**
123 * Return a random bool, either true or false
124 *
125 * @param {Object} [options={ likelihood: 50 }] alter the likelihood of
126 * receiving a true or false value back.
127 * @throws {RangeError} if the likelihood is out of bounds
128 * @returns {Bool} either true or false
129 */
130 Chance.prototype.bool = function (options) {
131 // likelihood of success (true)
132 options = initOptions(options, {likelihood : 50});
133
134 // Note, we could get some minor perf optimizations by checking range
135 // prior to initializing defaults, but that makes code a bit messier
136 // and the check more complicated as we have to check existence of
137 // the object then existence of the key before checking constraints.
138 // Since the options initialization should be minor computationally,
139 // decision made for code cleanliness intentionally. This is mentioned
140 // here as it's the first occurrence, will not be mentioned again.
141 testRange(
142 options.likelihood < 0 || options.likelihood > 100,
143 "Chance: Likelihood accepts values from 0 to 100."
144 );
145
146 return this.random() * 100 < options.likelihood;
147 };
148
149 Chance.prototype.falsy = function (options) {
150 // return a random falsy value
151 options = initOptions(options, {pool: [false, null, 0, NaN, '', undefined]})
152 var pool = options.pool,
153 index = this.integer({min: 0, max: pool.length - 1}),
154 value = pool[index];
155
156 return value;
157 }
158
159 Chance.prototype.animal = function (options){
160 //returns a random animal
161 options = initOptions(options);
162
163 if(typeof options.type !== 'undefined'){
164 //if user does not put in a valid animal type, user will get an error
165 testRange(
166 !this.get("animals")[options.type.toLowerCase()],
167 "Please pick from desert, ocean, grassland, forest, zoo, pets, farm."
168 );
169 //if user does put in valid animal type, will return a random animal of that type
170 return this.pick(this.get("animals")[options.type.toLowerCase()]);
171 }
172 //if user does not put in any animal type, will return a random animal regardless
173 var animalTypeArray = ["desert","forest","ocean","zoo","farm","pet","grassland"];
174 return this.pick(this.get("animals")[this.pick(animalTypeArray)]);
175 };
176
177 /**
178 * Return a random character.
179 *
180 * @param {Object} [options={}] can specify a character pool or alpha,
181 * numeric, symbols and casing (lower or upper)
182 * @returns {String} a single random character
183 */
184 Chance.prototype.character = function (options) {
185 options = initOptions(options);
186
187 var symbols = "!@#$%^&*()[]",
188 letters, pool;
189
190 if (options.casing === 'lower') {
191 letters = CHARS_LOWER;
192 } else if (options.casing === 'upper') {
193 letters = CHARS_UPPER;
194 } else {
195 letters = CHARS_LOWER + CHARS_UPPER;
196 }
197
198 if (options.pool) {
199 pool = options.pool;
200 } else {
201 pool = '';
202 if (options.alpha) {
203 pool += letters;
204 }
205 if (options.numeric) {
206 pool += NUMBERS;
207 }
208 if (options.symbols) {
209 pool += symbols;
210 }
211 if (!pool) {
212 pool = letters + NUMBERS + symbols;
213 }
214 }
215
216 return pool.charAt(this.natural({max: (pool.length - 1)}));
217 };
218
219 // Note, wanted to use "float" or "double" but those are both JS reserved words.
220
221 // Note, fixed means N OR LESS digits after the decimal. This because
222 // It could be 14.9000 but in JavaScript, when this is cast as a number,
223 // the trailing zeroes are dropped. Left to the consumer if trailing zeroes are
224 // needed
225 /**
226 * Return a random floating point number
227 *
228 * @param {Object} [options={}] can specify a fixed precision, min, max
229 * @returns {Number} a single floating point number
230 * @throws {RangeError} Can only specify fixed or precision, not both. Also
231 * min cannot be greater than max
232 */
233 Chance.prototype.floating = function (options) {
234 options = initOptions(options, {fixed : 4});
235 testRange(
236 options.fixed && options.precision,
237 "Chance: Cannot specify both fixed and precision."
238 );
239
240 var num;
241 var fixed = Math.pow(10, options.fixed);
242
243 var max = MAX_INT / fixed;
244 var min = -max;
245
246 testRange(
247 options.min && options.fixed && options.min < min,
248 "Chance: Min specified is out of range with fixed. Min should be, at least, " + min
249 );
250 testRange(
251 options.max && options.fixed && options.max > max,
252 "Chance: Max specified is out of range with fixed. Max should be, at most, " + max
253 );
254
255 options = initOptions(options, { min : min, max : max });
256
257 // Todo - Make this work!
258 // options.precision = (typeof options.precision !== "undefined") ? options.precision : false;
259
260 num = this.integer({min: options.min * fixed, max: options.max * fixed});
261 var num_fixed = (num / fixed).toFixed(options.fixed);
262
263 return parseFloat(num_fixed);
264 };
265
266 /**
267 * Return a random integer
268 *
269 * NOTE the max and min are INCLUDED in the range. So:
270 * chance.integer({min: 1, max: 3});
271 * would return either 1, 2, or 3.
272 *
273 * @param {Object} [options={}] can specify a min and/or max
274 * @returns {Number} a single random integer number
275 * @throws {RangeError} min cannot be greater than max
276 */
277 Chance.prototype.integer = function (options) {
278 // 9007199254740992 (2^53) is the max integer number in JavaScript
279 // See: http://vq.io/132sa2j
280 options = initOptions(options, {min: MIN_INT, max: MAX_INT});
281 testRange(options.min > options.max, "Chance: Min cannot be greater than Max.");
282
283 return Math.floor(this.random() * (options.max - options.min + 1) + options.min);
284 };
285
286 /**
287 * Return a random natural
288 *
289 * NOTE the max and min are INCLUDED in the range. So:
290 * chance.natural({min: 1, max: 3});
291 * would return either 1, 2, or 3.
292 *
293 * @param {Object} [options={}] can specify a min and/or max or a numerals count.
294 * @returns {Number} a single random integer number
295 * @throws {RangeError} min cannot be greater than max
296 */
297 Chance.prototype.natural = function (options) {
298 options = initOptions(options, {min: 0, max: MAX_INT});
299 if (typeof options.numerals === 'number'){
300 testRange(options.numerals < 1, "Chance: Numerals cannot be less than one.");
301 options.min = Math.pow(10, options.numerals - 1);
302 options.max = Math.pow(10, options.numerals) - 1;
303 }
304 testRange(options.min < 0, "Chance: Min cannot be less than zero.");
305
306 if (options.exclude) {
307 testRange(!Array.isArray(options.exclude), "Chance: exclude must be an array.")
308
309 for (var exclusionIndex in options.exclude) {
310 testRange(!Number.isInteger(options.exclude[exclusionIndex]), "Chance: exclude must be numbers.")
311 }
312
313 var random = options.min + this.natural({max: options.max - options.min - options.exclude.length})
314 var sortedExclusions = options.exclude.sort();
315 for (var sortedExclusionIndex in sortedExclusions) {
316 if (random < sortedExclusions[sortedExclusionIndex]) {
317 break
318 }
319 random++
320 }
321 return random
322 }
323 return this.integer(options);
324 };
325
326 /**
327 * Return a random prime number
328 *
329 * NOTE the max and min are INCLUDED in the range.
330 *
331 * @param {Object} [options={}] can specify a min and/or max
332 * @returns {Number} a single random prime number
333 * @throws {RangeError} min cannot be greater than max nor negative
334 */
335 Chance.prototype.prime = function (options) {
336 options = initOptions(options, {min: 0, max: 10000});
337 testRange(options.min < 0, "Chance: Min cannot be less than zero.");
338 testRange(options.min > options.max, "Chance: Min cannot be greater than Max.");
339
340 var lastPrime = data.primes[data.primes.length - 1];
341 if (options.max > lastPrime) {
342 for (var i = lastPrime + 2; i <= options.max; ++i) {
343 if (this.is_prime(i)) {
344 data.primes.push(i);
345 }
346 }
347 }
348 var targetPrimes = data.primes.filter(function (prime) {
349 return prime >= options.min && prime <= options.max;
350 });
351 return this.pick(targetPrimes);
352 };
353
354 /**
355 * Determine whether a given number is prime or not.
356 */
357 Chance.prototype.is_prime = function (n) {
358 if (n % 1 || n < 2) {
359 return false;
360 }
361 if (n % 2 === 0) {
362 return n === 2;
363 }
364 if (n % 3 === 0) {
365 return n === 3;
366 }
367 var m = Math.sqrt(n);
368 for (var i = 5; i <= m; i += 6) {
369 if (n % i === 0 || n % (i + 2) === 0) {
370 return false;
371 }
372 }
373 return true;
374 };
375
376 /**
377 * Return a random hex number as string
378 *
379 * NOTE the max and min are INCLUDED in the range. So:
380 * chance.hex({min: '9', max: 'B'});
381 * would return either '9', 'A' or 'B'.
382 *
383 * @param {Object} [options={}] can specify a min and/or max and/or casing
384 * @returns {String} a single random string hex number
385 * @throws {RangeError} min cannot be greater than max
386 */
387 Chance.prototype.hex = function (options) {
388 options = initOptions(options, {min: 0, max: MAX_INT, casing: 'lower'});
389 testRange(options.min < 0, "Chance: Min cannot be less than zero.");
390 var integer = this.natural({min: options.min, max: options.max});
391 if (options.casing === 'upper') {
392 return integer.toString(16).toUpperCase();
393 }
394 return integer.toString(16);
395 };
396
397 Chance.prototype.letter = function(options) {
398 options = initOptions(options, {casing: 'lower'});
399 var pool = "abcdefghijklmnopqrstuvwxyz";
400 var letter = this.character({pool: pool});
401 if (options.casing === 'upper') {
402 letter = letter.toUpperCase();
403 }
404 return letter;
405 }
406
407 /**
408 * Return a random string
409 *
410 * @param {Object} [options={}] can specify a length or min and max
411 * @returns {String} a string of random length
412 * @throws {RangeError} length cannot be less than zero
413 */
414 Chance.prototype.string = function (options) {
415 options = initOptions(options, { min: 5, max: 20 });
416
417 if (options.length !== 0 && !options.length) {
418 options.length = this.natural({ min: options.min, max: options.max })
419 }
420
421 testRange(options.length < 0, "Chance: Length cannot be less than zero.");
422 var length = options.length,
423 text = this.n(this.character, length, options);
424
425 return text.join("");
426 };
427
428 function CopyToken(c) {
429 this.c = c
430 }
431
432 CopyToken.prototype = {
433 substitute: function () {
434 return this.c
435 }
436 }
437
438 function EscapeToken(c) {
439 this.c = c
440 }
441
442 EscapeToken.prototype = {
443 substitute: function () {
444 if (!/[{}\\]/.test(this.c)) {
445 throw new Error('Invalid escape sequence: "\\' + this.c + '".')
446 }
447 return this.c
448 }
449 }
450
451 function ReplaceToken(c) {
452 this.c = c
453 }
454
455 ReplaceToken.prototype = {
456 replacers: {
457 '#': function (chance) { return chance.character({ pool: NUMBERS }) },
458 'A': function (chance) { return chance.character({ pool: CHARS_UPPER }) },
459 'a': function (chance) { return chance.character({ pool: CHARS_LOWER }) },
460 },
461
462 substitute: function (chance) {
463 var replacer = this.replacers[this.c]
464 if (!replacer) {
465 throw new Error('Invalid replacement character: "' + this.c + '".')
466 }
467 return replacer(chance)
468 }
469 }
470
471 function parseTemplate(template) {
472 var tokens = []
473 var mode = 'identity'
474 for (var i = 0; i<template.length; i++) {
475 var c = template[i]
476 switch (mode) {
477 case 'escape':
478 tokens.push(new EscapeToken(c))
479 mode = 'identity'
480 break
481 case 'identity':
482 if (c === '{') {
483 mode = 'replace'
484 } else if (c === '\\') {
485 mode = 'escape'
486 } else {
487 tokens.push(new CopyToken(c))
488 }
489 break
490 case 'replace':
491 if (c === '}') {
492 mode = 'identity'
493 } else {
494 tokens.push(new ReplaceToken(c))
495 }
496 break
497 }
498 }
499 return tokens
500 }
501
502 /**
503 * Return a random string matching the given template.
504 *
505 * The template consists of any number of "character replacement" and
506 * "character literal" sequences. A "character replacement" sequence
507 * starts with a left brace, has any number of special replacement
508 * characters, and ends with a right brace. A character literal can be any
509 * character except a brace or a backslash. A literal brace or backslash
510 * character can be included in the output by escaping with a backslash.
511 *
512 * The following replacement characters can be used in a replacement
513 * sequence:
514 *
515 * "#": a random digit
516 * "a": a random lower case letter
517 * "A": a random upper case letter
518 *
519 * Example: chance.template('{AA###}-{##}')
520 *
521 * @param {String} template string.
522 * @returns {String} a random string matching the template.
523 */
524 Chance.prototype.template = function (template) {
525 if (!template) {
526 throw new Error('Template string is required')
527 }
528 var self = this
529 return parseTemplate(template)
530 .map(function (token) { return token.substitute(self) })
531 .join('');
532 };
533
534
535 /**
536 * Return a random buffer
537 *
538 * @param {Object} [options={}] can specify a length
539 * @returns {Buffer} a buffer of random length
540 * @throws {RangeError} length cannot be less than zero
541 */
542 Chance.prototype.buffer = function (options) {
543 if (typeof Buffer === 'undefined') {
544 throw new UnsupportedError('Sorry, the buffer() function is not supported on your platform');
545 }
546 options = initOptions(options, { length: this.natural({min: 5, max: 20}) });
547 testRange(options.length < 0, "Chance: Length cannot be less than zero.");
548 var length = options.length;
549 var content = this.n(this.character, length, options);
550
551 return Buffer.from(content);
552 };
553
554 // -- End Basics --
555
556 // -- Helpers --
557
558 Chance.prototype.capitalize = function (word) {
559 return word.charAt(0).toUpperCase() + word.substr(1);
560 };
561
562 Chance.prototype.mixin = function (obj) {
563 for (var func_name in obj) {
564 this[func_name] = obj[func_name];
565 }
566 return this;
567 };
568
569 /**
570 * Given a function that generates something random and a number of items to generate,
571 * return an array of items where none repeat.
572 *
573 * @param {Function} fn the function that generates something random
574 * @param {Number} num number of terms to generate
575 * @param {Object} options any options to pass on to the generator function
576 * @returns {Array} an array of length `num` with every item generated by `fn` and unique
577 *
578 * There can be more parameters after these. All additional parameters are provided to the given function
579 */
580 Chance.prototype.unique = function(fn, num, options) {
581 testRange(
582 typeof fn !== "function",
583 "Chance: The first argument must be a function."
584 );
585
586 var comparator = function(arr, val) { return arr.indexOf(val) !== -1; };
587
588 if (options) {
589 comparator = options.comparator || comparator;
590 }
591
592 var arr = [], count = 0, result, MAX_DUPLICATES = num * 50, params = slice.call(arguments, 2);
593
594 while (arr.length < num) {
595 var clonedParams = JSON.parse(JSON.stringify(params));
596 result = fn.apply(this, clonedParams);
597 if (!comparator(arr, result)) {
598 arr.push(result);
599 // reset count when unique found
600 count = 0;
601 }
602
603 if (++count > MAX_DUPLICATES) {
604 throw new RangeError("Chance: num is likely too large for sample set");
605 }
606 }
607 return arr;
608 };
609
610 /**
611 * Gives an array of n random terms
612 *
613 * @param {Function} fn the function that generates something random
614 * @param {Number} n number of terms to generate
615 * @returns {Array} an array of length `n` with items generated by `fn`
616 *
617 * There can be more parameters after these. All additional parameters are provided to the given function
618 */
619 Chance.prototype.n = function(fn, n) {
620 testRange(
621 typeof fn !== "function",
622 "Chance: The first argument must be a function."
623 );
624
625 if (typeof n === 'undefined') {
626 n = 1;
627 }
628 var i = n, arr = [], params = slice.call(arguments, 2);
629
630 // Providing a negative count should result in a noop.
631 i = Math.max( 0, i );
632
633 for (null; i--; null) {
634 arr.push(fn.apply(this, params));
635 }
636
637 return arr;
638 };
639
640 // H/T to SO for this one: http://vq.io/OtUrZ5
641 Chance.prototype.pad = function (number, width, pad) {
642 // Default pad to 0 if none provided
643 pad = pad || '0';
644 // Convert number to a string
645 number = number + '';
646 return number.length >= width ? number : new Array(width - number.length + 1).join(pad) + number;
647 };
648
649 // DEPRECATED on 2015-10-01
650 Chance.prototype.pick = function (arr, count) {
651 if (arr.length === 0) {
652 throw new RangeError("Chance: Cannot pick() from an empty array");
653 }
654 if (!count || count === 1) {
655 return arr[this.natural({max: arr.length - 1})];
656 } else {
657 return this.shuffle(arr).slice(0, count);
658 }
659 };
660
661 // Given an array, returns a single random element
662 Chance.prototype.pickone = function (arr) {
663 if (arr.length === 0) {
664 throw new RangeError("Chance: Cannot pickone() from an empty array");
665 }
666 return arr[this.natural({max: arr.length - 1})];
667 };
668
669 // Given an array, returns a random set with 'count' elements
670 Chance.prototype.pickset = function (arr, count) {
671 if (count === 0) {
672 return [];
673 }
674 if (arr.length === 0) {
675 throw new RangeError("Chance: Cannot pickset() from an empty array");
676 }
677 if (count < 0) {
678 throw new RangeError("Chance: Count must be a positive number");
679 }
680 if (!count || count === 1) {
681 return [ this.pickone(arr) ];
682 } else {
683 var array = arr.slice(0);
684 var end = array.length;
685
686 return this.n(function () {
687 var index = this.natural({max: --end});
688 var value = array[index];
689 array[index] = array[end];
690 return value;
691 }, Math.min(end, count));
692 }
693 };
694
695 Chance.prototype.shuffle = function (arr) {
696 var new_array = [],
697 j = 0,
698 length = Number(arr.length),
699 source_indexes = range(length),
700 last_source_index = length - 1,
701 selected_source_index;
702
703 for (var i = 0; i < length; i++) {
704 // Pick a random index from the array
705 selected_source_index = this.natural({max: last_source_index});
706 j = source_indexes[selected_source_index];
707
708 // Add it to the new array
709 new_array[i] = arr[j];
710
711 // Mark the source index as used
712 source_indexes[selected_source_index] = source_indexes[last_source_index];
713 last_source_index -= 1;
714 }
715
716 return new_array;
717 };
718
719 // Returns a single item from an array with relative weighting of odds
720 Chance.prototype.weighted = function (arr, weights, trim) {
721 if (arr.length !== weights.length) {
722 throw new RangeError("Chance: Length of array and weights must match");
723 }
724
725 // scan weights array and sum valid entries
726 var sum = 0;
727 var val;
728 for (var weightIndex = 0; weightIndex < weights.length; ++weightIndex) {
729 val = weights[weightIndex];
730 if (isNaN(val)) {
731 throw new RangeError("Chance: All weights must be numbers");
732 }
733
734 if (val > 0) {
735 sum += val;
736 }
737 }
738
739 if (sum === 0) {
740 throw new RangeError("Chance: No valid entries in array weights");
741 }
742
743 // select a value within range
744 var selected = this.random() * sum;
745
746 // find array entry corresponding to selected value
747 var total = 0;
748 var lastGoodIdx = -1;
749 var chosenIdx;
750 for (weightIndex = 0; weightIndex < weights.length; ++weightIndex) {
751 val = weights[weightIndex];
752 total += val;
753 if (val > 0) {
754 if (selected <= total) {
755 chosenIdx = weightIndex;
756 break;
757 }
758 lastGoodIdx = weightIndex;
759 }
760
761 // handle any possible rounding error comparison to ensure something is picked
762 if (weightIndex === (weights.length - 1)) {
763 chosenIdx = lastGoodIdx;
764 }
765 }
766
767 var chosen = arr[chosenIdx];
768 trim = (typeof trim === 'undefined') ? false : trim;
769 if (trim) {
770 arr.splice(chosenIdx, 1);
771 weights.splice(chosenIdx, 1);
772 }
773
774 return chosen;
775 };
776
777 // -- End Helpers --
778
779 // -- Text --
780
781 Chance.prototype.paragraph = function (options) {
782 options = initOptions(options);
783
784 var sentences = options.sentences || this.natural({min: 3, max: 7}),
785 sentence_array = this.n(this.sentence, sentences),
786 separator = options.linebreak === true ? '\n' : ' ';
787
788 return sentence_array.join(separator);
789 };
790
791 // Could get smarter about this than generating random words and
792 // chaining them together. Such as: http://vq.io/1a5ceOh
793 Chance.prototype.sentence = function (options) {
794 options = initOptions(options);
795
796 var words = options.words || this.natural({min: 12, max: 18}),
797 punctuation = options.punctuation,
798 text, word_array = this.n(this.word, words);
799
800 text = word_array.join(' ');
801
802 // Capitalize first letter of sentence
803 text = this.capitalize(text);
804
805 // Make sure punctuation has a usable value
806 if (punctuation !== false && !/^[.?;!:]$/.test(punctuation)) {
807 punctuation = '.';
808 }
809
810 // Add punctuation mark
811 if (punctuation) {
812 text += punctuation;
813 }
814
815 return text;
816 };
817
818 Chance.prototype.syllable = function (options) {
819 options = initOptions(options);
820
821 var length = options.length || this.natural({min: 2, max: 3}),
822 consonants = 'bcdfghjklmnprstvwz', // consonants except hard to speak ones
823 vowels = 'aeiou', // vowels
824 all = consonants + vowels, // all
825 text = '',
826 chr;
827
828 // I'm sure there's a more elegant way to do this, but this works
829 // decently well.
830 for (var i = 0; i < length; i++) {
831 if (i === 0) {
832 // First character can be anything
833 chr = this.character({pool: all});
834 } else if (consonants.indexOf(chr) === -1) {
835 // Last character was a vowel, now we want a consonant
836 chr = this.character({pool: consonants});
837 } else {
838 // Last character was a consonant, now we want a vowel
839 chr = this.character({pool: vowels});
840 }
841
842 text += chr;
843 }
844
845 if (options.capitalize) {
846 text = this.capitalize(text);
847 }
848
849 return text;
850 };
851
852 Chance.prototype.word = function (options) {
853 options = initOptions(options);
854
855 testRange(
856 options.syllables && options.length,
857 "Chance: Cannot specify both syllables AND length."
858 );
859
860 var syllables = options.syllables || this.natural({min: 1, max: 3}),
861 text = '';
862
863 if (options.length) {
864 // Either bound word by length
865 do {
866 text += this.syllable();
867 } while (text.length < options.length);
868 text = text.substring(0, options.length);
869 } else {
870 // Or by number of syllables
871 for (var i = 0; i < syllables; i++) {
872 text += this.syllable();
873 }
874 }
875
876 if (options.capitalize) {
877 text = this.capitalize(text);
878 }
879
880 return text;
881 };
882
883 Chance.prototype.emoji = function (options) {
884 options = initOptions(options, { category: "all", length: 1 });
885
886 testRange(
887 options.length < 1 || BigInt(options.length) > BigInt(MAX_INT),
888 "Chance: length must be between 1 and " + String(MAX_INT)
889 );
890
891 var emojis = this.get("emojis");
892
893 if (options.category === "all") {
894 options.category = this.pickone(Object.keys(emojis));
895 }
896
897 var emojisForCategory = emojis[options.category];
898
899 testRange(
900 emojisForCategory === undefined,
901 "Chance: Unrecognised emoji category: [" + options.category + "]."
902 );
903
904 return this.pickset(emojisForCategory, options.length)
905 .map(function (codePoint) {
906 return String.fromCodePoint(codePoint);
907 }).join("");
908 };
909
910 // -- End Text --
911
912 // -- Person --
913
914 Chance.prototype.age = function (options) {
915 options = initOptions(options);
916 var ageRange;
917
918 switch (options.type) {
919 case 'child':
920 ageRange = {min: 0, max: 12};
921 break;
922 case 'teen':
923 ageRange = {min: 13, max: 19};
924 break;
925 case 'adult':
926 ageRange = {min: 18, max: 65};
927 break;
928 case 'senior':
929 ageRange = {min: 65, max: 100};
930 break;
931 case 'all':
932 ageRange = {min: 0, max: 100};
933 break;
934 default:
935 ageRange = {min: 18, max: 65};
936 break;
937 }
938
939 return this.natural(ageRange);
940 };
941
942 Chance.prototype.birthday = function (options) {
943 var age = this.age(options);
944 var now = new Date()
945 var currentYear = now.getFullYear();
946
947 if (options && options.type) {
948 var min = new Date();
949 var max = new Date();
950 min.setFullYear(currentYear - age - 1);
951 max.setFullYear(currentYear - age);
952
953 options = initOptions(options, {
954 min: min,
955 max: max
956 });
957 } else if (options && ((options.minAge !== undefined) || (options.maxAge !== undefined))) {
958 testRange(options.minAge < 0, "Chance: MinAge cannot be less than zero.");
959 testRange(options.minAge > options.maxAge, "Chance: MinAge cannot be greater than MaxAge.");
960
961 var minAge = options.minAge !== undefined ? options.minAge : 0;
962 var maxAge = options.maxAge !== undefined ? options.maxAge : 100;
963
964 var minDate = new Date(currentYear - maxAge - 1, now.getMonth(), now.getDate());
965 var maxDate = new Date(currentYear - minAge, now.getMonth(), now.getDate());
966
967 minDate.setDate(minDate.getDate() +1);
968
969 maxDate.setDate(maxDate.getDate() +1);
970 maxDate.setMilliseconds(maxDate.getMilliseconds() -1);
971
972 options = initOptions(options, {
973 min: minDate,
974 max: maxDate
975 });
976 } else {
977 options = initOptions(options, {
978 year: currentYear - age
979 });
980 }
981
982 return this.date(options);
983 };
984
985 // CPF; ID to identify taxpayers in Brazil
986 Chance.prototype.cpf = function (options) {
987 options = initOptions(options, {
988 formatted: true
989 });
990
991 var n = this.n(this.natural, 9, { max: 9 });
992 var d1 = n[8]*2+n[7]*3+n[6]*4+n[5]*5+n[4]*6+n[3]*7+n[2]*8+n[1]*9+n[0]*10;
993 d1 = 11 - (d1 % 11);
994 if (d1>=10) {
995 d1 = 0;
996 }
997 var d2 = d1*2+n[8]*3+n[7]*4+n[6]*5+n[5]*6+n[4]*7+n[3]*8+n[2]*9+n[1]*10+n[0]*11;
998 d2 = 11 - (d2 % 11);
999 if (d2>=10) {
1000 d2 = 0;
1001 }
1002 var cpf = ''+n[0]+n[1]+n[2]+'.'+n[3]+n[4]+n[5]+'.'+n[6]+n[7]+n[8]+'-'+d1+d2;
1003 return options.formatted ? cpf : cpf.replace(/\D/g,'');
1004 };
1005
1006 // CNPJ: ID to identify companies in Brazil
1007 Chance.prototype.cnpj = function (options) {
1008 options = initOptions(options, {
1009 formatted: true
1010 });
1011
1012 var n = this.n(this.natural, 12, { max: 12 });
1013 var d1 = n[11]*2+n[10]*3+n[9]*4+n[8]*5+n[7]*6+n[6]*7+n[5]*8+n[4]*9+n[3]*2+n[2]*3+n[1]*4+n[0]*5;
1014 d1 = 11 - (d1 % 11);
1015 if (d1<2) {
1016 d1 = 0;
1017 }
1018 var d2 = d1*2+n[11]*3+n[10]*4+n[9]*5+n[8]*6+n[7]*7+n[6]*8+n[5]*9+n[4]*2+n[3]*3+n[2]*4+n[1]*5+n[0]*6;
1019 d2 = 11 - (d2 % 11);
1020 if (d2<2) {
1021 d2 = 0;
1022 }
1023 var cnpj = ''+n[0]+n[1]+'.'+n[2]+n[3]+n[4]+'.'+n[5]+n[6]+n[7]+'/'+n[8]+n[9]+n[10]+n[11]+'-'+d1+d2;
1024 return options.formatted ? cnpj : cnpj.replace(/\D/g,'');
1025 };
1026
1027 Chance.prototype.first = function (options) {
1028 options = initOptions(options, {gender: this.gender(), nationality: 'en'});
1029 return this.pick(this.get("firstNames")[options.gender.toLowerCase()][options.nationality.toLowerCase()]);
1030 };
1031
1032 Chance.prototype.profession = function (options) {
1033 options = initOptions(options);
1034 if(options.rank){
1035 return this.pick(['Apprentice ', 'Junior ', 'Senior ', 'Lead ']) + this.pick(this.get("profession"));
1036 } else{
1037 return this.pick(this.get("profession"));
1038 }
1039 };
1040
1041 Chance.prototype.company = function (){
1042 return this.pick(this.get("company"));
1043 };
1044
1045 Chance.prototype.gender = function (options) {
1046 options = initOptions(options, {extraGenders: []});
1047 return this.pick(['Male', 'Female'].concat(options.extraGenders));
1048 };
1049
1050 Chance.prototype.last = function (options) {
1051 options = initOptions(options, {nationality: '*'});
1052 if (options.nationality === "*") {
1053 var allLastNames = []
1054 var lastNames = this.get("lastNames")
1055 Object.keys(lastNames).forEach(function(key){
1056 allLastNames = allLastNames.concat(lastNames[key])
1057 })
1058 return this.pick(allLastNames)
1059 }
1060 else {
1061 return this.pick(this.get("lastNames")[options.nationality.toLowerCase()]);
1062 }
1063
1064 };
1065
1066 Chance.prototype.israelId=function(){
1067 var x=this.string({pool: '0123456789',length:8});
1068 var y=0;
1069 for (var i=0;i<x.length;i++){
1070 var thisDigit= x[i] * (i/2===parseInt(i/2) ? 1 : 2);
1071 thisDigit=this.pad(thisDigit,2).toString();
1072 thisDigit=parseInt(thisDigit[0]) + parseInt(thisDigit[1]);
1073 y=y+thisDigit;
1074 }
1075 x=x+(10-parseInt(y.toString().slice(-1))).toString().slice(-1);
1076 return x;
1077 };
1078
1079 Chance.prototype.mrz = function (options) {
1080 var checkDigit = function (input) {
1081 var alpha = "<ABCDEFGHIJKLMNOPQRSTUVWXYXZ".split(''),
1082 multipliers = [ 7, 3, 1 ],
1083 runningTotal = 0;
1084
1085 if (typeof input !== 'string') {
1086 input = input.toString();
1087 }
1088
1089 input.split('').forEach(function(character, idx) {
1090 var pos = alpha.indexOf(character);
1091
1092 if(pos !== -1) {
1093 character = pos === 0 ? 0 : pos + 9;
1094 } else {
1095 character = parseInt(character, 10);
1096 }
1097 character *= multipliers[idx % multipliers.length];
1098 runningTotal += character;
1099 });
1100 return runningTotal % 10;
1101 };
1102 var generate = function (opts) {
1103 var pad = function (length) {
1104 return new Array(length + 1).join('<');
1105 };
1106 var number = [ 'P<',
1107 opts.issuer,
1108 opts.last.toUpperCase(),
1109 '<<',
1110 opts.first.toUpperCase(),
1111 pad(39 - (opts.last.length + opts.first.length + 2)),
1112 opts.passportNumber,
1113 checkDigit(opts.passportNumber),
1114 opts.nationality,
1115 opts.dob,
1116 checkDigit(opts.dob),
1117 opts.gender,
1118 opts.expiry,
1119 checkDigit(opts.expiry),
1120 pad(14),
1121 checkDigit(pad(14)) ].join('');
1122
1123 return number +
1124 (checkDigit(number.substr(44, 10) +
1125 number.substr(57, 7) +
1126 number.substr(65, 7)));
1127 };
1128
1129 var that = this;
1130
1131 options = initOptions(options, {
1132 first: this.first(),
1133 last: this.last(),
1134 passportNumber: this.integer({min: 100000000, max: 999999999}),
1135 dob: (function () {
1136 var date = that.birthday({type: 'adult'});
1137 return [date.getFullYear().toString().substr(2),
1138 that.pad(date.getMonth() + 1, 2),
1139 that.pad(date.getDate(), 2)].join('');
1140 }()),
1141 expiry: (function () {
1142 var date = new Date();
1143 return [(date.getFullYear() + 5).toString().substr(2),
1144 that.pad(date.getMonth() + 1, 2),
1145 that.pad(date.getDate(), 2)].join('');
1146 }()),
1147 gender: this.gender() === 'Female' ? 'F': 'M',
1148 issuer: 'GBR',
1149 nationality: 'GBR'
1150 });
1151 return generate (options);
1152 };
1153
1154 Chance.prototype.name = function (options) {
1155 options = initOptions(options);
1156
1157 var first = this.first(options),
1158 last = this.last(options),
1159 name;
1160
1161 if (options.middle) {
1162 name = first + ' ' + this.first(options) + ' ' + last;
1163 } else if (options.middle_initial) {
1164 name = first + ' ' + this.character({alpha: true, casing: 'upper'}) + '. ' + last;
1165 } else {
1166 name = first + ' ' + last;
1167 }
1168
1169 if (options.prefix) {
1170 name = this.prefix(options) + ' ' + name;
1171 }
1172
1173 if (options.suffix) {
1174 name = name + ' ' + this.suffix(options);
1175 }
1176
1177 return name;
1178 };
1179
1180 // Return the list of available name prefixes based on supplied gender.
1181 // @todo introduce internationalization
1182 Chance.prototype.name_prefixes = function (gender) {
1183 gender = gender || "all";
1184 gender = gender.toLowerCase();
1185
1186 var prefixes = [
1187 { name: 'Doctor', abbreviation: 'Dr.' }
1188 ];
1189
1190 if (gender === "male" || gender === "all") {
1191 prefixes.push({ name: 'Mister', abbreviation: 'Mr.' });
1192 }
1193
1194 if (gender === "female" || gender === "all") {
1195 prefixes.push({ name: 'Miss', abbreviation: 'Miss' });
1196 prefixes.push({ name: 'Misses', abbreviation: 'Mrs.' });
1197 }
1198
1199 return prefixes;
1200 };
1201
1202 // Alias for name_prefix
1203 Chance.prototype.prefix = function (options) {
1204 return this.name_prefix(options);
1205 };
1206
1207 Chance.prototype.name_prefix = function (options) {
1208 options = initOptions(options, { gender: "all" });
1209 return options.full ?
1210 this.pick(this.name_prefixes(options.gender)).name :
1211 this.pick(this.name_prefixes(options.gender)).abbreviation;
1212 };
1213 //Hungarian ID number
1214 Chance.prototype.HIDN= function(){
1215 //Hungarian ID nuber structure: XXXXXXYY (X=number,Y=Capital Latin letter)
1216 var idn_pool="0123456789";
1217 var idn_chrs="ABCDEFGHIJKLMNOPQRSTUVWXYXZ";
1218 var idn="";
1219 idn+=this.string({pool:idn_pool,length:6});
1220 idn+=this.string({pool:idn_chrs,length:2});
1221 return idn;
1222 };
1223
1224
1225 Chance.prototype.ssn = function (options) {
1226 options = initOptions(options, {ssnFour: false, dashes: true});
1227 var ssn_pool = "1234567890",
1228 ssn,
1229 dash = options.dashes ? '-' : '';
1230
1231 if(!options.ssnFour) {
1232 ssn = this.string({pool: ssn_pool, length: 3}) + dash +
1233 this.string({pool: ssn_pool, length: 2}) + dash +
1234 this.string({pool: ssn_pool, length: 4});
1235 } else {
1236 ssn = this.string({pool: ssn_pool, length: 4});
1237 }
1238 return ssn;
1239 };
1240
1241 // Aadhar is similar to ssn, used in India to uniquely identify a person
1242 Chance.prototype.aadhar = function (options) {
1243 options = initOptions(options, {onlyLastFour: false, separatedByWhiteSpace: true});
1244 var aadhar_pool = "1234567890",
1245 aadhar,
1246 whiteSpace = options.separatedByWhiteSpace ? ' ' : '';
1247
1248 if(!options.onlyLastFour) {
1249 aadhar = this.string({pool: aadhar_pool, length: 4}) + whiteSpace +
1250 this.string({pool: aadhar_pool, length: 4}) + whiteSpace +
1251 this.string({pool: aadhar_pool, length: 4});
1252 } else {
1253 aadhar = this.string({pool: aadhar_pool, length: 4});
1254 }
1255 return aadhar;
1256 };
1257
1258 // Return the list of available name suffixes
1259 // @todo introduce internationalization
1260 Chance.prototype.name_suffixes = function () {
1261 var suffixes = [
1262 { name: 'Doctor of Osteopathic Medicine', abbreviation: 'D.O.' },
1263 { name: 'Doctor of Philosophy', abbreviation: 'Ph.D.' },
1264 { name: 'Esquire', abbreviation: 'Esq.' },
1265 { name: 'Junior', abbreviation: 'Jr.' },
1266 { name: 'Juris Doctor', abbreviation: 'J.D.' },
1267 { name: 'Master of Arts', abbreviation: 'M.A.' },
1268 { name: 'Master of Business Administration', abbreviation: 'M.B.A.' },
1269 { name: 'Master of Science', abbreviation: 'M.S.' },
1270 { name: 'Medical Doctor', abbreviation: 'M.D.' },
1271 { name: 'Senior', abbreviation: 'Sr.' },
1272 { name: 'The Third', abbreviation: 'III' },
1273 { name: 'The Fourth', abbreviation: 'IV' },
1274 { name: 'Bachelor of Engineering', abbreviation: 'B.E' },
1275 { name: 'Bachelor of Technology', abbreviation: 'B.TECH' }
1276 ];
1277 return suffixes;
1278 };
1279
1280 // Alias for name_suffix
1281 Chance.prototype.suffix = function (options) {
1282 return this.name_suffix(options);
1283 };
1284
1285 Chance.prototype.name_suffix = function (options) {
1286 options = initOptions(options);
1287 return options.full ?
1288 this.pick(this.name_suffixes()).name :
1289 this.pick(this.name_suffixes()).abbreviation;
1290 };
1291
1292 Chance.prototype.nationalities = function () {
1293 return this.get("nationalities");
1294 };
1295
1296 // Generate random nationality based on json list
1297 Chance.prototype.nationality = function () {
1298 var nationality = this.pick(this.nationalities());
1299 return nationality.name;
1300 };
1301
1302 // Generate random zodiac sign
1303 Chance.prototype.zodiac = function () {
1304 const zodiacSymbols = ["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"];
1305 return this.pickone(zodiacSymbols);
1306 };
1307
1308
1309 // -- End Person --
1310
1311 // -- Mobile --
1312 // Android GCM Registration ID
1313 Chance.prototype.android_id = function () {
1314 return "APA91" + this.string({ pool: "0123456789abcefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_", length: 178 });
1315 };
1316
1317 // Apple Push Token
1318 Chance.prototype.apple_token = function () {
1319 return this.string({ pool: "abcdef1234567890", length: 64 });
1320 };
1321
1322 // Windows Phone 8 ANID2
1323 Chance.prototype.wp8_anid2 = function () {
1324 return base64( this.hash( { length : 32 } ) );
1325 };
1326
1327 // Windows Phone 7 ANID
1328 Chance.prototype.wp7_anid = function () {
1329 return 'A=' + this.guid().replace(/-/g, '').toUpperCase() + '&E=' + this.hash({ length:3 }) + '&W=' + this.integer({ min:0, max:9 });
1330 };
1331
1332 // BlackBerry Device PIN
1333 Chance.prototype.bb_pin = function () {
1334 return this.hash({ length: 8 });
1335 };
1336
1337 // -- End Mobile --
1338
1339 // -- Web --
1340 Chance.prototype.avatar = function (options) {
1341 var url = null;
1342 var URL_BASE = '//www.gravatar.com/avatar/';
1343 var PROTOCOLS = {
1344 http: 'http',
1345 https: 'https'
1346 };
1347 var FILE_TYPES = {
1348 bmp: 'bmp',
1349 gif: 'gif',
1350 jpg: 'jpg',
1351 png: 'png'
1352 };
1353 var FALLBACKS = {
1354 '404': '404', // Return 404 if not found
1355 mm: 'mm', // Mystery man
1356 identicon: 'identicon', // Geometric pattern based on hash
1357 monsterid: 'monsterid', // A generated monster icon
1358 wavatar: 'wavatar', // A generated face
1359 retro: 'retro', // 8-bit icon
1360 blank: 'blank' // A transparent png
1361 };
1362 var RATINGS = {
1363 g: 'g',
1364 pg: 'pg',
1365 r: 'r',
1366 x: 'x'
1367 };
1368 var opts = {
1369 protocol: null,
1370 email: null,
1371 fileExtension: null,
1372 size: null,
1373 fallback: null,
1374 rating: null
1375 };
1376
1377 if (!options) {
1378 // Set to a random email
1379 opts.email = this.email();
1380 options = {};
1381 }
1382 else if (typeof options === 'string') {
1383 opts.email = options;
1384 options = {};
1385 }
1386 else if (typeof options !== 'object') {
1387 return null;
1388 }
1389 else if (options.constructor === 'Array') {
1390 return null;
1391 }
1392
1393 opts = initOptions(options, opts);
1394
1395 if (!opts.email) {
1396 // Set to a random email
1397 opts.email = this.email();
1398 }
1399
1400 // Safe checking for params
1401 opts.protocol = PROTOCOLS[opts.protocol] ? opts.protocol + ':' : '';
1402 opts.size = parseInt(opts.size, 0) ? opts.size : '';
1403 opts.rating = RATINGS[opts.rating] ? opts.rating : '';
1404 opts.fallback = FALLBACKS[opts.fallback] ? opts.fallback : '';
1405 opts.fileExtension = FILE_TYPES[opts.fileExtension] ? opts.fileExtension : '';
1406
1407 url =
1408 opts.protocol +
1409 URL_BASE +
1410 this.bimd5.md5(opts.email) +
1411 (opts.fileExtension ? '.' + opts.fileExtension : '') +
1412 (opts.size || opts.rating || opts.fallback ? '?' : '') +
1413 (opts.size ? '&s=' + opts.size.toString() : '') +
1414 (opts.rating ? '&r=' + opts.rating : '') +
1415 (opts.fallback ? '&d=' + opts.fallback : '')
1416 ;
1417
1418 return url;
1419 };
1420
1421 /**
1422 * #Description:
1423 * ===============================================
1424 * Generate random color value base on color type:
1425 * -> hex
1426 * -> rgb
1427 * -> rgba
1428 * -> 0x
1429 * -> named color
1430 *
1431 * #Examples:
1432 * ===============================================
1433 * * Geerate random hex color
1434 * chance.color() => '#79c157' / 'rgb(110,52,164)' / '0x67ae0b' / '#e2e2e2' / '#29CFA7'
1435 *
1436 * * Generate Hex based color value
1437 * chance.color({format: 'hex'}) => '#d67118'
1438 *
1439 * * Generate simple rgb value
1440 * chance.color({format: 'rgb'}) => 'rgb(110,52,164)'
1441 *
1442 * * Generate Ox based color value
1443 * chance.color({format: '0x'}) => '0x67ae0b'
1444 *
1445 * * Generate graiscale based value
1446 * chance.color({grayscale: true}) => '#e2e2e2'
1447 *
1448 * * Return valide color name
1449 * chance.color({format: 'name'}) => 'red'
1450 *
1451 * * Make color uppercase
1452 * chance.color({casing: 'upper'}) => '#29CFA7'
1453 *
1454 * * Min Max values for RGBA
1455 * var light_red = chance.color({format: 'hex', min_red: 200, max_red: 255, max_green: 0, max_blue: 0, min_alpha: .2, max_alpha: .3});
1456 *
1457 * @param [object] options
1458 * @return [string] color value
1459 */
1460 Chance.prototype.color = function (options) {
1461 function gray(value, delimiter) {
1462 return [value, value, value].join(delimiter || '');
1463 }
1464
1465 function rgb(hasAlpha) {
1466 var rgbValue = (hasAlpha) ? 'rgba' : 'rgb';
1467 var alphaChannel = (hasAlpha) ? (',' + this.floating({min:min_alpha, max:max_alpha})) : "";
1468 var colorValue = (isGrayscale) ? (gray(this.natural({min: min_rgb, max: max_rgb}), ',')) : (this.natural({min: min_green, max: max_green}) + ',' + this.natural({min: min_blue, max: max_blue}) + ',' + this.natural({max: 255}));
1469 return rgbValue + '(' + colorValue + alphaChannel + ')';
1470 }
1471
1472 function hex(start, end, withHash) {
1473 var symbol = (withHash) ? "#" : "";
1474 var hexstring = "";
1475
1476 if (isGrayscale) {
1477 hexstring = gray(this.pad(this.hex({min: min_rgb, max: max_rgb}), 2));
1478 if (options.format === "shorthex") {
1479 hexstring = gray(this.hex({min: 0, max: 15}));
1480 }
1481 }
1482 else {
1483 if (options.format === "shorthex") {
1484 hexstring = this.pad(this.hex({min: Math.floor(min_red / 16), max: Math.floor(max_red / 16)}), 1) + this.pad(this.hex({min: Math.floor(min_green / 16), max: Math.floor(max_green / 16)}), 1) + this.pad(this.hex({min: Math.floor(min_blue / 16), max: Math.floor(max_blue / 16)}), 1);
1485 }
1486 else if (min_red !== undefined || max_red !== undefined || min_green !== undefined || max_green !== undefined || min_blue !== undefined || max_blue !== undefined) {
1487 hexstring = this.pad(this.hex({min: min_red, max: max_red}), 2) + this.pad(this.hex({min: min_green, max: max_green}), 2) + this.pad(this.hex({min: min_blue, max: max_blue}), 2);
1488 }
1489 else {
1490 hexstring = this.pad(this.hex({min: min_rgb, max: max_rgb}), 2) + this.pad(this.hex({min: min_rgb, max: max_rgb}), 2) + this.pad(this.hex({min: min_rgb, max: max_rgb}), 2);
1491 }
1492 }
1493
1494 return symbol + hexstring;
1495 }
1496
1497 options = initOptions(options, {
1498 format: this.pick(['hex', 'shorthex', 'rgb', 'rgba', '0x', 'name']),
1499 grayscale: false,
1500 casing: 'lower',
1501 min: 0,
1502 max: 255,
1503 min_red: undefined,
1504 max_red: undefined,
1505 min_green: undefined,
1506 max_green: undefined,
1507 min_blue: undefined,
1508 max_blue: undefined,
1509 min_alpha: 0,
1510 max_alpha: 1
1511 });
1512
1513 var isGrayscale = options.grayscale;
1514 var min_rgb = options.min;
1515 var max_rgb = options.max;
1516 var min_red = options.min_red;
1517 var max_red = options.max_red;
1518 var min_green = options.min_green;
1519 var max_green = options.max_green;
1520 var min_blue = options.min_blue;
1521 var max_blue = options.max_blue;
1522 var min_alpha = options.min_alpha;
1523 var max_alpha = options.max_alpha;
1524 if (options.min_red === undefined) { min_red = min_rgb; }
1525 if (options.max_red === undefined) { max_red = max_rgb; }
1526 if (options.min_green === undefined) { min_green = min_rgb; }
1527 if (options.max_green === undefined) { max_green = max_rgb; }
1528 if (options.min_blue === undefined) { min_blue = min_rgb; }
1529 if (options.max_blue === undefined) { max_blue = max_rgb; }
1530 if (options.min_alpha === undefined) { min_alpha = 0; }
1531 if (options.max_alpha === undefined) { max_alpha = 1; }
1532 if (isGrayscale && min_rgb === 0 && max_rgb === 255 && min_red !== undefined && max_red !== undefined) {
1533 min_rgb = ((min_red + min_green + min_blue) / 3);
1534 max_rgb = ((max_red + max_green + max_blue) / 3);
1535 }
1536 var colorValue;
1537
1538 if (options.format === 'hex') {
1539 colorValue = hex.call(this, 2, 6, true);
1540 }
1541 else if (options.format === 'shorthex') {
1542 colorValue = hex.call(this, 1, 3, true);
1543 }
1544 else if (options.format === 'rgb') {
1545 colorValue = rgb.call(this, false);
1546 }
1547 else if (options.format === 'rgba') {
1548 colorValue = rgb.call(this, true);
1549 }
1550 else if (options.format === '0x') {
1551 colorValue = '0x' + hex.call(this, 2, 6);
1552 }
1553 else if(options.format === 'name') {
1554 return this.pick(this.get("colorNames"));
1555 }
1556 else {
1557 throw new RangeError('Invalid format provided. Please provide one of "hex", "shorthex", "rgb", "rgba", "0x" or "name".');
1558 }
1559
1560 if (options.casing === 'upper' ) {
1561 colorValue = colorValue.toUpperCase();
1562 }
1563
1564 return colorValue;
1565 };
1566
1567 Chance.prototype.domain = function (options) {
1568 options = initOptions(options);
1569 return this.word() + '.' + (options.tld || this.tld());
1570 };
1571
1572 Chance.prototype.email = function (options) {
1573 options = initOptions(options);
1574 return this.word({length: options.length}) + '@' + (options.domain || this.domain());
1575 };
1576
1577 /**
1578 * #Description:
1579 * ===============================================
1580 * Generate a random Facebook id, aka fbid.
1581 *
1582 * NOTE: At the moment (Sep 2017), Facebook ids are
1583 * "numeric strings" of length 16.
1584 * However, Facebook Graph API documentation states that
1585 * "it is extremely likely to change over time".
1586 * @see https://developers.facebook.com/docs/graph-api/overview/
1587 *
1588 * #Examples:
1589 * ===============================================
1590 * chance.fbid() => '1000035231661304'
1591 *
1592 * @return [string] facebook id
1593 */
1594 Chance.prototype.fbid = function () {
1595 return '10000' + this.string({pool: "1234567890", length: 11});
1596 };
1597
1598 Chance.prototype.google_analytics = function () {
1599 var account = this.pad(this.natural({max: 999999}), 6);
1600 var property = this.pad(this.natural({max: 99}), 2);
1601
1602 return 'UA-' + account + '-' + property;
1603 };
1604
1605 Chance.prototype.hashtag = function () {
1606 return '#' + this.word();
1607 };
1608
1609 Chance.prototype.ip = function () {
1610 // Todo: This could return some reserved IPs. See http://vq.io/137dgYy
1611 // this should probably be updated to account for that rare as it may be
1612 return this.natural({min: 1, max: 254}) + '.' +
1613 this.natural({max: 255}) + '.' +
1614 this.natural({max: 255}) + '.' +
1615 this.natural({min: 1, max: 254});
1616 };
1617
1618 Chance.prototype.ipv6 = function () {
1619 var ip_addr = this.n(this.hash, 8, {length: 4});
1620
1621 return ip_addr.join(":");
1622 };
1623
1624 Chance.prototype.klout = function () {
1625 return this.natural({min: 1, max: 99});
1626 };
1627
1628 Chance.prototype.mac = function (options) {
1629 // Todo: This could also be extended to EUI-64 based MACs
1630 // (https://www.iana.org/assignments/ethernet-numbers/ethernet-numbers.xhtml#ethernet-numbers-4)
1631 // Todo: This can return some reserved MACs (similar to IP function)
1632 // this should probably be updated to account for that rare as it may be
1633 options = initOptions(options, { delimiter: ':' });
1634 return this.pad(this.natural({max: 255}).toString(16),2) + options.delimiter +
1635 this.pad(this.natural({max: 255}).toString(16),2) + options.delimiter +
1636 this.pad(this.natural({max: 255}).toString(16),2) + options.delimiter +
1637 this.pad(this.natural({max: 255}).toString(16),2) + options.delimiter +
1638 this.pad(this.natural({max: 255}).toString(16),2) + options.delimiter +
1639 this.pad(this.natural({max: 255}).toString(16),2);
1640 };
1641
1642 Chance.prototype.semver = function (options) {
1643 options = initOptions(options, { include_prerelease: true });
1644
1645 var range = this.pickone(["^", "~", "<", ">", "<=", ">=", "="]);
1646 if (options.range) {
1647 range = options.range;
1648 }
1649
1650 var prerelease = "";
1651 if (options.include_prerelease) {
1652 prerelease = this.weighted(["", "-dev", "-beta", "-alpha"], [50, 10, 5, 1]);
1653 }
1654 return range + this.rpg('3d10').join('.') + prerelease;
1655 };
1656
1657 Chance.prototype.tlds = function () {
1658 return ['com', 'org', 'edu', 'gov', 'co.uk', 'net', 'io', 'ac', 'ad', 'ae', 'af', 'ag', 'ai', 'al', 'am', 'ao', 'aq', 'ar', 'as', 'at', 'au', 'aw', 'ax', 'az', 'ba', 'bb', 'bd', 'be', 'bf', 'bg', 'bh', 'bi', 'bj', 'bm', 'bn', 'bo', 'br', 'bs', 'bt', 'bv', 'bw', 'by', 'bz', 'ca', 'cc', 'cd', 'cf', 'cg', 'ch', 'ci', 'ck', 'cl', 'cm', 'cn', 'co', 'cr', 'cu', 'cv', 'cw', 'cx', 'cy', 'cz', 'de', 'dj', 'dk', 'dm', 'do', 'dz', 'ec', 'ee', 'eg', 'eh', 'er', 'es', 'et', 'eu', 'fi', 'fj', 'fk', 'fm', 'fo', 'fr', 'ga', 'gb', 'gd', 'ge', 'gf', 'gg', 'gh', 'gi', 'gl', 'gm', 'gn', 'gp', 'gq', 'gr', 'gs', 'gt', 'gu', 'gw', 'gy', 'hk', 'hm', 'hn', 'hr', 'ht', 'hu', 'id', 'ie', 'il', 'im', 'in', 'io', 'iq', 'ir', 'is', 'it', 'je', 'jm', 'jo', 'jp', 'ke', 'kg', 'kh', 'ki', 'km', 'kn', 'kp', 'kr', 'kw', 'ky', 'kz', 'la', 'lb', 'lc', 'li', 'lk', 'lr', 'ls', 'lt', 'lu', 'lv', 'ly', 'ma', 'mc', 'md', 'me', 'mg', 'mh', 'mk', 'ml', 'mm', 'mn', 'mo', 'mp', 'mq', 'mr', 'ms', 'mt', 'mu', 'mv', 'mw', 'mx', 'my', 'mz', 'na', 'nc', 'ne', 'nf', 'ng', 'ni', 'nl', 'no', 'np', 'nr', 'nu', 'nz', 'om', 'pa', 'pe', 'pf', 'pg', 'ph', 'pk', 'pl', 'pm', 'pn', 'pr', 'ps', 'pt', 'pw', 'py', 'qa', 're', 'ro', 'rs', 'ru', 'rw', 'sa', 'sb', 'sc', 'sd', 'se', 'sg', 'sh', 'si', 'sj', 'sk', 'sl', 'sm', 'sn', 'so', 'sr', 'ss', 'st', 'su', 'sv', 'sx', 'sy', 'sz', 'tc', 'td', 'tf', 'tg', 'th', 'tj', 'tk', 'tl', 'tm', 'tn', 'to', 'tr', 'tt', 'tv', 'tw', 'tz', 'ua', 'ug', 'uk', 'us', 'uy', 'uz', 'va', 'vc', 've', 'vg', 'vi', 'vn', 'vu', 'wf', 'ws', 'ye', 'yt', 'za', 'zm', 'zw'];
1659 };
1660
1661 Chance.prototype.tld = function () {
1662 return this.pick(this.tlds());
1663 };
1664
1665 Chance.prototype.twitter = function () {
1666 return '@' + this.word();
1667 };
1668
1669 Chance.prototype.url = function (options) {
1670 options = initOptions(options, { protocol: "http", domain: this.domain(options), domain_prefix: "", path: this.word(), extensions: []});
1671
1672 var extension = options.extensions.length > 0 ? "." + this.pick(options.extensions) : "";
1673 var domain = options.domain_prefix ? options.domain_prefix + "." + options.domain : options.domain;
1674
1675 return options.protocol + "://" + domain + "/" + options.path + extension;
1676 };
1677
1678 Chance.prototype.port = function() {
1679 return this.integer({min: 0, max: 65535});
1680 };
1681
1682 Chance.prototype.locale = function (options) {
1683 options = initOptions(options);
1684 if (options.region){
1685 return this.pick(this.get("locale_regions"));
1686 } else {
1687 return this.pick(this.get("locale_languages"));
1688 }
1689 };
1690
1691 Chance.prototype.locales = function (options) {
1692 options = initOptions(options);
1693 if (options.region){
1694 return this.get("locale_regions");
1695 } else {
1696 return this.get("locale_languages");
1697 }
1698 };
1699
1700 Chance.prototype.loremPicsum = function (options) {
1701 options = initOptions(options, { width: 500, height: 500, greyscale: false, blurred: false });
1702
1703 var greyscale = options.greyscale ? 'g/' : '';
1704 var query = options.blurred ? '/?blur' : '/?random';
1705
1706 return 'https://picsum.photos/' + greyscale + options.width + '/' + options.height + query;
1707 }
1708
1709 // -- End Web --
1710
1711 // -- Location --
1712
1713 Chance.prototype.address = function (options) {
1714 options = initOptions(options);
1715 return this.natural({min: 5, max: 2000}) + ' ' + this.street(options);
1716 };
1717
1718 Chance.prototype.altitude = function (options) {
1719 options = initOptions(options, {fixed: 5, min: 0, max: 8848});
1720 return this.floating({
1721 min: options.min,
1722 max: options.max,
1723 fixed: options.fixed
1724 });
1725 };
1726
1727 Chance.prototype.areacode = function (options) {
1728 options = initOptions(options, {parens : true});
1729 // Don't want area codes to start with 1, or have a 9 as the second digit
1730 var areacode = options.exampleNumber ?
1731 "555" :
1732 this.natural({min: 2, max: 9}).toString() +
1733 this.natural({min: 0, max: 8}).toString() +
1734 this.natural({min: 0, max: 9}).toString();
1735
1736 return options.parens ? '(' + areacode + ')' : areacode;
1737 };
1738
1739 Chance.prototype.city = function () {
1740 return this.capitalize(this.word({syllables: 3}));
1741 };
1742
1743 Chance.prototype.coordinates = function (options) {
1744 return this.latitude(options) + ', ' + this.longitude(options);
1745 };
1746
1747 Chance.prototype.countries = function () {
1748 return this.get("countries");
1749 };
1750
1751 Chance.prototype.country = function (options) {
1752 options = initOptions(options);
1753 var country = this.pick(this.countries());
1754 return options.raw ? country : options.full ? country.name : country.abbreviation;
1755 };
1756
1757 Chance.prototype.depth = function (options) {
1758 options = initOptions(options, {fixed: 5, min: -10994, max: 0});
1759 return this.floating({
1760 min: options.min,
1761 max: options.max,
1762 fixed: options.fixed
1763 });
1764 };
1765
1766 Chance.prototype.geohash = function (options) {
1767 options = initOptions(options, { length: 7 });
1768 return this.string({ length: options.length, pool: '0123456789bcdefghjkmnpqrstuvwxyz' });
1769 };
1770
1771 Chance.prototype.geojson = function (options) {
1772 return this.latitude(options) + ', ' + this.longitude(options) + ', ' + this.altitude(options);
1773 };
1774
1775 Chance.prototype.latitude = function (options) {
1776 // Constants - Formats
1777 var [DDM, DMS, DD] = ['ddm', 'dms', 'dd'];
1778
1779 options = initOptions(
1780options,
1781 options && options.format && [DDM, DMS].includes(options.format.toLowerCase()) ?
1782 {min: 0, max: 89, fixed: 4} :
1783 {fixed: 5, min: -90, max: 90, format: DD}
1784);
1785
1786 var format = options.format.toLowerCase();
1787
1788 if (format === DDM || format === DMS) {
1789 testRange(options.min < 0 || options.min > 89, "Chance: Min specified is out of range. Should be between 0 - 89");
1790 testRange(options.max < 0 || options.max > 89, "Chance: Max specified is out of range. Should be between 0 - 89");
1791 testRange(options.fixed > 4, 'Chance: Fixed specified should be below or equal to 4');
1792 }
1793
1794 switch (format) {
1795 case DDM: {
1796 return this.integer({min: options.min, max: options.max}) + '°' +
1797 this.floating({min: 0, max: 59, fixed: options.fixed});
1798 }
1799 case DMS: {
1800 return this.integer({min: options.min, max: options.max}) + '°' +
1801 this.integer({min: 0, max: 59}) + '’' +
1802 this.floating({min: 0, max: 59, fixed: options.fixed}) + '”';
1803 }
1804 case DD:
1805 default: {
1806 return this.floating({min: options.min, max: options.max, fixed: options.fixed});
1807 }
1808 }
1809 };
1810
1811 Chance.prototype.longitude = function (options) {
1812 // Constants - Formats
1813 var [DDM, DMS, DD] = ['ddm', 'dms', 'dd'];
1814
1815 options = initOptions(
1816options,
1817 options && options.format && [DDM, DMS].includes(options.format.toLowerCase()) ?
1818 {min: 0, max: 179, fixed: 4} :
1819 {fixed: 5, min: -180, max: 180, format: DD}
1820);
1821
1822 var format = options.format.toLowerCase();
1823
1824 if (format === DDM || format === DMS) {
1825 testRange(options.min < 0 || options.min > 179, "Chance: Min specified is out of range. Should be between 0 - 179");
1826 testRange(options.max < 0 || options.max > 179, "Chance: Max specified is out of range. Should be between 0 - 179");
1827 testRange(options.fixed > 4, 'Chance: Fixed specified should be below or equal to 4');
1828 }
1829
1830 switch (format) {
1831 case DDM: {
1832 return this.integer({min: options.min, max: options.max}) + '°' +
1833 this.floating({min: 0, max: 59.9999, fixed: options.fixed})
1834 }
1835 case DMS: {
1836 return this.integer({min: options.min, max: options.max}) + '°' +
1837 this.integer({min: 0, max: 59}) + '’' +
1838 this.floating({min: 0, max: 59.9999, fixed: options.fixed}) + '”';
1839 }
1840 case DD:
1841 default: {
1842 return this.floating({min: options.min, max: options.max, fixed: options.fixed});
1843 }
1844 }
1845 };
1846
1847 Chance.prototype.phone = function (options) {
1848 var self = this,
1849 numPick,
1850 ukNum = function (parts) {
1851 var section = [];
1852 //fills the section part of the phone number with random numbers.
1853 parts.sections.forEach(function(n) {
1854 section.push(self.string({ pool: '0123456789', length: n}));
1855 });
1856 return parts.area + section.join(' ');
1857 };
1858 options = initOptions(options, {
1859 formatted: true,
1860 country: 'us',
1861 mobile: false,
1862 exampleNumber: false,
1863 });
1864 if (!options.formatted) {
1865 options.parens = false;
1866 }
1867 var phone;
1868 switch (options.country) {
1869 case 'fr':
1870 if (!options.mobile) {
1871 numPick = this.pick([
1872 // Valid zone and département codes.
1873 '01' + this.pick(['30', '34', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '53', '55', '56', '58', '60', '64', '69', '70', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83']) + self.string({ pool: '0123456789', length: 6}),
1874 '02' + this.pick(['14', '18', '22', '23', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '40', '41', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '56', '57', '61', '62', '69', '72', '76', '77', '78', '85', '90', '96', '97', '98', '99']) + self.string({ pool: '0123456789', length: 6}),
1875 '03' + this.pick(['10', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '39', '44', '45', '51', '52', '54', '55', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '70', '71', '72', '73', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90']) + self.string({ pool: '0123456789', length: 6}),
1876 '04' + this.pick(['11', '13', '15', '20', '22', '26', '27', '30', '32', '34', '37', '42', '43', '44', '50', '56', '57', '63', '66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', '84', '85', '86', '88', '89', '90', '91', '92', '93', '94', '95', '97', '98']) + self.string({ pool: '0123456789', length: 6}),
1877 '05' + this.pick(['08', '16', '17', '19', '24', '31', '32', '33', '34', '35', '40', '45', '46', '47', '49', '53', '55', '56', '57', '58', '59', '61', '62', '63', '64', '65', '67', '79', '81', '82', '86', '87', '90', '94']) + self.string({ pool: '0123456789', length: 6}),
1878 '09' + self.string({ pool: '0123456789', length: 8}),
1879 ]);
1880 phone = options.formatted ? numPick.match(/../g).join(' ') : numPick;
1881 } else {
1882 numPick = this.pick(['06', '07']) + self.string({ pool: '0123456789', length: 8});
1883 phone = options.formatted ? numPick.match(/../g).join(' ') : numPick;
1884 }
1885 break;
1886 case 'uk':
1887 if (!options.mobile) {
1888 numPick = this.pick([
1889 //valid area codes of major cities/counties followed by random numbers in required format.
1890
1891 { area: '01' + this.character({ pool: '234569' }) + '1 ', sections: [3,4] },
1892 { area: '020 ' + this.character({ pool: '378' }), sections: [3,4] },
1893 { area: '023 ' + this.character({ pool: '89' }), sections: [3,4] },
1894 { area: '024 7', sections: [3,4] },
1895 { area: '028 ' + this.pick(['25','28','37','71','82','90','92','95']), sections: [2,4] },
1896 { area: '012' + this.pick(['04','08','54','76','97','98']) + ' ', sections: [6] },
1897 { area: '013' + this.pick(['63','64','84','86']) + ' ', sections: [6] },
1898 { area: '014' + this.pick(['04','20','60','61','80','88']) + ' ', sections: [6] },
1899 { area: '015' + this.pick(['24','27','62','66']) + ' ', sections: [6] },
1900 { area: '016' + this.pick(['06','29','35','47','59','95']) + ' ', sections: [6] },
1901 { area: '017' + this.pick(['26','44','50','68']) + ' ', sections: [6] },
1902 { area: '018' + this.pick(['27','37','84','97']) + ' ', sections: [6] },
1903 { area: '019' + this.pick(['00','05','35','46','49','63','95']) + ' ', sections: [6] }
1904 ]);
1905 phone = options.formatted ? ukNum(numPick) : ukNum(numPick).replace(' ', '', 'g');
1906 } else {
1907 numPick = this.pick([
1908 { area: '07' + this.pick(['4','5','7','8','9']), sections: [2,6] },
1909 { area: '07624 ', sections: [6] }
1910 ]);
1911 phone = options.formatted ? ukNum(numPick) : ukNum(numPick).replace(' ', '');
1912 }
1913 break;
1914 case 'za':
1915 if (!options.mobile) {
1916 numPick = this.pick([
1917 '01' + this.pick(['0', '1', '2', '3', '4', '5', '6', '7', '8']) + self.string({ pool: '0123456789', length: 7}),
1918 '02' + this.pick(['1', '2', '3', '4', '7', '8']) + self.string({ pool: '0123456789', length: 7}),
1919 '03' + this.pick(['1', '2', '3', '5', '6', '9']) + self.string({ pool: '0123456789', length: 7}),
1920 '04' + this.pick(['1', '2', '3', '4', '5','6','7', '8','9']) + self.string({ pool: '0123456789', length: 7}),
1921 '05' + this.pick(['1', '3', '4', '6', '7', '8']) + self.string({ pool: '0123456789', length: 7}),
1922 ]);
1923 phone = options.formatted || numPick;
1924 } else {
1925 numPick = this.pick([
1926 '060' + this.pick(['3','4','5','6','7','8','9']) + self.string({ pool: '0123456789', length: 6}),
1927 '061' + this.pick(['0','1','2','3','4','5','8']) + self.string({ pool: '0123456789', length: 6}),
1928 '06' + self.string({ pool: '0123456789', length: 7}),
1929 '071' + this.pick(['0','1','2','3','4','5','6','7','8','9']) + self.string({ pool: '0123456789', length: 6}),
1930 '07' + this.pick(['2','3','4','6','7','8','9']) + self.string({ pool: '0123456789', length: 7}),
1931 '08' + this.pick(['0','1','2','3','4','5']) + self.string({ pool: '0123456789', length: 7}),
1932 ]);
1933 phone = options.formatted || numPick;
1934 }
1935 break;
1936 case 'us':
1937 var areacode = this.areacode(options).toString();
1938 var exchange = this.natural({ min: 2, max: 9 }).toString() +
1939 this.natural({ min: 0, max: 9 }).toString() +
1940 this.natural({ min: 0, max: 9 }).toString();
1941 var subscriber = this.natural({ min: 1000, max: 9999 }).toString(); // this could be random [0-9]{4}
1942 phone = options.formatted ? areacode + ' ' + exchange + '-' + subscriber : areacode + exchange + subscriber;
1943 break;
1944 case 'br':
1945 var areaCode = this.pick(["11", "12", "13", "14", "15", "16", "17", "18", "19", "21", "22", "24", "27", "28", "31", "32", "33", "34", "35", "37", "38", "41", "42", "43", "44", "45", "46", "47", "48", "49", "51", "53", "54", "55", "61", "62", "63", "64", "65", "66", "67", "68", "69", "71", "73", "74", "75", "77", "79", "81", "82", "83", "84", "85", "86", "87", "88", "89", "91", "92", "93", "94", "95", "96", "97", "98", "99"]);
1946 var prefix;
1947 if (options.mobile) {
1948 // Brasilian official reference (mobile): http://www.anatel.gov.br/setorregulado/plano-de-numeracao-brasileiro?id=330
1949 prefix = '9' + self.string({ pool: '0123456789', length: 4});
1950 } else {
1951 // Brasilian official reference: http://www.anatel.gov.br/setorregulado/plano-de-numeracao-brasileiro?id=331
1952 prefix = this.natural({ min: 2000, max: 5999 }).toString();
1953 }
1954 var mcdu = self.string({ pool: '0123456789', length: 4});
1955 phone = options.formatted ? '(' + areaCode + ') ' + prefix + '-' + mcdu : areaCode + prefix + mcdu;
1956 break;
1957 }
1958 return phone;
1959 };
1960
1961 Chance.prototype.postal = function () {
1962 // Postal District
1963 var pd = this.character({pool: "XVTSRPNKLMHJGECBA"});
1964 // Forward Sortation Area (FSA)
1965 var fsa = pd + this.natural({max: 9}) + this.character({alpha: true, casing: "upper"});
1966 // Local Delivery Unut (LDU)
1967 var ldu = this.natural({max: 9}) + this.character({alpha: true, casing: "upper"}) + this.natural({max: 9});
1968
1969 return fsa + " " + ldu;
1970 };
1971
1972 Chance.prototype.postcode = function () {
1973 // Area
1974 var area = this.pick(this.get("postcodeAreas")).code;
1975 // District
1976 var district = this.natural({max: 9});
1977 // Sub-District
1978 var subDistrict = this.bool() ? this.character({alpha: true, casing: "upper"}) : "";
1979 // Outward Code
1980 var outward = area + district + subDistrict;
1981 // Sector
1982 var sector = this.natural({max: 9});
1983 // Unit
1984 var unit = this.character({alpha: true, casing: "upper"}) + this.character({alpha: true, casing: "upper"});
1985 // Inward Code
1986 var inward = sector + unit;
1987
1988 return outward + " " + inward;
1989 };
1990
1991 Chance.prototype.counties = function (options) {
1992 options = initOptions(options, { country: 'uk' });
1993 return this.get("counties")[options.country.toLowerCase()];
1994 };
1995
1996 Chance.prototype.county = function (options) {
1997 return this.pick(this.counties(options)).name;
1998 };
1999
2000 Chance.prototype.provinces = function (options) {
2001 options = initOptions(options, { country: 'ca' });
2002 return this.get("provinces")[options.country.toLowerCase()];
2003 };
2004
2005 Chance.prototype.province = function (options) {
2006 return (options && options.full) ?
2007 this.pick(this.provinces(options)).name :
2008 this.pick(this.provinces(options)).abbreviation;
2009 };
2010
2011 Chance.prototype.state = function (options) {
2012 return (options && options.full) ?
2013 this.pick(this.states(options)).name :
2014 this.pick(this.states(options)).abbreviation;
2015 };
2016
2017 Chance.prototype.states = function (options) {
2018 options = initOptions(options, { country: 'us', us_states_and_dc: true } );
2019
2020 var states;
2021
2022 switch (options.country.toLowerCase()) {
2023 case 'us':
2024 var us_states_and_dc = this.get("us_states_and_dc"),
2025 territories = this.get("territories"),
2026 armed_forces = this.get("armed_forces");
2027
2028 states = [];
2029
2030 if (options.us_states_and_dc) {
2031 states = states.concat(us_states_and_dc);
2032 }
2033 if (options.territories) {
2034 states = states.concat(territories);
2035 }
2036 if (options.armed_forces) {
2037 states = states.concat(armed_forces);
2038 }
2039 break;
2040 case 'it':
2041 case 'mx':
2042 states = this.get("country_regions")[options.country.toLowerCase()];
2043 break;
2044 case 'uk':
2045 states = this.get("counties")[options.country.toLowerCase()];
2046 break;
2047 }
2048
2049 return states;
2050 };
2051
2052 Chance.prototype.street = function (options) {
2053 options = initOptions(options, { country: 'us', syllables: 2 });
2054 var street;
2055
2056 switch (options.country.toLowerCase()) {
2057 case 'us':
2058 street = this.word({ syllables: options.syllables });
2059 street = this.capitalize(street);
2060 street += ' ';
2061 street += options.short_suffix ?
2062 this.street_suffix(options).abbreviation :
2063 this.street_suffix(options).name;
2064 break;
2065 case 'it':
2066 street = this.word({ syllables: options.syllables });
2067 street = this.capitalize(street);
2068 street = (options.short_suffix ?
2069 this.street_suffix(options).abbreviation :
2070 this.street_suffix(options).name) + " " + street;
2071 break;
2072 }
2073 return street;
2074 };
2075
2076 Chance.prototype.street_suffix = function (options) {
2077 options = initOptions(options, { country: 'us' });
2078 return this.pick(this.street_suffixes(options));
2079 };
2080
2081 Chance.prototype.street_suffixes = function (options) {
2082 options = initOptions(options, { country: 'us' });
2083 // These are the most common suffixes.
2084 return this.get("street_suffixes")[options.country.toLowerCase()];
2085 };
2086
2087 // Note: only returning US zip codes, internationalization will be a whole
2088 // other beast to tackle at some point.
2089 Chance.prototype.zip = function (options) {
2090 var zip = this.n(this.natural, 5, {max: 9});
2091
2092 if (options && options.plusfour === true) {
2093 zip.push('-');
2094 zip = zip.concat(this.n(this.natural, 4, {max: 9}));
2095 }
2096
2097 return zip.join("");
2098 };
2099
2100 // -- End Location --
2101
2102 // -- Time
2103
2104 Chance.prototype.ampm = function () {
2105 return this.bool() ? 'am' : 'pm';
2106 };
2107
2108 Chance.prototype.date = function (options) {
2109 var date_string, date;
2110
2111 // If interval is specified we ignore preset
2112 if(options && (options.min || options.max)) {
2113 options = initOptions(options, {
2114 american: true,
2115 string: false
2116 });
2117 var min = typeof options.min !== "undefined" ? options.min.getTime() : 1;
2118 // 100,000,000 days measured relative to midnight at the beginning of 01 January, 1970 UTC. http://es5.github.io/#x15.9.1.1
2119 var max = typeof options.max !== "undefined" ? options.max.getTime() : 8640000000000000;
2120
2121 date = new Date(this.integer({min: min, max: max}));
2122 } else {
2123 var m = this.month({raw: true});
2124 var daysInMonth = m.days;
2125
2126 if(options && options.month) {
2127 // Mod 12 to allow months outside range of 0-11 (not encouraged, but also not prevented).
2128 daysInMonth = this.get('months')[((options.month % 12) + 12) % 12].days;
2129 }
2130
2131 options = initOptions(options, {
2132 year: parseInt(this.year(), 10),
2133 // Necessary to subtract 1 because Date() 0-indexes month but not day or year
2134 // for some reason.
2135 month: m.numeric - 1,
2136 day: this.natural({min: 1, max: daysInMonth}),
2137 hour: this.hour({twentyfour: true}),
2138 minute: this.minute(),
2139 second: this.second(),
2140 millisecond: this.millisecond(),
2141 american: true,
2142 string: false
2143 });
2144
2145 date = new Date(options.year, options.month, options.day, options.hour, options.minute, options.second, options.millisecond);
2146 }
2147
2148 if (options.american) {
2149 // Adding 1 to the month is necessary because Date() 0-indexes
2150 // months but not day for some odd reason.
2151 date_string = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();
2152 } else {
2153 date_string = date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear();
2154 }
2155
2156 return options.string ? date_string : date;
2157 };
2158
2159 Chance.prototype.hammertime = function (options) {
2160 return this.date(options).getTime();
2161 };
2162
2163 Chance.prototype.hour = function (options) {
2164 options = initOptions(options, {
2165 min: options && options.twentyfour ? 0 : 1,
2166 max: options && options.twentyfour ? 23 : 12
2167 });
2168
2169 testRange(options.min < 0, "Chance: Min cannot be less than 0.");
2170 testRange(options.twentyfour && options.max > 23, "Chance: Max cannot be greater than 23 for twentyfour option.");
2171 testRange(!options.twentyfour && options.max > 12, "Chance: Max cannot be greater than 12.");
2172 testRange(options.min > options.max, "Chance: Min cannot be greater than Max.");
2173
2174 return this.natural({min: options.min, max: options.max});
2175 };
2176
2177 Chance.prototype.millisecond = function () {
2178 return this.natural({max: 999});
2179 };
2180
2181 Chance.prototype.minute = Chance.prototype.second = function (options) {
2182 options = initOptions(options, {min: 0, max: 59});
2183
2184 testRange(options.min < 0, "Chance: Min cannot be less than 0.");
2185 testRange(options.max > 59, "Chance: Max cannot be greater than 59.");
2186 testRange(options.min > options.max, "Chance: Min cannot be greater than Max.");
2187
2188 return this.natural({min: options.min, max: options.max});
2189 };
2190
2191 Chance.prototype.month = function (options) {
2192 options = initOptions(options, {min: 1, max: 12});
2193
2194 testRange(options.min < 1, "Chance: Min cannot be less than 1.");
2195 testRange(options.max > 12, "Chance: Max cannot be greater than 12.");
2196 testRange(options.min > options.max, "Chance: Min cannot be greater than Max.");
2197
2198 var month = this.pick(this.months().slice(options.min - 1, options.max));
2199 return options.raw ? month : month.name;
2200 };
2201
2202 Chance.prototype.months = function () {
2203 return this.get("months");
2204 };
2205
2206 Chance.prototype.second = function () {
2207 return this.natural({max: 59});
2208 };
2209
2210 Chance.prototype.timestamp = function () {
2211 return this.natural({min: 1, max: parseInt(new Date().getTime() / 1000, 10)});
2212 };
2213
2214 Chance.prototype.weekday = function (options) {
2215 options = initOptions(options, {weekday_only: false});
2216 var weekdays = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"];
2217 if (!options.weekday_only) {
2218 weekdays.push("Saturday");
2219 weekdays.push("Sunday");
2220 }
2221 return this.pickone(weekdays);
2222 };
2223
2224 Chance.prototype.year = function (options) {
2225 // Default to current year as min if none specified
2226 options = initOptions(options, {min: new Date().getFullYear()});
2227
2228 // Default to one century after current year as max if none specified
2229 options.max = (typeof options.max !== "undefined") ? options.max : options.min + 100;
2230
2231 return this.natural(options).toString();
2232 };
2233
2234 // -- End Time
2235
2236 // -- Finance --
2237
2238 Chance.prototype.cc = function (options) {
2239 options = initOptions(options);
2240
2241 var type, number, to_generate;
2242
2243 type = (options.type) ?
2244 this.cc_type({ name: options.type, raw: true }) :
2245 this.cc_type({ raw: true });
2246
2247 number = type.prefix.split("");
2248 to_generate = type.length - type.prefix.length - 1;
2249
2250 // Generates n - 1 digits
2251 number = number.concat(this.n(this.integer, to_generate, {min: 0, max: 9}));
2252
2253 // Generates the last digit according to Luhn algorithm
2254 number.push(this.luhn_calculate(number.join("")));
2255
2256 return number.join("");
2257 };
2258
2259 Chance.prototype.cc_types = function () {
2260 // http://en.wikipedia.org/wiki/Bank_card_number#Issuer_identification_number_.28IIN.29
2261 return this.get("cc_types");
2262 };
2263
2264 Chance.prototype.cc_type = function (options) {
2265 options = initOptions(options);
2266 var types = this.cc_types(),
2267 type = null;
2268
2269 if (options.name) {
2270 for (var i = 0; i < types.length; i++) {
2271 // Accept either name or short_name to specify card type
2272 if (types[i].name === options.name || types[i].short_name === options.name) {
2273 type = types[i];
2274 break;
2275 }
2276 }
2277 if (type === null) {
2278 throw new RangeError("Chance: Credit card type '" + options.name + "' is not supported");
2279 }
2280 } else {
2281 type = this.pick(types);
2282 }
2283
2284 return options.raw ? type : type.name;
2285 };
2286
2287 // return all world currency by ISO 4217
2288 Chance.prototype.currency_types = function () {
2289 return this.get("currency_types");
2290 };
2291
2292 // return random world currency by ISO 4217
2293 Chance.prototype.currency = function () {
2294 return this.pick(this.currency_types());
2295 };
2296
2297 // return all timezones available
2298 Chance.prototype.timezones = function () {
2299 return this.get("timezones");
2300 };
2301
2302 // return random timezone
2303 Chance.prototype.timezone = function () {
2304 return this.pick(this.timezones());
2305 };
2306
2307 //Return random correct currency exchange pair (e.g. EUR/USD) or array of currency code
2308 Chance.prototype.currency_pair = function (returnAsString) {
2309 var currencies = this.unique(this.currency, 2, {
2310 comparator: function(arr, val) {
2311
2312 return arr.reduce(function(acc, item) {
2313 // If a match has been found, short circuit check and just return
2314 return acc || (item.code === val.code);
2315 }, false);
2316 }
2317 });
2318
2319 if (returnAsString) {
2320 return currencies[0].code + '/' + currencies[1].code;
2321 } else {
2322 return currencies;
2323 }
2324 };
2325
2326 Chance.prototype.dollar = function (options) {
2327 // By default, a somewhat more sane max for dollar than all available numbers
2328 options = initOptions(options, {max : 10000, min : 0});
2329
2330 var dollar = this.floating({min: options.min, max: options.max, fixed: 2}).toString(),
2331 cents = dollar.split('.')[1];
2332
2333 if (cents === undefined) {
2334 dollar += '.00';
2335 } else if (cents.length < 2) {
2336 dollar = dollar + '0';
2337 }
2338
2339 if (dollar < 0) {
2340 return '-$' + dollar.replace('-', '');
2341 } else {
2342 return '$' + dollar;
2343 }
2344 };
2345
2346 Chance.prototype.euro = function (options) {
2347 return Number(this.dollar(options).replace("$", "")).toLocaleString() + "€";
2348 };
2349
2350 Chance.prototype.exp = function (options) {
2351 options = initOptions(options);
2352 var exp = {};
2353
2354 exp.year = this.exp_year();
2355
2356 // If the year is this year, need to ensure month is greater than the
2357 // current month or this expiration will not be valid
2358 if (exp.year === (new Date().getFullYear()).toString()) {
2359 exp.month = this.exp_month({future: true});
2360 } else {
2361 exp.month = this.exp_month();
2362 }
2363
2364 return options.raw ? exp : exp.month + '/' + exp.year;
2365 };
2366
2367 Chance.prototype.exp_month = function (options) {
2368 options = initOptions(options);
2369 var month, month_int,
2370 // Date object months are 0 indexed
2371 curMonth = new Date().getMonth() + 1;
2372
2373 if (options.future && (curMonth !== 12)) {
2374 do {
2375 month = this.month({raw: true}).numeric;
2376 month_int = parseInt(month, 10);
2377 } while (month_int <= curMonth);
2378 } else {
2379 month = this.month({raw: true}).numeric;
2380 }
2381
2382 return month;
2383 };
2384
2385 Chance.prototype.exp_year = function () {
2386 var curMonth = new Date().getMonth() + 1,
2387 curYear = new Date().getFullYear();
2388
2389 return this.year({min: ((curMonth === 12) ? (curYear + 1) : curYear), max: (curYear + 10)});
2390 };
2391
2392 Chance.prototype.vat = function (options) {
2393 options = initOptions(options, { country: 'it' });
2394 switch (options.country.toLowerCase()) {
2395 case 'it':
2396 return this.it_vat();
2397 }
2398 };
2399
2400 /**
2401 * Generate a string matching IBAN pattern (https://en.wikipedia.org/wiki/International_Bank_Account_Number).
2402 * No country-specific formats support (yet)
2403 */
2404 Chance.prototype.iban = function () {
2405 var alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
2406 var alphanum = alpha + '0123456789';
2407 var iban =
2408 this.string({ length: 2, pool: alpha }) +
2409 this.pad(this.integer({ min: 0, max: 99 }), 2) +
2410 this.string({ length: 4, pool: alphanum }) +
2411 this.pad(this.natural(), this.natural({ min: 6, max: 26 }));
2412 return iban;
2413 };
2414
2415 // -- End Finance
2416
2417 // -- Regional
2418
2419 Chance.prototype.it_vat = function () {
2420 var it_vat = this.natural({min: 1, max: 1800000});
2421
2422 it_vat = this.pad(it_vat, 7) + this.pad(this.pick(this.provinces({ country: 'it' })).code, 3);
2423 return it_vat + this.luhn_calculate(it_vat);
2424 };
2425
2426 /*
2427 * this generator is written following the official algorithm
2428 * all data can be passed explicitely or randomized by calling chance.cf() without options
2429 * the code does not check that the input data is valid (it goes beyond the scope of the generator)
2430 *
2431 * @param [Object] options = { first: first name,
2432 * last: last name,
2433 * gender: female|male,
2434 birthday: JavaScript date object,
2435 city: string(4), 1 letter + 3 numbers
2436 }
2437 * @return [string] codice fiscale
2438 *
2439 */
2440 Chance.prototype.cf = function (options) {
2441 options = options || {};
2442 var gender = !!options.gender ? options.gender : this.gender(),
2443 first = !!options.first ? options.first : this.first( { gender: gender, nationality: 'it'} ),
2444 last = !!options.last ? options.last : this.last( { nationality: 'it'} ),
2445 birthday = !!options.birthday ? options.birthday : this.birthday(),
2446 city = !!options.city ? options.city : this.pickone(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'L', 'M', 'Z']) + this.pad(this.natural({max:999}), 3),
2447 cf = [],
2448 name_generator = function(name, isLast) {
2449 var temp,
2450 return_value = [];
2451
2452 if (name.length < 3) {
2453 return_value = name.split("").concat("XXX".split("")).splice(0,3);
2454 }
2455 else {
2456 temp = name.toUpperCase().split('').map(function(c){
2457 return ("BCDFGHJKLMNPRSTVWZ".indexOf(c) !== -1) ? c : undefined;
2458 }).join('');
2459 if (temp.length > 3) {
2460 if (isLast) {
2461 temp = temp.substr(0,3);
2462 } else {
2463 temp = temp[0] + temp.substr(2,2);
2464 }
2465 }
2466 if (temp.length < 3) {
2467 return_value = temp;
2468 temp = name.toUpperCase().split('').map(function(c){
2469 return ("AEIOU".indexOf(c) !== -1) ? c : undefined;
2470 }).join('').substr(0, 3 - return_value.length);
2471 }
2472 return_value = return_value + temp;
2473 }
2474
2475 return return_value;
2476 },
2477 date_generator = function(birthday, gender, that) {
2478 var lettermonths = ['A', 'B', 'C', 'D', 'E', 'H', 'L', 'M', 'P', 'R', 'S', 'T'];
2479
2480 return birthday.getFullYear().toString().substr(2) +
2481 lettermonths[birthday.getMonth()] +
2482 that.pad(birthday.getDate() + ((gender.toLowerCase() === "female") ? 40 : 0), 2);
2483 },
2484 checkdigit_generator = function(cf) {
2485 var range1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",
2486 range2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ",
2487 evens = "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
2488 odds = "BAKPLCQDREVOSFTGUHMINJWZYX",
2489 digit = 0;
2490
2491
2492 for(var i = 0; i < 15; i++) {
2493 if (i % 2 !== 0) {
2494 digit += evens.indexOf(range2[range1.indexOf(cf[i])]);
2495 }
2496 else {
2497 digit += odds.indexOf(range2[range1.indexOf(cf[i])]);
2498 }
2499 }
2500 return evens[digit % 26];
2501 };
2502
2503 cf = cf.concat(name_generator(last, true), name_generator(first), date_generator(birthday, gender, this), city.toUpperCase().split("")).join("");
2504 cf += checkdigit_generator(cf.toUpperCase(), this);
2505
2506 return cf.toUpperCase();
2507 };
2508
2509 Chance.prototype.pl_pesel = function () {
2510 var number = this.natural({min: 1, max: 9999999999});
2511 var arr = this.pad(number, 10).split('');
2512 for (var i = 0; i < arr.length; i++) {
2513 arr[i] = parseInt(arr[i]);
2514 }
2515
2516 var controlNumber = (1 * arr[0] + 3 * arr[1] + 7 * arr[2] + 9 * arr[3] + 1 * arr[4] + 3 * arr[5] + 7 * arr[6] + 9 * arr[7] + 1 * arr[8] + 3 * arr[9]) % 10;
2517 if(controlNumber !== 0) {
2518 controlNumber = 10 - controlNumber;
2519 }
2520
2521 return arr.join('') + controlNumber;
2522 };
2523
2524 Chance.prototype.pl_nip = function () {
2525 var number = this.natural({min: 1, max: 999999999});
2526 var arr = this.pad(number, 9).split('');
2527 for (var i = 0; i < arr.length; i++) {
2528 arr[i] = parseInt(arr[i]);
2529 }
2530
2531 var controlNumber = (6 * arr[0] + 5 * arr[1] + 7 * arr[2] + 2 * arr[3] + 3 * arr[4] + 4 * arr[5] + 5 * arr[6] + 6 * arr[7] + 7 * arr[8]) % 11;
2532 if(controlNumber === 10) {
2533 return this.pl_nip();
2534 }
2535
2536 return arr.join('') + controlNumber;
2537 };
2538
2539 Chance.prototype.pl_regon = function () {
2540 var number = this.natural({min: 1, max: 99999999});
2541 var arr = this.pad(number, 8).split('');
2542 for (var i = 0; i < arr.length; i++) {
2543 arr[i] = parseInt(arr[i]);
2544 }
2545
2546 var controlNumber = (8 * arr[0] + 9 * arr[1] + 2 * arr[2] + 3 * arr[3] + 4 * arr[4] + 5 * arr[5] + 6 * arr[6] + 7 * arr[7]) % 11;
2547 if(controlNumber === 10) {
2548 controlNumber = 0;
2549 }
2550
2551 return arr.join('') + controlNumber;
2552 };
2553
2554 // -- End Regional
2555
2556 // -- Music --
2557
2558 // Genre choices:
2559 // Rock,Pop,Hip-Hop,Jazz,Classical,Electronic,Country,R&B,Reggae,
2560 // Blues,Metal,Folk,Alternative,Punk,Disco,Funk,Techno,
2561 // Indie,Gospel,Dance,Children's,World
2562
2563 Chance.prototype.music_genre = function (genre = 'general') {
2564 if (!(genre.toLowerCase() in data.music_genres)) {
2565 throw new Error(`Unsupported genre: ${genre}`);
2566 }
2567
2568 const genres = data.music_genres[genre.toLowerCase()];
2569 const randomIndex = this.integer({ min: 0, max: genres.length - 1 });
2570
2571 return genres[randomIndex];
2572 };
2573
2574 Chance.prototype.note = function(options) {
2575 // choices for 'notes' option:
2576 // flatKey - chromatic scale with flat notes (default)
2577 // sharpKey - chromatic scale with sharp notes
2578 // flats - just flat notes
2579 // sharps - just sharp notes
2580 // naturals - just natural notes
2581 // all - naturals, sharps and flats
2582 options = initOptions(options, { notes : 'flatKey'});
2583 var scales = {
2584 naturals: ['C', 'D', 'E', 'F', 'G', 'A', 'B'],
2585 flats: ['D♭', 'E♭', 'G♭', 'A♭', 'B♭'],
2586 sharps: ['C♯', 'D♯', 'F♯', 'G♯', 'A♯']
2587 };
2588 scales.all = scales.naturals.concat(scales.flats.concat(scales.sharps))
2589 scales.flatKey = scales.naturals.concat(scales.flats)
2590 scales.sharpKey = scales.naturals.concat(scales.sharps)
2591 return this.pickone(scales[options.notes]);
2592 }
2593
2594 Chance.prototype.midi_note = function(options) {
2595 var min = 0;
2596 var max = 127;
2597 options = initOptions(options, { min : min, max : max });
2598 return this.integer({min: options.min, max: options.max});
2599 }
2600
2601 Chance.prototype.chord_quality = function(options) {
2602 options = initOptions(options, { jazz: true });
2603 var chord_qualities = ['maj', 'min', 'aug', 'dim'];
2604 if (options.jazz){
2605 chord_qualities = [
2606 'maj7',
2607 'min7',
2608 '7',
2609 'sus',
2610 'dim',
2611 'ø'
2612 ];
2613 }
2614 return this.pickone(chord_qualities);
2615 }
2616
2617 Chance.prototype.chord = function (options) {
2618 options = initOptions(options);
2619 return this.note(options) + this.chord_quality(options);
2620 }
2621
2622 Chance.prototype.tempo = function (options) {
2623 var min = 40;
2624 var max = 320;
2625 options = initOptions(options, {min: min, max: max});
2626 return this.integer({min: options.min, max: options.max});
2627 }
2628
2629 // -- End Music
2630
2631 // -- Miscellaneous --
2632
2633 // Coin - Flip, flip, flipadelphia
2634 Chance.prototype.coin = function() {
2635 return this.bool() ? "heads" : "tails";
2636 }
2637
2638 // Dice - For all the board game geeks out there, myself included ;)
2639 function diceFn (range) {
2640 return function () {
2641 return this.natural(range);
2642 };
2643 }
2644 Chance.prototype.d4 = diceFn({min: 1, max: 4});
2645 Chance.prototype.d6 = diceFn({min: 1, max: 6});
2646 Chance.prototype.d8 = diceFn({min: 1, max: 8});
2647 Chance.prototype.d10 = diceFn({min: 1, max: 10});
2648 Chance.prototype.d12 = diceFn({min: 1, max: 12});
2649 Chance.prototype.d20 = diceFn({min: 1, max: 20});
2650 Chance.prototype.d30 = diceFn({min: 1, max: 30});
2651 Chance.prototype.d100 = diceFn({min: 1, max: 100});
2652
2653 Chance.prototype.rpg = function (thrown, options) {
2654 options = initOptions(options);
2655 if (!thrown) {
2656 throw new RangeError("Chance: A type of die roll must be included");
2657 } else {
2658 var bits = thrown.toLowerCase().split("d"),
2659 rolls = [];
2660
2661 if (bits.length !== 2 || !parseInt(bits[0], 10) || !parseInt(bits[1], 10)) {
2662 throw new Error("Chance: Invalid format provided. Please provide #d# where the first # is the number of dice to roll, the second # is the max of each die");
2663 }
2664 for (var i = bits[0]; i > 0; i--) {
2665 rolls[i - 1] = this.natural({min: 1, max: bits[1]});
2666 }
2667 return (typeof options.sum !== 'undefined' && options.sum) ? rolls.reduce(function (p, c) { return p + c; }) : rolls;
2668 }
2669 };
2670
2671 // Guid
2672 Chance.prototype.guid = function (options) {
2673 options = initOptions(options, { version: 5 });
2674
2675 var guid_pool = "abcdef1234567890",
2676 variant_pool = "ab89",
2677 guid = this.string({ pool: guid_pool, length: 8 }) + '-' +
2678 this.string({ pool: guid_pool, length: 4 }) + '-' +
2679 // The Version
2680 options.version +
2681 this.string({ pool: guid_pool, length: 3 }) + '-' +
2682 // The Variant
2683 this.string({ pool: variant_pool, length: 1 }) +
2684 this.string({ pool: guid_pool, length: 3 }) + '-' +
2685 this.string({ pool: guid_pool, length: 12 });
2686 return guid;
2687 };
2688
2689 // Hash
2690 Chance.prototype.hash = function (options) {
2691 options = initOptions(options, {length : 40, casing: 'lower'});
2692 var pool = options.casing === 'upper' ? HEX_POOL.toUpperCase() : HEX_POOL;
2693 return this.string({pool: pool, length: options.length});
2694 };
2695
2696 Chance.prototype.luhn_check = function (num) {
2697 var str = num.toString();
2698 var checkDigit = +str.substring(str.length - 1);
2699 return checkDigit === this.luhn_calculate(+str.substring(0, str.length - 1));
2700 };
2701
2702 Chance.prototype.luhn_calculate = function (num) {
2703 var digits = num.toString().split("").reverse();
2704 var sum = 0;
2705 var digit;
2706
2707 for (var i = 0, l = digits.length; l > i; ++i) {
2708 digit = +digits[i];
2709 if (i % 2 === 0) {
2710 digit *= 2;
2711 if (digit > 9) {
2712 digit -= 9;
2713 }
2714 }
2715 sum += digit;
2716 }
2717 return (sum * 9) % 10;
2718 };
2719
2720 // MD5 Hash
2721 Chance.prototype.md5 = function(options) {
2722 var opts = { str: '', key: null, raw: false };
2723
2724 if (!options) {
2725 opts.str = this.string();
2726 options = {};
2727 }
2728 else if (typeof options === 'string') {
2729 opts.str = options;
2730 options = {};
2731 }
2732 else if (typeof options !== 'object') {
2733 return null;
2734 }
2735 else if(options.constructor === 'Array') {
2736 return null;
2737 }
2738
2739 opts = initOptions(options, opts);
2740
2741 if(!opts.str){
2742 throw new Error('A parameter is required to return an md5 hash.');
2743 }
2744
2745 return this.bimd5.md5(opts.str, opts.key, opts.raw);
2746 };
2747
2748 /**
2749 * #Description:
2750 * =====================================================
2751 * Generate random file name with extension
2752 *
2753 * The argument provide extension type
2754 * -> raster
2755 * -> vector
2756 * -> 3d
2757 * -> document
2758 *
2759 * If nothing is provided the function return random file name with random
2760 * extension type of any kind
2761 *
2762 * The user can validate the file name length range
2763 * If nothing provided the generated file name is random
2764 *
2765 * #Extension Pool :
2766 * * Currently the supported extensions are
2767 * -> some of the most popular raster image extensions
2768 * -> some of the most popular vector image extensions
2769 * -> some of the most popular 3d image extensions
2770 * -> some of the most popular document extensions
2771 *
2772 * #Examples :
2773 * =====================================================
2774 *
2775 * Return random file name with random extension. The file extension
2776 * is provided by a predefined collection of extensions. More about the extension
2777 * pool can be found in #Extension Pool section
2778 *
2779 * chance.file()
2780 * => dsfsdhjf.xml
2781 *
2782 * In order to generate a file name with specific length, specify the
2783 * length property and integer value. The extension is going to be random
2784 *
2785 * chance.file({length : 10})
2786 * => asrtineqos.pdf
2787 *
2788 * In order to generate file with extension from some of the predefined groups
2789 * of the extension pool just specify the extension pool category in fileType property
2790 *
2791 * chance.file({fileType : 'raster'})
2792 * => dshgssds.psd
2793 *
2794 * You can provide specific extension for your files
2795 * chance.file({extension : 'html'})
2796 * => djfsd.html
2797 *
2798 * Or you could pass custom collection of extensions by array or by object
2799 * chance.file({extensions : [...]})
2800 * => dhgsdsd.psd
2801 *
2802 * chance.file({extensions : { key : [...], key : [...]}})
2803 * => djsfksdjsd.xml
2804 *
2805 * @param [collection] options
2806 * @return [string]
2807 *
2808 */
2809 Chance.prototype.file = function(options) {
2810
2811 var fileOptions = options || {};
2812 var poolCollectionKey = "fileExtension";
2813 var typeRange = Object.keys(this.get("fileExtension"));//['raster', 'vector', '3d', 'document'];
2814 var fileName;
2815 var fileExtension;
2816
2817 // Generate random file name
2818 fileName = this.word({length : fileOptions.length});
2819
2820 // Generate file by specific extension provided by the user
2821 if(fileOptions.extension) {
2822
2823 fileExtension = fileOptions.extension;
2824 return (fileName + '.' + fileExtension);
2825 }
2826
2827 // Generate file by specific extension collection
2828 if(fileOptions.extensions) {
2829
2830 if(Array.isArray(fileOptions.extensions)) {
2831
2832 fileExtension = this.pickone(fileOptions.extensions);
2833 return (fileName + '.' + fileExtension);
2834 }
2835 else if(fileOptions.extensions.constructor === Object) {
2836
2837 var extensionObjectCollection = fileOptions.extensions;
2838 var keys = Object.keys(extensionObjectCollection);
2839
2840 fileExtension = this.pickone(extensionObjectCollection[this.pickone(keys)]);
2841 return (fileName + '.' + fileExtension);
2842 }
2843
2844 throw new Error("Chance: Extensions must be an Array or Object");
2845 }
2846
2847 // Generate file extension based on specific file type
2848 if(fileOptions.fileType) {
2849
2850 var fileType = fileOptions.fileType;
2851 if(typeRange.indexOf(fileType) !== -1) {
2852
2853 fileExtension = this.pickone(this.get(poolCollectionKey)[fileType]);
2854 return (fileName + '.' + fileExtension);
2855 }
2856
2857 throw new RangeError("Chance: Expect file type value to be 'raster', 'vector', '3d' or 'document'");
2858 }
2859
2860 // Generate random file name if no extension options are passed
2861 fileExtension = this.pickone(this.get(poolCollectionKey)[this.pickone(typeRange)]);
2862 return (fileName + '.' + fileExtension);
2863 };
2864
2865 /**
2866 * Generates file data of random bytes using the chance.file method for the file name
2867 *
2868 * @param {object}
2869 * fileName: String
2870 * fileExtention: String
2871 * fileSize: Number <- in bytes
2872 * @returns {object} fileName: String, fileData: Buffer
2873 */
2874 Chance.prototype.fileWithContent = function (options){
2875 var fileOptions = options || {};
2876 var fileName = 'fileName' in fileOptions ? fileOptions.fileName : this.file().split(".")[0];
2877 fileName += "." + ('fileExtension' in fileOptions ? fileOptions.fileExtension : this.file().split(".")[1]);
2878
2879
2880 if (typeof fileOptions.fileSize !== "number") {
2881 throw new Error('File size must be an integer')
2882 }
2883 var file = {
2884 fileData: this.buffer({length: fileOptions.fileSize}),
2885 fileName: fileName,
2886 };
2887 return file;
2888 }
2889
2890 var data = {
2891
2892 firstNames: {
2893 "male": {
2894 "en": ["James", "John", "Robert", "Michael", "William", "David", "Richard", "Joseph", "Charles", "Thomas", "Christopher", "Daniel", "Matthew", "George", "Donald", "Anthony", "Paul", "Mark", "Edward", "Steven", "Kenneth", "Andrew", "Brian", "Joshua", "Kevin", "Ronald", "Timothy", "Jason", "Jeffrey", "Frank", "Gary", "Ryan", "Nicholas", "Eric", "Stephen", "Jacob", "Larry", "Jonathan", "Scott", "Raymond", "Justin", "Brandon", "Gregory", "Samuel", "Benjamin", "Patrick", "Jack", "Henry", "Walter", "Dennis", "Jerry", "Alexander", "Peter", "Tyler", "Douglas", "Harold", "Aaron", "Jose", "Adam", "Arthur", "Zachary", "Carl", "Nathan", "Albert", "Kyle", "Lawrence", "Joe", "Willie", "Gerald", "Roger", "Keith", "Jeremy", "Terry", "Harry", "Ralph", "Sean", "Jesse", "Roy", "Louis", "Billy", "Austin", "Bruce", "Eugene", "Christian", "Bryan", "Wayne", "Russell", "Howard", "Fred", "Ethan", "Jordan", "Philip", "Alan", "Juan", "Randy", "Vincent", "Bobby", "Dylan", "Johnny", "Phillip", "Victor", "Clarence", "Ernest", "Martin", "Craig", "Stanley", "Shawn", "Travis", "Bradley", "Leonard", "Earl", "Gabriel", "Jimmy", "Francis", "Todd", "Noah", "Danny", "Dale", "Cody", "Carlos", "Allen", "Frederick", "Logan", "Curtis", "Alex", "Joel", "Luis", "Norman", "Marvin", "Glenn", "Tony", "Nathaniel", "Rodney", "Melvin", "Alfred", "Steve", "Cameron", "Chad", "Edwin", "Caleb", "Evan", "Antonio", "Lee", "Herbert", "Jeffery", "Isaac", "Derek", "Ricky", "Marcus", "Theodore", "Elijah", "Luke", "Jesus", "Eddie", "Troy", "Mike", "Dustin", "Ray", "Adrian", "Bernard", "Leroy", "Angel", "Randall", "Wesley", "Ian", "Jared", "Mason", "Hunter", "Calvin", "Oscar", "Clifford", "Jay", "Shane", "Ronnie", "Barry", "Lucas", "Corey", "Manuel", "Leo", "Tommy", "Warren", "Jackson", "Isaiah", "Connor", "Don", "Dean", "Jon", "Julian", "Miguel", "Bill", "Lloyd", "Charlie", "Mitchell", "Leon", "Jerome", "Darrell", "Jeremiah", "Alvin", "Brett", "Seth", "Floyd", "Jim", "Blake", "Micheal", "Gordon", "Trevor", "Lewis", "Erik", "Edgar", "Vernon", "Devin", "Gavin", "Jayden", "Chris", "Clyde", "Tom", "Derrick", "Mario", "Brent", "Marc", "Herman", "Chase", "Dominic", "Ricardo", "Franklin", "Maurice", "Max", "Aiden", "Owen", "Lester", "Gilbert", "Elmer", "Gene", "Francisco", "Glen", "Cory", "Garrett", "Clayton", "Sam", "Jorge", "Chester", "Alejandro", "Jeff", "Harvey", "Milton", "Cole", "Ivan", "Andre", "Duane", "Landon"],
2895 // Data taken from http://www.dati.gov.it/dataset/comune-di-firenze_0163
2896 "it": ["Adolfo", "Alberto", "Aldo", "Alessandro", "Alessio", "Alfredo", "Alvaro", "Andrea", "Angelo", "Angiolo", "Antonino", "Antonio", "Attilio", "Benito", "Bernardo", "Bruno", "Carlo", "Cesare", "Christian", "Claudio", "Corrado", "Cosimo", "Cristian", "Cristiano", "Daniele", "Dario", "David", "Davide", "Diego", "Dino", "Domenico", "Duccio", "Edoardo", "Elia", "Elio", "Emanuele", "Emiliano", "Emilio", "Enrico", "Enzo", "Ettore", "Fabio", "Fabrizio", "Federico", "Ferdinando", "Fernando", "Filippo", "Francesco", "Franco", "Gabriele", "Giacomo", "Giampaolo", "Giampiero", "Giancarlo", "Gianfranco", "Gianluca", "Gianmarco", "Gianni", "Gino", "Giorgio", "Giovanni", "Giuliano", "Giulio", "Giuseppe", "Graziano", "Gregorio", "Guido", "Iacopo", "Jacopo", "Lapo", "Leonardo", "Lorenzo", "Luca", "Luciano", "Luigi", "Manuel", "Marcello", "Marco", "Marino", "Mario", "Massimiliano", "Massimo", "Matteo", "Mattia", "Maurizio", "Mauro", "Michele", "Mirko", "Mohamed", "Nello", "Neri", "Niccolò", "Nicola", "Osvaldo", "Otello", "Paolo", "Pier Luigi", "Piero", "Pietro", "Raffaele", "Remo", "Renato", "Renzo", "Riccardo", "Roberto", "Rolando", "Romano", "Salvatore", "Samuele", "Sandro", "Sergio", "Silvano", "Simone", "Stefano", "Thomas", "Tommaso", "Ubaldo", "Ugo", "Umberto", "Valerio", "Valter", "Vasco", "Vincenzo", "Vittorio"],
2897 // Data taken from http://www.svbkindernamen.nl/int/nl/kindernamen/index.html
2898 "nl": ["Aaron","Abel","Adam","Adriaan","Albert","Alexander","Ali","Arjen","Arno","Bart","Bas","Bastiaan","Benjamin","Bob", "Boris","Bram","Brent","Cas","Casper","Chris","Christiaan","Cornelis","Daan","Daley","Damian","Dani","Daniel","Daniël","David","Dean","Dirk","Dylan","Egbert","Elijah","Erik","Erwin","Evert","Ezra","Fabian","Fedde","Finn","Florian","Floris","Frank","Frans","Frederik","Freek","Geert","Gerard","Gerben","Gerrit","Gijs","Guus","Hans","Hendrik","Henk","Herman","Hidde","Hugo","Jaap","Jan Jaap","Jan-Willem","Jack","Jacob","Jan","Jason","Jasper","Jayden","Jelle","Jelte","Jens","Jeroen","Jesse","Jim","Job","Joep","Johannes","John","Jonathan","Joris","Joshua","Joël","Julian","Kees","Kevin","Koen","Lars","Laurens","Leendert","Lennard","Lodewijk","Luc","Luca","Lucas","Lukas","Luuk","Maarten","Marcus","Martijn","Martin","Matthijs","Maurits","Max","Mees","Melle","Mick","Mika","Milan","Mohamed","Mohammed","Morris","Muhammed","Nathan","Nick","Nico","Niek","Niels","Noah","Noud","Olivier","Oscar","Owen","Paul","Pepijn","Peter","Pieter","Pim","Quinten","Reinier","Rens","Robin","Ruben","Sam","Samuel","Sander","Sebastiaan","Sem","Sep","Sepp","Siem","Simon","Stan","Stef","Steven","Stijn","Sven","Teun","Thijmen","Thijs","Thomas","Tijn","Tim","Timo","Tobias","Tom","Victor","Vince","Willem","Wim","Wouter","Yusuf"],
2899 // Data taken from https://fr.wikipedia.org/wiki/Liste_de_pr%C3%A9noms_fran%C3%A7ais_et_de_la_francophonie
2900 "fr": ["Aaron","Abdon","Abel","Abélard","Abelin","Abondance","Abraham","Absalon","Acace","Achaire","Achille","Adalard","Adalbald","Adalbéron","Adalbert","Adalric","Adam","Adegrin","Adel","Adelin","Andelin","Adelphe","Adam","Adéodat","Adhémar","Adjutor","Adolphe","Adonis","Adon","Adrien","Agapet","Agathange","Agathon","Agilbert","Agénor","Agnan","Aignan","Agrippin","Aimable","Aimé","Alain","Alban","Albin","Aubin","Albéric","Albert","Albertet","Alcibiade","Alcide","Alcée","Alcime","Aldonce","Aldric","Aldéric","Aleaume","Alexandre","Alexis","Alix","Alliaume","Aleaume","Almine","Almire","Aloïs","Alphée","Alphonse","Alpinien","Alverède","Amalric","Amaury","Amandin","Amant","Ambroise","Amédée","Amélien","Amiel","Amour","Anaël","Anastase","Anatole","Ancelin","Andéol","Andoche","André","Andoche","Ange","Angelin","Angilbe","Anglebert","Angoustan","Anicet","Anne","Annibal","Ansbert","Anselme","Anthelme","Antheaume","Anthime","Antide","Antoine","Antonius","Antonin","Apollinaire","Apollon","Aquilin","Arcade","Archambaud","Archambeau","Archange","Archibald","Arian","Ariel","Ariste","Aristide","Armand","Armel","Armin","Arnould","Arnaud","Arolde","Arsène","Arsinoé","Arthaud","Arthème","Arthur","Ascelin","Athanase","Aubry","Audebert","Audouin","Audran","Audric","Auguste","Augustin","Aurèle","Aurélien","Aurian","Auxence","Axel","Aymard","Aymeric","Aymon","Aymond","Balthazar","Baptiste","Barnabé","Barthélemy","Bartimée","Basile","Bastien","Baudouin","Bénigne","Benjamin","Benoît","Bérenger","Bérard","Bernard","Bertrand","Blaise","Bon","Boniface","Bouchard","Brice","Brieuc","Bruno","Brunon","Calixte","Calliste","Camélien","Camille","Camillien","Candide","Caribert","Carloman","Cassandre","Cassien","Cédric","Céleste","Célestin","Célien","Césaire","César","Charles","Charlemagne","Childebert","Chilpéric","Chrétien","Christian","Christodule","Christophe","Chrysostome","Clarence","Claude","Claudien","Cléandre","Clément","Clotaire","Côme","Constance","Constant","Constantin","Corentin","Cyprien","Cyriaque","Cyrille","Cyril","Damien","Daniel","David","Delphin","Denis","Désiré","Didier","Dieudonné","Dimitri","Dominique","Dorian","Dorothée","Edgard","Edmond","Édouard","Éleuthère","Élie","Élisée","Émeric","Émile","Émilien","Emmanuel","Enguerrand","Épiphane","Éric","Esprit","Ernest","Étienne","Eubert","Eudes","Eudoxe","Eugène","Eusèbe","Eustache","Évariste","Évrard","Fabien","Fabrice","Falba","Félicité","Félix","Ferdinand","Fiacre","Fidèle","Firmin","Flavien","Flodoard","Florent","Florentin","Florestan","Florian","Fortuné","Foulques","Francisque","François","Français","Franciscus","Francs","Frédéric","Fulbert","Fulcran","Fulgence","Gabin","Gabriel","Gaël","Garnier","Gaston","Gaspard","Gatien","Gaud","Gautier","Gédéon","Geoffroy","Georges","Géraud","Gérard","Gerbert","Germain","Gervais","Ghislain","Gilbert","Gilles","Girart","Gislebert","Gondebaud","Gonthier","Gontran","Gonzague","Grégoire","Guérin","Gui","Guillaume","Gustave","Guy","Guyot","Hardouin","Hector","Hédelin","Hélier","Henri","Herbert","Herluin","Hervé","Hilaire","Hildebert","Hincmar","Hippolyte","Honoré","Hubert","Hugues","Innocent","Isabeau","Isidore","Jacques","Japhet","Jason","Jean","Jeannel","Jeannot","Jérémie","Jérôme","Joachim","Joanny","Job","Jocelyn","Joël","Johan","Jonas","Jonathan","Joseph","Josse","Josselin","Jourdain","Jude","Judicaël","Jules","Julien","Juste","Justin","Lambert","Landry","Laurent","Lazare","Léandre","Léon","Léonard","Léopold","Leu","Loup","Leufroy","Libère","Liétald","Lionel","Loïc","Longin","Lorrain","Lorraine","Lothaire","Louis","Loup","Luc","Lucas","Lucien","Ludolphe","Ludovic","Macaire","Malo","Mamert","Manassé","Marc","Marceau","Marcel","Marcelin","Marius","Marseille","Martial","Martin","Mathurin","Matthias","Mathias","Matthieu","Maugis","Maurice","Mauricet","Maxence","Maxime","Maximilien","Mayeul","Médéric","Melchior","Mence","Merlin","Mérovée","Michaël","Michel","Moïse","Morgan","Nathan","Nathanaël","Narcisse","Néhémie","Nestor","Nestor","Nicéphore","Nicolas","Noé","Noël","Norbert","Normand","Normands","Octave","Odilon","Odon","Oger","Olivier","Oury","Pacôme","Palémon","Parfait","Pascal","Paterne","Patrice","Paul","Pépin","Perceval","Philémon","Philibert","Philippe","Philothée","Pie","Pierre","Pierrick","Prosper","Quentin","Raoul","Raphaël","Raymond","Régis","Réjean","Rémi","Renaud","René","Reybaud","Richard","Robert","Roch","Rodolphe","Rodrigue","Roger","Roland","Romain","Romuald","Roméo","Rome","Ronan","Roselin","Salomon","Samuel","Savin","Savinien","Scholastique","Sébastien","Séraphin","Serge","Séverin","Sidoine","Sigebert","Sigismond","Silvère","Simon","Siméon","Sixte","Stanislas","Stéphane","Stephan","Sylvain","Sylvestre","Tancrède","Tanguy","Taurin","Théodore","Théodose","Théophile","Théophraste","Thibault","Thibert","Thierry","Thomas","Timoléon","Timothée","Titien","Tonnin","Toussaint","Trajan","Tristan","Turold","Tim","Ulysse","Urbain","Valentin","Valère","Valéry","Venance","Venant","Venceslas","Vianney","Victor","Victorien","Victorin","Vigile","Vincent","Vital","Vitalien","Vivien","Waleran","Wandrille","Xavier","Xénophon","Yves","Zacharie","Zaché","Zéphirin"]
2901 },
2902
2903 "female": {
2904 "en": ["Mary", "Emma", "Elizabeth", "Minnie", "Margaret", "Ida", "Alice", "Bertha", "Sarah", "Annie", "Clara", "Ella", "Florence", "Cora", "Martha", "Laura", "Nellie", "Grace", "Carrie", "Maude", "Mabel", "Bessie", "Jennie", "Gertrude", "Julia", "Hattie", "Edith", "Mattie", "Rose", "Catherine", "Lillian", "Ada", "Lillie", "Helen", "Jessie", "Louise", "Ethel", "Lula", "Myrtle", "Eva", "Frances", "Lena", "Lucy", "Edna", "Maggie", "Pearl", "Daisy", "Fannie", "Josephine", "Dora", "Rosa", "Katherine", "Agnes", "Marie", "Nora", "May", "Mamie", "Blanche", "Stella", "Ellen", "Nancy", "Effie", "Sallie", "Nettie", "Della", "Lizzie", "Flora", "Susie", "Maud", "Mae", "Etta", "Harriet", "Sadie", "Caroline", "Katie", "Lydia", "Elsie", "Kate", "Susan", "Mollie", "Alma", "Addie", "Georgia", "Eliza", "Lulu", "Nannie", "Lottie", "Amanda", "Belle", "Charlotte", "Rebecca", "Ruth", "Viola", "Olive", "Amelia", "Hannah", "Jane", "Virginia", "Emily", "Matilda", "Irene", "Kathryn", "Esther", "Willie", "Henrietta", "Ollie", "Amy", "Rachel", "Sara", "Estella", "Theresa", "Augusta", "Ora", "Pauline", "Josie", "Lola", "Sophia", "Leona", "Anne", "Mildred", "Ann", "Beulah", "Callie", "Lou", "Delia", "Eleanor", "Barbara", "Iva", "Louisa", "Maria", "Mayme", "Evelyn", "Estelle", "Nina", "Betty", "Marion", "Bettie", "Dorothy", "Luella", "Inez", "Lela", "Rosie", "Allie", "Millie", "Janie", "Cornelia", "Victoria", "Ruby", "Winifred", "Alta", "Celia", "Christine", "Beatrice", "Birdie", "Harriett", "Mable", "Myra", "Sophie", "Tillie", "Isabel", "Sylvia", "Carolyn", "Isabelle", "Leila", "Sally", "Ina", "Essie", "Bertie", "Nell", "Alberta", "Katharine", "Lora", "Rena", "Mina", "Rhoda", "Mathilda", "Abbie", "Eula", "Dollie", "Hettie", "Eunice", "Fanny", "Ola", "Lenora", "Adelaide", "Christina", "Lelia", "Nelle", "Sue", "Johanna", "Lilly", "Lucinda", "Minerva", "Lettie", "Roxie", "Cynthia", "Helena", "Hilda", "Hulda", "Bernice", "Genevieve", "Jean", "Cordelia", "Marian", "Francis", "Jeanette", "Adeline", "Gussie", "Leah", "Lois", "Lura", "Mittie", "Hallie", "Isabella", "Olga", "Phoebe", "Teresa", "Hester", "Lida", "Lina", "Winnie", "Claudia", "Marguerite", "Vera", "Cecelia", "Bess", "Emilie", "Rosetta", "Verna", "Myrtie", "Cecilia", "Elva", "Olivia", "Ophelia", "Georgie", "Elnora", "Violet", "Adele", "Lily", "Linnie", "Loretta", "Madge", "Polly", "Virgie", "Eugenia", "Lucile", "Lucille", "Mabelle", "Rosalie"],
2905 // Data taken from http://www.dati.gov.it/dataset/comune-di-firenze_0162
2906 "it": ["Ada", "Adriana", "Alessandra", "Alessia", "Alice", "Angela", "Anna", "Anna Maria", "Annalisa", "Annita", "Annunziata", "Antonella", "Arianna", "Asia", "Assunta", "Aurora", "Barbara", "Beatrice", "Benedetta", "Bianca", "Bruna", "Camilla", "Carla", "Carlotta", "Carmela", "Carolina", "Caterina", "Catia", "Cecilia", "Chiara", "Cinzia", "Clara", "Claudia", "Costanza", "Cristina", "Daniela", "Debora", "Diletta", "Dina", "Donatella", "Elena", "Eleonora", "Elisa", "Elisabetta", "Emanuela", "Emma", "Eva", "Federica", "Fernanda", "Fiorella", "Fiorenza", "Flora", "Franca", "Francesca", "Gabriella", "Gaia", "Gemma", "Giada", "Gianna", "Gina", "Ginevra", "Giorgia", "Giovanna", "Giulia", "Giuliana", "Giuseppa", "Giuseppina", "Grazia", "Graziella", "Greta", "Ida", "Ilaria", "Ines", "Iolanda", "Irene", "Irma", "Isabella", "Jessica", "Laura", "Lea", "Letizia", "Licia", "Lidia", "Liliana", "Lina", "Linda", "Lisa", "Livia", "Loretta", "Luana", "Lucia", "Luciana", "Lucrezia", "Luisa", "Manuela", "Mara", "Marcella", "Margherita", "Maria", "Maria Cristina", "Maria Grazia", "Maria Luisa", "Maria Pia", "Maria Teresa", "Marina", "Marisa", "Marta", "Martina", "Marzia", "Matilde", "Melissa", "Michela", "Milena", "Mirella", "Monica", "Natalina", "Nella", "Nicoletta", "Noemi", "Olga", "Paola", "Patrizia", "Piera", "Pierina", "Raffaella", "Rebecca", "Renata", "Rina", "Rita", "Roberta", "Rosa", "Rosanna", "Rossana", "Rossella", "Sabrina", "Sandra", "Sara", "Serena", "Silvana", "Silvia", "Simona", "Simonetta", "Sofia", "Sonia", "Stefania", "Susanna", "Teresa", "Tina", "Tiziana", "Tosca", "Valentina", "Valeria", "Vanda", "Vanessa", "Vanna", "Vera", "Veronica", "Vilma", "Viola", "Virginia", "Vittoria"],
2907 // Data taken from http://www.svbkindernamen.nl/int/nl/kindernamen/index.html
2908 "nl": ["Ada", "Arianne", "Afke", "Amanda", "Amber", "Amy", "Aniek", "Anita", "Anja", "Anna", "Anne", "Annelies", "Annemarie", "Annette", "Anouk", "Astrid", "Aukje", "Barbara", "Bianca", "Carla", "Carlijn", "Carolien", "Chantal", "Charlotte", "Claudia", "Daniëlle", "Debora", "Diane", "Dora", "Eline", "Elise", "Ella", "Ellen", "Emma", "Esmee", "Evelien", "Esther", "Erica", "Eva", "Femke", "Fleur", "Floor", "Froukje", "Gea", "Gerda", "Hanna", "Hanneke", "Heleen", "Hilde", "Ilona", "Ina", "Inge", "Ingrid", "Iris", "Isabel", "Isabelle", "Janneke", "Jasmijn", "Jeanine", "Jennifer", "Jessica", "Johanna", "Joke", "Julia", "Julie", "Karen", "Karin", "Katja", "Kim", "Lara", "Laura", "Lena", "Lianne", "Lieke", "Lilian", "Linda", "Lisa", "Lisanne", "Lotte", "Louise", "Maaike", "Manon", "Marga", "Maria", "Marissa", "Marit", "Marjolein", "Martine", "Marleen", "Melissa", "Merel", "Miranda", "Michelle", "Mirjam", "Mirthe", "Naomi", "Natalie", 'Nienke', "Nina", "Noortje", "Olivia", "Patricia", "Paula", "Paulien", "Ramona", "Ria", "Rianne", "Roos", "Rosanne", "Ruth", "Sabrina", "Sandra", "Sanne", "Sara", "Saskia", "Silvia", "Sofia", "Sophie", "Sonja", "Suzanne", "Tamara", "Tess", "Tessa", "Tineke", "Valerie", "Vanessa", "Veerle", "Vera", "Victoria", "Wendy", "Willeke", "Yvonne", "Zoë"],
2909 // Data taken from https://fr.wikipedia.org/wiki/Liste_de_pr%C3%A9noms_fran%C3%A7ais_et_de_la_francophonie
2910 "fr": ["Abdon","Abel","Abigaëlle","Abigaïl","Acacius","Acanthe","Adalbert","Adalsinde","Adegrine","Adélaïde","Adèle","Adélie","Adeline","Adeltrude","Adolphe","Adonis","Adrastée","Adrehilde","Adrienne","Agathe","Agilbert","Aglaé","Aignan","Agneflète","Agnès","Agrippine","Aimé","Alaine","Alaïs","Albane","Albérade","Alberte","Alcide","Alcine","Alcyone","Aldegonde","Aleth","Alexandrine","Alexine","Alice","Aliénor","Aliette","Aline","Alix","Alizé","Aloïse","Aloyse","Alphonsine","Althée","Amaliane","Amalthée","Amande","Amandine","Amant","Amarande","Amaranthe","Amaryllis","Ambre","Ambroisie","Amélie","Améthyste","Aminte","Anaël","Anaïs","Anastasie","Anatole","Ancelin","Andrée","Anémone","Angadrême","Angèle","Angeline","Angélique","Angilbert","Anicet","Annabelle","Anne","Annette","Annick","Annie","Annonciade","Ansbert","Anstrudie","Anthelme","Antigone","Antoinette","Antonine","Aphélie","Apolline","Apollonie","Aquiline","Arabelle","Arcadie","Archange","Argine","Ariane","Aricie","Ariel","Arielle","Arlette","Armance","Armande","Armandine","Armelle","Armide","Armelle","Armin","Arnaud","Arsène","Arsinoé","Artémis","Arthur","Ascelin","Ascension","Assomption","Astarté","Astérie","Astrée","Astrid","Athalie","Athanasie","Athina","Aube","Albert","Aude","Audrey","Augustine","Aure","Aurélie","Aurélien","Aurèle","Aurore","Auxence","Aveline","Abigaëlle","Avoye","Axelle","Aymard","Azalée","Adèle","Adeline","Barbe","Basilisse","Bathilde","Béatrice","Béatrix","Bénédicte","Bérengère","Bernadette","Berthe","Bertille","Beuve","Blanche","Blanc","Blandine","Brigitte","Brune","Brunehilde","Callista","Camille","Capucine","Carine","Caroline","Cassandre","Catherine","Cécile","Céleste","Célestine","Céline","Chantal","Charlène","Charline","Charlotte","Chloé","Christelle","Christiane","Christine","Claire","Clara","Claude","Claudine","Clarisse","Clémence","Clémentine","Cléo","Clio","Clotilde","Coline","Conception","Constance","Coralie","Coraline","Corentine","Corinne","Cyrielle","Daniel","Daniel","Daphné","Débora","Delphine","Denise","Diane","Dieudonné","Dominique","Doriane","Dorothée","Douce","Édith","Edmée","Éléonore","Éliane","Élia","Éliette","Élisabeth","Élise","Ella","Élodie","Éloïse","Elsa","Émeline","Émérance","Émérentienne","Émérencie","Émilie","Emma","Emmanuelle","Emmelie","Ernestine","Esther","Estelle","Eudoxie","Eugénie","Eulalie","Euphrasie","Eusébie","Évangéline","Eva","Ève","Évelyne","Fanny","Fantine","Faustine","Félicie","Fernande","Flavie","Fleur","Flore","Florence","Florie","Fortuné","France","Francia","Françoise","Francine","Gabrielle","Gaëlle","Garance","Geneviève","Georgette","Gerberge","Germaine","Gertrude","Gisèle","Guenièvre","Guilhemine","Guillemette","Gustave","Gwenael","Hélène","Héloïse","Henriette","Hermine","Hermione","Hippolyte","Honorine","Hortense","Huguette","Ines","Irène","Irina","Iris","Isabeau","Isabelle","Iseult","Isolde","Ismérie","Jacinthe","Jacqueline","Jade","Janine","Jeanne","Jocelyne","Joëlle","Joséphine","Judith","Julia","Julie","Jules","Juliette","Justine","Katy","Kathy","Katie","Laura","Laure","Laureline","Laurence","Laurene","Lauriane","Laurianne","Laurine","Léa","Léna","Léonie","Léon","Léontine","Lorraine","Lucie","Lucienne","Lucille","Ludivine","Lydie","Lydie","Megane","Madeleine","Magali","Maguelone","Mallaury","Manon","Marceline","Margot","Marguerite","Marianne","Marie","Myriam","Marie","Marine","Marion","Marlène","Marthe","Martine","Mathilde","Maud","Maureen","Mauricette","Maxime","Mélanie","Melissa","Mélissandre","Mélisande","Mélodie","Michel","Micheline","Mireille","Miriam","Moïse","Monique","Morgane","Muriel","Mylène","Nadège","Nadine","Nathalie","Nicole","Nicolette","Nine","Noël","Noémie","Océane","Odette","Odile","Olive","Olivia","Olympe","Ombline","Ombeline","Ophélie","Oriande","Oriane","Ozanne","Pascale","Pascaline","Paule","Paulette","Pauline","Priscille","Prisca","Prisque","Pécine","Pélagie","Pénélope","Perrine","Pétronille","Philippine","Philomène","Philothée","Primerose","Prudence","Pulchérie","Quentine","Quiéta","Quintia","Quintilla","Rachel","Raphaëlle","Raymonde","Rebecca","Régine","Réjeanne","René","Rita","Rita","Rolande","Romane","Rosalie","Rose","Roseline","Sabine","Salomé","Sandra","Sandrine","Sarah","Ségolène","Séverine","Sibylle","Simone","Sixt","Solange","Soline","Solène","Sophie","Stéphanie","Suzanne","Sylvain","Sylvie","Tatiana","Thaïs","Théodora","Thérèse","Tiphaine","Ursule","Valentine","Valérie","Véronique","Victoire","Victorine","Vinciane","Violette","Virginie","Viviane","Xavière","Yolande","Ysaline","Yvette","Yvonne","Zélie","Zita","Zoé"]
2911 }
2912 },
2913
2914 lastNames: {
2915 "en": ['Smith', 'Johnson', 'Williams', 'Jones', 'Brown', 'Davis', 'Miller', 'Wilson', 'Moore', 'Taylor', 'Anderson', 'Thomas', 'Jackson', 'White', 'Harris', 'Martin', 'Thompson', 'Garcia', 'Martinez', 'Robinson', 'Clark', 'Rodriguez', 'Lewis', 'Lee', 'Walker', 'Hall', 'Allen', 'Young', 'Hernandez', 'King', 'Wright', 'Lopez', 'Hill', 'Scott', 'Green', 'Adams', 'Baker', 'Gonzalez', 'Nelson', 'Carter', 'Mitchell', 'Perez', 'Roberts', 'Turner', 'Phillips', 'Campbell', 'Parker', 'Evans', 'Edwards', 'Collins', 'Stewart', 'Sanchez', 'Morris', 'Rogers', 'Reed', 'Cook', 'Morgan', 'Bell', 'Murphy', 'Bailey', 'Rivera', 'Cooper', 'Richardson', 'Cox', 'Howard', 'Ward', 'Torres', 'Peterson', 'Gray', 'Ramirez', 'James', 'Watson', 'Brooks', 'Kelly', 'Sanders', 'Price', 'Bennett', 'Wood', 'Barnes', 'Ross', 'Henderson', 'Coleman', 'Jenkins', 'Perry', 'Powell', 'Long', 'Patterson', 'Hughes', 'Flores', 'Washington', 'Butler', 'Simmons', 'Foster', 'Gonzales', 'Bryant', 'Alexander', 'Russell', 'Griffin', 'Diaz', 'Hayes', 'Myers', 'Ford', 'Hamilton', 'Graham', 'Sullivan', 'Wallace', 'Woods', 'Cole', 'West', 'Jordan', 'Owens', 'Reynolds', 'Fisher', 'Ellis', 'Harrison', 'Gibson', 'McDonald', 'Cruz', 'Marshall', 'Ortiz', 'Gomez', 'Murray', 'Freeman', 'Wells', 'Webb', 'Simpson', 'Stevens', 'Tucker', 'Porter', 'Hunter', 'Hicks', 'Crawford', 'Henry', 'Boyd', 'Mason', 'Morales', 'Kennedy', 'Warren', 'Dixon', 'Ramos', 'Reyes', 'Burns', 'Gordon', 'Shaw', 'Holmes', 'Rice', 'Robertson', 'Hunt', 'Black', 'Daniels', 'Palmer', 'Mills', 'Nichols', 'Grant', 'Knight', 'Ferguson', 'Rose', 'Stone', 'Hawkins', 'Dunn', 'Perkins', 'Hudson', 'Spencer', 'Gardner', 'Stephens', 'Payne', 'Pierce', 'Berry', 'Matthews', 'Arnold', 'Wagner', 'Willis', 'Ray', 'Watkins', 'Olson', 'Carroll', 'Duncan', 'Snyder', 'Hart', 'Cunningham', 'Bradley', 'Lane', 'Andrews', 'Ruiz', 'Harper', 'Fox', 'Riley', 'Armstrong', 'Carpenter', 'Weaver', 'Greene', 'Lawrence', 'Elliott', 'Chavez', 'Sims', 'Austin', 'Peters', 'Kelley', 'Franklin', 'Lawson', 'Fields', 'Gutierrez', 'Ryan', 'Schmidt', 'Carr', 'Vasquez', 'Castillo', 'Wheeler', 'Chapman', 'Oliver', 'Montgomery', 'Richards', 'Williamson', 'Johnston', 'Banks', 'Meyer', 'Bishop', 'McCoy', 'Howell', 'Alvarez', 'Morrison', 'Hansen', 'Fernandez', 'Garza', 'Harvey', 'Little', 'Burton', 'Stanley', 'Nguyen', 'George', 'Jacobs', 'Reid', 'Kim', 'Fuller', 'Lynch', 'Dean', 'Gilbert', 'Garrett', 'Romero', 'Welch', 'Larson', 'Frazier', 'Burke', 'Hanson', 'Day', 'Mendoza', 'Moreno', 'Bowman', 'Medina', 'Fowler', 'Brewer', 'Hoffman', 'Carlson', 'Silva', 'Pearson', 'Holland', 'Douglas', 'Fleming', 'Jensen', 'Vargas', 'Byrd', 'Davidson', 'Hopkins', 'May', 'Terry', 'Herrera', 'Wade', 'Soto', 'Walters', 'Curtis', 'Neal', 'Caldwell', 'Lowe', 'Jennings', 'Barnett', 'Graves', 'Jimenez', 'Horton', 'Shelton', 'Barrett', 'Obrien', 'Castro', 'Sutton', 'Gregory', 'McKinney', 'Lucas', 'Miles', 'Craig', 'Rodriquez', 'Chambers', 'Holt', 'Lambert', 'Fletcher', 'Watts', 'Bates', 'Hale', 'Rhodes', 'Pena', 'Beck', 'Newman', 'Haynes', 'McDaniel', 'Mendez', 'Bush', 'Vaughn', 'Parks', 'Dawson', 'Santiago', 'Norris', 'Hardy', 'Love', 'Steele', 'Curry', 'Powers', 'Schultz', 'Barker', 'Guzman', 'Page', 'Munoz', 'Ball', 'Keller', 'Chandler', 'Weber', 'Leonard', 'Walsh', 'Lyons', 'Ramsey', 'Wolfe', 'Schneider', 'Mullins', 'Benson', 'Sharp', 'Bowen', 'Daniel', 'Barber', 'Cummings', 'Hines', 'Baldwin', 'Griffith', 'Valdez', 'Hubbard', 'Salazar', 'Reeves', 'Warner', 'Stevenson', 'Burgess', 'Santos', 'Tate', 'Cross', 'Garner', 'Mann', 'Mack', 'Moss', 'Thornton', 'Dennis', 'McGee', 'Farmer', 'Delgado', 'Aguilar', 'Vega', 'Glover', 'Manning', 'Cohen', 'Harmon', 'Rodgers', 'Robbins', 'Newton', 'Todd', 'Blair', 'Higgins', 'Ingram', 'Reese', 'Cannon', 'Strickland', 'Townsend', 'Potter', 'Goodwin', 'Walton', 'Rowe', 'Hampton', 'Ortega', 'Patton', 'Swanson', 'Joseph', 'Francis', 'Goodman', 'Maldonado', 'Yates', 'Becker', 'Erickson', 'Hodges', 'Rios', 'Conner', 'Adkins', 'Webster', 'Norman', 'Malone', 'Hammond', 'Flowers', 'Cobb', 'Moody', 'Quinn', 'Blake', 'Maxwell', 'Pope', 'Floyd', 'Osborne', 'Paul', 'McCarthy', 'Guerrero', 'Lindsey', 'Estrada', 'Sandoval', 'Gibbs', 'Tyler', 'Gross', 'Fitzgerald', 'Stokes', 'Doyle', 'Sherman', 'Saunders', 'Wise', 'Colon', 'Gill', 'Alvarado', 'Greer', 'Padilla', 'Simon', 'Waters', 'Nunez', 'Ballard', 'Schwartz', 'McBride', 'Houston', 'Christensen', 'Klein', 'Pratt', 'Briggs', 'Parsons', 'McLaughlin', 'Zimmerman', 'French', 'Buchanan', 'Moran', 'Copeland', 'Roy', 'Pittman', 'Brady', 'McCormick', 'Holloway', 'Brock', 'Poole', 'Frank', 'Logan', 'Owen', 'Bass', 'Marsh', 'Drake', 'Wong', 'Jefferson', 'Park', 'Morton', 'Abbott', 'Sparks', 'Patrick', 'Norton', 'Huff', 'Clayton', 'Massey', 'Lloyd', 'Figueroa', 'Carson', 'Bowers', 'Roberson', 'Barton', 'Tran', 'Lamb', 'Harrington', 'Casey', 'Boone', 'Cortez', 'Clarke', 'Mathis', 'Singleton', 'Wilkins', 'Cain', 'Bryan', 'Underwood', 'Hogan', 'McKenzie', 'Collier', 'Luna', 'Phelps', 'McGuire', 'Allison', 'Bridges', 'Wilkerson', 'Nash', 'Summers', 'Atkins'],
2916 // Data taken from http://www.dati.gov.it/dataset/comune-di-firenze_0164 (first 1000)
2917 "it": ["Acciai", "Aglietti", "Agostini", "Agresti", "Ahmed", "Aiazzi", "Albanese", "Alberti", "Alessi", "Alfani", "Alinari", "Alterini", "Amato", "Ammannati", "Ancillotti", "Andrei", "Andreini", "Andreoni", "Angeli", "Anichini", "Antonelli", "Antonini", "Arena", "Ariani", "Arnetoli", "Arrighi", "Baccani", "Baccetti", "Bacci", "Bacherini", "Badii", "Baggiani", "Baglioni", "Bagni", "Bagnoli", "Baldassini", "Baldi", "Baldini", "Ballerini", "Balli", "Ballini", "Balloni", "Bambi", "Banchi", "Bandinelli", "Bandini", "Bani", "Barbetti", "Barbieri", "Barchielli", "Bardazzi", "Bardelli", "Bardi", "Barducci", "Bargellini", "Bargiacchi", "Barni", "Baroncelli", "Baroncini", "Barone", "Baroni", "Baronti", "Bartalesi", "Bartoletti", "Bartoli", "Bartolini", "Bartoloni", "Bartolozzi", "Basagni", "Basile", "Bassi", "Batacchi", "Battaglia", "Battaglini", "Bausi", "Becagli", "Becattini", "Becchi", "Becucci", "Bellandi", "Bellesi", "Belli", "Bellini", "Bellucci", "Bencini", "Benedetti", "Benelli", "Beni", "Benini", "Bensi", "Benucci", "Benvenuti", "Berlincioni", "Bernacchioni", "Bernardi", "Bernardini", "Berni", "Bernini", "Bertelli", "Berti", "Bertini", "Bessi", "Betti", "Bettini", "Biagi", "Biagini", "Biagioni", "Biagiotti", "Biancalani", "Bianchi", "Bianchini", "Bianco", "Biffoli", "Bigazzi", "Bigi", "Biliotti", "Billi", "Binazzi", "Bindi", "Bini", "Biondi", "Bizzarri", "Bocci", "Bogani", "Bolognesi", "Bonaiuti", "Bonanni", "Bonciani", "Boncinelli", "Bondi", "Bonechi", "Bongini", "Boni", "Bonini", "Borchi", "Boretti", "Borghi", "Borghini", "Borgioli", "Borri", "Borselli", "Boschi", "Bottai", "Bracci", "Braccini", "Brandi", "Braschi", "Bravi", "Brazzini", "Breschi", "Brilli", "Brizzi", "Brogelli", "Brogi", "Brogioni", "Brunelli", "Brunetti", "Bruni", "Bruno", "Brunori", "Bruschi", "Bucci", "Bucciarelli", "Buccioni", "Bucelli", "Bulli", "Burberi", "Burchi", "Burgassi", "Burroni", "Bussotti", "Buti", "Caciolli", "Caiani", "Calabrese", "Calamai", "Calamandrei", "Caldini", "Calo'", "Calonaci", "Calosi", "Calvelli", "Cambi", "Camiciottoli", "Cammelli", "Cammilli", "Campolmi", "Cantini", "Capanni", "Capecchi", "Caponi", "Cappelletti", "Cappelli", "Cappellini", "Cappugi", "Capretti", "Caputo", "Carbone", "Carboni", "Cardini", "Carlesi", "Carletti", "Carli", "Caroti", "Carotti", "Carrai", "Carraresi", "Carta", "Caruso", "Casalini", "Casati", "Caselli", "Casini", "Castagnoli", "Castellani", "Castelli", "Castellucci", "Catalano", "Catarzi", "Catelani", "Cavaciocchi", "Cavallaro", "Cavallini", "Cavicchi", "Cavini", "Ceccarelli", "Ceccatelli", "Ceccherelli", "Ceccherini", "Cecchi", "Cecchini", "Cecconi", "Cei", "Cellai", "Celli", "Cellini", "Cencetti", "Ceni", "Cenni", "Cerbai", "Cesari", "Ceseri", "Checcacci", "Checchi", "Checcucci", "Cheli", "Chellini", "Chen", "Cheng", "Cherici", "Cherubini", "Chiaramonti", "Chiarantini", "Chiarelli", "Chiari", "Chiarini", "Chiarugi", "Chiavacci", "Chiesi", "Chimenti", "Chini", "Chirici", "Chiti", "Ciabatti", "Ciampi", "Cianchi", "Cianfanelli", "Cianferoni", "Ciani", "Ciapetti", "Ciappi", "Ciardi", "Ciatti", "Cicali", "Ciccone", "Cinelli", "Cini", "Ciobanu", "Ciolli", "Cioni", "Cipriani", "Cirillo", "Cirri", "Ciucchi", "Ciuffi", "Ciulli", "Ciullini", "Clemente", "Cocchi", "Cognome", "Coli", "Collini", "Colombo", "Colzi", "Comparini", "Conforti", "Consigli", "Conte", "Conti", "Contini", "Coppini", "Coppola", "Corsi", "Corsini", "Corti", "Cortini", "Cosi", "Costa", "Costantini", "Costantino", "Cozzi", "Cresci", "Crescioli", "Cresti", "Crini", "Curradi", "D'Agostino", "D'Alessandro", "D'Amico", "D'Angelo", "Daddi", "Dainelli", "Dallai", "Danti", "Davitti", "De Angelis", "De Luca", "De Marco", "De Rosa", "De Santis", "De Simone", "De Vita", "Degl'Innocenti", "Degli Innocenti", "Dei", "Del Lungo", "Del Re", "Di Marco", "Di Stefano", "Dini", "Diop", "Dobre", "Dolfi", "Donati", "Dondoli", "Dong", "Donnini", "Ducci", "Dumitru", "Ermini", "Esposito", "Evangelisti", "Fabbri", "Fabbrini", "Fabbrizzi", "Fabbroni", "Fabbrucci", "Fabiani", "Facchini", "Faggi", "Fagioli", "Failli", "Faini", "Falciani", "Falcini", "Falcone", "Fallani", "Falorni", "Falsini", "Falugiani", "Fancelli", "Fanelli", "Fanetti", "Fanfani", "Fani", "Fantappie'", "Fantechi", "Fanti", "Fantini", "Fantoni", "Farina", "Fattori", "Favilli", "Fedi", "Fei", "Ferrante", "Ferrara", "Ferrari", "Ferraro", "Ferretti", "Ferri", "Ferrini", "Ferroni", "Fiaschi", "Fibbi", "Fiesoli", "Filippi", "Filippini", "Fini", "Fioravanti", "Fiore", "Fiorentini", "Fiorini", "Fissi", "Focardi", "Foggi", "Fontana", "Fontanelli", "Fontani", "Forconi", "Formigli", "Forte", "Forti", "Fortini", "Fossati", "Fossi", "Francalanci", "Franceschi", "Franceschini", "Franchi", "Franchini", "Franci", "Francini", "Francioni", "Franco", "Frassineti", "Frati", "Fratini", "Frilli", "Frizzi", "Frosali", "Frosini", "Frullini", "Fusco", "Fusi", "Gabbrielli", "Gabellini", "Gagliardi", "Galanti", "Galardi", "Galeotti", "Galletti", "Galli", "Gallo", "Gallori", "Gambacciani", "Gargani", "Garofalo", "Garuglieri", "Gashi", "Gasperini", "Gatti", "Gelli", "Gensini", "Gentile", "Gentili", "Geri", "Gerini", "Gheri", "Ghini", "Giachetti", "Giachi", "Giacomelli", "Gianassi", "Giani", "Giannelli", "Giannetti", "Gianni", "Giannini", "Giannoni", "Giannotti", "Giannozzi", "Gigli", "Giordano", "Giorgetti", "Giorgi", "Giovacchini", "Giovannelli", "Giovannetti", "Giovannini", "Giovannoni", "Giuliani", "Giunti", "Giuntini", "Giusti", "Gonnelli", "Goretti", "Gori", "Gradi", "Gramigni", "Grassi", "Grasso", "Graziani", "Grazzini", "Greco", "Grifoni", "Grillo", "Grimaldi", "Grossi", "Gualtieri", "Guarducci", "Guarino", "Guarnieri", "Guasti", "Guerra", "Guerri", "Guerrini", "Guidi", "Guidotti", "He", "Hoxha", "Hu", "Huang", "Iandelli", "Ignesti", "Innocenti", "Jin", "La Rosa", "Lai", "Landi", "Landini", "Lanini", "Lapi", "Lapini", "Lari", "Lascialfari", "Lastrucci", "Latini", "Lazzeri", "Lazzerini", "Lelli", "Lenzi", "Leonardi", "Leoncini", "Leone", "Leoni", "Lepri", "Li", "Liao", "Lin", "Linari", "Lippi", "Lisi", "Livi", "Lombardi", "Lombardini", "Lombardo", "Longo", "Lopez", "Lorenzi", "Lorenzini", "Lorini", "Lotti", "Lu", "Lucchesi", "Lucherini", "Lunghi", "Lupi", "Madiai", "Maestrini", "Maffei", "Maggi", "Maggini", "Magherini", "Magini", "Magnani", "Magnelli", "Magni", "Magnolfi", "Magrini", "Malavolti", "Malevolti", "Manca", "Mancini", "Manetti", "Manfredi", "Mangani", "Mannelli", "Manni", "Mannini", "Mannucci", "Manuelli", "Manzini", "Marcelli", "Marchese", "Marchetti", "Marchi", "Marchiani", "Marchionni", "Marconi", "Marcucci", "Margheri", "Mari", "Mariani", "Marilli", "Marinai", "Marinari", "Marinelli", "Marini", "Marino", "Mariotti", "Marsili", "Martelli", "Martinelli", "Martini", "Martino", "Marzi", "Masi", "Masini", "Masoni", "Massai", "Materassi", "Mattei", "Matteini", "Matteucci", "Matteuzzi", "Mattioli", "Mattolini", "Matucci", "Mauro", "Mazzanti", "Mazzei", "Mazzetti", "Mazzi", "Mazzini", "Mazzocchi", "Mazzoli", "Mazzoni", "Mazzuoli", "Meacci", "Mecocci", "Meini", "Melani", "Mele", "Meli", "Mengoni", "Menichetti", "Meoni", "Merlini", "Messeri", "Messina", "Meucci", "Miccinesi", "Miceli", "Micheli", "Michelini", "Michelozzi", "Migliori", "Migliorini", "Milani", "Miniati", "Misuri", "Monaco", "Montagnani", "Montagni", "Montanari", "Montelatici", "Monti", "Montigiani", "Montini", "Morandi", "Morandini", "Morelli", "Moretti", "Morganti", "Mori", "Morini", "Moroni", "Morozzi", "Mugnai", "Mugnaini", "Mustafa", "Naldi", "Naldini", "Nannelli", "Nanni", "Nannini", "Nannucci", "Nardi", "Nardini", "Nardoni", "Natali", "Ndiaye", "Nencetti", "Nencini", "Nencioni", "Neri", "Nesi", "Nesti", "Niccolai", "Niccoli", "Niccolini", "Nigi", "Nistri", "Nocentini", "Noferini", "Novelli", "Nucci", "Nuti", "Nutini", "Oliva", "Olivieri", "Olmi", "Orlandi", "Orlandini", "Orlando", "Orsini", "Ortolani", "Ottanelli", "Pacciani", "Pace", "Paci", "Pacini", "Pagani", "Pagano", "Paggetti", "Pagliai", "Pagni", "Pagnini", "Paladini", "Palagi", "Palchetti", "Palloni", "Palmieri", "Palumbo", "Pampaloni", "Pancani", "Pandolfi", "Pandolfini", "Panerai", "Panichi", "Paoletti", "Paoli", "Paolini", "Papi", "Papini", "Papucci", "Parenti", "Parigi", "Parisi", "Parri", "Parrini", "Pasquini", "Passeri", "Pecchioli", "Pecorini", "Pellegrini", "Pepi", "Perini", "Perrone", "Peruzzi", "Pesci", "Pestelli", "Petri", "Petrini", "Petrucci", "Pettini", "Pezzati", "Pezzatini", "Piani", "Piazza", "Piazzesi", "Piazzini", "Piccardi", "Picchi", "Piccini", "Piccioli", "Pieraccini", "Pieraccioni", "Pieralli", "Pierattini", "Pieri", "Pierini", "Pieroni", "Pietrini", "Pini", "Pinna", "Pinto", "Pinzani", "Pinzauti", "Piras", "Pisani", "Pistolesi", "Poggesi", "Poggi", "Poggiali", "Poggiolini", "Poli", "Pollastri", "Porciani", "Pozzi", "Pratellesi", "Pratesi", "Prosperi", "Pruneti", "Pucci", "Puccini", "Puccioni", "Pugi", "Pugliese", "Puliti", "Querci", "Quercioli", "Raddi", "Radu", "Raffaelli", "Ragazzini", "Ranfagni", "Ranieri", "Rastrelli", "Raugei", "Raveggi", "Renai", "Renzi", "Rettori", "Ricci", "Ricciardi", "Ridi", "Ridolfi", "Rigacci", "Righi", "Righini", "Rinaldi", "Risaliti", "Ristori", "Rizzo", "Rocchi", "Rocchini", "Rogai", "Romagnoli", "Romanelli", "Romani", "Romano", "Romei", "Romeo", "Romiti", "Romoli", "Romolini", "Rontini", "Rosati", "Roselli", "Rosi", "Rossetti", "Rossi", "Rossini", "Rovai", "Ruggeri", "Ruggiero", "Russo", "Sabatini", "Saccardi", "Sacchetti", "Sacchi", "Sacco", "Salerno", "Salimbeni", "Salucci", "Salvadori", "Salvestrini", "Salvi", "Salvini", "Sanesi", "Sani", "Sanna", "Santi", "Santini", "Santoni", "Santoro", "Santucci", "Sardi", "Sarri", "Sarti", "Sassi", "Sbolci", "Scali", "Scarpelli", "Scarselli", "Scopetani", "Secci", "Selvi", "Senatori", "Senesi", "Serafini", "Sereni", "Serra", "Sestini", "Sguanci", "Sieni", "Signorini", "Silvestri", "Simoncini", "Simonetti", "Simoni", "Singh", "Sodi", "Soldi", "Somigli", "Sorbi", "Sorelli", "Sorrentino", "Sottili", "Spina", "Spinelli", "Staccioli", "Staderini", "Stefanelli", "Stefani", "Stefanini", "Stella", "Susini", "Tacchi", "Tacconi", "Taddei", "Tagliaferri", "Tamburini", "Tanganelli", "Tani", "Tanini", "Tapinassi", "Tarchi", "Tarchiani", "Targioni", "Tassi", "Tassini", "Tempesti", "Terzani", "Tesi", "Testa", "Testi", "Tilli", "Tinti", "Tirinnanzi", "Toccafondi", "Tofanari", "Tofani", "Tognaccini", "Tonelli", "Tonini", "Torelli", "Torrini", "Tosi", "Toti", "Tozzi", "Trambusti", "Trapani", "Tucci", "Turchi", "Ugolini", "Ulivi", "Valente", "Valenti", "Valentini", "Vangelisti", "Vanni", "Vannini", "Vannoni", "Vannozzi", "Vannucchi", "Vannucci", "Ventura", "Venturi", "Venturini", "Vestri", "Vettori", "Vichi", "Viciani", "Vieri", "Vigiani", "Vignoli", "Vignolini", "Vignozzi", "Villani", "Vinci", "Visani", "Vitale", "Vitali", "Viti", "Viviani", "Vivoli", "Volpe", "Volpi", "Wang", "Wu", "Xu", "Yang", "Ye", "Zagli", "Zani", "Zanieri", "Zanobini", "Zecchi", "Zetti", "Zhang", "Zheng", "Zhou", "Zhu", "Zingoni", "Zini", "Zoppi"],
2918 // http://www.voornamelijk.nl/meest-voorkomende-achternamen-in-nederland-en-amsterdam/
2919 "nl":["Albers", "Alblas", "Appelman", "Baars", "Baas", "Bakker", "Blank", "Bleeker", "Blok", "Blom", "Boer", "Boers", "Boldewijn", "Boon", "Boot", "Bos", "Bosch", "Bosma", "Bosman", "Bouma", "Bouman", "Bouwman", "Brands", "Brouwer", "Burger", "Buijs", "Buitenhuis", "Ceder", "Cohen", "Dekker", "Dekkers", "Dijkman", "Dijkstra", "Driessen", "Drost", "Engel", "Evers", "Faber", "Franke", "Gerritsen", "Goedhart", "Goossens", "Groen", "Groenenberg", "Groot", "Haan", "Hart", "Heemskerk", "Hendriks", "Hermans", "Hoekstra", "Hofman", "Hopman", "Huisman", "Jacobs", "Jansen", "Janssen", "Jonker", "Jaspers", "Keijzer", "Klaassen", "Klein", "Koek", "Koenders", "Kok", "Kool", "Koopman", "Koopmans", "Koning", "Koster", "Kramer", "Kroon", "Kuijpers", "Kuiper", "Kuipers", "Kurt", "Koster", "Kwakman", "Los", "Lubbers", "Maas", "Markus", "Martens", "Meijer", "Mol", "Molenaar", "Mulder", "Nieuwenhuis", "Peeters", "Peters", "Pengel", "Pieters", "Pool", "Post", "Postma", "Prins", "Pronk", "Reijnders", "Rietveld", "Roest", "Roos", "Sanders", "Schaap", "Scheffer", "Schenk", "Schilder", "Schipper", "Schmidt", "Scholten", "Schouten", "Schut", "Schutte", "Schuurman", "Simons", "Smeets", "Smit", "Smits", "Snel", "Swinkels", "Tas", "Terpstra", "Timmermans", "Tol", "Tromp", "Troost", "Valk", "Veenstra", "Veldkamp", "Verbeek", "Verheul", "Verhoeven", "Vermeer", "Vermeulen", "Verweij", "Vink", "Visser", "Voorn", "Vos", "Wagenaar", "Wiersema", "Willems", "Willemsen", "Witteveen", "Wolff", "Wolters", "Zijlstra", "Zwart", "de Beer", "de Boer", "de Bruijn", "de Bruin", "de Graaf", "de Groot", "de Haan", "de Haas", "de Jager", "de Jong", "de Jonge", "de Koning", "de Lange", "de Leeuw", "de Ridder", "de Rooij", "de Ruiter", "de Vos", "de Vries", "de Waal", "de Wit", "de Zwart", "van Beek", "van Boven", "van Dam", "van Dijk", "van Dongen", "van Doorn", "van Egmond", "van Eijk", "van Es", "van Gelder", "van Gelderen", "van Houten", "van Hulst", "van Kempen", "van Kesteren", "van Leeuwen", "van Loon", "van Mill", "van Noord", "van Ommen", "van Ommeren", "van Oosten", "van Oostveen", "van Rijn", "van Schaik", "van Veen", "van Vliet", "van Wijk", "van Wijngaarden", "van den Poel", "van de Pol", "van den Ploeg", "van de Ven", "van den Berg", "van den Bosch", "van den Brink", "van den Broek", "van den Heuvel", "van der Heijden", "van der Horst", "van der Hulst", "van der Kroon", "van der Laan", "van der Linden", "van der Meer", "van der Meij", "van der Meulen", "van der Molen", "van der Sluis", "van der Spek", "van der Veen", "van der Velde", "van der Velden", "van der Vliet", "van der Wal"],
2920 // https://surnames.behindthename.com/top/lists/england-wales/1991
2921 "uk":["Smith","Jones","Williams","Taylor","Brown","Davies","Evans","Wilson","Thomas","Johnson","Roberts","Robinson","Thompson","Wright","Walker","White","Edwards","Hughes","Green","Hall","Lewis","Harris","Clarke","Patel","Jackson","Wood","Turner","Martin","Cooper","Hill","Ward","Morris","Moore","Clark","Lee","King","Baker","Harrison","Morgan","Allen","James","Scott","Phillips","Watson","Davis","Parker","Price","Bennett","Young","Griffiths","Mitchell","Kelly","Cook","Carter","Richardson","Bailey","Collins","Bell","Shaw","Murphy","Miller","Cox","Richards","Khan","Marshall","Anderson","Simpson","Ellis","Adams","Singh","Begum","Wilkinson","Foster","Chapman","Powell","Webb","Rogers","Gray","Mason","Ali","Hunt","Hussain","Campbell","Matthews","Owen","Palmer","Holmes","Mills","Barnes","Knight","Lloyd","Butler","Russell","Barker","Fisher","Stevens","Jenkins","Murray","Dixon","Harvey","Graham","Pearson","Ahmed","Fletcher","Walsh","Kaur","Gibson","Howard","Andrews","Stewart","Elliott","Reynolds","Saunders","Payne","Fox","Ford","Pearce","Day","Brooks","West","Lawrence","Cole","Atkinson","Bradley","Spencer","Gill","Dawson","Ball","Burton","O'brien","Watts","Rose","Booth","Perry","Ryan","Grant","Wells","Armstrong","Francis","Rees","Hayes","Hart","Hudson","Newman","Barrett","Webster","Hunter","Gregory","Carr","Lowe","Page","Marsh","Riley","Dunn","Woods","Parsons","Berry","Stone","Reid","Holland","Hawkins","Harding","Porter","Robertson","Newton","Oliver","Reed","Kennedy","Williamson","Bird","Gardner","Shah","Dean","Lane","Cooke","Bates","Henderson","Parry","Burgess","Bishop","Walton","Burns","Nicholson","Shepherd","Ross","Cross","Long","Freeman","Warren","Nicholls","Hamilton","Byrne","Sutton","Mcdonald","Yates","Hodgson","Robson","Curtis","Hopkins","O'connor","Harper","Coleman","Watkins","Moss","Mccarthy","Chambers","O'neill","Griffin","Sharp","Hardy","Wheeler","Potter","Osborne","Johnston","Gordon","Doyle","Wallace","George","Jordan","Hutchinson","Rowe","Burke","May","Pritchard","Gilbert","Willis","Higgins","Read","Miles","Stevenson","Stephenson","Hammond","Arnold","Buckley","Walters","Hewitt","Barber","Nelson","Slater","Austin","Sullivan","Whitehead","Mann","Frost","Lambert","Stephens","Blake","Akhtar","Lynch","Goodwin","Barton","Woodward","Thomson","Cunningham","Quinn","Barnett","Baxter","Bibi","Clayton","Nash","Greenwood","Jennings","Holt","Kemp","Poole","Gallagher","Bond","Stokes","Tucker","Davidson","Fowler","Heath","Norman","Middleton","Lawson","Banks","French","Stanley","Jarvis","Gibbs","Ferguson","Hayward","Carroll","Douglas","Dickinson","Todd","Barlow","Peters","Lucas","Knowles","Hartley","Miah","Simmons","Morton","Alexander","Field","Morrison","Norris","Townsend","Preston","Hancock","Thornton","Baldwin","Burrows","Briggs","Parkinson","Reeves","Macdonald","Lamb","Black","Abbott","Sanders","Thorpe","Holden","Tomlinson","Perkins","Ashton","Rhodes","Fuller","Howe","Bryant","Vaughan","Dale","Davey","Weston","Bartlett","Whittaker","Davison","Kent","Skinner","Birch","Morley","Daniels","Glover","Howell","Cartwright","Pugh","Humphreys","Goddard","Brennan","Wall","Kirby","Bowen","Savage","Bull","Wong","Dobson","Smart","Wilkins","Kirk","Fraser","Duffy","Hicks","Patterson","Bradshaw","Little","Archer","Warner","Waters","O'sullivan","Farrell","Brookes","Atkins","Kay","Dodd","Bentley","Flynn","John","Schofield","Short","Haynes","Wade","Butcher","Henry","Sanderson","Crawford","Sheppard","Bolton","Coates","Giles","Gould","Houghton","Gibbons","Pratt","Manning","Law","Hooper","Noble","Dyer","Rahman","Clements","Moran","Sykes","Chan","Doherty","Connolly","Joyce","Franklin","Hobbs","Coles","Herbert","Steele","Kerr","Leach","Winter","Owens","Duncan","Naylor","Fleming","Horton","Finch","Fitzgerald","Randall","Carpenter","Marsden","Browne","Garner","Pickering","Hale","Dennis","Vincent","Chadwick","Chandler","Sharpe","Nolan","Lyons","Hurst","Collier","Peacock","Howarth","Faulkner","Rice","Pollard","Welch","Norton","Gough","Sinclair","Blackburn","Bryan","Conway","Power","Cameron","Daly","Allan","Hanson","Gardiner","Boyle","Myers","Turnbull","Wallis","Mahmood","Sims","Swift","Iqbal","Pope","Brady","Chamberlain","Rowley","Tyler","Farmer","Metcalfe","Hilton","Godfrey","Holloway","Parkin","Bray","Talbot","Donnelly","Nixon","Charlton","Benson","Whitehouse","Barry","Hope","Lord","North","Storey","Connor","Potts","Bevan","Hargreaves","Mclean","Mistry","Bruce","Howells","Hyde","Parkes","Wyatt","Fry","Lees","O'donnell","Craig","Forster","Mckenzie","Humphries","Mellor","Carey","Ingram","Summers","Leonard"],
2922 // https://surnames.behindthename.com/top/lists/germany/2017
2923 "de": ["Müller","Schmidt","Schneider","Fischer","Weber","Meyer","Wagner","Becker","Schulz","Hoffmann","Schäfer","Koch","Bauer","Richter","Klein","Wolf","Schröder","Neumann","Schwarz","Zimmermann","Braun","Krüger","Hofmann","Hartmann","Lange","Schmitt","Werner","Schmitz","Krause","Meier","Lehmann","Schmid","Schulze","Maier","Köhler","Herrmann","König","Walter","Mayer","Huber","Kaiser","Fuchs","Peters","Lang","Scholz","Möller","Weiß","Jung","Hahn","Schubert","Vogel","Friedrich","Keller","Günther","Frank","Berger","Winkler","Roth","Beck","Lorenz","Baumann","Franke","Albrecht","Schuster","Simon","Ludwig","Böhm","Winter","Kraus","Martin","Schumacher","Krämer","Vogt","Stein","Jäger","Otto","Sommer","Groß","Seidel","Heinrich","Brandt","Haas","Schreiber","Graf","Schulte","Dietrich","Ziegler","Kuhn","Kühn","Pohl","Engel","Horn","Busch","Bergmann","Thomas","Voigt","Sauer","Arnold","Wolff","Pfeiffer"],
2924 // http://www.japantimes.co.jp/life/2009/10/11/lifestyle/japans-top-100-most-common-family-names/
2925 "jp": ["Sato","Suzuki","Takahashi","Tanaka","Watanabe","Ito","Yamamoto","Nakamura","Kobayashi","Kato","Yoshida","Yamada","Sasaki","Yamaguchi","Saito","Matsumoto","Inoue","Kimura","Hayashi","Shimizu","Yamazaki","Mori","Abe","Ikeda","Hashimoto","Yamashita","Ishikawa","Nakajima","Maeda","Fujita","Ogawa","Goto","Okada","Hasegawa","Murakami","Kondo","Ishii","Saito","Sakamoto","Endo","Aoki","Fujii","Nishimura","Fukuda","Ota","Miura","Fujiwara","Okamoto","Matsuda","Nakagawa","Nakano","Harada","Ono","Tamura","Takeuchi","Kaneko","Wada","Nakayama","Ishida","Ueda","Morita","Hara","Shibata","Sakai","Kudo","Yokoyama","Miyazaki","Miyamoto","Uchida","Takagi","Ando","Taniguchi","Ohno","Maruyama","Imai","Takada","Fujimoto","Takeda","Murata","Ueno","Sugiyama","Masuda","Sugawara","Hirano","Kojima","Otsuka","Chiba","Kubo","Matsui","Iwasaki","Sakurai","Kinoshita","Noguchi","Matsuo","Nomura","Kikuchi","Sano","Onishi","Sugimoto","Arai"],
2926 // http://www.lowchensaustralia.com/names/popular-spanish-names.htm
2927 "es": ["Garcia","Fernandez","Lopez","Martinez","Gonzalez","Rodriguez","Sanchez","Perez","Martin","Gomez","Ruiz","Diaz","Hernandez","Alvarez","Jimenez","Moreno","Munoz","Alonso","Romero","Navarro","Gutierrez","Torres","Dominguez","Gil","Vazquez","Blanco","Serrano","Ramos","Castro","Suarez","Sanz","Rubio","Ortega","Molina","Delgado","Ortiz","Morales","Ramirez","Marin","Iglesias","Santos","Castillo","Garrido","Calvo","Pena","Cruz","Cano","Nunez","Prieto","Diez","Lozano","Vidal","Pascual","Ferrer","Medina","Vega","Leon","Herrero","Vicente","Mendez","Guerrero","Fuentes","Campos","Nieto","Cortes","Caballero","Ibanez","Lorenzo","Pastor","Gimenez","Saez","Soler","Marquez","Carrasco","Herrera","Montero","Arias","Crespo","Flores","Andres","Aguilar","Hidalgo","Cabrera","Mora","Duran","Velasco","Rey","Pardo","Roman","Vila","Bravo","Merino","Moya","Soto","Izquierdo","Reyes","Redondo","Marcos","Carmona","Menendez"],
2928 // Data taken from https://fr.wikipedia.org/wiki/Liste_des_noms_de_famille_les_plus_courants_en_France
2929 "fr": ["Martin","Bernard","Thomas","Petit","Robert","Richard","Durand","Dubois","Moreau","Laurent","Simon","Michel","Lefèvre","Leroy","Roux","David","Bertrand","Morel","Fournier","Girard","Bonnet","Dupont","Lambert","Fontaine","Rousseau","Vincent","Müller","Lefèvre","Faure","André","Mercier","Blanc","Guérin","Boyer","Garnier","Chevalier","François","Legrand","Gauthier","Garcia","Perrin","Robin","Clément","Morin","Nicolas","Henry","Roussel","Matthieu","Gautier","Masson","Marchand","Duval","Denis","Dumont","Marie","Lemaire","Noël","Meyer","Dufour","Meunier","Brun","Blanchard","Giraud","Joly","Rivière","Lucas","Brunet","Gaillard","Barbier","Arnaud","Martínez","Gérard","Roche","Renard","Schmitt","Roy","Leroux","Colin","Vidal","Caron","Picard","Roger","Fabre","Aubert","Lemoine","Renaud","Dumas","Lacroix","Olivier","Philippe","Bourgeois","Pierre","Benoît","Rey","Leclerc","Payet","Rolland","Leclercq","Guillaume","Lecomte","López","Jean","Dupuy","Guillot","Hubert","Berger","Carpentier","Sánchez","Dupuis","Moulin","Louis","Deschamps","Huet","Vasseur","Perez","Boucher","Fleury","Royer","Klein","Jacquet","Adam","Paris","Poirier","Marty","Aubry","Guyot","Carré","Charles","Renault","Charpentier","Ménard","Maillard","Baron","Bertin","Bailly","Hervé","Schneider","Fernández","Le GallGall","Collet","Léger","Bouvier","Julien","Prévost","Millet","Perrot","Daniel","Le RouxRoux","Cousin","Germain","Breton","Besson","Langlois","Rémi","Le GoffGoff","Pelletier","Lévêque","Perrier","Leblanc","Barré","Lebrun","Marchal","Weber","Mallet","Hamon","Boulanger","Jacob","Monnier","Michaud","Rodríguez","Guichard","Gillet","Étienne","Grondin","Poulain","Tessier","Chevallier","Collin","Chauvin","Da SilvaSilva","Bouchet","Gay","Lemaître","Bénard","Maréchal","Humbert","Reynaud","Antoine","Hoarau","Perret","Barthélemy","Cordier","Pichon","Lejeune","Gilbert","Lamy","Delaunay","Pasquier","Carlier","LaporteLaporte"]
2930 },
2931
2932 // Data taken from http://geoportal.statistics.gov.uk/datasets/ons-postcode-directory-latest-centroids
2933 postcodeAreas: [{code: 'AB'}, {code: 'AL'}, {code: 'B'}, {code: 'BA'}, {code: 'BB'}, {code: 'BD'}, {code: 'BH'}, {code: 'BL'}, {code: 'BN'}, {code: 'BR'}, {code: 'BS'}, {code: 'BT'}, {code: 'CA'}, {code: 'CB'}, {code: 'CF'}, {code: 'CH'}, {code: 'CM'}, {code: 'CO'}, {code: 'CR'}, {code: 'CT'}, {code: 'CV'}, {code: 'CW'}, {code: 'DA'}, {code: 'DD'}, {code: 'DE'}, {code: 'DG'}, {code: 'DH'}, {code: 'DL'}, {code: 'DN'}, {code: 'DT'}, {code: 'DY'}, {code: 'E'}, {code: 'EC'}, {code: 'EH'}, {code: 'EN'}, {code: 'EX'}, {code: 'FK'}, {code: 'FY'}, {code: 'G'}, {code: 'GL'}, {code: 'GU'}, {code: 'GY'}, {code: 'HA'}, {code: 'HD'}, {code: 'HG'}, {code: 'HP'}, {code: 'HR'}, {code: 'HS'}, {code: 'HU'}, {code: 'HX'}, {code: 'IG'}, {code: 'IM'}, {code: 'IP'}, {code: 'IV'}, {code: 'JE'}, {code: 'KA'}, {code: 'KT'}, {code: 'KW'}, {code: 'KY'}, {code: 'L'}, {code: 'LA'}, {code: 'LD'}, {code: 'LE'}, {code: 'LL'}, {code: 'LN'}, {code: 'LS'}, {code: 'LU'}, {code: 'M'}, {code: 'ME'}, {code: 'MK'}, {code: 'ML'}, {code: 'N'}, {code: 'NE'}, {code: 'NG'}, {code: 'NN'}, {code: 'NP'}, {code: 'NR'}, {code: 'NW'}, {code: 'OL'}, {code: 'OX'}, {code: 'PA'}, {code: 'PE'}, {code: 'PH'}, {code: 'PL'}, {code: 'PO'}, {code: 'PR'}, {code: 'RG'}, {code: 'RH'}, {code: 'RM'}, {code: 'S'}, {code: 'SA'}, {code: 'SE'}, {code: 'SG'}, {code: 'SK'}, {code: 'SL'}, {code: 'SM'}, {code: 'SN'}, {code: 'SO'}, {code: 'SP'}, {code: 'SR'}, {code: 'SS'}, {code: 'ST'}, {code: 'SW'}, {code: 'SY'}, {code: 'TA'}, {code: 'TD'}, {code: 'TF'}, {code: 'TN'}, {code: 'TQ'}, {code: 'TR'}, {code: 'TS'}, {code: 'TW'}, {code: 'UB'}, {code: 'W'}, {code: 'WA'}, {code: 'WC'}, {code: 'WD'}, {code: 'WF'}, {code: 'WN'}, {code: 'WR'}, {code: 'WS'}, {code: 'WV'}, {code: 'YO'}, {code: 'ZE'}],
2934
2935 // Data taken from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
2936 countries: [{"name":"Afghanistan","abbreviation":"AF"},{"name":"Åland Islands","abbreviation":"AX"},{"name":"Albania","abbreviation":"AL"},{"name":"Algeria","abbreviation":"DZ"},{"name":"American Samoa","abbreviation":"AS"},{"name":"Andorra","abbreviation":"AD"},{"name":"Angola","abbreviation":"AO"},{"name":"Anguilla","abbreviation":"AI"},{"name":"Antarctica","abbreviation":"AQ"},{"name":"Antigua and Barbuda","abbreviation":"AG"},{"name":"Argentina","abbreviation":"AR"},{"name":"Armenia","abbreviation":"AM"},{"name":"Aruba","abbreviation":"AW"},{"name":"Australia","abbreviation":"AU"},{"name":"Austria","abbreviation":"AT"},{"name":"Azerbaijan","abbreviation":"AZ"},{"name":"Bahamas","abbreviation":"BS"},{"name":"Bahrain","abbreviation":"BH"},{"name":"Bangladesh","abbreviation":"BD"},{"name":"Barbados","abbreviation":"BB"},{"name":"Belarus","abbreviation":"BY"},{"name":"Belgium","abbreviation":"BE"},{"name":"Belize","abbreviation":"BZ"},{"name":"Benin","abbreviation":"BJ"},{"name":"Bermuda","abbreviation":"BM"},{"name":"Bhutan","abbreviation":"BT"},{"name":"Plurinational State of Bolivia","abbreviation":"BO"},{"name":"Bonaire, Sint Eustatius and Saba","abbreviation":"BQ"},{"name":"Bosnia and Herzegovina","abbreviation":"BA"},{"name":"Botswana","abbreviation":"BW"},{"name":"Bouvet Island","abbreviation":"BV"},{"name":"Brazil","abbreviation":"BR"},{"name":"British Indian Ocean Territory","abbreviation":"IO"},{"name":"Brunei Darussalam","abbreviation":"BN"},{"name":"Bulgaria","abbreviation":"BG"},{"name":"Burkina Faso","abbreviation":"BF"},{"name":"Burundi","abbreviation":"BI"},{"name":"Cabo Verde","abbreviation":"CV"},{"name":"Cambodia","abbreviation":"KH"},{"name":"Cameroon","abbreviation":"CM"},{"name":"Canada","abbreviation":"CA"},{"name":"Cayman Islands","abbreviation":"KY"},{"name":"Central African Republic","abbreviation":"CF"},{"name":"Chad","abbreviation":"TD"},{"name":"Chile","abbreviation":"CL"},{"name":"China","abbreviation":"CN"},{"name":"Christmas Island","abbreviation":"CX"},{"name":"Cocos (Keeling) Islands","abbreviation":"CC"},{"name":"Colombia","abbreviation":"CO"},{"name":"Comoros","abbreviation":"KM"},{"name":"Congo","abbreviation":"CG"},{"name":"Democratic Republic of the Congo","abbreviation":"CD"},{"name":"Cook Islands","abbreviation":"CK"},{"name":"Costa Rica","abbreviation":"CR"},{"name":"Côte d'Ivoire","abbreviation":"CI"},{"name":"Croatia","abbreviation":"HR"},{"name":"Cuba","abbreviation":"CU"},{"name":"Curaçao","abbreviation":"CW"},{"name":"Cyprus","abbreviation":"CY"},{"name":"Czechia","abbreviation":"CZ"},{"name":"Denmark","abbreviation":"DK"},{"name":"Djibouti","abbreviation":"DJ"},{"name":"Dominica","abbreviation":"DM"},{"name":"Dominican Republic","abbreviation":"DO"},{"name":"Ecuador","abbreviation":"EC"},{"name":"Egypt","abbreviation":"EG"},{"name":"El Salvador","abbreviation":"SV"},{"name":"Equatorial Guinea","abbreviation":"GQ"},{"name":"Eritrea","abbreviation":"ER"},{"name":"Estonia","abbreviation":"EE"},{"name":"Eswatini","abbreviation":"SZ"},{"name":"Ethiopia","abbreviation":"ET"},{"name":"Falkland Islands (Malvinas)","abbreviation":"FK"},{"name":"Faroe Islands","abbreviation":"FO"},{"name":"Fiji","abbreviation":"FJ"},{"name":"Finland","abbreviation":"FI"},{"name":"France","abbreviation":"FR"},{"name":"French Guiana","abbreviation":"GF"},{"name":"French Polynesia","abbreviation":"PF"},{"name":"French Southern Territories","abbreviation":"TF"},{"name":"Gabon","abbreviation":"GA"},{"name":"Gambia","abbreviation":"GM"},{"name":"Georgia","abbreviation":"GE"},{"name":"Germany","abbreviation":"DE"},{"name":"Ghana","abbreviation":"GH"},{"name":"Gibraltar","abbreviation":"GI"},{"name":"Greece","abbreviation":"GR"},{"name":"Greenland","abbreviation":"GL"},{"name":"Grenada","abbreviation":"GD"},{"name":"Guadeloupe","abbreviation":"GP"},{"name":"Guam","abbreviation":"GU"},{"name":"Guatemala","abbreviation":"GT"},{"name":"Guernsey","abbreviation":"GG"},{"name":"Guinea","abbreviation":"GN"},{"name":"Guinea-Bissau","abbreviation":"GW"},{"name":"Guyana","abbreviation":"GY"},{"name":"Haiti","abbreviation":"HT"},{"name":"Heard Island and McDonald Islands","abbreviation":"HM"},{"name":"Holy See","abbreviation":"VA"},{"name":"Honduras","abbreviation":"HN"},{"name":"Hong Kong","abbreviation":"HK"},{"name":"Hungary","abbreviation":"HU"},{"name":"Iceland","abbreviation":"IS"},{"name":"India","abbreviation":"IN"},{"name":"Indonesia","abbreviation":"ID"},{"name":"Islamic Republic of Iran","abbreviation":"IR"},{"name":"Iraq","abbreviation":"IQ"},{"name":"Ireland","abbreviation":"IE"},{"name":"Isle of Man","abbreviation":"IM"},{"name":"Israel","abbreviation":"IL"},{"name":"Italy","abbreviation":"IT"},{"name":"Jamaica","abbreviation":"JM"},{"name":"Japan","abbreviation":"JP"},{"name":"Jersey","abbreviation":"JE"},{"name":"Jordan","abbreviation":"JO"},{"name":"Kazakhstan","abbreviation":"KZ"},{"name":"Kenya","abbreviation":"KE"},{"name":"Kiribati","abbreviation":"KI"},{"name":"Democratic People's Republic of Korea","abbreviation":"KP"},{"name":"Republic of Korea","abbreviation":"KR"},{"name":"Kuwait","abbreviation":"KW"},{"name":"Kyrgyzstan","abbreviation":"KG"},{"name":"Lao People's Democratic Republic","abbreviation":"LA"},{"name":"Latvia","abbreviation":"LV"},{"name":"Lebanon","abbreviation":"LB"},{"name":"Lesotho","abbreviation":"LS"},{"name":"Liberia","abbreviation":"LR"},{"name":"Libya","abbreviation":"LY"},{"name":"Liechtenstein","abbreviation":"LI"},{"name":"Lithuania","abbreviation":"LT"},{"name":"Luxembourg","abbreviation":"LU"},{"name":"Macao","abbreviation":"MO"},{"name":"Madagascar","abbreviation":"MG"},{"name":"Malawi","abbreviation":"MW"},{"name":"Malaysia","abbreviation":"MY"},{"name":"Maldives","abbreviation":"MV"},{"name":"Mali","abbreviation":"ML"},{"name":"Malta","abbreviation":"MT"},{"name":"Marshall Islands","abbreviation":"MH"},{"name":"Martinique","abbreviation":"MQ"},{"name":"Mauritania","abbreviation":"MR"},{"name":"Mauritius","abbreviation":"MU"},{"name":"Mayotte","abbreviation":"YT"},{"name":"Mexico","abbreviation":"MX"},{"name":"Federated States of Micronesia","abbreviation":"FM"},{"name":"Republic of Moldova","abbreviation":"MD"},{"name":"Monaco","abbreviation":"MC"},{"name":"Mongolia","abbreviation":"MN"},{"name":"Montenegro","abbreviation":"ME"},{"name":"Montserrat","abbreviation":"MS"},{"name":"Morocco","abbreviation":"MA"},{"name":"Mozambique","abbreviation":"MZ"},{"name":"Myanmar","abbreviation":"MM"},{"name":"Namibia","abbreviation":"NA"},{"name":"Nauru","abbreviation":"NR"},{"name":"Nepal","abbreviation":"NP"},{"name":"Kingdom of the Netherlands","abbreviation":"NL"},{"name":"New Caledonia","abbreviation":"NC"},{"name":"New Zealand","abbreviation":"NZ"},{"name":"Nicaragua","abbreviation":"NI"},{"name":"Niger","abbreviation":"NE"},{"name":"Nigeria","abbreviation":"NG"},{"name":"Niue","abbreviation":"NU"},{"name":"Norfolk Island","abbreviation":"NF"},{"name":"North Macedonia","abbreviation":"MK"},{"name":"Northern Mariana Islands","abbreviation":"MP"},{"name":"Norway","abbreviation":"NO"},{"name":"Oman","abbreviation":"OM"},{"name":"Pakistan","abbreviation":"PK"},{"name":"Palau","abbreviation":"PW"},{"name":"State of Palestine","abbreviation":"PS"},{"name":"Panama","abbreviation":"PA"},{"name":"Papua New Guinea","abbreviation":"PG"},{"name":"Paraguay","abbreviation":"PY"},{"name":"Peru","abbreviation":"PE"},{"name":"Philippines","abbreviation":"PH"},{"name":"Pitcairn","abbreviation":"PN"},{"name":"Poland","abbreviation":"PL"},{"name":"Portugal","abbreviation":"PT"},{"name":"Puerto Rico","abbreviation":"PR"},{"name":"Qatar","abbreviation":"QA"},{"name":"Réunion","abbreviation":"RE"},{"name":"Romania","abbreviation":"RO"},{"name":"Russian Federation","abbreviation":"RU"},{"name":"Rwanda","abbreviation":"RW"},{"name":"Saint Barthélemy","abbreviation":"BL"},{"name":"Saint Helena, Ascension and Tristan da Cunha","abbreviation":"SH"},{"name":"Saint Kitts and Nevis","abbreviation":"KN"},{"name":"Saint Lucia","abbreviation":"LC"},{"name":"Saint Martin (French part)","abbreviation":"MF"},{"name":"Saint Pierre and Miquelon","abbreviation":"PM"},{"name":"Saint Vincent and the Grenadines","abbreviation":"VC"},{"name":"Samoa","abbreviation":"WS"},{"name":"San Marino","abbreviation":"SM"},{"name":"Sao Tome and Principe","abbreviation":"ST"},{"name":"Saudi Arabia","abbreviation":"SA"},{"name":"Senegal","abbreviation":"SN"},{"name":"Serbia","abbreviation":"RS"},{"name":"Seychelles","abbreviation":"SC"},{"name":"Sierra Leone","abbreviation":"SL"},{"name":"Singapore","abbreviation":"SG"},{"name":"Sint Maarten (Dutch part)","abbreviation":"SX"},{"name":"Slovakia","abbreviation":"SK"},{"name":"Slovenia","abbreviation":"SI"},{"name":"Solomon Islands","abbreviation":"SB"},{"name":"Somalia","abbreviation":"SO"},{"name":"South Africa","abbreviation":"ZA"},{"name":"South Georgia and the South Sandwich Islands","abbreviation":"GS"},{"name":"South Sudan","abbreviation":"SS"},{"name":"Spain","abbreviation":"ES"},{"name":"Sri Lanka","abbreviation":"LK"},{"name":"Sudan","abbreviation":"SD"},{"name":"Suriname","abbreviation":"SR"},{"name":"Svalbard and Jan Mayen","abbreviation":"SJ"},{"name":"Sweden","abbreviation":"SE"},{"name":"Switzerland","abbreviation":"CH"},{"name":"Syrian Arab Republic","abbreviation":"SY"},{"name":"Taiwan, Province of China","abbreviation":"TW"},{"name":"Tajikistan","abbreviation":"TJ"},{"name":"United Republic of Tanzania","abbreviation":"TZ"},{"name":"Thailand","abbreviation":"TH"},{"name":"Timor-Leste","abbreviation":"TL"},{"name":"Togo","abbreviation":"TG"},{"name":"Tokelau","abbreviation":"TK"},{"name":"Tonga","abbreviation":"TO"},{"name":"Trinidad and Tobago","abbreviation":"TT"},{"name":"Tunisia","abbreviation":"TN"},{"name":"Türkiye","abbreviation":"TR"},{"name":"Turkmenistan","abbreviation":"TM"},{"name":"Turks and Caicos Islands","abbreviation":"TC"},{"name":"Tuvalu","abbreviation":"TV"},{"name":"Uganda","abbreviation":"UG"},{"name":"Ukraine","abbreviation":"UA"},{"name":"United Arab Emirates","abbreviation":"AE"},{"name":"United Kingdom of Great Britain and Northern Ireland","abbreviation":"GB"},{"name":"United States Minor Outlying Islands","abbreviation":"UM"},{"name":"United States of America","abbreviation":"US"},{"name":"Uruguay","abbreviation":"UY"},{"name":"Uzbekistan","abbreviation":"UZ"},{"name":"Vanuatu","abbreviation":"VU"},{"name":"Bolivarian Republic of Venezuela","abbreviation":"VE"},{"name":"Viet Nam","abbreviation":"VN"},{"name":"Virgin Islands (British)","abbreviation":"VG"},{"name":"Virgin Islands (U.S.)","abbreviation":"VI"},{"name":"Wallis and Futuna","abbreviation":"WF"},{"name":"Western Sahara","abbreviation":"EH"},{"name":"Yemen","abbreviation":"YE"},{"name":"Zambia","abbreviation":"ZM"},{"name":"Zimbabwe","abbreviation":"ZW"}],
2937
2938 counties: {
2939 // Data taken from http://www.downloadexcelfiles.com/gb_en/download-excel-file-list-counties-uk
2940 "uk": [
2941 {name: 'Bath and North East Somerset'},
2942 {name: 'Aberdeenshire'},
2943 {name: 'Anglesey'},
2944 {name: 'Angus'},
2945 {name: 'Bedford'},
2946 {name: 'Blackburn with Darwen'},
2947 {name: 'Blackpool'},
2948 {name: 'Bournemouth'},
2949 {name: 'Bracknell Forest'},
2950 {name: 'Brighton & Hove'},
2951 {name: 'Bristol'},
2952 {name: 'Buckinghamshire'},
2953 {name: 'Cambridgeshire'},
2954 {name: 'Carmarthenshire'},
2955 {name: 'Central Bedfordshire'},
2956 {name: 'Ceredigion'},
2957 {name: 'Cheshire East'},
2958 {name: 'Cheshire West and Chester'},
2959 {name: 'Clackmannanshire'},
2960 {name: 'Conwy'},
2961 {name: 'Cornwall'},
2962 {name: 'County Antrim'},
2963 {name: 'County Armagh'},
2964 {name: 'County Down'},
2965 {name: 'County Durham'},
2966 {name: 'County Fermanagh'},
2967 {name: 'County Londonderry'},
2968 {name: 'County Tyrone'},
2969 {name: 'Cumbria'},
2970 {name: 'Darlington'},
2971 {name: 'Denbighshire'},
2972 {name: 'Derby'},
2973 {name: 'Derbyshire'},
2974 {name: 'Devon'},
2975 {name: 'Dorset'},
2976 {name: 'Dumfries and Galloway'},
2977 {name: 'Dundee'},
2978 {name: 'East Lothian'},
2979 {name: 'East Riding of Yorkshire'},
2980 {name: 'East Sussex'},
2981 {name: 'Edinburgh?'},
2982 {name: 'Essex'},
2983 {name: 'Falkirk'},
2984 {name: 'Fife'},
2985 {name: 'Flintshire'},
2986 {name: 'Gloucestershire'},
2987 {name: 'Greater London'},
2988 {name: 'Greater Manchester'},
2989 {name: 'Gwent'},
2990 {name: 'Gwynedd'},
2991 {name: 'Halton'},
2992 {name: 'Hampshire'},
2993 {name: 'Hartlepool'},
2994 {name: 'Herefordshire'},
2995 {name: 'Hertfordshire'},
2996 {name: 'Highlands'},
2997 {name: 'Hull'},
2998 {name: 'Isle of Wight'},
2999 {name: 'Isles of Scilly'},
3000 {name: 'Kent'},
3001 {name: 'Lancashire'},
3002 {name: 'Leicester'},
3003 {name: 'Leicestershire'},
3004 {name: 'Lincolnshire'},
3005 {name: 'Lothian'},
3006 {name: 'Luton'},
3007 {name: 'Medway'},
3008 {name: 'Merseyside'},
3009 {name: 'Mid Glamorgan'},
3010 {name: 'Middlesbrough'},
3011 {name: 'Milton Keynes'},
3012 {name: 'Monmouthshire'},
3013 {name: 'Moray'},
3014 {name: 'Norfolk'},
3015 {name: 'North East Lincolnshire'},
3016 {name: 'North Lincolnshire'},
3017 {name: 'North Somerset'},
3018 {name: 'North Yorkshire'},
3019 {name: 'Northamptonshire'},
3020 {name: 'Northumberland'},
3021 {name: 'Nottingham'},
3022 {name: 'Nottinghamshire'},
3023 {name: 'Oxfordshire'},
3024 {name: 'Pembrokeshire'},
3025 {name: 'Perth and Kinross'},
3026 {name: 'Peterborough'},
3027 {name: 'Plymouth'},
3028 {name: 'Poole'},
3029 {name: 'Portsmouth'},
3030 {name: 'Powys'},
3031 {name: 'Reading'},
3032 {name: 'Redcar and Cleveland'},
3033 {name: 'Rutland'},
3034 {name: 'Scottish Borders'},
3035 {name: 'Shropshire'},
3036 {name: 'Slough'},
3037 {name: 'Somerset'},
3038 {name: 'South Glamorgan'},
3039 {name: 'South Gloucestershire'},
3040 {name: 'South Yorkshire'},
3041 {name: 'Southampton'},
3042 {name: 'Southend-on-Sea'},
3043 {name: 'Staffordshire'},
3044 {name: 'Stirlingshire'},
3045 {name: 'Stockton-on-Tees'},
3046 {name: 'Stoke-on-Trent'},
3047 {name: 'Strathclyde'},
3048 {name: 'Suffolk'},
3049 {name: 'Surrey'},
3050 {name: 'Swindon'},
3051 {name: 'Telford and Wrekin'},
3052 {name: 'Thurrock'},
3053 {name: 'Torbay'},
3054 {name: 'Tyne and Wear'},
3055 {name: 'Warrington'},
3056 {name: 'Warwickshire'},
3057 {name: 'West Berkshire'},
3058 {name: 'West Glamorgan'},
3059 {name: 'West Lothian'},
3060 {name: 'West Midlands'},
3061 {name: 'West Sussex'},
3062 {name: 'West Yorkshire'},
3063 {name: 'Western Isles'},
3064 {name: 'Wiltshire'},
3065 {name: 'Windsor and Maidenhead'},
3066 {name: 'Wokingham'},
3067 {name: 'Worcestershire'},
3068 {name: 'Wrexham'},
3069 {name: 'York'}]
3070 },
3071 provinces: {
3072 "ca": [
3073 {name: 'Alberta', abbreviation: 'AB'},
3074 {name: 'British Columbia', abbreviation: 'BC'},
3075 {name: 'Manitoba', abbreviation: 'MB'},
3076 {name: 'New Brunswick', abbreviation: 'NB'},
3077 {name: 'Newfoundland and Labrador', abbreviation: 'NL'},
3078 {name: 'Nova Scotia', abbreviation: 'NS'},
3079 {name: 'Ontario', abbreviation: 'ON'},
3080 {name: 'Prince Edward Island', abbreviation: 'PE'},
3081 {name: 'Quebec', abbreviation: 'QC'},
3082 {name: 'Saskatchewan', abbreviation: 'SK'},
3083
3084 // The case could be made that the following are not actually provinces
3085 // since they are technically considered "territories" however they all
3086 // look the same on an envelope!
3087 {name: 'Northwest Territories', abbreviation: 'NT'},
3088 {name: 'Nunavut', abbreviation: 'NU'},
3089 {name: 'Yukon', abbreviation: 'YT'}
3090 ],
3091 "it": [
3092 { name: "Agrigento", abbreviation: "AG", code: 84 },
3093 { name: "Alessandria", abbreviation: "AL", code: 6 },
3094 { name: "Ancona", abbreviation: "AN", code: 42 },
3095 { name: "Aosta", abbreviation: "AO", code: 7 },
3096 { name: "L'Aquila", abbreviation: "AQ", code: 66 },
3097 { name: "Arezzo", abbreviation: "AR", code: 51 },
3098 { name: "Ascoli-Piceno", abbreviation: "AP", code: 44 },
3099 { name: "Asti", abbreviation: "AT", code: 5 },
3100 { name: "Avellino", abbreviation: "AV", code: 64 },
3101 { name: "Bari", abbreviation: "BA", code: 72 },
3102 { name: "Barletta-Andria-Trani", abbreviation: "BT", code: 72 },
3103 { name: "Belluno", abbreviation: "BL", code: 25 },
3104 { name: "Benevento", abbreviation: "BN", code: 62 },
3105 { name: "Bergamo", abbreviation: "BG", code: 16 },
3106 { name: "Biella", abbreviation: "BI", code: 96 },
3107 { name: "Bologna", abbreviation: "BO", code: 37 },
3108 { name: "Bolzano", abbreviation: "BZ", code: 21 },
3109 { name: "Brescia", abbreviation: "BS", code: 17 },
3110 { name: "Brindisi", abbreviation: "BR", code: 74 },
3111 { name: "Cagliari", abbreviation: "CA", code: 92 },
3112 { name: "Caltanissetta", abbreviation: "CL", code: 85 },
3113 { name: "Campobasso", abbreviation: "CB", code: 70 },
3114 { name: "Carbonia Iglesias", abbreviation: "CI", code: 70 },
3115 { name: "Caserta", abbreviation: "CE", code: 61 },
3116 { name: "Catania", abbreviation: "CT", code: 87 },
3117 { name: "Catanzaro", abbreviation: "CZ", code: 79 },
3118 { name: "Chieti", abbreviation: "CH", code: 69 },
3119 { name: "Como", abbreviation: "CO", code: 13 },
3120 { name: "Cosenza", abbreviation: "CS", code: 78 },
3121 { name: "Cremona", abbreviation: "CR", code: 19 },
3122 { name: "Crotone", abbreviation: "KR", code: 101 },
3123 { name: "Cuneo", abbreviation: "CN", code: 4 },
3124 { name: "Enna", abbreviation: "EN", code: 86 },
3125 { name: "Fermo", abbreviation: "FM", code: 86 },
3126 { name: "Ferrara", abbreviation: "FE", code: 38 },
3127 { name: "Firenze", abbreviation: "FI", code: 48 },
3128 { name: "Foggia", abbreviation: "FG", code: 71 },
3129 { name: "Forli-Cesena", abbreviation: "FC", code: 71 },
3130 { name: "Frosinone", abbreviation: "FR", code: 60 },
3131 { name: "Genova", abbreviation: "GE", code: 10 },
3132 { name: "Gorizia", abbreviation: "GO", code: 31 },
3133 { name: "Grosseto", abbreviation: "GR", code: 53 },
3134 { name: "Imperia", abbreviation: "IM", code: 8 },
3135 { name: "Isernia", abbreviation: "IS", code: 94 },
3136 { name: "La-Spezia", abbreviation: "SP", code: 66 },
3137 { name: "Latina", abbreviation: "LT", code: 59 },
3138 { name: "Lecce", abbreviation: "LE", code: 75 },
3139 { name: "Lecco", abbreviation: "LC", code: 97 },
3140 { name: "Livorno", abbreviation: "LI", code: 49 },
3141 { name: "Lodi", abbreviation: "LO", code: 98 },
3142 { name: "Lucca", abbreviation: "LU", code: 46 },
3143 { name: "Macerata", abbreviation: "MC", code: 43 },
3144 { name: "Mantova", abbreviation: "MN", code: 20 },
3145 { name: "Massa-Carrara", abbreviation: "MS", code: 45 },
3146 { name: "Matera", abbreviation: "MT", code: 77 },
3147 { name: "Medio Campidano", abbreviation: "VS", code: 77 },
3148 { name: "Messina", abbreviation: "ME", code: 83 },
3149 { name: "Milano", abbreviation: "MI", code: 15 },
3150 { name: "Modena", abbreviation: "MO", code: 36 },
3151 { name: "Monza-Brianza", abbreviation: "MB", code: 36 },
3152 { name: "Napoli", abbreviation: "NA", code: 63 },
3153 { name: "Novara", abbreviation: "NO", code: 3 },
3154 { name: "Nuoro", abbreviation: "NU", code: 91 },
3155 { name: "Ogliastra", abbreviation: "OG", code: 91 },
3156 { name: "Olbia Tempio", abbreviation: "OT", code: 91 },
3157 { name: "Oristano", abbreviation: "OR", code: 95 },
3158 { name: "Padova", abbreviation: "PD", code: 28 },
3159 { name: "Palermo", abbreviation: "PA", code: 82 },
3160 { name: "Parma", abbreviation: "PR", code: 34 },
3161 { name: "Pavia", abbreviation: "PV", code: 18 },
3162 { name: "Perugia", abbreviation: "PG", code: 54 },
3163 { name: "Pesaro-Urbino", abbreviation: "PU", code: 41 },
3164 { name: "Pescara", abbreviation: "PE", code: 68 },
3165 { name: "Piacenza", abbreviation: "PC", code: 33 },
3166 { name: "Pisa", abbreviation: "PI", code: 50 },
3167 { name: "Pistoia", abbreviation: "PT", code: 47 },
3168 { name: "Pordenone", abbreviation: "PN", code: 93 },
3169 { name: "Potenza", abbreviation: "PZ", code: 76 },
3170 { name: "Prato", abbreviation: "PO", code: 100 },
3171 { name: "Ragusa", abbreviation: "RG", code: 88 },
3172 { name: "Ravenna", abbreviation: "RA", code: 39 },
3173 { name: "Reggio-Calabria", abbreviation: "RC", code: 35 },
3174 { name: "Reggio-Emilia", abbreviation: "RE", code: 35 },
3175 { name: "Rieti", abbreviation: "RI", code: 57 },
3176 { name: "Rimini", abbreviation: "RN", code: 99 },
3177 { name: "Roma", abbreviation: "Roma", code: 58 },
3178 { name: "Rovigo", abbreviation: "RO", code: 29 },
3179 { name: "Salerno", abbreviation: "SA", code: 65 },
3180 { name: "Sassari", abbreviation: "SS", code: 90 },
3181 { name: "Savona", abbreviation: "SV", code: 9 },
3182 { name: "Siena", abbreviation: "SI", code: 52 },
3183 { name: "Siracusa", abbreviation: "SR", code: 89 },
3184 { name: "Sondrio", abbreviation: "SO", code: 14 },
3185 { name: "Taranto", abbreviation: "TA", code: 73 },
3186 { name: "Teramo", abbreviation: "TE", code: 67 },
3187 { name: "Terni", abbreviation: "TR", code: 55 },
3188 { name: "Torino", abbreviation: "TO", code: 1 },
3189 { name: "Trapani", abbreviation: "TP", code: 81 },
3190 { name: "Trento", abbreviation: "TN", code: 22 },
3191 { name: "Treviso", abbreviation: "TV", code: 26 },
3192 { name: "Trieste", abbreviation: "TS", code: 32 },
3193 { name: "Udine", abbreviation: "UD", code: 30 },
3194 { name: "Varese", abbreviation: "VA", code: 12 },
3195 { name: "Venezia", abbreviation: "VE", code: 27 },
3196 { name: "Verbania", abbreviation: "VB", code: 27 },
3197 { name: "Vercelli", abbreviation: "VC", code: 2 },
3198 { name: "Verona", abbreviation: "VR", code: 23 },
3199 { name: "Vibo-Valentia", abbreviation: "VV", code: 102 },
3200 { name: "Vicenza", abbreviation: "VI", code: 24 },
3201 { name: "Viterbo", abbreviation: "VT", code: 56 }
3202 ]
3203 },
3204
3205 // from: https://github.com/samsargent/Useful-Autocomplete-Data/blob/master/data/nationalities.json
3206 nationalities: [
3207 {name: 'Afghan'},
3208 {name: 'Albanian'},
3209 {name: 'Algerian'},
3210 {name: 'American'},
3211 {name: 'Andorran'},
3212 {name: 'Angolan'},
3213 {name: 'Antiguans'},
3214 {name: 'Argentinean'},
3215 {name: 'Armenian'},
3216 {name: 'Australian'},
3217 {name: 'Austrian'},
3218 {name: 'Azerbaijani'},
3219 {name: 'Bahami'},
3220 {name: 'Bahraini'},
3221 {name: 'Bangladeshi'},
3222 {name: 'Barbadian'},
3223 {name: 'Barbudans'},
3224 {name: 'Batswana'},
3225 {name: 'Belarusian'},
3226 {name: 'Belgian'},
3227 {name: 'Belizean'},
3228 {name: 'Beninese'},
3229 {name: 'Bhutanese'},
3230 {name: 'Bolivian'},
3231 {name: 'Bosnian'},
3232 {name: 'Brazilian'},
3233 {name: 'British'},
3234 {name: 'Bruneian'},
3235 {name: 'Bulgarian'},
3236 {name: 'Burkinabe'},
3237 {name: 'Burmese'},
3238 {name: 'Burundian'},
3239 {name: 'Cambodian'},
3240 {name: 'Cameroonian'},
3241 {name: 'Canadian'},
3242 {name: 'Cape Verdean'},
3243 {name: 'Central African'},
3244 {name: 'Chadian'},
3245 {name: 'Chilean'},
3246 {name: 'Chinese'},
3247 {name: 'Colombian'},
3248 {name: 'Comoran'},
3249 {name: 'Congolese'},
3250 {name: 'Costa Rican'},
3251 {name: 'Croatian'},
3252 {name: 'Cuban'},
3253 {name: 'Cypriot'},
3254 {name: 'Czech'},
3255 {name: 'Danish'},
3256 {name: 'Djibouti'},
3257 {name: 'Dominican'},
3258 {name: 'Dutch'},
3259 {name: 'East Timorese'},
3260 {name: 'Ecuadorean'},
3261 {name: 'Egyptian'},
3262 {name: 'Emirian'},
3263 {name: 'Equatorial Guinean'},
3264 {name: 'Eritrean'},
3265 {name: 'Estonian'},
3266 {name: 'Ethiopian'},
3267 {name: 'Fijian'},
3268 {name: 'Filipino'},
3269 {name: 'Finnish'},
3270 {name: 'French'},
3271 {name: 'Gabonese'},
3272 {name: 'Gambian'},
3273 {name: 'Georgian'},
3274 {name: 'German'},
3275 {name: 'Ghanaian'},
3276 {name: 'Greek'},
3277 {name: 'Grenadian'},
3278 {name: 'Guatemalan'},
3279 {name: 'Guinea-Bissauan'},
3280 {name: 'Guinean'},
3281 {name: 'Guyanese'},
3282 {name: 'Haitian'},
3283 {name: 'Herzegovinian'},
3284 {name: 'Honduran'},
3285 {name: 'Hungarian'},
3286 {name: 'I-Kiribati'},
3287 {name: 'Icelander'},
3288 {name: 'Indian'},
3289 {name: 'Indonesian'},
3290 {name: 'Iranian'},
3291 {name: 'Iraqi'},
3292 {name: 'Irish'},
3293 {name: 'Israeli'},
3294 {name: 'Italian'},
3295 {name: 'Ivorian'},
3296 {name: 'Jamaican'},
3297 {name: 'Japanese'},
3298 {name: 'Jordanian'},
3299 {name: 'Kazakhstani'},
3300 {name: 'Kenyan'},
3301 {name: 'Kittian and Nevisian'},
3302 {name: 'Kuwaiti'},
3303 {name: 'Kyrgyz'},
3304 {name: 'Laotian'},
3305 {name: 'Latvian'},
3306 {name: 'Lebanese'},
3307 {name: 'Liberian'},
3308 {name: 'Libyan'},
3309 {name: 'Liechtensteiner'},
3310 {name: 'Lithuanian'},
3311 {name: 'Luxembourger'},
3312 {name: 'Macedonian'},
3313 {name: 'Malagasy'},
3314 {name: 'Malawian'},
3315 {name: 'Malaysian'},
3316 {name: 'Maldivan'},
3317 {name: 'Malian'},
3318 {name: 'Maltese'},
3319 {name: 'Marshallese'},
3320 {name: 'Mauritanian'},
3321 {name: 'Mauritian'},
3322 {name: 'Mexican'},
3323 {name: 'Micronesian'},
3324 {name: 'Moldovan'},
3325 {name: 'Monacan'},
3326 {name: 'Mongolian'},
3327 {name: 'Moroccan'},
3328 {name: 'Mosotho'},
3329 {name: 'Motswana'},
3330 {name: 'Mozambican'},
3331 {name: 'Namibian'},
3332 {name: 'Nauruan'},
3333 {name: 'Nepalese'},
3334 {name: 'New Zealander'},
3335 {name: 'Nicaraguan'},
3336 {name: 'Nigerian'},
3337 {name: 'Nigerien'},
3338 {name: 'North Korean'},
3339 {name: 'Northern Irish'},
3340 {name: 'Norwegian'},
3341 {name: 'Omani'},
3342 {name: 'Pakistani'},
3343 {name: 'Palauan'},
3344 {name: 'Panamanian'},
3345 {name: 'Papua New Guinean'},
3346 {name: 'Paraguayan'},
3347 {name: 'Peruvian'},
3348 {name: 'Polish'},
3349 {name: 'Portuguese'},
3350 {name: 'Qatari'},
3351 {name: 'Romani'},
3352 {name: 'Russian'},
3353 {name: 'Rwandan'},
3354 {name: 'Saint Lucian'},
3355 {name: 'Salvadoran'},
3356 {name: 'Samoan'},
3357 {name: 'San Marinese'},
3358 {name: 'Sao Tomean'},
3359 {name: 'Saudi'},
3360 {name: 'Scottish'},
3361 {name: 'Senegalese'},
3362 {name: 'Serbian'},
3363 {name: 'Seychellois'},
3364 {name: 'Sierra Leonean'},
3365 {name: 'Singaporean'},
3366 {name: 'Slovakian'},
3367 {name: 'Slovenian'},
3368 {name: 'Solomon Islander'},
3369 {name: 'Somali'},
3370 {name: 'South African'},
3371 {name: 'South Korean'},
3372 {name: 'Spanish'},
3373 {name: 'Sri Lankan'},
3374 {name: 'Sudanese'},
3375 {name: 'Surinamer'},
3376 {name: 'Swazi'},
3377 {name: 'Swedish'},
3378 {name: 'Swiss'},
3379 {name: 'Syrian'},
3380 {name: 'Taiwanese'},
3381 {name: 'Tajik'},
3382 {name: 'Tanzanian'},
3383 {name: 'Thai'},
3384 {name: 'Togolese'},
3385 {name: 'Tongan'},
3386 {name: 'Trinidadian or Tobagonian'},
3387 {name: 'Tunisian'},
3388 {name: 'Turkish'},
3389 {name: 'Tuvaluan'},
3390 {name: 'Ugandan'},
3391 {name: 'Ukrainian'},
3392 {name: 'Uruguaya'},
3393 {name: 'Uzbekistani'},
3394 {name: 'Venezuela'},
3395 {name: 'Vietnamese'},
3396 {name: 'Wels'},
3397 {name: 'Yemenit'},
3398 {name: 'Zambia'},
3399 {name: 'Zimbabwe'},
3400 ],
3401 // http://www.loc.gov/standards/iso639-2/php/code_list.php (ISO-639-1 codes)
3402 locale_languages: [
3403 "aa",
3404 "ab",
3405 "ae",
3406 "af",
3407 "ak",
3408 "am",
3409 "an",
3410 "ar",
3411 "as",
3412 "av",
3413 "ay",
3414 "az",
3415 "ba",
3416 "be",
3417 "bg",
3418 "bh",
3419 "bi",
3420 "bm",
3421 "bn",
3422 "bo",
3423 "br",
3424 "bs",
3425 "ca",
3426 "ce",
3427 "ch",
3428 "co",
3429 "cr",
3430 "cs",
3431 "cu",
3432 "cv",
3433 "cy",
3434 "da",
3435 "de",
3436 "dv",
3437 "dz",
3438 "ee",
3439 "el",
3440 "en",
3441 "eo",
3442 "es",
3443 "et",
3444 "eu",
3445 "fa",
3446 "ff",
3447 "fi",
3448 "fj",
3449 "fo",
3450 "fr",
3451 "fy",
3452 "ga",
3453 "gd",
3454 "gl",
3455 "gn",
3456 "gu",
3457 "gv",
3458 "ha",
3459 "he",
3460 "hi",
3461 "ho",
3462 "hr",
3463 "ht",
3464 "hu",
3465 "hy",
3466 "hz",
3467 "ia",
3468 "id",
3469 "ie",
3470 "ig",
3471 "ii",
3472 "ik",
3473 "io",
3474 "is",
3475 "it",
3476 "iu",
3477 "ja",
3478 "jv",
3479 "ka",
3480 "kg",
3481 "ki",
3482 "kj",
3483 "kk",
3484 "kl",
3485 "km",
3486 "kn",
3487 "ko",
3488 "kr",
3489 "ks",
3490 "ku",
3491 "kv",
3492 "kw",
3493 "ky",
3494 "la",
3495 "lb",
3496 "lg",
3497 "li",
3498 "ln",
3499 "lo",
3500 "lt",
3501 "lu",
3502 "lv",
3503 "mg",
3504 "mh",
3505 "mi",
3506 "mk",
3507 "ml",
3508 "mn",
3509 "mr",
3510 "ms",
3511 "mt",
3512 "my",
3513 "na",
3514 "nb",
3515 "nd",
3516 "ne",
3517 "ng",
3518 "nl",
3519 "nn",
3520 "no",
3521 "nr",
3522 "nv",
3523 "ny",
3524 "oc",
3525 "oj",
3526 "om",
3527 "or",
3528 "os",
3529 "pa",
3530 "pi",
3531 "pl",
3532 "ps",
3533 "pt",
3534 "qu",
3535 "rm",
3536 "rn",
3537 "ro",
3538 "ru",
3539 "rw",
3540 "sa",
3541 "sc",
3542 "sd",
3543 "se",
3544 "sg",
3545 "si",
3546 "sk",
3547 "sl",
3548 "sm",
3549 "sn",
3550 "so",
3551 "sq",
3552 "sr",
3553 "ss",
3554 "st",
3555 "su",
3556 "sv",
3557 "sw",
3558 "ta",
3559 "te",
3560 "tg",
3561 "th",
3562 "ti",
3563 "tk",
3564 "tl",
3565 "tn",
3566 "to",
3567 "tr",
3568 "ts",
3569 "tt",
3570 "tw",
3571 "ty",
3572 "ug",
3573 "uk",
3574 "ur",
3575 "uz",
3576 "ve",
3577 "vi",
3578 "vo",
3579 "wa",
3580 "wo",
3581 "xh",
3582 "yi",
3583 "yo",
3584 "za",
3585 "zh",
3586 "zu"
3587 ],
3588
3589 // From http://data.okfn.org/data/core/language-codes#resource-language-codes-full (IETF language tags)
3590 locale_regions: [
3591 "agq-CM",
3592 "asa-TZ",
3593 "ast-ES",
3594 "bas-CM",
3595 "bem-ZM",
3596 "bez-TZ",
3597 "brx-IN",
3598 "cgg-UG",
3599 "chr-US",
3600 "dav-KE",
3601 "dje-NE",
3602 "dsb-DE",
3603 "dua-CM",
3604 "dyo-SN",
3605 "ebu-KE",
3606 "ewo-CM",
3607 "fil-PH",
3608 "fur-IT",
3609 "gsw-CH",
3610 "gsw-FR",
3611 "gsw-LI",
3612 "guz-KE",
3613 "haw-US",
3614 "hsb-DE",
3615 "jgo-CM",
3616 "jmc-TZ",
3617 "kab-DZ",
3618 "kam-KE",
3619 "kde-TZ",
3620 "kea-CV",
3621 "khq-ML",
3622 "kkj-CM",
3623 "kln-KE",
3624 "kok-IN",
3625 "ksb-TZ",
3626 "ksf-CM",
3627 "ksh-DE",
3628 "lag-TZ",
3629 "lkt-US",
3630 "luo-KE",
3631 "luy-KE",
3632 "mas-KE",
3633 "mas-TZ",
3634 "mer-KE",
3635 "mfe-MU",
3636 "mgh-MZ",
3637 "mgo-CM",
3638 "mua-CM",
3639 "naq-NA",
3640 "nmg-CM",
3641 "nnh-CM",
3642 "nus-SD",
3643 "nyn-UG",
3644 "rof-TZ",
3645 "rwk-TZ",
3646 "sah-RU",
3647 "saq-KE",
3648 "sbp-TZ",
3649 "seh-MZ",
3650 "ses-ML",
3651 "shi-Latn",
3652 "shi-Latn-MA",
3653 "shi-Tfng",
3654 "shi-Tfng-MA",
3655 "smn-FI",
3656 "teo-KE",
3657 "teo-UG",
3658 "twq-NE",
3659 "tzm-Latn",
3660 "tzm-Latn-MA",
3661 "vai-Latn",
3662 "vai-Latn-LR",
3663 "vai-Vaii",
3664 "vai-Vaii-LR",
3665 "vun-TZ",
3666 "wae-CH",
3667 "xog-UG",
3668 "yav-CM",
3669 "zgh-MA",
3670 "af-NA",
3671 "af-ZA",
3672 "ak-GH",
3673 "am-ET",
3674 "ar-001",
3675 "ar-AE",
3676 "ar-BH",
3677 "ar-DJ",
3678 "ar-DZ",
3679 "ar-EG",
3680 "ar-EH",
3681 "ar-ER",
3682 "ar-IL",
3683 "ar-IQ",
3684 "ar-JO",
3685 "ar-KM",
3686 "ar-KW",
3687 "ar-LB",
3688 "ar-LY",
3689 "ar-MA",
3690 "ar-MR",
3691 "ar-OM",
3692 "ar-PS",
3693 "ar-QA",
3694 "ar-SA",
3695 "ar-SD",
3696 "ar-SO",
3697 "ar-SS",
3698 "ar-SY",
3699 "ar-TD",
3700 "ar-TN",
3701 "ar-YE",
3702 "as-IN",
3703 "az-Cyrl",
3704 "az-Cyrl-AZ",
3705 "az-Latn",
3706 "az-Latn-AZ",
3707 "be-BY",
3708 "bg-BG",
3709 "bm-Latn",
3710 "bm-Latn-ML",
3711 "bn-BD",
3712 "bn-IN",
3713 "bo-CN",
3714 "bo-IN",
3715 "br-FR",
3716 "bs-Cyrl",
3717 "bs-Cyrl-BA",
3718 "bs-Latn",
3719 "bs-Latn-BA",
3720 "ca-AD",
3721 "ca-ES",
3722 "ca-ES-VALENCIA",
3723 "ca-FR",
3724 "ca-IT",
3725 "cs-CZ",
3726 "cy-GB",
3727 "da-DK",
3728 "da-GL",
3729 "de-AT",
3730 "de-BE",
3731 "de-CH",
3732 "de-DE",
3733 "de-LI",
3734 "de-LU",
3735 "dz-BT",
3736 "ee-GH",
3737 "ee-TG",
3738 "el-CY",
3739 "el-GR",
3740 "en-001",
3741 "en-150",
3742 "en-AG",
3743 "en-AI",
3744 "en-AS",
3745 "en-AU",
3746 "en-BB",
3747 "en-BE",
3748 "en-BM",
3749 "en-BS",
3750 "en-BW",
3751 "en-BZ",
3752 "en-CA",
3753 "en-CC",
3754 "en-CK",
3755 "en-CM",
3756 "en-CX",
3757 "en-DG",
3758 "en-DM",
3759 "en-ER",
3760 "en-FJ",
3761 "en-FK",
3762 "en-FM",
3763 "en-GB",
3764 "en-GD",
3765 "en-GG",
3766 "en-GH",
3767 "en-GI",
3768 "en-GM",
3769 "en-GU",
3770 "en-GY",
3771 "en-HK",
3772 "en-IE",
3773 "en-IM",
3774 "en-IN",
3775 "en-IO",
3776 "en-JE",
3777 "en-JM",
3778 "en-KE",
3779 "en-KI",
3780 "en-KN",
3781 "en-KY",
3782 "en-LC",
3783 "en-LR",
3784 "en-LS",
3785 "en-MG",
3786 "en-MH",
3787 "en-MO",
3788 "en-MP",
3789 "en-MS",
3790 "en-MT",
3791 "en-MU",
3792 "en-MW",
3793 "en-MY",
3794 "en-NA",
3795 "en-NF",
3796 "en-NG",
3797 "en-NR",
3798 "en-NU",
3799 "en-NZ",
3800 "en-PG",
3801 "en-PH",
3802 "en-PK",
3803 "en-PN",
3804 "en-PR",
3805 "en-PW",
3806 "en-RW",
3807 "en-SB",
3808 "en-SC",
3809 "en-SD",
3810 "en-SG",
3811 "en-SH",
3812 "en-SL",
3813 "en-SS",
3814 "en-SX",
3815 "en-SZ",
3816 "en-TC",
3817 "en-TK",
3818 "en-TO",
3819 "en-TT",
3820 "en-TV",
3821 "en-TZ",
3822 "en-UG",
3823 "en-UM",
3824 "en-US",
3825 "en-US-POSIX",
3826 "en-VC",
3827 "en-VG",
3828 "en-VI",
3829 "en-VU",
3830 "en-WS",
3831 "en-ZA",
3832 "en-ZM",
3833 "en-ZW",
3834 "eo-001",
3835 "es-419",
3836 "es-AR",
3837 "es-BO",
3838 "es-CL",
3839 "es-CO",
3840 "es-CR",
3841 "es-CU",
3842 "es-DO",
3843 "es-EA",
3844 "es-EC",
3845 "es-ES",
3846 "es-GQ",
3847 "es-GT",
3848 "es-HN",
3849 "es-IC",
3850 "es-MX",
3851 "es-NI",
3852 "es-PA",
3853 "es-PE",
3854 "es-PH",
3855 "es-PR",
3856 "es-PY",
3857 "es-SV",
3858 "es-US",
3859 "es-UY",
3860 "es-VE",
3861 "et-EE",
3862 "eu-ES",
3863 "fa-AF",
3864 "fa-IR",
3865 "ff-CM",
3866 "ff-GN",
3867 "ff-MR",
3868 "ff-SN",
3869 "fi-FI",
3870 "fo-FO",
3871 "fr-BE",
3872 "fr-BF",
3873 "fr-BI",
3874 "fr-BJ",
3875 "fr-BL",
3876 "fr-CA",
3877 "fr-CD",
3878 "fr-CF",
3879 "fr-CG",
3880 "fr-CH",
3881 "fr-CI",
3882 "fr-CM",
3883 "fr-DJ",
3884 "fr-DZ",
3885 "fr-FR",
3886 "fr-GA",
3887 "fr-GF",
3888 "fr-GN",
3889 "fr-GP",
3890 "fr-GQ",
3891 "fr-HT",
3892 "fr-KM",
3893 "fr-LU",
3894 "fr-MA",
3895 "fr-MC",
3896 "fr-MF",
3897 "fr-MG",
3898 "fr-ML",
3899 "fr-MQ",
3900 "fr-MR",
3901 "fr-MU",
3902 "fr-NC",
3903 "fr-NE",
3904 "fr-PF",
3905 "fr-PM",
3906 "fr-RE",
3907 "fr-RW",
3908 "fr-SC",
3909 "fr-SN",
3910 "fr-SY",
3911 "fr-TD",
3912 "fr-TG",
3913 "fr-TN",
3914 "fr-VU",
3915 "fr-WF",
3916 "fr-YT",
3917 "fy-NL",
3918 "ga-IE",
3919 "gd-GB",
3920 "gl-ES",
3921 "gu-IN",
3922 "gv-IM",
3923 "ha-Latn",
3924 "ha-Latn-GH",
3925 "ha-Latn-NE",
3926 "ha-Latn-NG",
3927 "he-IL",
3928 "hi-IN",
3929 "hr-BA",
3930 "hr-HR",
3931 "hu-HU",
3932 "hy-AM",
3933 "id-ID",
3934 "ig-NG",
3935 "ii-CN",
3936 "is-IS",
3937 "it-CH",
3938 "it-IT",
3939 "it-SM",
3940 "ja-JP",
3941 "ka-GE",
3942 "ki-KE",
3943 "kk-Cyrl",
3944 "kk-Cyrl-KZ",
3945 "kl-GL",
3946 "km-KH",
3947 "kn-IN",
3948 "ko-KP",
3949 "ko-KR",
3950 "ks-Arab",
3951 "ks-Arab-IN",
3952 "kw-GB",
3953 "ky-Cyrl",
3954 "ky-Cyrl-KG",
3955 "lb-LU",
3956 "lg-UG",
3957 "ln-AO",
3958 "ln-CD",
3959 "ln-CF",
3960 "ln-CG",
3961 "lo-LA",
3962 "lt-LT",
3963 "lu-CD",
3964 "lv-LV",
3965 "mg-MG",
3966 "mk-MK",
3967 "ml-IN",
3968 "mn-Cyrl",
3969 "mn-Cyrl-MN",
3970 "mr-IN",
3971 "ms-Latn",
3972 "ms-Latn-BN",
3973 "ms-Latn-MY",
3974 "ms-Latn-SG",
3975 "mt-MT",
3976 "my-MM",
3977 "nb-NO",
3978 "nb-SJ",
3979 "nd-ZW",
3980 "ne-IN",
3981 "ne-NP",
3982 "nl-AW",
3983 "nl-BE",
3984 "nl-BQ",
3985 "nl-CW",
3986 "nl-NL",
3987 "nl-SR",
3988 "nl-SX",
3989 "nn-NO",
3990 "om-ET",
3991 "om-KE",
3992 "or-IN",
3993 "os-GE",
3994 "os-RU",
3995 "pa-Arab",
3996 "pa-Arab-PK",
3997 "pa-Guru",
3998 "pa-Guru-IN",
3999 "pl-PL",
4000 "ps-AF",
4001 "pt-AO",
4002 "pt-BR",
4003 "pt-CV",
4004 "pt-GW",
4005 "pt-MO",
4006 "pt-MZ",
4007 "pt-PT",
4008 "pt-ST",
4009 "pt-TL",
4010 "qu-BO",
4011 "qu-EC",
4012 "qu-PE",
4013 "rm-CH",
4014 "rn-BI",
4015 "ro-MD",
4016 "ro-RO",
4017 "ru-BY",
4018 "ru-KG",
4019 "ru-KZ",
4020 "ru-MD",
4021 "ru-RU",
4022 "ru-UA",
4023 "rw-RW",
4024 "se-FI",
4025 "se-NO",
4026 "se-SE",
4027 "sg-CF",
4028 "si-LK",
4029 "sk-SK",
4030 "sl-SI",
4031 "sn-ZW",
4032 "so-DJ",
4033 "so-ET",
4034 "so-KE",
4035 "so-SO",
4036 "sq-AL",
4037 "sq-MK",
4038 "sq-XK",
4039 "sr-Cyrl",
4040 "sr-Cyrl-BA",
4041 "sr-Cyrl-ME",
4042 "sr-Cyrl-RS",
4043 "sr-Cyrl-XK",
4044 "sr-Latn",
4045 "sr-Latn-BA",
4046 "sr-Latn-ME",
4047 "sr-Latn-RS",
4048 "sr-Latn-XK",
4049 "sv-AX",
4050 "sv-FI",
4051 "sv-SE",
4052 "sw-CD",
4053 "sw-KE",
4054 "sw-TZ",
4055 "sw-UG",
4056 "ta-IN",
4057 "ta-LK",
4058 "ta-MY",
4059 "ta-SG",
4060 "te-IN",
4061 "th-TH",
4062 "ti-ER",
4063 "ti-ET",
4064 "to-TO",
4065 "tr-CY",
4066 "tr-TR",
4067 "ug-Arab",
4068 "ug-Arab-CN",
4069 "uk-UA",
4070 "ur-IN",
4071 "ur-PK",
4072 "uz-Arab",
4073 "uz-Arab-AF",
4074 "uz-Cyrl",
4075 "uz-Cyrl-UZ",
4076 "uz-Latn",
4077 "uz-Latn-UZ",
4078 "vi-VN",
4079 "yi-001",
4080 "yo-BJ",
4081 "yo-NG",
4082 "zh-Hans",
4083 "zh-Hans-CN",
4084 "zh-Hans-HK",
4085 "zh-Hans-MO",
4086 "zh-Hans-SG",
4087 "zh-Hant",
4088 "zh-Hant-HK",
4089 "zh-Hant-MO",
4090 "zh-Hant-TW",
4091 "zu-ZA"
4092 ],
4093
4094 us_states_and_dc: [
4095 {name: 'Alabama', abbreviation: 'AL'},
4096 {name: 'Alaska', abbreviation: 'AK'},
4097 {name: 'Arizona', abbreviation: 'AZ'},
4098 {name: 'Arkansas', abbreviation: 'AR'},
4099 {name: 'California', abbreviation: 'CA'},
4100 {name: 'Colorado', abbreviation: 'CO'},
4101 {name: 'Connecticut', abbreviation: 'CT'},
4102 {name: 'Delaware', abbreviation: 'DE'},
4103 {name: 'District of Columbia', abbreviation: 'DC'},
4104 {name: 'Florida', abbreviation: 'FL'},
4105 {name: 'Georgia', abbreviation: 'GA'},
4106 {name: 'Hawaii', abbreviation: 'HI'},
4107 {name: 'Idaho', abbreviation: 'ID'},
4108 {name: 'Illinois', abbreviation: 'IL'},
4109 {name: 'Indiana', abbreviation: 'IN'},
4110 {name: 'Iowa', abbreviation: 'IA'},
4111 {name: 'Kansas', abbreviation: 'KS'},
4112 {name: 'Kentucky', abbreviation: 'KY'},
4113 {name: 'Louisiana', abbreviation: 'LA'},
4114 {name: 'Maine', abbreviation: 'ME'},
4115 {name: 'Maryland', abbreviation: 'MD'},
4116 {name: 'Massachusetts', abbreviation: 'MA'},
4117 {name: 'Michigan', abbreviation: 'MI'},
4118 {name: 'Minnesota', abbreviation: 'MN'},
4119 {name: 'Mississippi', abbreviation: 'MS'},
4120 {name: 'Missouri', abbreviation: 'MO'},
4121 {name: 'Montana', abbreviation: 'MT'},
4122 {name: 'Nebraska', abbreviation: 'NE'},
4123 {name: 'Nevada', abbreviation: 'NV'},
4124 {name: 'New Hampshire', abbreviation: 'NH'},
4125 {name: 'New Jersey', abbreviation: 'NJ'},
4126 {name: 'New Mexico', abbreviation: 'NM'},
4127 {name: 'New York', abbreviation: 'NY'},
4128 {name: 'North Carolina', abbreviation: 'NC'},
4129 {name: 'North Dakota', abbreviation: 'ND'},
4130 {name: 'Ohio', abbreviation: 'OH'},
4131 {name: 'Oklahoma', abbreviation: 'OK'},
4132 {name: 'Oregon', abbreviation: 'OR'},
4133 {name: 'Pennsylvania', abbreviation: 'PA'},
4134 {name: 'Rhode Island', abbreviation: 'RI'},
4135 {name: 'South Carolina', abbreviation: 'SC'},
4136 {name: 'South Dakota', abbreviation: 'SD'},
4137 {name: 'Tennessee', abbreviation: 'TN'},
4138 {name: 'Texas', abbreviation: 'TX'},
4139 {name: 'Utah', abbreviation: 'UT'},
4140 {name: 'Vermont', abbreviation: 'VT'},
4141 {name: 'Virginia', abbreviation: 'VA'},
4142 {name: 'Washington', abbreviation: 'WA'},
4143 {name: 'West Virginia', abbreviation: 'WV'},
4144 {name: 'Wisconsin', abbreviation: 'WI'},
4145 {name: 'Wyoming', abbreviation: 'WY'}
4146 ],
4147
4148 territories: [
4149 {name: 'American Samoa', abbreviation: 'AS'},
4150 {name: 'Federated States of Micronesia', abbreviation: 'FM'},
4151 {name: 'Guam', abbreviation: 'GU'},
4152 {name: 'Marshall Islands', abbreviation: 'MH'},
4153 {name: 'Northern Mariana Islands', abbreviation: 'MP'},
4154 {name: 'Puerto Rico', abbreviation: 'PR'},
4155 {name: 'Virgin Islands, U.S.', abbreviation: 'VI'}
4156 ],
4157
4158 armed_forces: [
4159 {name: 'Armed Forces Europe', abbreviation: 'AE'},
4160 {name: 'Armed Forces Pacific', abbreviation: 'AP'},
4161 {name: 'Armed Forces the Americas', abbreviation: 'AA'}
4162 ],
4163
4164 country_regions: {
4165 it: [
4166 { name: "Valle d'Aosta", abbreviation: "VDA" },
4167 { name: "Piemonte", abbreviation: "PIE" },
4168 { name: "Lombardia", abbreviation: "LOM" },
4169 { name: "Veneto", abbreviation: "VEN" },
4170 { name: "Trentino Alto Adige", abbreviation: "TAA" },
4171 { name: "Friuli Venezia Giulia", abbreviation: "FVG" },
4172 { name: "Liguria", abbreviation: "LIG" },
4173 { name: "Emilia Romagna", abbreviation: "EMR" },
4174 { name: "Toscana", abbreviation: "TOS" },
4175 { name: "Umbria", abbreviation: "UMB" },
4176 { name: "Marche", abbreviation: "MAR" },
4177 { name: "Abruzzo", abbreviation: "ABR" },
4178 { name: "Lazio", abbreviation: "LAZ" },
4179 { name: "Campania", abbreviation: "CAM" },
4180 { name: "Puglia", abbreviation: "PUG" },
4181 { name: "Basilicata", abbreviation: "BAS" },
4182 { name: "Molise", abbreviation: "MOL" },
4183 { name: "Calabria", abbreviation: "CAL" },
4184 { name: "Sicilia", abbreviation: "SIC" },
4185 { name: "Sardegna", abbreviation: "SAR" }
4186 ],
4187 mx: [
4188 { name: 'Aguascalientes', abbreviation: 'AGU' },
4189 { name: 'Baja California', abbreviation: 'BCN' },
4190 { name: 'Baja California Sur', abbreviation: 'BCS' },
4191 { name: 'Campeche', abbreviation: 'CAM' },
4192 { name: 'Chiapas', abbreviation: 'CHP' },
4193 { name: 'Chihuahua', abbreviation: 'CHH' },
4194 { name: 'Ciudad de México', abbreviation: 'DIF' },
4195 { name: 'Coahuila', abbreviation: 'COA' },
4196 { name: 'Colima', abbreviation: 'COL' },
4197 { name: 'Durango', abbreviation: 'DUR' },
4198 { name: 'Guanajuato', abbreviation: 'GUA' },
4199 { name: 'Guerrero', abbreviation: 'GRO' },
4200 { name: 'Hidalgo', abbreviation: 'HID' },
4201 { name: 'Jalisco', abbreviation: 'JAL' },
4202 { name: 'México', abbreviation: 'MEX' },
4203 { name: 'Michoacán', abbreviation: 'MIC' },
4204 { name: 'Morelos', abbreviation: 'MOR' },
4205 { name: 'Nayarit', abbreviation: 'NAY' },
4206 { name: 'Nuevo León', abbreviation: 'NLE' },
4207 { name: 'Oaxaca', abbreviation: 'OAX' },
4208 { name: 'Puebla', abbreviation: 'PUE' },
4209 { name: 'Querétaro', abbreviation: 'QUE' },
4210 { name: 'Quintana Roo', abbreviation: 'ROO' },
4211 { name: 'San Luis Potosí', abbreviation: 'SLP' },
4212 { name: 'Sinaloa', abbreviation: 'SIN' },
4213 { name: 'Sonora', abbreviation: 'SON' },
4214 { name: 'Tabasco', abbreviation: 'TAB' },
4215 { name: 'Tamaulipas', abbreviation: 'TAM' },
4216 { name: 'Tlaxcala', abbreviation: 'TLA' },
4217 { name: 'Veracruz', abbreviation: 'VER' },
4218 { name: 'Yucatán', abbreviation: 'YUC' },
4219 { name: 'Zacatecas', abbreviation: 'ZAC' }
4220 ]
4221 },
4222
4223 street_suffixes: {
4224 'us': [
4225 {name: 'Avenue', abbreviation: 'Ave'},
4226 {name: 'Boulevard', abbreviation: 'Blvd'},
4227 {name: 'Center', abbreviation: 'Ctr'},
4228 {name: 'Circle', abbreviation: 'Cir'},
4229 {name: 'Court', abbreviation: 'Ct'},
4230 {name: 'Drive', abbreviation: 'Dr'},
4231 {name: 'Extension', abbreviation: 'Ext'},
4232 {name: 'Glen', abbreviation: 'Gln'},
4233 {name: 'Grove', abbreviation: 'Grv'},
4234 {name: 'Heights', abbreviation: 'Hts'},
4235 {name: 'Highway', abbreviation: 'Hwy'},
4236 {name: 'Junction', abbreviation: 'Jct'},
4237 {name: 'Key', abbreviation: 'Key'},
4238 {name: 'Lane', abbreviation: 'Ln'},
4239 {name: 'Loop', abbreviation: 'Loop'},
4240 {name: 'Manor', abbreviation: 'Mnr'},
4241 {name: 'Mill', abbreviation: 'Mill'},
4242 {name: 'Park', abbreviation: 'Park'},
4243 {name: 'Parkway', abbreviation: 'Pkwy'},
4244 {name: 'Pass', abbreviation: 'Pass'},
4245 {name: 'Path', abbreviation: 'Path'},
4246 {name: 'Pike', abbreviation: 'Pike'},
4247 {name: 'Place', abbreviation: 'Pl'},
4248 {name: 'Plaza', abbreviation: 'Plz'},
4249 {name: 'Point', abbreviation: 'Pt'},
4250 {name: 'Ridge', abbreviation: 'Rdg'},
4251 {name: 'River', abbreviation: 'Riv'},
4252 {name: 'Road', abbreviation: 'Rd'},
4253 {name: 'Square', abbreviation: 'Sq'},
4254 {name: 'Street', abbreviation: 'St'},
4255 {name: 'Terrace', abbreviation: 'Ter'},
4256 {name: 'Trail', abbreviation: 'Trl'},
4257 {name: 'Turnpike', abbreviation: 'Tpke'},
4258 {name: 'View', abbreviation: 'Vw'},
4259 {name: 'Way', abbreviation: 'Way'}
4260 ],
4261 'it': [
4262 { name: 'Accesso', abbreviation: 'Acc.' },
4263 { name: 'Alzaia', abbreviation: 'Alz.' },
4264 { name: 'Arco', abbreviation: 'Arco' },
4265 { name: 'Archivolto', abbreviation: 'Acv.' },
4266 { name: 'Arena', abbreviation: 'Arena' },
4267 { name: 'Argine', abbreviation: 'Argine' },
4268 { name: 'Bacino', abbreviation: 'Bacino' },
4269 { name: 'Banchi', abbreviation: 'Banchi' },
4270 { name: 'Banchina', abbreviation: 'Ban.' },
4271 { name: 'Bastioni', abbreviation: 'Bas.' },
4272 { name: 'Belvedere', abbreviation: 'Belv.' },
4273 { name: 'Borgata', abbreviation: 'B.ta' },
4274 { name: 'Borgo', abbreviation: 'B.go' },
4275 { name: 'Calata', abbreviation: 'Cal.' },
4276 { name: 'Calle', abbreviation: 'Calle' },
4277 { name: 'Campiello', abbreviation: 'Cam.' },
4278 { name: 'Campo', abbreviation: 'Cam.' },
4279 { name: 'Canale', abbreviation: 'Can.' },
4280 { name: 'Carraia', abbreviation: 'Carr.' },
4281 { name: 'Cascina', abbreviation: 'Cascina' },
4282 { name: 'Case sparse', abbreviation: 'c.s.' },
4283 { name: 'Cavalcavia', abbreviation: 'Cv.' },
4284 { name: 'Circonvallazione', abbreviation: 'Cv.' },
4285 { name: 'Complanare', abbreviation: 'C.re' },
4286 { name: 'Contrada', abbreviation: 'C.da' },
4287 { name: 'Corso', abbreviation: 'C.so' },
4288 { name: 'Corte', abbreviation: 'C.te' },
4289 { name: 'Cortile', abbreviation: 'C.le' },
4290 { name: 'Diramazione', abbreviation: 'Dir.' },
4291 { name: 'Fondaco', abbreviation: 'F.co' },
4292 { name: 'Fondamenta', abbreviation: 'F.ta' },
4293 { name: 'Fondo', abbreviation: 'F.do' },
4294 { name: 'Frazione', abbreviation: 'Fr.' },
4295 { name: 'Isola', abbreviation: 'Is.' },
4296 { name: 'Largo', abbreviation: 'L.go' },
4297 { name: 'Litoranea', abbreviation: 'Lit.' },
4298 { name: 'Lungolago', abbreviation: 'L.go lago' },
4299 { name: 'Lungo Po', abbreviation: 'l.go Po' },
4300 { name: 'Molo', abbreviation: 'Molo' },
4301 { name: 'Mura', abbreviation: 'Mura' },
4302 { name: 'Passaggio privato', abbreviation: 'pass. priv.' },
4303 { name: 'Passeggiata', abbreviation: 'Pass.' },
4304 { name: 'Piazza', abbreviation: 'P.zza' },
4305 { name: 'Piazzale', abbreviation: 'P.le' },
4306 { name: 'Ponte', abbreviation: 'P.te' },
4307 { name: 'Portico', abbreviation: 'P.co' },
4308 { name: 'Rampa', abbreviation: 'Rampa' },
4309 { name: 'Regione', abbreviation: 'Reg.' },
4310 { name: 'Rione', abbreviation: 'R.ne' },
4311 { name: 'Rio', abbreviation: 'Rio' },
4312 { name: 'Ripa', abbreviation: 'Ripa' },
4313 { name: 'Riva', abbreviation: 'Riva' },
4314 { name: 'Rondò', abbreviation: 'Rondò' },
4315 { name: 'Rotonda', abbreviation: 'Rot.' },
4316 { name: 'Sagrato', abbreviation: 'Sagr.' },
4317 { name: 'Salita', abbreviation: 'Sal.' },
4318 { name: 'Scalinata', abbreviation: 'Scal.' },
4319 { name: 'Scalone', abbreviation: 'Scal.' },
4320 { name: 'Slargo', abbreviation: 'Sl.' },
4321 { name: 'Sottoportico', abbreviation: 'Sott.' },
4322 { name: 'Strada', abbreviation: 'Str.' },
4323 { name: 'Stradale', abbreviation: 'Str.le' },
4324 { name: 'Strettoia', abbreviation: 'Strett.' },
4325 { name: 'Traversa', abbreviation: 'Trav.' },
4326 { name: 'Via', abbreviation: 'V.' },
4327 { name: 'Viale', abbreviation: 'V.le' },
4328 { name: 'Vicinale', abbreviation: 'Vic.le' },
4329 { name: 'Vicolo', abbreviation: 'Vic.' }
4330 ],
4331 'uk' : [
4332 {name: 'Avenue', abbreviation: 'Ave'},
4333 {name: 'Close', abbreviation: 'Cl'},
4334 {name: 'Court', abbreviation: 'Ct'},
4335 {name: 'Crescent', abbreviation: 'Cr'},
4336 {name: 'Drive', abbreviation: 'Dr'},
4337 {name: 'Garden', abbreviation: 'Gdn'},
4338 {name: 'Gardens', abbreviation: 'Gdns'},
4339 {name: 'Green', abbreviation: 'Gn'},
4340 {name: 'Grove', abbreviation: 'Gr'},
4341 {name: 'Lane', abbreviation: 'Ln'},
4342 {name: 'Mount', abbreviation: 'Mt'},
4343 {name: 'Place', abbreviation: 'Pl'},
4344 {name: 'Park', abbreviation: 'Pk'},
4345 {name: 'Ridge', abbreviation: 'Rdg'},
4346 {name: 'Road', abbreviation: 'Rd'},
4347 {name: 'Square', abbreviation: 'Sq'},
4348 {name: 'Street', abbreviation: 'St'},
4349 {name: 'Terrace', abbreviation: 'Ter'},
4350 {name: 'Valley', abbreviation: 'Val'}
4351 ]
4352 },
4353
4354 months: [
4355 {name: 'January', short_name: 'Jan', numeric: '01', days: 31},
4356 // Not messing with leap years...
4357 {name: 'February', short_name: 'Feb', numeric: '02', days: 28},
4358 {name: 'March', short_name: 'Mar', numeric: '03', days: 31},
4359 {name: 'April', short_name: 'Apr', numeric: '04', days: 30},
4360 {name: 'May', short_name: 'May', numeric: '05', days: 31},
4361 {name: 'June', short_name: 'Jun', numeric: '06', days: 30},
4362 {name: 'July', short_name: 'Jul', numeric: '07', days: 31},
4363 {name: 'August', short_name: 'Aug', numeric: '08', days: 31},
4364 {name: 'September', short_name: 'Sep', numeric: '09', days: 30},
4365 {name: 'October', short_name: 'Oct', numeric: '10', days: 31},
4366 {name: 'November', short_name: 'Nov', numeric: '11', days: 30},
4367 {name: 'December', short_name: 'Dec', numeric: '12', days: 31}
4368 ],
4369
4370 // http://en.wikipedia.org/wiki/Bank_card_number#Issuer_identification_number_.28IIN.29
4371 cc_types: [
4372 {name: "American Express", short_name: 'amex', prefix: '34', length: 15},
4373 {name: "Bankcard", short_name: 'bankcard', prefix: '5610', length: 16},
4374 {name: "China UnionPay", short_name: 'chinaunion', prefix: '62', length: 16},
4375 {name: "Diners Club Carte Blanche", short_name: 'dccarte', prefix: '300', length: 14},
4376 {name: "Diners Club enRoute", short_name: 'dcenroute', prefix: '2014', length: 15},
4377 {name: "Diners Club International", short_name: 'dcintl', prefix: '36', length: 14},
4378 {name: "Diners Club United States & Canada", short_name: 'dcusc', prefix: '54', length: 16},
4379 {name: "Discover Card", short_name: 'discover', prefix: '6011', length: 16},
4380 {name: "InstaPayment", short_name: 'instapay', prefix: '637', length: 16},
4381 {name: "JCB", short_name: 'jcb', prefix: '3528', length: 16},
4382 {name: "Laser", short_name: 'laser', prefix: '6304', length: 16},
4383 {name: "Maestro", short_name: 'maestro', prefix: '5018', length: 16},
4384 {name: "Mastercard", short_name: 'mc', prefix: '51', length: 16},
4385 {name: "Solo", short_name: 'solo', prefix: '6334', length: 16},
4386 {name: "Switch", short_name: 'switch', prefix: '4903', length: 16},
4387 {name: "Visa", short_name: 'visa', prefix: '4', length: 16},
4388 {name: "Visa Electron", short_name: 'electron', prefix: '4026', length: 16}
4389 ],
4390
4391 //return all world currency by ISO 4217
4392 currency_types: [
4393 {'code' : 'AED', 'name' : 'United Arab Emirates Dirham'},
4394 {'code' : 'AFN', 'name' : 'Afghanistan Afghani'},
4395 {'code' : 'ALL', 'name' : 'Albania Lek'},
4396 {'code' : 'AMD', 'name' : 'Armenia Dram'},
4397 {'code' : 'ANG', 'name' : 'Netherlands Antilles Guilder'},
4398 {'code' : 'AOA', 'name' : 'Angola Kwanza'},
4399 {'code' : 'ARS', 'name' : 'Argentina Peso'},
4400 {'code' : 'AUD', 'name' : 'Australia Dollar'},
4401 {'code' : 'AWG', 'name' : 'Aruba Guilder'},
4402 {'code' : 'AZN', 'name' : 'Azerbaijan New Manat'},
4403 {'code' : 'BAM', 'name' : 'Bosnia and Herzegovina Convertible Marka'},
4404 {'code' : 'BBD', 'name' : 'Barbados Dollar'},
4405 {'code' : 'BDT', 'name' : 'Bangladesh Taka'},
4406 {'code' : 'BGN', 'name' : 'Bulgaria Lev'},
4407 {'code' : 'BHD', 'name' : 'Bahrain Dinar'},
4408 {'code' : 'BIF', 'name' : 'Burundi Franc'},
4409 {'code' : 'BMD', 'name' : 'Bermuda Dollar'},
4410 {'code' : 'BND', 'name' : 'Brunei Darussalam Dollar'},
4411 {'code' : 'BOB', 'name' : 'Bolivia Boliviano'},
4412 {'code' : 'BRL', 'name' : 'Brazil Real'},
4413 {'code' : 'BSD', 'name' : 'Bahamas Dollar'},
4414 {'code' : 'BTN', 'name' : 'Bhutan Ngultrum'},
4415 {'code' : 'BWP', 'name' : 'Botswana Pula'},
4416 {'code' : 'BYR', 'name' : 'Belarus Ruble'},
4417 {'code' : 'BZD', 'name' : 'Belize Dollar'},
4418 {'code' : 'CAD', 'name' : 'Canada Dollar'},
4419 {'code' : 'CDF', 'name' : 'Congo/Kinshasa Franc'},
4420 {'code' : 'CHF', 'name' : 'Switzerland Franc'},
4421 {'code' : 'CLP', 'name' : 'Chile Peso'},
4422 {'code' : 'CNY', 'name' : 'China Yuan Renminbi'},
4423 {'code' : 'COP', 'name' : 'Colombia Peso'},
4424 {'code' : 'CRC', 'name' : 'Costa Rica Colon'},
4425 {'code' : 'CUC', 'name' : 'Cuba Convertible Peso'},
4426 {'code' : 'CUP', 'name' : 'Cuba Peso'},
4427 {'code' : 'CVE', 'name' : 'Cape Verde Escudo'},
4428 {'code' : 'CZK', 'name' : 'Czech Republic Koruna'},
4429 {'code' : 'DJF', 'name' : 'Djibouti Franc'},
4430 {'code' : 'DKK', 'name' : 'Denmark Krone'},
4431 {'code' : 'DOP', 'name' : 'Dominican Republic Peso'},
4432 {'code' : 'DZD', 'name' : 'Algeria Dinar'},
4433 {'code' : 'EGP', 'name' : 'Egypt Pound'},
4434 {'code' : 'ERN', 'name' : 'Eritrea Nakfa'},
4435 {'code' : 'ETB', 'name' : 'Ethiopia Birr'},
4436 {'code' : 'EUR', 'name' : 'Euro Member Countries'},
4437 {'code' : 'FJD', 'name' : 'Fiji Dollar'},
4438 {'code' : 'FKP', 'name' : 'Falkland Islands (Malvinas) Pound'},
4439 {'code' : 'GBP', 'name' : 'United Kingdom Pound'},
4440 {'code' : 'GEL', 'name' : 'Georgia Lari'},
4441 {'code' : 'GGP', 'name' : 'Guernsey Pound'},
4442 {'code' : 'GHS', 'name' : 'Ghana Cedi'},
4443 {'code' : 'GIP', 'name' : 'Gibraltar Pound'},
4444 {'code' : 'GMD', 'name' : 'Gambia Dalasi'},
4445 {'code' : 'GNF', 'name' : 'Guinea Franc'},
4446 {'code' : 'GTQ', 'name' : 'Guatemala Quetzal'},
4447 {'code' : 'GYD', 'name' : 'Guyana Dollar'},
4448 {'code' : 'HKD', 'name' : 'Hong Kong Dollar'},
4449 {'code' : 'HNL', 'name' : 'Honduras Lempira'},
4450 {'code' : 'HRK', 'name' : 'Croatia Kuna'},
4451 {'code' : 'HTG', 'name' : 'Haiti Gourde'},
4452 {'code' : 'HUF', 'name' : 'Hungary Forint'},
4453 {'code' : 'IDR', 'name' : 'Indonesia Rupiah'},
4454 {'code' : 'ILS', 'name' : 'Israel Shekel'},
4455 {'code' : 'IMP', 'name' : 'Isle of Man Pound'},
4456 {'code' : 'INR', 'name' : 'India Rupee'},
4457 {'code' : 'IQD', 'name' : 'Iraq Dinar'},
4458 {'code' : 'IRR', 'name' : 'Iran Rial'},
4459 {'code' : 'ISK', 'name' : 'Iceland Krona'},
4460 {'code' : 'JEP', 'name' : 'Jersey Pound'},
4461 {'code' : 'JMD', 'name' : 'Jamaica Dollar'},
4462 {'code' : 'JOD', 'name' : 'Jordan Dinar'},
4463 {'code' : 'JPY', 'name' : 'Japan Yen'},
4464 {'code' : 'KES', 'name' : 'Kenya Shilling'},
4465 {'code' : 'KGS', 'name' : 'Kyrgyzstan Som'},
4466 {'code' : 'KHR', 'name' : 'Cambodia Riel'},
4467 {'code' : 'KMF', 'name' : 'Comoros Franc'},
4468 {'code' : 'KPW', 'name' : 'Korea (North) Won'},
4469 {'code' : 'KRW', 'name' : 'Korea (South) Won'},
4470 {'code' : 'KWD', 'name' : 'Kuwait Dinar'},
4471 {'code' : 'KYD', 'name' : 'Cayman Islands Dollar'},
4472 {'code' : 'KZT', 'name' : 'Kazakhstan Tenge'},
4473 {'code' : 'LAK', 'name' : 'Laos Kip'},
4474 {'code' : 'LBP', 'name' : 'Lebanon Pound'},
4475 {'code' : 'LKR', 'name' : 'Sri Lanka Rupee'},
4476 {'code' : 'LRD', 'name' : 'Liberia Dollar'},
4477 {'code' : 'LSL', 'name' : 'Lesotho Loti'},
4478 {'code' : 'LTL', 'name' : 'Lithuania Litas'},
4479 {'code' : 'LYD', 'name' : 'Libya Dinar'},
4480 {'code' : 'MAD', 'name' : 'Morocco Dirham'},
4481 {'code' : 'MDL', 'name' : 'Moldova Leu'},
4482 {'code' : 'MGA', 'name' : 'Madagascar Ariary'},
4483 {'code' : 'MKD', 'name' : 'Macedonia Denar'},
4484 {'code' : 'MMK', 'name' : 'Myanmar (Burma) Kyat'},
4485 {'code' : 'MNT', 'name' : 'Mongolia Tughrik'},
4486 {'code' : 'MOP', 'name' : 'Macau Pataca'},
4487 {'code' : 'MRO', 'name' : 'Mauritania Ouguiya'},
4488 {'code' : 'MUR', 'name' : 'Mauritius Rupee'},
4489 {'code' : 'MVR', 'name' : 'Maldives (Maldive Islands) Rufiyaa'},
4490 {'code' : 'MWK', 'name' : 'Malawi Kwacha'},
4491 {'code' : 'MXN', 'name' : 'Mexico Peso'},
4492 {'code' : 'MYR', 'name' : 'Malaysia Ringgit'},
4493 {'code' : 'MZN', 'name' : 'Mozambique Metical'},
4494 {'code' : 'NAD', 'name' : 'Namibia Dollar'},
4495 {'code' : 'NGN', 'name' : 'Nigeria Naira'},
4496 {'code' : 'NIO', 'name' : 'Nicaragua Cordoba'},
4497 {'code' : 'NOK', 'name' : 'Norway Krone'},
4498 {'code' : 'NPR', 'name' : 'Nepal Rupee'},
4499 {'code' : 'NZD', 'name' : 'New Zealand Dollar'},
4500 {'code' : 'OMR', 'name' : 'Oman Rial'},
4501 {'code' : 'PAB', 'name' : 'Panama Balboa'},
4502 {'code' : 'PEN', 'name' : 'Peru Nuevo Sol'},
4503 {'code' : 'PGK', 'name' : 'Papua New Guinea Kina'},
4504 {'code' : 'PHP', 'name' : 'Philippines Peso'},
4505 {'code' : 'PKR', 'name' : 'Pakistan Rupee'},
4506 {'code' : 'PLN', 'name' : 'Poland Zloty'},
4507 {'code' : 'PYG', 'name' : 'Paraguay Guarani'},
4508 {'code' : 'QAR', 'name' : 'Qatar Riyal'},
4509 {'code' : 'RON', 'name' : 'Romania New Leu'},
4510 {'code' : 'RSD', 'name' : 'Serbia Dinar'},
4511 {'code' : 'RUB', 'name' : 'Russia Ruble'},
4512 {'code' : 'RWF', 'name' : 'Rwanda Franc'},
4513 {'code' : 'SAR', 'name' : 'Saudi Arabia Riyal'},
4514 {'code' : 'SBD', 'name' : 'Solomon Islands Dollar'},
4515 {'code' : 'SCR', 'name' : 'Seychelles Rupee'},
4516 {'code' : 'SDG', 'name' : 'Sudan Pound'},
4517 {'code' : 'SEK', 'name' : 'Sweden Krona'},
4518 {'code' : 'SGD', 'name' : 'Singapore Dollar'},
4519 {'code' : 'SHP', 'name' : 'Saint Helena Pound'},
4520 {'code' : 'SLL', 'name' : 'Sierra Leone Leone'},
4521 {'code' : 'SOS', 'name' : 'Somalia Shilling'},
4522 {'code' : 'SPL', 'name' : 'Seborga Luigino'},
4523 {'code' : 'SRD', 'name' : 'Suriname Dollar'},
4524 {'code' : 'STD', 'name' : 'São Tomé and Príncipe Dobra'},
4525 {'code' : 'SVC', 'name' : 'El Salvador Colon'},
4526 {'code' : 'SYP', 'name' : 'Syria Pound'},
4527 {'code' : 'SZL', 'name' : 'Swaziland Lilangeni'},
4528 {'code' : 'THB', 'name' : 'Thailand Baht'},
4529 {'code' : 'TJS', 'name' : 'Tajikistan Somoni'},
4530 {'code' : 'TMT', 'name' : 'Turkmenistan Manat'},
4531 {'code' : 'TND', 'name' : 'Tunisia Dinar'},
4532 {'code' : 'TOP', 'name' : 'Tonga Pa\'anga'},
4533 {'code' : 'TRY', 'name' : 'Turkey Lira'},
4534 {'code' : 'TTD', 'name' : 'Trinidad and Tobago Dollar'},
4535 {'code' : 'TVD', 'name' : 'Tuvalu Dollar'},
4536 {'code' : 'TWD', 'name' : 'Taiwan New Dollar'},
4537 {'code' : 'TZS', 'name' : 'Tanzania Shilling'},
4538 {'code' : 'UAH', 'name' : 'Ukraine Hryvnia'},
4539 {'code' : 'UGX', 'name' : 'Uganda Shilling'},
4540 {'code' : 'USD', 'name' : 'United States Dollar'},
4541 {'code' : 'UYU', 'name' : 'Uruguay Peso'},
4542 {'code' : 'UZS', 'name' : 'Uzbekistan Som'},
4543 {'code' : 'VEF', 'name' : 'Venezuela Bolivar'},
4544 {'code' : 'VND', 'name' : 'Viet Nam Dong'},
4545 {'code' : 'VUV', 'name' : 'Vanuatu Vatu'},
4546 {'code' : 'WST', 'name' : 'Samoa Tala'},
4547 {'code' : 'XAF', 'name' : 'Communauté Financière Africaine (BEAC) CFA Franc BEAC'},
4548 {'code' : 'XCD', 'name' : 'East Caribbean Dollar'},
4549 {'code' : 'XDR', 'name' : 'International Monetary Fund (IMF) Special Drawing Rights'},
4550 {'code' : 'XOF', 'name' : 'Communauté Financière Africaine (BCEAO) Franc'},
4551 {'code' : 'XPF', 'name' : 'Comptoirs Français du Pacifique (CFP) Franc'},
4552 {'code' : 'YER', 'name' : 'Yemen Rial'},
4553 {'code' : 'ZAR', 'name' : 'South Africa Rand'},
4554 {'code' : 'ZMW', 'name' : 'Zambia Kwacha'},
4555 {'code' : 'ZWD', 'name' : 'Zimbabwe Dollar'}
4556 ],
4557
4558 // return the names of all valide colors
4559 colorNames : [ "AliceBlue", "Black", "Navy", "DarkBlue", "MediumBlue", "Blue", "DarkGreen", "Green", "Teal", "DarkCyan", "DeepSkyBlue", "DarkTurquoise", "MediumSpringGreen", "Lime", "SpringGreen",
4560 "Aqua", "Cyan", "MidnightBlue", "DodgerBlue", "LightSeaGreen", "ForestGreen", "SeaGreen", "DarkSlateGray", "LimeGreen", "MediumSeaGreen", "Turquoise", "RoyalBlue", "SteelBlue", "DarkSlateBlue", "MediumTurquoise",
4561 "Indigo", "DarkOliveGreen", "CadetBlue", "CornflowerBlue", "RebeccaPurple", "MediumAquaMarine", "DimGray", "SlateBlue", "OliveDrab", "SlateGray", "LightSlateGray", "MediumSlateBlue", "LawnGreen", "Chartreuse",
4562 "Aquamarine", "Maroon", "Purple", "Olive", "Gray", "SkyBlue", "LightSkyBlue", "BlueViolet", "DarkRed", "DarkMagenta", "SaddleBrown", "Ivory", "White",
4563 "DarkSeaGreen", "LightGreen", "MediumPurple", "DarkViolet", "PaleGreen", "DarkOrchid", "YellowGreen", "Sienna", "Brown", "DarkGray", "LightBlue", "GreenYellow", "PaleTurquoise", "LightSteelBlue", "PowderBlue",
4564 "FireBrick", "DarkGoldenRod", "MediumOrchid", "RosyBrown", "DarkKhaki", "Silver", "MediumVioletRed", "IndianRed", "Peru", "Chocolate", "Tan", "LightGray", "Thistle", "Orchid", "GoldenRod", "PaleVioletRed",
4565 "Crimson", "Gainsboro", "Plum", "BurlyWood", "LightCyan", "Lavender", "DarkSalmon", "Violet", "PaleGoldenRod", "LightCoral", "Khaki", "AliceBlue", "HoneyDew", "Azure", "SandyBrown", "Wheat", "Beige", "WhiteSmoke",
4566 "MintCream", "GhostWhite", "Salmon", "AntiqueWhite", "Linen", "LightGoldenRodYellow", "OldLace", "Red", "Fuchsia", "Magenta", "DeepPink", "OrangeRed", "Tomato", "HotPink", "Coral", "DarkOrange", "LightSalmon", "Orange",
4567 "LightPink", "Pink", "Gold", "PeachPuff", "NavajoWhite", "Moccasin", "Bisque", "MistyRose", "BlanchedAlmond", "PapayaWhip", "LavenderBlush", "SeaShell", "Cornsilk", "LemonChiffon", "FloralWhite", "Snow", "Yellow", "LightYellow"
4568 ],
4569
4570 // Data taken from https://www.sec.gov/rules/other/4-460list.htm
4571 company: [ "3Com Corp",
4572 "3M Company",
4573 "A.G. Edwards Inc.",
4574 "Abbott Laboratories",
4575 "Abercrombie & Fitch Co.",
4576 "ABM Industries Incorporated",
4577 "Ace Hardware Corporation",
4578 "ACT Manufacturing Inc.",
4579 "Acterna Corp.",
4580 "Adams Resources & Energy, Inc.",
4581 "ADC Telecommunications, Inc.",
4582 "Adelphia Communications Corporation",
4583 "Administaff, Inc.",
4584 "Adobe Systems Incorporated",
4585 "Adolph Coors Company",
4586 "Advance Auto Parts, Inc.",
4587 "Advanced Micro Devices, Inc.",
4588 "AdvancePCS, Inc.",
4589 "Advantica Restaurant Group, Inc.",
4590 "The AES Corporation",
4591 "Aetna Inc.",
4592 "Affiliated Computer Services, Inc.",
4593 "AFLAC Incorporated",
4594 "AGCO Corporation",
4595 "Agilent Technologies, Inc.",
4596 "Agway Inc.",
4597 "Apartment Investment and Management Company",
4598 "Air Products and Chemicals, Inc.",
4599 "Airborne, Inc.",
4600 "Airgas, Inc.",
4601 "AK Steel Holding Corporation",
4602 "Alaska Air Group, Inc.",
4603 "Alberto-Culver Company",
4604 "Albertson's, Inc.",
4605 "Alcoa Inc.",
4606 "Alleghany Corporation",
4607 "Allegheny Energy, Inc.",
4608 "Allegheny Technologies Incorporated",
4609 "Allergan, Inc.",
4610 "ALLETE, Inc.",
4611 "Alliant Energy Corporation",
4612 "Allied Waste Industries, Inc.",
4613 "Allmerica Financial Corporation",
4614 "The Allstate Corporation",
4615 "ALLTEL Corporation",
4616 "The Alpine Group, Inc.",
4617 "Amazon.com, Inc.",
4618 "AMC Entertainment Inc.",
4619 "American Power Conversion Corporation",
4620 "Amerada Hess Corporation",
4621 "AMERCO",
4622 "Ameren Corporation",
4623 "America West Holdings Corporation",
4624 "American Axle & Manufacturing Holdings, Inc.",
4625 "American Eagle Outfitters, Inc.",
4626 "American Electric Power Company, Inc.",
4627 "American Express Company",
4628 "American Financial Group, Inc.",
4629 "American Greetings Corporation",
4630 "American International Group, Inc.",
4631 "American Standard Companies Inc.",
4632 "American Water Works Company, Inc.",
4633 "AmerisourceBergen Corporation",
4634 "Ames Department Stores, Inc.",
4635 "Amgen Inc.",
4636 "Amkor Technology, Inc.",
4637 "AMR Corporation",
4638 "AmSouth Bancorp.",
4639 "Amtran, Inc.",
4640 "Anadarko Petroleum Corporation",
4641 "Analog Devices, Inc.",
4642 "Anheuser-Busch Companies, Inc.",
4643 "Anixter International Inc.",
4644 "AnnTaylor Inc.",
4645 "Anthem, Inc.",
4646 "AOL Time Warner Inc.",
4647 "Aon Corporation",
4648 "Apache Corporation",
4649 "Apple Computer, Inc.",
4650 "Applera Corporation",
4651 "Applied Industrial Technologies, Inc.",
4652 "Applied Materials, Inc.",
4653 "Aquila, Inc.",
4654 "ARAMARK Corporation",
4655 "Arch Coal, Inc.",
4656 "Archer Daniels Midland Company",
4657 "Arkansas Best Corporation",
4658 "Armstrong Holdings, Inc.",
4659 "Arrow Electronics, Inc.",
4660 "ArvinMeritor, Inc.",
4661 "Ashland Inc.",
4662 "Astoria Financial Corporation",
4663 "AT&T Corp.",
4664 "Atmel Corporation",
4665 "Atmos Energy Corporation",
4666 "Audiovox Corporation",
4667 "Autoliv, Inc.",
4668 "Automatic Data Processing, Inc.",
4669 "AutoNation, Inc.",
4670 "AutoZone, Inc.",
4671 "Avaya Inc.",
4672 "Avery Dennison Corporation",
4673 "Avista Corporation",
4674 "Avnet, Inc.",
4675 "Avon Products, Inc.",
4676 "Baker Hughes Incorporated",
4677 "Ball Corporation",
4678 "Bank of America Corporation",
4679 "The Bank of New York Company, Inc.",
4680 "Bank One Corporation",
4681 "Banknorth Group, Inc.",
4682 "Banta Corporation",
4683 "Barnes & Noble, Inc.",
4684 "Bausch & Lomb Incorporated",
4685 "Baxter International Inc.",
4686 "BB&T Corporation",
4687 "The Bear Stearns Companies Inc.",
4688 "Beazer Homes USA, Inc.",
4689 "Beckman Coulter, Inc.",
4690 "Becton, Dickinson and Company",
4691 "Bed Bath & Beyond Inc.",
4692 "Belk, Inc.",
4693 "Bell Microproducts Inc.",
4694 "BellSouth Corporation",
4695 "Belo Corp.",
4696 "Bemis Company, Inc.",
4697 "Benchmark Electronics, Inc.",
4698 "Berkshire Hathaway Inc.",
4699 "Best Buy Co., Inc.",
4700 "Bethlehem Steel Corporation",
4701 "Beverly Enterprises, Inc.",
4702 "Big Lots, Inc.",
4703 "BJ Services Company",
4704 "BJ's Wholesale Club, Inc.",
4705 "The Black & Decker Corporation",
4706 "Black Hills Corporation",
4707 "BMC Software, Inc.",
4708 "The Boeing Company",
4709 "Boise Cascade Corporation",
4710 "Borders Group, Inc.",
4711 "BorgWarner Inc.",
4712 "Boston Scientific Corporation",
4713 "Bowater Incorporated",
4714 "Briggs & Stratton Corporation",
4715 "Brightpoint, Inc.",
4716 "Brinker International, Inc.",
4717 "Bristol-Myers Squibb Company",
4718 "Broadwing, Inc.",
4719 "Brown Shoe Company, Inc.",
4720 "Brown-Forman Corporation",
4721 "Brunswick Corporation",
4722 "Budget Group, Inc.",
4723 "Burlington Coat Factory Warehouse Corporation",
4724 "Burlington Industries, Inc.",
4725 "Burlington Northern Santa Fe Corporation",
4726 "Burlington Resources Inc.",
4727 "C. H. Robinson Worldwide Inc.",
4728 "Cablevision Systems Corp",
4729 "Cabot Corp",
4730 "Cadence Design Systems, Inc.",
4731 "Calpine Corp.",
4732 "Campbell Soup Co.",
4733 "Capital One Financial Corp.",
4734 "Cardinal Health Inc.",
4735 "Caremark Rx Inc.",
4736 "Carlisle Cos. Inc.",
4737 "Carpenter Technology Corp.",
4738 "Casey's General Stores Inc.",
4739 "Caterpillar Inc.",
4740 "CBRL Group Inc.",
4741 "CDI Corp.",
4742 "CDW Computer Centers Inc.",
4743 "CellStar Corp.",
4744 "Cendant Corp",
4745 "Cenex Harvest States Cooperatives",
4746 "Centex Corp.",
4747 "CenturyTel Inc.",
4748 "Ceridian Corp.",
4749 "CH2M Hill Cos. Ltd.",
4750 "Champion Enterprises Inc.",
4751 "Charles Schwab Corp.",
4752 "Charming Shoppes Inc.",
4753 "Charter Communications Inc.",
4754 "Charter One Financial Inc.",
4755 "ChevronTexaco Corp.",
4756 "Chiquita Brands International Inc.",
4757 "Chubb Corp",
4758 "Ciena Corp.",
4759 "Cigna Corp",
4760 "Cincinnati Financial Corp.",
4761 "Cinergy Corp.",
4762 "Cintas Corp.",
4763 "Circuit City Stores Inc.",
4764 "Cisco Systems Inc.",
4765 "Citigroup, Inc",
4766 "Citizens Communications Co.",
4767 "CKE Restaurants Inc.",
4768 "Clear Channel Communications Inc.",
4769 "The Clorox Co.",
4770 "CMGI Inc.",
4771 "CMS Energy Corp.",
4772 "CNF Inc.",
4773 "Coca-Cola Co.",
4774 "Coca-Cola Enterprises Inc.",
4775 "Colgate-Palmolive Co.",
4776 "Collins & Aikman Corp.",
4777 "Comcast Corp.",
4778 "Comdisco Inc.",
4779 "Comerica Inc.",
4780 "Comfort Systems USA Inc.",
4781 "Commercial Metals Co.",
4782 "Community Health Systems Inc.",
4783 "Compass Bancshares Inc",
4784 "Computer Associates International Inc.",
4785 "Computer Sciences Corp.",
4786 "Compuware Corp.",
4787 "Comverse Technology Inc.",
4788 "ConAgra Foods Inc.",
4789 "Concord EFS Inc.",
4790 "Conectiv, Inc",
4791 "Conoco Inc",
4792 "Conseco Inc.",
4793 "Consolidated Freightways Corp.",
4794 "Consolidated Edison Inc.",
4795 "Constellation Brands Inc.",
4796 "Constellation Emergy Group Inc.",
4797 "Continental Airlines Inc.",
4798 "Convergys Corp.",
4799 "Cooper Cameron Corp.",
4800 "Cooper Industries Ltd.",
4801 "Cooper Tire & Rubber Co.",
4802 "Corn Products International Inc.",
4803 "Corning Inc.",
4804 "Costco Wholesale Corp.",
4805 "Countrywide Credit Industries Inc.",
4806 "Coventry Health Care Inc.",
4807 "Cox Communications Inc.",
4808 "Crane Co.",
4809 "Crompton Corp.",
4810 "Crown Cork & Seal Co. Inc.",
4811 "CSK Auto Corp.",
4812 "CSX Corp.",
4813 "Cummins Inc.",
4814 "CVS Corp.",
4815 "Cytec Industries Inc.",
4816 "D&K Healthcare Resources, Inc.",
4817 "D.R. Horton Inc.",
4818 "Dana Corporation",
4819 "Danaher Corporation",
4820 "Darden Restaurants Inc.",
4821 "DaVita Inc.",
4822 "Dean Foods Company",
4823 "Deere & Company",
4824 "Del Monte Foods Co",
4825 "Dell Computer Corporation",
4826 "Delphi Corp.",
4827 "Delta Air Lines Inc.",
4828 "Deluxe Corporation",
4829 "Devon Energy Corporation",
4830 "Di Giorgio Corporation",
4831 "Dial Corporation",
4832 "Diebold Incorporated",
4833 "Dillard's Inc.",
4834 "DIMON Incorporated",
4835 "Dole Food Company, Inc.",
4836 "Dollar General Corporation",
4837 "Dollar Tree Stores, Inc.",
4838 "Dominion Resources, Inc.",
4839 "Domino's Pizza LLC",
4840 "Dover Corporation, Inc.",
4841 "Dow Chemical Company",
4842 "Dow Jones & Company, Inc.",
4843 "DPL Inc.",
4844 "DQE Inc.",
4845 "Dreyer's Grand Ice Cream, Inc.",
4846 "DST Systems, Inc.",
4847 "DTE Energy Co.",
4848 "E.I. Du Pont de Nemours and Company",
4849 "Duke Energy Corp",
4850 "Dun & Bradstreet Inc.",
4851 "DURA Automotive Systems Inc.",
4852 "DynCorp",
4853 "Dynegy Inc.",
4854 "E*Trade Group, Inc.",
4855 "E.W. Scripps Company",
4856 "Earthlink, Inc.",
4857 "Eastman Chemical Company",
4858 "Eastman Kodak Company",
4859 "Eaton Corporation",
4860 "Echostar Communications Corporation",
4861 "Ecolab Inc.",
4862 "Edison International",
4863 "EGL Inc.",
4864 "El Paso Corporation",
4865 "Electronic Arts Inc.",
4866 "Electronic Data Systems Corp.",
4867 "Eli Lilly and Company",
4868 "EMC Corporation",
4869 "Emcor Group Inc.",
4870 "Emerson Electric Co.",
4871 "Encompass Services Corporation",
4872 "Energizer Holdings Inc.",
4873 "Energy East Corporation",
4874 "Engelhard Corporation",
4875 "Enron Corp.",
4876 "Entergy Corporation",
4877 "Enterprise Products Partners L.P.",
4878 "EOG Resources, Inc.",
4879 "Equifax Inc.",
4880 "Equitable Resources Inc.",
4881 "Equity Office Properties Trust",
4882 "Equity Residential Properties Trust",
4883 "Estee Lauder Companies Inc.",
4884 "Exelon Corporation",
4885 "Exide Technologies",
4886 "Expeditors International of Washington Inc.",
4887 "Express Scripts Inc.",
4888 "ExxonMobil Corporation",
4889 "Fairchild Semiconductor International Inc.",
4890 "Family Dollar Stores Inc.",
4891 "Farmland Industries Inc.",
4892 "Federal Mogul Corp.",
4893 "Federated Department Stores Inc.",
4894 "Federal Express Corp.",
4895 "Felcor Lodging Trust Inc.",
4896 "Ferro Corp.",
4897 "Fidelity National Financial Inc.",
4898 "Fifth Third Bancorp",
4899 "First American Financial Corp.",
4900 "First Data Corp.",
4901 "First National of Nebraska Inc.",
4902 "First Tennessee National Corp.",
4903 "FirstEnergy Corp.",
4904 "Fiserv Inc.",
4905 "Fisher Scientific International Inc.",
4906 "FleetBoston Financial Co.",
4907 "Fleetwood Enterprises Inc.",
4908 "Fleming Companies Inc.",
4909 "Flowers Foods Inc.",
4910 "Flowserv Corp",
4911 "Fluor Corp",
4912 "FMC Corp",
4913 "Foamex International Inc",
4914 "Foot Locker Inc",
4915 "Footstar Inc.",
4916 "Ford Motor Co",
4917 "Forest Laboratories Inc.",
4918 "Fortune Brands Inc.",
4919 "Foster Wheeler Ltd.",
4920 "FPL Group Inc.",
4921 "Franklin Resources Inc.",
4922 "Freeport McMoran Copper & Gold Inc.",
4923 "Frontier Oil Corp",
4924 "Furniture Brands International Inc.",
4925 "Gannett Co., Inc.",
4926 "Gap Inc.",
4927 "Gateway Inc.",
4928 "GATX Corporation",
4929 "Gemstar-TV Guide International Inc.",
4930 "GenCorp Inc.",
4931 "General Cable Corporation",
4932 "General Dynamics Corporation",
4933 "General Electric Company",
4934 "General Mills Inc",
4935 "General Motors Corporation",
4936 "Genesis Health Ventures Inc.",
4937 "Gentek Inc.",
4938 "Gentiva Health Services Inc.",
4939 "Genuine Parts Company",
4940 "Genuity Inc.",
4941 "Genzyme Corporation",
4942 "Georgia Gulf Corporation",
4943 "Georgia-Pacific Corporation",
4944 "Gillette Company",
4945 "Gold Kist Inc.",
4946 "Golden State Bancorp Inc.",
4947 "Golden West Financial Corporation",
4948 "Goldman Sachs Group Inc.",
4949 "Goodrich Corporation",
4950 "The Goodyear Tire & Rubber Company",
4951 "Granite Construction Incorporated",
4952 "Graybar Electric Company Inc.",
4953 "Great Lakes Chemical Corporation",
4954 "Great Plains Energy Inc.",
4955 "GreenPoint Financial Corp.",
4956 "Greif Bros. Corporation",
4957 "Grey Global Group Inc.",
4958 "Group 1 Automotive Inc.",
4959 "Guidant Corporation",
4960 "H&R Block Inc.",
4961 "H.B. Fuller Company",
4962 "H.J. Heinz Company",
4963 "Halliburton Co.",
4964 "Harley-Davidson Inc.",
4965 "Harman International Industries Inc.",
4966 "Harrah's Entertainment Inc.",
4967 "Harris Corp.",
4968 "Harsco Corp.",
4969 "Hartford Financial Services Group Inc.",
4970 "Hasbro Inc.",
4971 "Hawaiian Electric Industries Inc.",
4972 "HCA Inc.",
4973 "Health Management Associates Inc.",
4974 "Health Net Inc.",
4975 "Healthsouth Corp",
4976 "Henry Schein Inc.",
4977 "Hercules Inc.",
4978 "Herman Miller Inc.",
4979 "Hershey Foods Corp.",
4980 "Hewlett-Packard Company",
4981 "Hibernia Corp.",
4982 "Hillenbrand Industries Inc.",
4983 "Hilton Hotels Corp.",
4984 "Hollywood Entertainment Corp.",
4985 "Home Depot Inc.",
4986 "Hon Industries Inc.",
4987 "Honeywell International Inc.",
4988 "Hormel Foods Corp.",
4989 "Host Marriott Corp.",
4990 "Household International Corp.",
4991 "Hovnanian Enterprises Inc.",
4992 "Hub Group Inc.",
4993 "Hubbell Inc.",
4994 "Hughes Supply Inc.",
4995 "Humana Inc.",
4996 "Huntington Bancshares Inc.",
4997 "Idacorp Inc.",
4998 "IDT Corporation",
4999 "IKON Office Solutions Inc.",
5000 "Illinois Tool Works Inc.",
5001 "IMC Global Inc.",
5002 "Imperial Sugar Company",
5003 "IMS Health Inc.",
5004 "Ingles Market Inc",
5005 "Ingram Micro Inc.",
5006 "Insight Enterprises Inc.",
5007 "Integrated Electrical Services Inc.",
5008 "Intel Corporation",
5009 "International Paper Co.",
5010 "Interpublic Group of Companies Inc.",
5011 "Interstate Bakeries Corporation",
5012 "International Business Machines Corp.",
5013 "International Flavors & Fragrances Inc.",
5014 "International Multifoods Corporation",
5015 "Intuit Inc.",
5016 "IT Group Inc.",
5017 "ITT Industries Inc.",
5018 "Ivax Corp.",
5019 "J.B. Hunt Transport Services Inc.",
5020 "J.C. Penny Co.",
5021 "J.P. Morgan Chase & Co.",
5022 "Jabil Circuit Inc.",
5023 "Jack In The Box Inc.",
5024 "Jacobs Engineering Group Inc.",
5025 "JDS Uniphase Corp.",
5026 "Jefferson-Pilot Co.",
5027 "John Hancock Financial Services Inc.",
5028 "Johnson & Johnson",
5029 "Johnson Controls Inc.",
5030 "Jones Apparel Group Inc.",
5031 "KB Home",
5032 "Kellogg Company",
5033 "Kellwood Company",
5034 "Kelly Services Inc.",
5035 "Kemet Corp.",
5036 "Kennametal Inc.",
5037 "Kerr-McGee Corporation",
5038 "KeyCorp",
5039 "KeySpan Corp.",
5040 "Kimball International Inc.",
5041 "Kimberly-Clark Corporation",
5042 "Kindred Healthcare Inc.",
5043 "KLA-Tencor Corporation",
5044 "K-Mart Corp.",
5045 "Knight-Ridder Inc.",
5046 "Kohl's Corp.",
5047 "KPMG Consulting Inc.",
5048 "Kroger Co.",
5049 "L-3 Communications Holdings Inc.",
5050 "Laboratory Corporation of America Holdings",
5051 "Lam Research Corporation",
5052 "LandAmerica Financial Group Inc.",
5053 "Lands' End Inc.",
5054 "Landstar System Inc.",
5055 "La-Z-Boy Inc.",
5056 "Lear Corporation",
5057 "Legg Mason Inc.",
5058 "Leggett & Platt Inc.",
5059 "Lehman Brothers Holdings Inc.",
5060 "Lennar Corporation",
5061 "Lennox International Inc.",
5062 "Level 3 Communications Inc.",
5063 "Levi Strauss & Co.",
5064 "Lexmark International Inc.",
5065 "Limited Inc.",
5066 "Lincoln National Corporation",
5067 "Linens 'n Things Inc.",
5068 "Lithia Motors Inc.",
5069 "Liz Claiborne Inc.",
5070 "Lockheed Martin Corporation",
5071 "Loews Corporation",
5072 "Longs Drug Stores Corporation",
5073 "Louisiana-Pacific Corporation",
5074 "Lowe's Companies Inc.",
5075 "LSI Logic Corporation",
5076 "The LTV Corporation",
5077 "The Lubrizol Corporation",
5078 "Lucent Technologies Inc.",
5079 "Lyondell Chemical Company",
5080 "M & T Bank Corporation",
5081 "Magellan Health Services Inc.",
5082 "Mail-Well Inc.",
5083 "Mandalay Resort Group",
5084 "Manor Care Inc.",
5085 "Manpower Inc.",
5086 "Marathon Oil Corporation",
5087 "Mariner Health Care Inc.",
5088 "Markel Corporation",
5089 "Marriott International Inc.",
5090 "Marsh & McLennan Companies Inc.",
5091 "Marsh Supermarkets Inc.",
5092 "Marshall & Ilsley Corporation",
5093 "Martin Marietta Materials Inc.",
5094 "Masco Corporation",
5095 "Massey Energy Company",
5096 "MasTec Inc.",
5097 "Mattel Inc.",
5098 "Maxim Integrated Products Inc.",
5099 "Maxtor Corporation",
5100 "Maxxam Inc.",
5101 "The May Department Stores Company",
5102 "Maytag Corporation",
5103 "MBNA Corporation",
5104 "McCormick & Company Incorporated",
5105 "McDonald's Corporation",
5106 "The McGraw-Hill Companies Inc.",
5107 "McKesson Corporation",
5108 "McLeodUSA Incorporated",
5109 "M.D.C. Holdings Inc.",
5110 "MDU Resources Group Inc.",
5111 "MeadWestvaco Corporation",
5112 "Medtronic Inc.",
5113 "Mellon Financial Corporation",
5114 "The Men's Wearhouse Inc.",
5115 "Merck & Co., Inc.",
5116 "Mercury General Corporation",
5117 "Merrill Lynch & Co. Inc.",
5118 "Metaldyne Corporation",
5119 "Metals USA Inc.",
5120 "MetLife Inc.",
5121 "Metris Companies Inc",
5122 "MGIC Investment Corporation",
5123 "MGM Mirage",
5124 "Michaels Stores Inc.",
5125 "Micron Technology Inc.",
5126 "Microsoft Corporation",
5127 "Milacron Inc.",
5128 "Millennium Chemicals Inc.",
5129 "Mirant Corporation",
5130 "Mohawk Industries Inc.",
5131 "Molex Incorporated",
5132 "The MONY Group Inc.",
5133 "Morgan Stanley Dean Witter & Co.",
5134 "Motorola Inc.",
5135 "MPS Group Inc.",
5136 "Murphy Oil Corporation",
5137 "Nabors Industries Inc",
5138 "Nacco Industries Inc",
5139 "Nash Finch Company",
5140 "National City Corp.",
5141 "National Commerce Financial Corporation",
5142 "National Fuel Gas Company",
5143 "National Oilwell Inc",
5144 "National Rural Utilities Cooperative Finance Corporation",
5145 "National Semiconductor Corporation",
5146 "National Service Industries Inc",
5147 "Navistar International Corporation",
5148 "NCR Corporation",
5149 "The Neiman Marcus Group Inc.",
5150 "New Jersey Resources Corporation",
5151 "New York Times Company",
5152 "Newell Rubbermaid Inc",
5153 "Newmont Mining Corporation",
5154 "Nextel Communications Inc",
5155 "Nicor Inc",
5156 "Nike Inc",
5157 "NiSource Inc",
5158 "Noble Energy Inc",
5159 "Nordstrom Inc",
5160 "Norfolk Southern Corporation",
5161 "Nortek Inc",
5162 "North Fork Bancorporation Inc",
5163 "Northeast Utilities System",
5164 "Northern Trust Corporation",
5165 "Northrop Grumman Corporation",
5166 "NorthWestern Corporation",
5167 "Novellus Systems Inc",
5168 "NSTAR",
5169 "NTL Incorporated",
5170 "Nucor Corp",
5171 "Nvidia Corp",
5172 "NVR Inc",
5173 "Northwest Airlines Corp",
5174 "Occidental Petroleum Corp",
5175 "Ocean Energy Inc",
5176 "Office Depot Inc.",
5177 "OfficeMax Inc",
5178 "OGE Energy Corp",
5179 "Oglethorpe Power Corp.",
5180 "Ohio Casualty Corp.",
5181 "Old Republic International Corp.",
5182 "Olin Corp.",
5183 "OM Group Inc",
5184 "Omnicare Inc",
5185 "Omnicom Group",
5186 "On Semiconductor Corp",
5187 "ONEOK Inc",
5188 "Oracle Corp",
5189 "Oshkosh Truck Corp",
5190 "Outback Steakhouse Inc.",
5191 "Owens & Minor Inc.",
5192 "Owens Corning",
5193 "Owens-Illinois Inc",
5194 "Oxford Health Plans Inc",
5195 "Paccar Inc",
5196 "PacifiCare Health Systems Inc",
5197 "Packaging Corp. of America",
5198 "Pactiv Corp",
5199 "Pall Corp",
5200 "Pantry Inc",
5201 "Park Place Entertainment Corp",
5202 "Parker Hannifin Corp.",
5203 "Pathmark Stores Inc.",
5204 "Paychex Inc",
5205 "Payless Shoesource Inc",
5206 "Penn Traffic Co.",
5207 "Pennzoil-Quaker State Company",
5208 "Pentair Inc",
5209 "Peoples Energy Corp.",
5210 "PeopleSoft Inc",
5211 "Pep Boys Manny, Moe & Jack",
5212 "Potomac Electric Power Co.",
5213 "Pepsi Bottling Group Inc.",
5214 "PepsiAmericas Inc.",
5215 "PepsiCo Inc.",
5216 "Performance Food Group Co.",
5217 "Perini Corp",
5218 "PerkinElmer Inc",
5219 "Perot Systems Corp",
5220 "Petco Animal Supplies Inc.",
5221 "Peter Kiewit Sons', Inc.",
5222 "PETsMART Inc",
5223 "Pfizer Inc",
5224 "Pacific Gas & Electric Corp.",
5225 "Pharmacia Corp",
5226 "Phar Mor Inc.",
5227 "Phelps Dodge Corp.",
5228 "Philip Morris Companies Inc.",
5229 "Phillips Petroleum Co",
5230 "Phillips Van Heusen Corp.",
5231 "Phoenix Companies Inc",
5232 "Pier 1 Imports Inc.",
5233 "Pilgrim's Pride Corporation",
5234 "Pinnacle West Capital Corp",
5235 "Pioneer-Standard Electronics Inc.",
5236 "Pitney Bowes Inc.",
5237 "Pittston Brinks Group",
5238 "Plains All American Pipeline LP",
5239 "PNC Financial Services Group Inc.",
5240 "PNM Resources Inc",
5241 "Polaris Industries Inc.",
5242 "Polo Ralph Lauren Corp",
5243 "PolyOne Corp",
5244 "Popular Inc",
5245 "Potlatch Corp",
5246 "PPG Industries Inc",
5247 "PPL Corp",
5248 "Praxair Inc",
5249 "Precision Castparts Corp",
5250 "Premcor Inc.",
5251 "Pride International Inc",
5252 "Primedia Inc",
5253 "Principal Financial Group Inc.",
5254 "Procter & Gamble Co.",
5255 "Pro-Fac Cooperative Inc.",
5256 "Progress Energy Inc",
5257 "Progressive Corporation",
5258 "Protective Life Corp",
5259 "Provident Financial Group",
5260 "Providian Financial Corp.",
5261 "Prudential Financial Inc.",
5262 "PSS World Medical Inc",
5263 "Public Service Enterprise Group Inc.",
5264 "Publix Super Markets Inc.",
5265 "Puget Energy Inc.",
5266 "Pulte Homes Inc",
5267 "Qualcomm Inc",
5268 "Quanta Services Inc.",
5269 "Quantum Corp",
5270 "Quest Diagnostics Inc.",
5271 "Questar Corp",
5272 "Quintiles Transnational",
5273 "Qwest Communications Intl Inc",
5274 "R.J. Reynolds Tobacco Company",
5275 "R.R. Donnelley & Sons Company",
5276 "Radio Shack Corporation",
5277 "Raymond James Financial Inc.",
5278 "Raytheon Company",
5279 "Reader's Digest Association Inc.",
5280 "Reebok International Ltd.",
5281 "Regions Financial Corp.",
5282 "Regis Corporation",
5283 "Reliance Steel & Aluminum Co.",
5284 "Reliant Energy Inc.",
5285 "Rent A Center Inc",
5286 "Republic Services Inc",
5287 "Revlon Inc",
5288 "RGS Energy Group Inc",
5289 "Rite Aid Corp",
5290 "Riverwood Holding Inc.",
5291 "RoadwayCorp",
5292 "Robert Half International Inc.",
5293 "Rock-Tenn Co",
5294 "Rockwell Automation Inc",
5295 "Rockwell Collins Inc",
5296 "Rohm & Haas Co.",
5297 "Ross Stores Inc",
5298 "RPM Inc.",
5299 "Ruddick Corp",
5300 "Ryder System Inc",
5301 "Ryerson Tull Inc",
5302 "Ryland Group Inc.",
5303 "Sabre Holdings Corp",
5304 "Safeco Corp",
5305 "Safeguard Scientifics Inc.",
5306 "Safeway Inc",
5307 "Saks Inc",
5308 "Sanmina-SCI Inc",
5309 "Sara Lee Corp",
5310 "SBC Communications Inc",
5311 "Scana Corp.",
5312 "Schering-Plough Corp",
5313 "Scholastic Corp",
5314 "SCI Systems Onc.",
5315 "Science Applications Intl. Inc.",
5316 "Scientific-Atlanta Inc",
5317 "Scotts Company",
5318 "Seaboard Corp",
5319 "Sealed Air Corp",
5320 "Sears Roebuck & Co",
5321 "Sempra Energy",
5322 "Sequa Corp",
5323 "Service Corp. International",
5324 "ServiceMaster Co",
5325 "Shaw Group Inc",
5326 "Sherwin-Williams Company",
5327 "Shopko Stores Inc",
5328 "Siebel Systems Inc",
5329 "Sierra Health Services Inc",
5330 "Sierra Pacific Resources",
5331 "Silgan Holdings Inc.",
5332 "Silicon Graphics Inc",
5333 "Simon Property Group Inc",
5334 "SLM Corporation",
5335 "Smith International Inc",
5336 "Smithfield Foods Inc",
5337 "Smurfit-Stone Container Corp",
5338 "Snap-On Inc",
5339 "Solectron Corp",
5340 "Solutia Inc",
5341 "Sonic Automotive Inc.",
5342 "Sonoco Products Co.",
5343 "Southern Company",
5344 "Southern Union Company",
5345 "SouthTrust Corp.",
5346 "Southwest Airlines Co",
5347 "Southwest Gas Corp",
5348 "Sovereign Bancorp Inc.",
5349 "Spartan Stores Inc",
5350 "Spherion Corp",
5351 "Sports Authority Inc",
5352 "Sprint Corp.",
5353 "SPX Corp",
5354 "St. Jude Medical Inc",
5355 "St. Paul Cos.",
5356 "Staff Leasing Inc.",
5357 "StanCorp Financial Group Inc",
5358 "Standard Pacific Corp.",
5359 "Stanley Works",
5360 "Staples Inc",
5361 "Starbucks Corp",
5362 "Starwood Hotels & Resorts Worldwide Inc",
5363 "State Street Corp.",
5364 "Stater Bros. Holdings Inc.",
5365 "Steelcase Inc",
5366 "Stein Mart Inc",
5367 "Stewart & Stevenson Services Inc",
5368 "Stewart Information Services Corp",
5369 "Stilwell Financial Inc",
5370 "Storage Technology Corporation",
5371 "Stryker Corp",
5372 "Sun Healthcare Group Inc.",
5373 "Sun Microsystems Inc.",
5374 "SunGard Data Systems Inc.",
5375 "Sunoco Inc.",
5376 "SunTrust Banks Inc",
5377 "Supervalu Inc",
5378 "Swift Transportation, Co., Inc",
5379 "Symbol Technologies Inc",
5380 "Synovus Financial Corp.",
5381 "Sysco Corp",
5382 "Systemax Inc.",
5383 "Target Corp.",
5384 "Tech Data Corporation",
5385 "TECO Energy Inc",
5386 "Tecumseh Products Company",
5387 "Tektronix Inc",
5388 "Teleflex Incorporated",
5389 "Telephone & Data Systems Inc",
5390 "Tellabs Inc.",
5391 "Temple-Inland Inc",
5392 "Tenet Healthcare Corporation",
5393 "Tenneco Automotive Inc.",
5394 "Teradyne Inc",
5395 "Terex Corp",
5396 "Tesoro Petroleum Corp.",
5397 "Texas Industries Inc.",
5398 "Texas Instruments Incorporated",
5399 "Textron Inc",
5400 "Thermo Electron Corporation",
5401 "Thomas & Betts Corporation",
5402 "Tiffany & Co",
5403 "Timken Company",
5404 "TJX Companies Inc",
5405 "TMP Worldwide Inc",
5406 "Toll Brothers Inc",
5407 "Torchmark Corporation",
5408 "Toro Company",
5409 "Tower Automotive Inc.",
5410 "Toys 'R' Us Inc",
5411 "Trans World Entertainment Corp.",
5412 "TransMontaigne Inc",
5413 "Transocean Inc",
5414 "TravelCenters of America Inc.",
5415 "Triad Hospitals Inc",
5416 "Tribune Company",
5417 "Trigon Healthcare Inc.",
5418 "Trinity Industries Inc",
5419 "Trump Hotels & Casino Resorts Inc.",
5420 "TruServ Corporation",
5421 "TRW Inc",
5422 "TXU Corp",
5423 "Tyson Foods Inc",
5424 "U.S. Bancorp",
5425 "U.S. Industries Inc.",
5426 "UAL Corporation",
5427 "UGI Corporation",
5428 "Unified Western Grocers Inc",
5429 "Union Pacific Corporation",
5430 "Union Planters Corp",
5431 "Unisource Energy Corp",
5432 "Unisys Corporation",
5433 "United Auto Group Inc",
5434 "United Defense Industries Inc.",
5435 "United Parcel Service Inc",
5436 "United Rentals Inc",
5437 "United Stationers Inc",
5438 "United Technologies Corporation",
5439 "UnitedHealth Group Incorporated",
5440 "Unitrin Inc",
5441 "Universal Corporation",
5442 "Universal Forest Products Inc",
5443 "Universal Health Services Inc",
5444 "Unocal Corporation",
5445 "Unova Inc",
5446 "UnumProvident Corporation",
5447 "URS Corporation",
5448 "US Airways Group Inc",
5449 "US Oncology Inc",
5450 "USA Interactive",
5451 "USFreighways Corporation",
5452 "USG Corporation",
5453 "UST Inc",
5454 "Valero Energy Corporation",
5455 "Valspar Corporation",
5456 "Value City Department Stores Inc",
5457 "Varco International Inc",
5458 "Vectren Corporation",
5459 "Veritas Software Corporation",
5460 "Verizon Communications Inc",
5461 "VF Corporation",
5462 "Viacom Inc",
5463 "Viad Corp",
5464 "Viasystems Group Inc",
5465 "Vishay Intertechnology Inc",
5466 "Visteon Corporation",
5467 "Volt Information Sciences Inc",
5468 "Vulcan Materials Company",
5469 "W.R. Berkley Corporation",
5470 "W.R. Grace & Co",
5471 "W.W. Grainger Inc",
5472 "Wachovia Corporation",
5473 "Wakenhut Corporation",
5474 "Walgreen Co",
5475 "Wallace Computer Services Inc",
5476 "Wal-Mart Stores Inc",
5477 "Walt Disney Co",
5478 "Walter Industries Inc",
5479 "Washington Mutual Inc",
5480 "Washington Post Co.",
5481 "Waste Management Inc",
5482 "Watsco Inc",
5483 "Weatherford International Inc",
5484 "Weis Markets Inc.",
5485 "Wellpoint Health Networks Inc",
5486 "Wells Fargo & Company",
5487 "Wendy's International Inc",
5488 "Werner Enterprises Inc",
5489 "WESCO International Inc",
5490 "Western Digital Inc",
5491 "Western Gas Resources Inc",
5492 "WestPoint Stevens Inc",
5493 "Weyerhauser Company",
5494 "WGL Holdings Inc",
5495 "Whirlpool Corporation",
5496 "Whole Foods Market Inc",
5497 "Willamette Industries Inc.",
5498 "Williams Companies Inc",
5499 "Williams Sonoma Inc",
5500 "Winn Dixie Stores Inc",
5501 "Wisconsin Energy Corporation",
5502 "Wm Wrigley Jr Company",
5503 "World Fuel Services Corporation",
5504 "WorldCom Inc",
5505 "Worthington Industries Inc",
5506 "WPS Resources Corporation",
5507 "Wyeth",
5508 "Wyndham International Inc",
5509 "Xcel Energy Inc",
5510 "Xerox Corp",
5511 "Xilinx Inc",
5512 "XO Communications Inc",
5513 "Yellow Corporation",
5514 "York International Corp",
5515 "Yum Brands Inc.",
5516 "Zale Corporation",
5517 "Zions Bancorporation"
5518 ],
5519
5520 fileExtension : {
5521 "raster" : ["bmp", "gif", "gpl", "ico", "jpeg", "psd", "png", "psp", "raw", "tiff"],
5522 "vector" : ["3dv", "amf", "awg", "ai", "cgm", "cdr", "cmx", "dxf", "e2d", "egt", "eps", "fs", "odg", "svg", "xar"],
5523 "3d" : ["3dmf", "3dm", "3mf", "3ds", "an8", "aoi", "blend", "cal3d", "cob", "ctm", "iob", "jas", "max", "mb", "mdx", "obj", "x", "x3d"],
5524 "document" : ["doc", "docx", "dot", "html", "xml", "odt", "odm", "ott", "csv", "rtf", "tex", "xhtml", "xps"]
5525 },
5526
5527 // Data taken from https://github.com/dmfilipenko/timezones.json/blob/master/timezones.json
5528 timezones: [
5529 {
5530 "name": "Dateline Standard Time",
5531 "abbr": "DST",
5532 "offset": -12,
5533 "isdst": false,
5534 "text": "(UTC-12:00) International Date Line West",
5535 "utc": [
5536 "Etc/GMT+12"
5537 ]
5538 },
5539 {
5540 "name": "UTC-11",
5541 "abbr": "U",
5542 "offset": -11,
5543 "isdst": false,
5544 "text": "(UTC-11:00) Coordinated Universal Time-11",
5545 "utc": [
5546 "Etc/GMT+11",
5547 "Pacific/Midway",
5548 "Pacific/Niue",
5549 "Pacific/Pago_Pago"
5550 ]
5551 },
5552 {
5553 "name": "Hawaiian Standard Time",
5554 "abbr": "HST",
5555 "offset": -10,
5556 "isdst": false,
5557 "text": "(UTC-10:00) Hawaii",
5558 "utc": [
5559 "Etc/GMT+10",
5560 "Pacific/Honolulu",
5561 "Pacific/Johnston",
5562 "Pacific/Rarotonga",
5563 "Pacific/Tahiti"
5564 ]
5565 },
5566 {
5567 "name": "Alaskan Standard Time",
5568 "abbr": "AKDT",
5569 "offset": -8,
5570 "isdst": true,
5571 "text": "(UTC-09:00) Alaska",
5572 "utc": [
5573 "America/Anchorage",
5574 "America/Juneau",
5575 "America/Nome",
5576 "America/Sitka",
5577 "America/Yakutat"
5578 ]
5579 },
5580 {
5581 "name": "Pacific Standard Time (Mexico)",
5582 "abbr": "PDT",
5583 "offset": -7,
5584 "isdst": true,
5585 "text": "(UTC-08:00) Baja California",
5586 "utc": [
5587 "America/Santa_Isabel"
5588 ]
5589 },
5590 {
5591 "name": "Pacific Daylight Time",
5592 "abbr": "PDT",
5593 "offset": -7,
5594 "isdst": true,
5595 "text": "(UTC-07:00) Pacific Time (US & Canada)",
5596 "utc": [
5597 "America/Dawson",
5598 "America/Los_Angeles",
5599 "America/Tijuana",
5600 "America/Vancouver",
5601 "America/Whitehorse"
5602 ]
5603 },
5604 {
5605 "name": "Pacific Standard Time",
5606 "abbr": "PST",
5607 "offset": -8,
5608 "isdst": false,
5609 "text": "(UTC-08:00) Pacific Time (US & Canada)",
5610 "utc": [
5611 "America/Dawson",
5612 "America/Los_Angeles",
5613 "America/Tijuana",
5614 "America/Vancouver",
5615 "America/Whitehorse",
5616 "PST8PDT"
5617 ]
5618 },
5619 {
5620 "name": "US Mountain Standard Time",
5621 "abbr": "UMST",
5622 "offset": -7,
5623 "isdst": false,
5624 "text": "(UTC-07:00) Arizona",
5625 "utc": [
5626 "America/Creston",
5627 "America/Dawson_Creek",
5628 "America/Hermosillo",
5629 "America/Phoenix",
5630 "Etc/GMT+7"
5631 ]
5632 },
5633 {
5634 "name": "Mountain Standard Time (Mexico)",
5635 "abbr": "MDT",
5636 "offset": -6,
5637 "isdst": true,
5638 "text": "(UTC-07:00) Chihuahua, La Paz, Mazatlan",
5639 "utc": [
5640 "America/Chihuahua",
5641 "America/Mazatlan"
5642 ]
5643 },
5644 {
5645 "name": "Mountain Standard Time",
5646 "abbr": "MDT",
5647 "offset": -6,
5648 "isdst": true,
5649 "text": "(UTC-07:00) Mountain Time (US & Canada)",
5650 "utc": [
5651 "America/Boise",
5652 "America/Cambridge_Bay",
5653 "America/Denver",
5654 "America/Edmonton",
5655 "America/Inuvik",
5656 "America/Ojinaga",
5657 "America/Yellowknife",
5658 "MST7MDT"
5659 ]
5660 },
5661 {
5662 "name": "Central America Standard Time",
5663 "abbr": "CAST",
5664 "offset": -6,
5665 "isdst": false,
5666 "text": "(UTC-06:00) Central America",
5667 "utc": [
5668 "America/Belize",
5669 "America/Costa_Rica",
5670 "America/El_Salvador",
5671 "America/Guatemala",
5672 "America/Managua",
5673 "America/Tegucigalpa",
5674 "Etc/GMT+6",
5675 "Pacific/Galapagos"
5676 ]
5677 },
5678 {
5679 "name": "Central Standard Time",
5680 "abbr": "CDT",
5681 "offset": -5,
5682 "isdst": true,
5683 "text": "(UTC-06:00) Central Time (US & Canada)",
5684 "utc": [
5685 "America/Chicago",
5686 "America/Indiana/Knox",
5687 "America/Indiana/Tell_City",
5688 "America/Matamoros",
5689 "America/Menominee",
5690 "America/North_Dakota/Beulah",
5691 "America/North_Dakota/Center",
5692 "America/North_Dakota/New_Salem",
5693 "America/Rainy_River",
5694 "America/Rankin_Inlet",
5695 "America/Resolute",
5696 "America/Winnipeg",
5697 "CST6CDT"
5698 ]
5699 },
5700 {
5701 "name": "Central Standard Time (Mexico)",
5702 "abbr": "CDT",
5703 "offset": -5,
5704 "isdst": true,
5705 "text": "(UTC-06:00) Guadalajara, Mexico City, Monterrey",
5706 "utc": [
5707 "America/Bahia_Banderas",
5708 "America/Cancun",
5709 "America/Merida",
5710 "America/Mexico_City",
5711 "America/Monterrey"
5712 ]
5713 },
5714 {
5715 "name": "Canada Central Standard Time",
5716 "abbr": "CCST",
5717 "offset": -6,
5718 "isdst": false,
5719 "text": "(UTC-06:00) Saskatchewan",
5720 "utc": [
5721 "America/Regina",
5722 "America/Swift_Current"
5723 ]
5724 },
5725 {
5726 "name": "SA Pacific Standard Time",
5727 "abbr": "SPST",
5728 "offset": -5,
5729 "isdst": false,
5730 "text": "(UTC-05:00) Bogota, Lima, Quito",
5731 "utc": [
5732 "America/Bogota",
5733 "America/Cayman",
5734 "America/Coral_Harbour",
5735 "America/Eirunepe",
5736 "America/Guayaquil",
5737 "America/Jamaica",
5738 "America/Lima",
5739 "America/Panama",
5740 "America/Rio_Branco",
5741 "Etc/GMT+5"
5742 ]
5743 },
5744 {
5745 "name": "Eastern Standard Time",
5746 "abbr": "EDT",
5747 "offset": -4,
5748 "isdst": true,
5749 "text": "(UTC-05:00) Eastern Time (US & Canada)",
5750 "utc": [
5751 "America/Detroit",
5752 "America/Havana",
5753 "America/Indiana/Petersburg",
5754 "America/Indiana/Vincennes",
5755 "America/Indiana/Winamac",
5756 "America/Iqaluit",
5757 "America/Kentucky/Monticello",
5758 "America/Louisville",
5759 "America/Montreal",
5760 "America/Nassau",
5761 "America/New_York",
5762 "America/Nipigon",
5763 "America/Pangnirtung",
5764 "America/Port-au-Prince",
5765 "America/Thunder_Bay",
5766 "America/Toronto",
5767 "EST5EDT"
5768 ]
5769 },
5770 {
5771 "name": "US Eastern Standard Time",
5772 "abbr": "UEDT",
5773 "offset": -4,
5774 "isdst": true,
5775 "text": "(UTC-05:00) Indiana (East)",
5776 "utc": [
5777 "America/Indiana/Marengo",
5778 "America/Indiana/Vevay",
5779 "America/Indianapolis"
5780 ]
5781 },
5782 {
5783 "name": "Venezuela Standard Time",
5784 "abbr": "VST",
5785 "offset": -4.5,
5786 "isdst": false,
5787 "text": "(UTC-04:30) Caracas",
5788 "utc": [
5789 "America/Caracas"
5790 ]
5791 },
5792 {
5793 "name": "Paraguay Standard Time",
5794 "abbr": "PYT",
5795 "offset": -4,
5796 "isdst": false,
5797 "text": "(UTC-04:00) Asuncion",
5798 "utc": [
5799 "America/Asuncion"
5800 ]
5801 },
5802 {
5803 "name": "Atlantic Standard Time",
5804 "abbr": "ADT",
5805 "offset": -3,
5806 "isdst": true,
5807 "text": "(UTC-04:00) Atlantic Time (Canada)",
5808 "utc": [
5809 "America/Glace_Bay",
5810 "America/Goose_Bay",
5811 "America/Halifax",
5812 "America/Moncton",
5813 "America/Thule",
5814 "Atlantic/Bermuda"
5815 ]
5816 },
5817 {
5818 "name": "Central Brazilian Standard Time",
5819 "abbr": "CBST",
5820 "offset": -4,
5821 "isdst": false,
5822 "text": "(UTC-04:00) Cuiaba",
5823 "utc": [
5824 "America/Campo_Grande",
5825 "America/Cuiaba"
5826 ]
5827 },
5828 {
5829 "name": "SA Western Standard Time",
5830 "abbr": "SWST",
5831 "offset": -4,
5832 "isdst": false,
5833 "text": "(UTC-04:00) Georgetown, La Paz, Manaus, San Juan",
5834 "utc": [
5835 "America/Anguilla",
5836 "America/Antigua",
5837 "America/Aruba",
5838 "America/Barbados",
5839 "America/Blanc-Sablon",
5840 "America/Boa_Vista",
5841 "America/Curacao",
5842 "America/Dominica",
5843 "America/Grand_Turk",
5844 "America/Grenada",
5845 "America/Guadeloupe",
5846 "America/Guyana",
5847 "America/Kralendijk",
5848 "America/La_Paz",
5849 "America/Lower_Princes",
5850 "America/Manaus",
5851 "America/Marigot",
5852 "America/Martinique",
5853 "America/Montserrat",
5854 "America/Port_of_Spain",
5855 "America/Porto_Velho",
5856 "America/Puerto_Rico",
5857 "America/Santo_Domingo",
5858 "America/St_Barthelemy",
5859 "America/St_Kitts",
5860 "America/St_Lucia",
5861 "America/St_Thomas",
5862 "America/St_Vincent",
5863 "America/Tortola",
5864 "Etc/GMT+4"
5865 ]
5866 },
5867 {
5868 "name": "Pacific SA Standard Time",
5869 "abbr": "PSST",
5870 "offset": -4,
5871 "isdst": false,
5872 "text": "(UTC-04:00) Santiago",
5873 "utc": [
5874 "America/Santiago",
5875 "Antarctica/Palmer"
5876 ]
5877 },
5878 {
5879 "name": "Newfoundland Standard Time",
5880 "abbr": "NDT",
5881 "offset": -2.5,
5882 "isdst": true,
5883 "text": "(UTC-03:30) Newfoundland",
5884 "utc": [
5885 "America/St_Johns"
5886 ]
5887 },
5888 {
5889 "name": "E. South America Standard Time",
5890 "abbr": "ESAST",
5891 "offset": -3,
5892 "isdst": false,
5893 "text": "(UTC-03:00) Brasilia",
5894 "utc": [
5895 "America/Sao_Paulo"
5896 ]
5897 },
5898 {
5899 "name": "Argentina Standard Time",
5900 "abbr": "AST",
5901 "offset": -3,
5902 "isdst": false,
5903 "text": "(UTC-03:00) Buenos Aires",
5904 "utc": [
5905 "America/Argentina/La_Rioja",
5906 "America/Argentina/Rio_Gallegos",
5907 "America/Argentina/Salta",
5908 "America/Argentina/San_Juan",
5909 "America/Argentina/San_Luis",
5910 "America/Argentina/Tucuman",
5911 "America/Argentina/Ushuaia",
5912 "America/Buenos_Aires",
5913 "America/Catamarca",
5914 "America/Cordoba",
5915 "America/Jujuy",
5916 "America/Mendoza"
5917 ]
5918 },
5919 {
5920 "name": "SA Eastern Standard Time",
5921 "abbr": "SEST",
5922 "offset": -3,
5923 "isdst": false,
5924 "text": "(UTC-03:00) Cayenne, Fortaleza",
5925 "utc": [
5926 "America/Araguaina",
5927 "America/Belem",
5928 "America/Cayenne",
5929 "America/Fortaleza",
5930 "America/Maceio",
5931 "America/Paramaribo",
5932 "America/Recife",
5933 "America/Santarem",
5934 "Antarctica/Rothera",
5935 "Atlantic/Stanley",
5936 "Etc/GMT+3"
5937 ]
5938 },
5939 {
5940 "name": "Greenland Standard Time",
5941 "abbr": "GDT",
5942 "offset": -3,
5943 "isdst": true,
5944 "text": "(UTC-03:00) Greenland",
5945 "utc": [
5946 "America/Godthab"
5947 ]
5948 },
5949 {
5950 "name": "Montevideo Standard Time",
5951 "abbr": "MST",
5952 "offset": -3,
5953 "isdst": false,
5954 "text": "(UTC-03:00) Montevideo",
5955 "utc": [
5956 "America/Montevideo"
5957 ]
5958 },
5959 {
5960 "name": "Bahia Standard Time",
5961 "abbr": "BST",
5962 "offset": -3,
5963 "isdst": false,
5964 "text": "(UTC-03:00) Salvador",
5965 "utc": [
5966 "America/Bahia"
5967 ]
5968 },
5969 {
5970 "name": "UTC-02",
5971 "abbr": "U",
5972 "offset": -2,
5973 "isdst": false,
5974 "text": "(UTC-02:00) Coordinated Universal Time-02",
5975 "utc": [
5976 "America/Noronha",
5977 "Atlantic/South_Georgia",
5978 "Etc/GMT+2"
5979 ]
5980 },
5981 {
5982 "name": "Mid-Atlantic Standard Time",
5983 "abbr": "MDT",
5984 "offset": -1,
5985 "isdst": true,
5986 "text": "(UTC-02:00) Mid-Atlantic - Old",
5987 "utc": []
5988 },
5989 {
5990 "name": "Azores Standard Time",
5991 "abbr": "ADT",
5992 "offset": 0,
5993 "isdst": true,
5994 "text": "(UTC-01:00) Azores",
5995 "utc": [
5996 "America/Scoresbysund",
5997 "Atlantic/Azores"
5998 ]
5999 },
6000 {
6001 "name": "Cape Verde Standard Time",
6002 "abbr": "CVST",
6003 "offset": -1,
6004 "isdst": false,
6005 "text": "(UTC-01:00) Cape Verde Is.",
6006 "utc": [
6007 "Atlantic/Cape_Verde",
6008 "Etc/GMT+1"
6009 ]
6010 },
6011 {
6012 "name": "Morocco Standard Time",
6013 "abbr": "MDT",
6014 "offset": 1,
6015 "isdst": true,
6016 "text": "(UTC) Casablanca",
6017 "utc": [
6018 "Africa/Casablanca",
6019 "Africa/El_Aaiun"
6020 ]
6021 },
6022 {
6023 "name": "UTC",
6024 "abbr": "UTC",
6025 "offset": 0,
6026 "isdst": false,
6027 "text": "(UTC) Coordinated Universal Time",
6028 "utc": [
6029 "America/Danmarkshavn",
6030 "Etc/GMT"
6031 ]
6032 },
6033 {
6034 "name": "GMT Standard Time",
6035 "abbr": "GMT",
6036 "offset": 0,
6037 "isdst": false,
6038 "text": "(UTC) Edinburgh, London",
6039 "utc": [
6040 "Europe/Isle_of_Man",
6041 "Europe/Guernsey",
6042 "Europe/Jersey",
6043 "Europe/London"
6044 ]
6045 },
6046 {
6047 "name": "British Summer Time",
6048 "abbr": "BST",
6049 "offset": 1,
6050 "isdst": true,
6051 "text": "(UTC+01:00) Edinburgh, London",
6052 "utc": [
6053 "Europe/Isle_of_Man",
6054 "Europe/Guernsey",
6055 "Europe/Jersey",
6056 "Europe/London"
6057 ]
6058 },
6059 {
6060 "name": "GMT Standard Time",
6061 "abbr": "GDT",
6062 "offset": 1,
6063 "isdst": true,
6064 "text": "(UTC) Dublin, Lisbon",
6065 "utc": [
6066 "Atlantic/Canary",
6067 "Atlantic/Faeroe",
6068 "Atlantic/Madeira",
6069 "Europe/Dublin",
6070 "Europe/Lisbon"
6071 ]
6072 },
6073 {
6074 "name": "Greenwich Standard Time",
6075 "abbr": "GST",
6076 "offset": 0,
6077 "isdst": false,
6078 "text": "(UTC) Monrovia, Reykjavik",
6079 "utc": [
6080 "Africa/Abidjan",
6081 "Africa/Accra",
6082 "Africa/Bamako",
6083 "Africa/Banjul",
6084 "Africa/Bissau",
6085 "Africa/Conakry",
6086 "Africa/Dakar",
6087 "Africa/Freetown",
6088 "Africa/Lome",
6089 "Africa/Monrovia",
6090 "Africa/Nouakchott",
6091 "Africa/Ouagadougou",
6092 "Africa/Sao_Tome",
6093 "Atlantic/Reykjavik",
6094 "Atlantic/St_Helena"
6095 ]
6096 },
6097 {
6098 "name": "W. Europe Standard Time",
6099 "abbr": "WEDT",
6100 "offset": 2,
6101 "isdst": true,
6102 "text": "(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna",
6103 "utc": [
6104 "Arctic/Longyearbyen",
6105 "Europe/Amsterdam",
6106 "Europe/Andorra",
6107 "Europe/Berlin",
6108 "Europe/Busingen",
6109 "Europe/Gibraltar",
6110 "Europe/Luxembourg",
6111 "Europe/Malta",
6112 "Europe/Monaco",
6113 "Europe/Oslo",
6114 "Europe/Rome",
6115 "Europe/San_Marino",
6116 "Europe/Stockholm",
6117 "Europe/Vaduz",
6118 "Europe/Vatican",
6119 "Europe/Vienna",
6120 "Europe/Zurich"
6121 ]
6122 },
6123 {
6124 "name": "Central Europe Standard Time",
6125 "abbr": "CEDT",
6126 "offset": 2,
6127 "isdst": true,
6128 "text": "(UTC+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague",
6129 "utc": [
6130 "Europe/Belgrade",
6131 "Europe/Bratislava",
6132 "Europe/Budapest",
6133 "Europe/Ljubljana",
6134 "Europe/Podgorica",
6135 "Europe/Prague",
6136 "Europe/Tirane"
6137 ]
6138 },
6139 {
6140 "name": "Romance Standard Time",
6141 "abbr": "RDT",
6142 "offset": 2,
6143 "isdst": true,
6144 "text": "(UTC+01:00) Brussels, Copenhagen, Madrid, Paris",
6145 "utc": [
6146 "Africa/Ceuta",
6147 "Europe/Brussels",
6148 "Europe/Copenhagen",
6149 "Europe/Madrid",
6150 "Europe/Paris"
6151 ]
6152 },
6153 {
6154 "name": "Central European Standard Time",
6155 "abbr": "CEDT",
6156 "offset": 2,
6157 "isdst": true,
6158 "text": "(UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb",
6159 "utc": [
6160 "Europe/Sarajevo",
6161 "Europe/Skopje",
6162 "Europe/Warsaw",
6163 "Europe/Zagreb"
6164 ]
6165 },
6166 {
6167 "name": "W. Central Africa Standard Time",
6168 "abbr": "WCAST",
6169 "offset": 1,
6170 "isdst": false,
6171 "text": "(UTC+01:00) West Central Africa",
6172 "utc": [
6173 "Africa/Algiers",
6174 "Africa/Bangui",
6175 "Africa/Brazzaville",
6176 "Africa/Douala",
6177 "Africa/Kinshasa",
6178 "Africa/Lagos",
6179 "Africa/Libreville",
6180 "Africa/Luanda",
6181 "Africa/Malabo",
6182 "Africa/Ndjamena",
6183 "Africa/Niamey",
6184 "Africa/Porto-Novo",
6185 "Africa/Tunis",
6186 "Etc/GMT-1"
6187 ]
6188 },
6189 {
6190 "name": "Namibia Standard Time",
6191 "abbr": "NST",
6192 "offset": 1,
6193 "isdst": false,
6194 "text": "(UTC+01:00) Windhoek",
6195 "utc": [
6196 "Africa/Windhoek"
6197 ]
6198 },
6199 {
6200 "name": "GTB Standard Time",
6201 "abbr": "GDT",
6202 "offset": 3,
6203 "isdst": true,
6204 "text": "(UTC+02:00) Athens, Bucharest",
6205 "utc": [
6206 "Asia/Nicosia",
6207 "Europe/Athens",
6208 "Europe/Bucharest",
6209 "Europe/Chisinau"
6210 ]
6211 },
6212 {
6213 "name": "Middle East Standard Time",
6214 "abbr": "MEDT",
6215 "offset": 3,
6216 "isdst": true,
6217 "text": "(UTC+02:00) Beirut",
6218 "utc": [
6219 "Asia/Beirut"
6220 ]
6221 },
6222 {
6223 "name": "Egypt Standard Time",
6224 "abbr": "EST",
6225 "offset": 2,
6226 "isdst": false,
6227 "text": "(UTC+02:00) Cairo",
6228 "utc": [
6229 "Africa/Cairo"
6230 ]
6231 },
6232 {
6233 "name": "Syria Standard Time",
6234 "abbr": "SDT",
6235 "offset": 3,
6236 "isdst": true,
6237 "text": "(UTC+02:00) Damascus",
6238 "utc": [
6239 "Asia/Damascus"
6240 ]
6241 },
6242 {
6243 "name": "E. Europe Standard Time",
6244 "abbr": "EEDT",
6245 "offset": 3,
6246 "isdst": true,
6247 "text": "(UTC+02:00) E. Europe",
6248 "utc": [
6249 "Asia/Nicosia",
6250 "Europe/Athens",
6251 "Europe/Bucharest",
6252 "Europe/Chisinau",
6253 "Europe/Helsinki",
6254 "Europe/Kiev",
6255 "Europe/Mariehamn",
6256 "Europe/Nicosia",
6257 "Europe/Riga",
6258 "Europe/Sofia",
6259 "Europe/Tallinn",
6260 "Europe/Uzhgorod",
6261 "Europe/Vilnius",
6262 "Europe/Zaporozhye"
6263 ]
6264 },
6265 {
6266 "name": "South Africa Standard Time",
6267 "abbr": "SAST",
6268 "offset": 2,
6269 "isdst": false,
6270 "text": "(UTC+02:00) Harare, Pretoria",
6271 "utc": [
6272 "Africa/Blantyre",
6273 "Africa/Bujumbura",
6274 "Africa/Gaborone",
6275 "Africa/Harare",
6276 "Africa/Johannesburg",
6277 "Africa/Kigali",
6278 "Africa/Lubumbashi",
6279 "Africa/Lusaka",
6280 "Africa/Maputo",
6281 "Africa/Maseru",
6282 "Africa/Mbabane",
6283 "Etc/GMT-2"
6284 ]
6285 },
6286 {
6287 "name": "FLE Standard Time",
6288 "abbr": "FDT",
6289 "offset": 3,
6290 "isdst": true,
6291 "text": "(UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius",
6292 "utc": [
6293 "Europe/Helsinki",
6294 "Europe/Kiev",
6295 "Europe/Mariehamn",
6296 "Europe/Riga",
6297 "Europe/Sofia",
6298 "Europe/Tallinn",
6299 "Europe/Uzhgorod",
6300 "Europe/Vilnius",
6301 "Europe/Zaporozhye"
6302 ]
6303 },
6304 {
6305 "name": "Turkey Standard Time",
6306 "abbr": "TDT",
6307 "offset": 3,
6308 "isdst": false,
6309 "text": "(UTC+03:00) Istanbul",
6310 "utc": [
6311 "Europe/Istanbul"
6312 ]
6313 },
6314 {
6315 "name": "Israel Standard Time",
6316 "abbr": "JDT",
6317 "offset": 3,
6318 "isdst": true,
6319 "text": "(UTC+02:00) Jerusalem",
6320 "utc": [
6321 "Asia/Jerusalem"
6322 ]
6323 },
6324 {
6325 "name": "Libya Standard Time",
6326 "abbr": "LST",
6327 "offset": 2,
6328 "isdst": false,
6329 "text": "(UTC+02:00) Tripoli",
6330 "utc": [
6331 "Africa/Tripoli"
6332 ]
6333 },
6334 {
6335 "name": "Jordan Standard Time",
6336 "abbr": "JST",
6337 "offset": 3,
6338 "isdst": false,
6339 "text": "(UTC+03:00) Amman",
6340 "utc": [
6341 "Asia/Amman"
6342 ]
6343 },
6344 {
6345 "name": "Arabic Standard Time",
6346 "abbr": "AST",
6347 "offset": 3,
6348 "isdst": false,
6349 "text": "(UTC+03:00) Baghdad",
6350 "utc": [
6351 "Asia/Baghdad"
6352 ]
6353 },
6354 {
6355 "name": "Kaliningrad Standard Time",
6356 "abbr": "KST",
6357 "offset": 3,
6358 "isdst": false,
6359 "text": "(UTC+02:00) Kaliningrad",
6360 "utc": [
6361 "Europe/Kaliningrad"
6362 ]
6363 },
6364 {
6365 "name": "Arab Standard Time",
6366 "abbr": "AST",
6367 "offset": 3,
6368 "isdst": false,
6369 "text": "(UTC+03:00) Kuwait, Riyadh",
6370 "utc": [
6371 "Asia/Aden",
6372 "Asia/Bahrain",
6373 "Asia/Kuwait",
6374 "Asia/Qatar",
6375 "Asia/Riyadh"
6376 ]
6377 },
6378 {
6379 "name": "E. Africa Standard Time",
6380 "abbr": "EAST",
6381 "offset": 3,
6382 "isdst": false,
6383 "text": "(UTC+03:00) Nairobi",
6384 "utc": [
6385 "Africa/Addis_Ababa",
6386 "Africa/Asmera",
6387 "Africa/Dar_es_Salaam",
6388 "Africa/Djibouti",
6389 "Africa/Juba",
6390 "Africa/Kampala",
6391 "Africa/Khartoum",
6392 "Africa/Mogadishu",
6393 "Africa/Nairobi",
6394 "Antarctica/Syowa",
6395 "Etc/GMT-3",
6396 "Indian/Antananarivo",
6397 "Indian/Comoro",
6398 "Indian/Mayotte"
6399 ]
6400 },
6401 {
6402 "name": "Moscow Standard Time",
6403 "abbr": "MSK",
6404 "offset": 3,
6405 "isdst": false,
6406 "text": "(UTC+03:00) Moscow, St. Petersburg, Volgograd, Minsk",
6407 "utc": [
6408 "Europe/Kirov",
6409 "Europe/Moscow",
6410 "Europe/Simferopol",
6411 "Europe/Volgograd",
6412 "Europe/Minsk"
6413 ]
6414 },
6415 {
6416 "name": "Samara Time",
6417 "abbr": "SAMT",
6418 "offset": 4,
6419 "isdst": false,
6420 "text": "(UTC+04:00) Samara, Ulyanovsk, Saratov",
6421 "utc": [
6422 "Europe/Astrakhan",
6423 "Europe/Samara",
6424 "Europe/Ulyanovsk"
6425 ]
6426 },
6427 {
6428 "name": "Iran Standard Time",
6429 "abbr": "IDT",
6430 "offset": 4.5,
6431 "isdst": true,
6432 "text": "(UTC+03:30) Tehran",
6433 "utc": [
6434 "Asia/Tehran"
6435 ]
6436 },
6437 {
6438 "name": "Arabian Standard Time",
6439 "abbr": "AST",
6440 "offset": 4,
6441 "isdst": false,
6442 "text": "(UTC+04:00) Abu Dhabi, Muscat",
6443 "utc": [
6444 "Asia/Dubai",
6445 "Asia/Muscat",
6446 "Etc/GMT-4"
6447 ]
6448 },
6449 {
6450 "name": "Azerbaijan Standard Time",
6451 "abbr": "ADT",
6452 "offset": 5,
6453 "isdst": true,
6454 "text": "(UTC+04:00) Baku",
6455 "utc": [
6456 "Asia/Baku"
6457 ]
6458 },
6459 {
6460 "name": "Mauritius Standard Time",
6461 "abbr": "MST",
6462 "offset": 4,
6463 "isdst": false,
6464 "text": "(UTC+04:00) Port Louis",
6465 "utc": [
6466 "Indian/Mahe",
6467 "Indian/Mauritius",
6468 "Indian/Reunion"
6469 ]
6470 },
6471 {
6472 "name": "Georgian Standard Time",
6473 "abbr": "GET",
6474 "offset": 4,
6475 "isdst": false,
6476 "text": "(UTC+04:00) Tbilisi",
6477 "utc": [
6478 "Asia/Tbilisi"
6479 ]
6480 },
6481 {
6482 "name": "Caucasus Standard Time",
6483 "abbr": "CST",
6484 "offset": 4,
6485 "isdst": false,
6486 "text": "(UTC+04:00) Yerevan",
6487 "utc": [
6488 "Asia/Yerevan"
6489 ]
6490 },
6491 {
6492 "name": "Afghanistan Standard Time",
6493 "abbr": "AST",
6494 "offset": 4.5,
6495 "isdst": false,
6496 "text": "(UTC+04:30) Kabul",
6497 "utc": [
6498 "Asia/Kabul"
6499 ]
6500 },
6501 {
6502 "name": "West Asia Standard Time",
6503 "abbr": "WAST",
6504 "offset": 5,
6505 "isdst": false,
6506 "text": "(UTC+05:00) Ashgabat, Tashkent",
6507 "utc": [
6508 "Antarctica/Mawson",
6509 "Asia/Aqtau",
6510 "Asia/Aqtobe",
6511 "Asia/Ashgabat",
6512 "Asia/Dushanbe",
6513 "Asia/Oral",
6514 "Asia/Samarkand",
6515 "Asia/Tashkent",
6516 "Etc/GMT-5",
6517 "Indian/Kerguelen",
6518 "Indian/Maldives"
6519 ]
6520 },
6521 {
6522 "name": "Yekaterinburg Time",
6523 "abbr": "YEKT",
6524 "offset": 5,
6525 "isdst": false,
6526 "text": "(UTC+05:00) Yekaterinburg",
6527 "utc": [
6528 "Asia/Yekaterinburg"
6529 ]
6530 },
6531 {
6532 "name": "Pakistan Standard Time",
6533 "abbr": "PKT",
6534 "offset": 5,
6535 "isdst": false,
6536 "text": "(UTC+05:00) Islamabad, Karachi",
6537 "utc": [
6538 "Asia/Karachi"
6539 ]
6540 },
6541 {
6542 "name": "India Standard Time",
6543 "abbr": "IST",
6544 "offset": 5.5,
6545 "isdst": false,
6546 "text": "(UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi",
6547 "utc": [
6548 "Asia/Kolkata"
6549 ]
6550 },
6551 {
6552 "name": "Sri Lanka Standard Time",
6553 "abbr": "SLST",
6554 "offset": 5.5,
6555 "isdst": false,
6556 "text": "(UTC+05:30) Sri Jayawardenepura",
6557 "utc": [
6558 "Asia/Colombo"
6559 ]
6560 },
6561 {
6562 "name": "Nepal Standard Time",
6563 "abbr": "NST",
6564 "offset": 5.75,
6565 "isdst": false,
6566 "text": "(UTC+05:45) Kathmandu",
6567 "utc": [
6568 "Asia/Kathmandu"
6569 ]
6570 },
6571 {
6572 "name": "Central Asia Standard Time",
6573 "abbr": "CAST",
6574 "offset": 6,
6575 "isdst": false,
6576 "text": "(UTC+06:00) Nur-Sultan (Astana)",
6577 "utc": [
6578 "Antarctica/Vostok",
6579 "Asia/Almaty",
6580 "Asia/Bishkek",
6581 "Asia/Qyzylorda",
6582 "Asia/Urumqi",
6583 "Etc/GMT-6",
6584 "Indian/Chagos"
6585 ]
6586 },
6587 {
6588 "name": "Bangladesh Standard Time",
6589 "abbr": "BST",
6590 "offset": 6,
6591 "isdst": false,
6592 "text": "(UTC+06:00) Dhaka",
6593 "utc": [
6594 "Asia/Dhaka",
6595 "Asia/Thimphu"
6596 ]
6597 },
6598 {
6599 "name": "Myanmar Standard Time",
6600 "abbr": "MST",
6601 "offset": 6.5,
6602 "isdst": false,
6603 "text": "(UTC+06:30) Yangon (Rangoon)",
6604 "utc": [
6605 "Asia/Rangoon",
6606 "Indian/Cocos"
6607 ]
6608 },
6609 {
6610 "name": "SE Asia Standard Time",
6611 "abbr": "SAST",
6612 "offset": 7,
6613 "isdst": false,
6614 "text": "(UTC+07:00) Bangkok, Hanoi, Jakarta",
6615 "utc": [
6616 "Antarctica/Davis",
6617 "Asia/Bangkok",
6618 "Asia/Hovd",
6619 "Asia/Jakarta",
6620 "Asia/Phnom_Penh",
6621 "Asia/Pontianak",
6622 "Asia/Saigon",
6623 "Asia/Vientiane",
6624 "Etc/GMT-7",
6625 "Indian/Christmas"
6626 ]
6627 },
6628 {
6629 "name": "N. Central Asia Standard Time",
6630 "abbr": "NCAST",
6631 "offset": 7,
6632 "isdst": false,
6633 "text": "(UTC+07:00) Novosibirsk",
6634 "utc": [
6635 "Asia/Novokuznetsk",
6636 "Asia/Novosibirsk",
6637 "Asia/Omsk"
6638 ]
6639 },
6640 {
6641 "name": "China Standard Time",
6642 "abbr": "CST",
6643 "offset": 8,
6644 "isdst": false,
6645 "text": "(UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi",
6646 "utc": [
6647 "Asia/Hong_Kong",
6648 "Asia/Macau",
6649 "Asia/Shanghai"
6650 ]
6651 },
6652 {
6653 "name": "North Asia Standard Time",
6654 "abbr": "NAST",
6655 "offset": 8,
6656 "isdst": false,
6657 "text": "(UTC+08:00) Krasnoyarsk",
6658 "utc": [
6659 "Asia/Krasnoyarsk"
6660 ]
6661 },
6662 {
6663 "name": "Singapore Standard Time",
6664 "abbr": "MPST",
6665 "offset": 8,
6666 "isdst": false,
6667 "text": "(UTC+08:00) Kuala Lumpur, Singapore",
6668 "utc": [
6669 "Asia/Brunei",
6670 "Asia/Kuala_Lumpur",
6671 "Asia/Kuching",
6672 "Asia/Makassar",
6673 "Asia/Manila",
6674 "Asia/Singapore",
6675 "Etc/GMT-8"
6676 ]
6677 },
6678 {
6679 "name": "W. Australia Standard Time",
6680 "abbr": "WAST",
6681 "offset": 8,
6682 "isdst": false,
6683 "text": "(UTC+08:00) Perth",
6684 "utc": [
6685 "Antarctica/Casey",
6686 "Australia/Perth"
6687 ]
6688 },
6689 {
6690 "name": "Taipei Standard Time",
6691 "abbr": "TST",
6692 "offset": 8,
6693 "isdst": false,
6694 "text": "(UTC+08:00) Taipei",
6695 "utc": [
6696 "Asia/Taipei"
6697 ]
6698 },
6699 {
6700 "name": "Ulaanbaatar Standard Time",
6701 "abbr": "UST",
6702 "offset": 8,
6703 "isdst": false,
6704 "text": "(UTC+08:00) Ulaanbaatar",
6705 "utc": [
6706 "Asia/Choibalsan",
6707 "Asia/Ulaanbaatar"
6708 ]
6709 },
6710 {
6711 "name": "North Asia East Standard Time",
6712 "abbr": "NAEST",
6713 "offset": 8,
6714 "isdst": false,
6715 "text": "(UTC+08:00) Irkutsk",
6716 "utc": [
6717 "Asia/Irkutsk"
6718 ]
6719 },
6720 {
6721 "name": "Japan Standard Time",
6722 "abbr": "JST",
6723 "offset": 9,
6724 "isdst": false,
6725 "text": "(UTC+09:00) Osaka, Sapporo, Tokyo",
6726 "utc": [
6727 "Asia/Dili",
6728 "Asia/Jayapura",
6729 "Asia/Tokyo",
6730 "Etc/GMT-9",
6731 "Pacific/Palau"
6732 ]
6733 },
6734 {
6735 "name": "Korea Standard Time",
6736 "abbr": "KST",
6737 "offset": 9,
6738 "isdst": false,
6739 "text": "(UTC+09:00) Seoul",
6740 "utc": [
6741 "Asia/Pyongyang",
6742 "Asia/Seoul"
6743 ]
6744 },
6745 {
6746 "name": "Cen. Australia Standard Time",
6747 "abbr": "CAST",
6748 "offset": 9.5,
6749 "isdst": false,
6750 "text": "(UTC+09:30) Adelaide",
6751 "utc": [
6752 "Australia/Adelaide",
6753 "Australia/Broken_Hill"
6754 ]
6755 },
6756 {
6757 "name": "AUS Central Standard Time",
6758 "abbr": "ACST",
6759 "offset": 9.5,
6760 "isdst": false,
6761 "text": "(UTC+09:30) Darwin",
6762 "utc": [
6763 "Australia/Darwin"
6764 ]
6765 },
6766 {
6767 "name": "E. Australia Standard Time",
6768 "abbr": "EAST",
6769 "offset": 10,
6770 "isdst": false,
6771 "text": "(UTC+10:00) Brisbane",
6772 "utc": [
6773 "Australia/Brisbane",
6774 "Australia/Lindeman"
6775 ]
6776 },
6777 {
6778 "name": "AUS Eastern Standard Time",
6779 "abbr": "AEST",
6780 "offset": 10,
6781 "isdst": false,
6782 "text": "(UTC+10:00) Canberra, Melbourne, Sydney",
6783 "utc": [
6784 "Australia/Melbourne",
6785 "Australia/Sydney"
6786 ]
6787 },
6788 {
6789 "name": "West Pacific Standard Time",
6790 "abbr": "WPST",
6791 "offset": 10,
6792 "isdst": false,
6793 "text": "(UTC+10:00) Guam, Port Moresby",
6794 "utc": [
6795 "Antarctica/DumontDUrville",
6796 "Etc/GMT-10",
6797 "Pacific/Guam",
6798 "Pacific/Port_Moresby",
6799 "Pacific/Saipan",
6800 "Pacific/Truk"
6801 ]
6802 },
6803 {
6804 "name": "Tasmania Standard Time",
6805 "abbr": "TST",
6806 "offset": 10,
6807 "isdst": false,
6808 "text": "(UTC+10:00) Hobart",
6809 "utc": [
6810 "Australia/Currie",
6811 "Australia/Hobart"
6812 ]
6813 },
6814 {
6815 "name": "Yakutsk Standard Time",
6816 "abbr": "YST",
6817 "offset": 9,
6818 "isdst": false,
6819 "text": "(UTC+09:00) Yakutsk",
6820 "utc": [
6821 "Asia/Chita",
6822 "Asia/Khandyga",
6823 "Asia/Yakutsk"
6824 ]
6825 },
6826 {
6827 "name": "Central Pacific Standard Time",
6828 "abbr": "CPST",
6829 "offset": 11,
6830 "isdst": false,
6831 "text": "(UTC+11:00) Solomon Is., New Caledonia",
6832 "utc": [
6833 "Antarctica/Macquarie",
6834 "Etc/GMT-11",
6835 "Pacific/Efate",
6836 "Pacific/Guadalcanal",
6837 "Pacific/Kosrae",
6838 "Pacific/Noumea",
6839 "Pacific/Ponape"
6840 ]
6841 },
6842 {
6843 "name": "Vladivostok Standard Time",
6844 "abbr": "VST",
6845 "offset": 11,
6846 "isdst": false,
6847 "text": "(UTC+11:00) Vladivostok",
6848 "utc": [
6849 "Asia/Sakhalin",
6850 "Asia/Ust-Nera",
6851 "Asia/Vladivostok"
6852 ]
6853 },
6854 {
6855 "name": "New Zealand Standard Time",
6856 "abbr": "NZST",
6857 "offset": 12,
6858 "isdst": false,
6859 "text": "(UTC+12:00) Auckland, Wellington",
6860 "utc": [
6861 "Antarctica/McMurdo",
6862 "Pacific/Auckland"
6863 ]
6864 },
6865 {
6866 "name": "UTC+12",
6867 "abbr": "U",
6868 "offset": 12,
6869 "isdst": false,
6870 "text": "(UTC+12:00) Coordinated Universal Time+12",
6871 "utc": [
6872 "Etc/GMT-12",
6873 "Pacific/Funafuti",
6874 "Pacific/Kwajalein",
6875 "Pacific/Majuro",
6876 "Pacific/Nauru",
6877 "Pacific/Tarawa",
6878 "Pacific/Wake",
6879 "Pacific/Wallis"
6880 ]
6881 },
6882 {
6883 "name": "Fiji Standard Time",
6884 "abbr": "FST",
6885 "offset": 12,
6886 "isdst": false,
6887 "text": "(UTC+12:00) Fiji",
6888 "utc": [
6889 "Pacific/Fiji"
6890 ]
6891 },
6892 {
6893 "name": "Magadan Standard Time",
6894 "abbr": "MST",
6895 "offset": 12,
6896 "isdst": false,
6897 "text": "(UTC+12:00) Magadan",
6898 "utc": [
6899 "Asia/Anadyr",
6900 "Asia/Kamchatka",
6901 "Asia/Magadan",
6902 "Asia/Srednekolymsk"
6903 ]
6904 },
6905 {
6906 "name": "Kamchatka Standard Time",
6907 "abbr": "KDT",
6908 "offset": 13,
6909 "isdst": true,
6910 "text": "(UTC+12:00) Petropavlovsk-Kamchatsky - Old",
6911 "utc": [
6912 "Asia/Kamchatka"
6913 ]
6914 },
6915 {
6916 "name": "Tonga Standard Time",
6917 "abbr": "TST",
6918 "offset": 13,
6919 "isdst": false,
6920 "text": "(UTC+13:00) Nuku'alofa",
6921 "utc": [
6922 "Etc/GMT-13",
6923 "Pacific/Enderbury",
6924 "Pacific/Fakaofo",
6925 "Pacific/Tongatapu"
6926 ]
6927 },
6928 {
6929 "name": "Samoa Standard Time",
6930 "abbr": "SST",
6931 "offset": 13,
6932 "isdst": false,
6933 "text": "(UTC+13:00) Samoa",
6934 "utc": [
6935 "Pacific/Apia"
6936 ]
6937 }
6938 ],
6939 //List source: http://answers.google.com/answers/threadview/id/589312.html
6940 profession: [
6941 "Airline Pilot",
6942 "Academic Team",
6943 "Accountant",
6944 "Account Executive",
6945 "Actor",
6946 "Actuary",
6947 "Acquisition Analyst",
6948 "Administrative Asst.",
6949 "Administrative Analyst",
6950 "Administrator",
6951 "Advertising Director",
6952 "Aerospace Engineer",
6953 "Agent",
6954 "Agricultural Inspector",
6955 "Agricultural Scientist",
6956 "Air Traffic Controller",
6957 "Animal Trainer",
6958 "Anthropologist",
6959 "Appraiser",
6960 "Architect",
6961 "Art Director",
6962 "Artist",
6963 "Astronomer",
6964 "Athletic Coach",
6965 "Auditor",
6966 "Author",
6967 "Baker",
6968 "Banker",
6969 "Bankruptcy Attorney",
6970 "Benefits Manager",
6971 "Biologist",
6972 "Bio-feedback Specialist",
6973 "Biomedical Engineer",
6974 "Biotechnical Researcher",
6975 "Broadcaster",
6976 "Broker",
6977 "Building Manager",
6978 "Building Contractor",
6979 "Building Inspector",
6980 "Business Analyst",
6981 "Business Planner",
6982 "Business Manager",
6983 "Buyer",
6984 "Call Center Manager",
6985 "Career Counselor",
6986 "Cash Manager",
6987 "Ceramic Engineer",
6988 "Chief Executive Officer",
6989 "Chief Operation Officer",
6990 "Chef",
6991 "Chemical Engineer",
6992 "Chemist",
6993 "Child Care Manager",
6994 "Chief Medical Officer",
6995 "Chiropractor",
6996 "Cinematographer",
6997 "City Housing Manager",
6998 "City Manager",
6999 "Civil Engineer",
7000 "Claims Manager",
7001 "Clinical Research Assistant",
7002 "Collections Manager",
7003 "Compliance Manager",
7004 "Comptroller",
7005 "Computer Manager",
7006 "Commercial Artist",
7007 "Communications Affairs Director",
7008 "Communications Director",
7009 "Communications Engineer",
7010 "Compensation Analyst",
7011 "Computer Programmer",
7012 "Computer Ops. Manager",
7013 "Computer Engineer",
7014 "Computer Operator",
7015 "Computer Graphics Specialist",
7016 "Construction Engineer",
7017 "Construction Manager",
7018 "Consultant",
7019 "Consumer Relations Manager",
7020 "Contract Administrator",
7021 "Copyright Attorney",
7022 "Copywriter",
7023 "Corporate Planner",
7024 "Corrections Officer",
7025 "Cosmetologist",
7026 "Credit Analyst",
7027 "Cruise Director",
7028 "Chief Information Officer",
7029 "Chief Technology Officer",
7030 "Customer Service Manager",
7031 "Cryptologist",
7032 "Dancer",
7033 "Data Security Manager",
7034 "Database Manager",
7035 "Day Care Instructor",
7036 "Dentist",
7037 "Designer",
7038 "Design Engineer",
7039 "Desktop Publisher",
7040 "Developer",
7041 "Development Officer",
7042 "Diamond Merchant",
7043 "Dietitian",
7044 "Direct Marketer",
7045 "Director",
7046 "Distribution Manager",
7047 "Diversity Manager",
7048 "Economist",
7049 "EEO Compliance Manager",
7050 "Editor",
7051 "Education Adminator",
7052 "Electrical Engineer",
7053 "Electro Optical Engineer",
7054 "Electronics Engineer",
7055 "Embassy Management",
7056 "Employment Agent",
7057 "Engineer Technician",
7058 "Entrepreneur",
7059 "Environmental Analyst",
7060 "Environmental Attorney",
7061 "Environmental Engineer",
7062 "Environmental Specialist",
7063 "Escrow Officer",
7064 "Estimator",
7065 "Executive Assistant",
7066 "Executive Director",
7067 "Executive Recruiter",
7068 "Facilities Manager",
7069 "Family Counselor",
7070 "Fashion Events Manager",
7071 "Fashion Merchandiser",
7072 "Fast Food Manager",
7073 "Film Producer",
7074 "Film Production Assistant",
7075 "Financial Analyst",
7076 "Financial Planner",
7077 "Financier",
7078 "Fine Artist",
7079 "Wildlife Specialist",
7080 "Fitness Consultant",
7081 "Flight Attendant",
7082 "Flight Engineer",
7083 "Floral Designer",
7084 "Food & Beverage Director",
7085 "Food Service Manager",
7086 "Forestry Technician",
7087 "Franchise Management",
7088 "Franchise Sales",
7089 "Fraud Investigator",
7090 "Freelance Writer",
7091 "Fund Raiser",
7092 "General Manager",
7093 "Geologist",
7094 "General Counsel",
7095 "Geriatric Specialist",
7096 "Gerontologist",
7097 "Glamour Photographer",
7098 "Golf Club Manager",
7099 "Gourmet Chef",
7100 "Graphic Designer",
7101 "Grounds Keeper",
7102 "Hazardous Waste Manager",
7103 "Health Care Manager",
7104 "Health Therapist",
7105 "Health Service Administrator",
7106 "Hearing Officer",
7107 "Home Economist",
7108 "Horticulturist",
7109 "Hospital Administrator",
7110 "Hotel Manager",
7111 "Human Resources Manager",
7112 "Importer",
7113 "Industrial Designer",
7114 "Industrial Engineer",
7115 "Information Director",
7116 "Inside Sales",
7117 "Insurance Adjuster",
7118 "Interior Decorator",
7119 "Internal Controls Director",
7120 "International Acct.",
7121 "International Courier",
7122 "International Lawyer",
7123 "Interpreter",
7124 "Investigator",
7125 "Investment Banker",
7126 "Investment Manager",
7127 "IT Architect",
7128 "IT Project Manager",
7129 "IT Systems Analyst",
7130 "Jeweler",
7131 "Joint Venture Manager",
7132 "Journalist",
7133 "Labor Negotiator",
7134 "Labor Organizer",
7135 "Labor Relations Manager",
7136 "Lab Services Director",
7137 "Lab Technician",
7138 "Land Developer",
7139 "Landscape Architect",
7140 "Law Enforcement Officer",
7141 "Lawyer",
7142 "Lead Software Engineer",
7143 "Lead Software Test Engineer",
7144 "Leasing Manager",
7145 "Legal Secretary",
7146 "Library Manager",
7147 "Litigation Attorney",
7148 "Loan Officer",
7149 "Lobbyist",
7150 "Logistics Manager",
7151 "Maintenance Manager",
7152 "Management Consultant",
7153 "Managed Care Director",
7154 "Managing Partner",
7155 "Manufacturing Director",
7156 "Manpower Planner",
7157 "Marine Biologist",
7158 "Market Res. Analyst",
7159 "Marketing Director",
7160 "Materials Manager",
7161 "Mathematician",
7162 "Membership Chairman",
7163 "Mechanic",
7164 "Mechanical Engineer",
7165 "Media Buyer",
7166 "Medical Investor",
7167 "Medical Secretary",
7168 "Medical Technician",
7169 "Mental Health Counselor",
7170 "Merchandiser",
7171 "Metallurgical Engineering",
7172 "Meteorologist",
7173 "Microbiologist",
7174 "MIS Manager",
7175 "Motion Picture Director",
7176 "Multimedia Director",
7177 "Musician",
7178 "Network Administrator",
7179 "Network Specialist",
7180 "Network Operator",
7181 "New Product Manager",
7182 "Novelist",
7183 "Nuclear Engineer",
7184 "Nuclear Specialist",
7185 "Nutritionist",
7186 "Nursing Administrator",
7187 "Occupational Therapist",
7188 "Oceanographer",
7189 "Office Manager",
7190 "Operations Manager",
7191 "Operations Research Director",
7192 "Optical Technician",
7193 "Optometrist",
7194 "Organizational Development Manager",
7195 "Outplacement Specialist",
7196 "Paralegal",
7197 "Park Ranger",
7198 "Patent Attorney",
7199 "Payroll Specialist",
7200 "Personnel Specialist",
7201 "Petroleum Engineer",
7202 "Pharmacist",
7203 "Photographer",
7204 "Physical Therapist",
7205 "Physician",
7206 "Physician Assistant",
7207 "Physicist",
7208 "Planning Director",
7209 "Podiatrist",
7210 "Political Analyst",
7211 "Political Scientist",
7212 "Politician",
7213 "Portfolio Manager",
7214 "Preschool Management",
7215 "Preschool Teacher",
7216 "Principal",
7217 "Private Banker",
7218 "Private Investigator",
7219 "Probation Officer",
7220 "Process Engineer",
7221 "Producer",
7222 "Product Manager",
7223 "Product Engineer",
7224 "Production Engineer",
7225 "Production Planner",
7226 "Professional Athlete",
7227 "Professional Coach",
7228 "Professor",
7229 "Project Engineer",
7230 "Project Manager",
7231 "Program Manager",
7232 "Property Manager",
7233 "Public Administrator",
7234 "Public Safety Director",
7235 "PR Specialist",
7236 "Publisher",
7237 "Purchasing Agent",
7238 "Publishing Director",
7239 "Quality Assurance Specialist",
7240 "Quality Control Engineer",
7241 "Quality Control Inspector",
7242 "Radiology Manager",
7243 "Railroad Engineer",
7244 "Real Estate Broker",
7245 "Recreational Director",
7246 "Recruiter",
7247 "Redevelopment Specialist",
7248 "Regulatory Affairs Manager",
7249 "Registered Nurse",
7250 "Rehabilitation Counselor",
7251 "Relocation Manager",
7252 "Reporter",
7253 "Research Specialist",
7254 "Restaurant Manager",
7255 "Retail Store Manager",
7256 "Risk Analyst",
7257 "Safety Engineer",
7258 "Sales Engineer",
7259 "Sales Trainer",
7260 "Sales Promotion Manager",
7261 "Sales Representative",
7262 "Sales Manager",
7263 "Service Manager",
7264 "Sanitation Engineer",
7265 "Scientific Programmer",
7266 "Scientific Writer",
7267 "Securities Analyst",
7268 "Security Consultant",
7269 "Security Director",
7270 "Seminar Presenter",
7271 "Ship's Officer",
7272 "Singer",
7273 "Social Director",
7274 "Social Program Planner",
7275 "Social Research",
7276 "Social Scientist",
7277 "Social Worker",
7278 "Sociologist",
7279 "Software Developer",
7280 "Software Engineer",
7281 "Software Test Engineer",
7282 "Soil Scientist",
7283 "Special Events Manager",
7284 "Special Education Teacher",
7285 "Special Projects Director",
7286 "Speech Pathologist",
7287 "Speech Writer",
7288 "Sports Event Manager",
7289 "Statistician",
7290 "Store Manager",
7291 "Strategic Alliance Director",
7292 "Strategic Planning Director",
7293 "Stress Reduction Specialist",
7294 "Stockbroker",
7295 "Surveyor",
7296 "Structural Engineer",
7297 "Superintendent",
7298 "Supply Chain Director",
7299 "System Engineer",
7300 "Systems Analyst",
7301 "Systems Programmer",
7302 "System Administrator",
7303 "Tax Specialist",
7304 "Teacher",
7305 "Technical Support Specialist",
7306 "Technical Illustrator",
7307 "Technical Writer",
7308 "Technology Director",
7309 "Telecom Analyst",
7310 "Telemarketer",
7311 "Theatrical Director",
7312 "Title Examiner",
7313 "Tour Escort",
7314 "Tour Guide Director",
7315 "Traffic Manager",
7316 "Trainer Translator",
7317 "Transportation Manager",
7318 "Travel Agent",
7319 "Treasurer",
7320 "TV Programmer",
7321 "Underwriter",
7322 "Union Representative",
7323 "University Administrator",
7324 "University Dean",
7325 "Urban Planner",
7326 "Veterinarian",
7327 "Vendor Relations Director",
7328 "Viticulturist",
7329 "Warehouse Manager"
7330 ],
7331 animals : {
7332 //list of ocean animals comes from https://owlcation.com/stem/list-of-ocean-animals
7333 "ocean" : ["Acantharea","Anemone","Angelfish King","Ahi Tuna","Albacore","American Oyster","Anchovy","Armored Snail","Arctic Char","Atlantic Bluefin Tuna","Atlantic Cod","Atlantic Goliath Grouper","Atlantic Trumpetfish","Atlantic Wolffish","Baleen Whale","Banded Butterflyfish","Banded Coral Shrimp","Banded Sea Krait","Barnacle","Barndoor Skate","Barracuda","Basking Shark","Bass","Beluga Whale","Bluebanded Goby","Bluehead Wrasse","Bluefish","Bluestreak Cleaner-Wrasse","Blue Marlin","Blue Shark","Blue Spiny Lobster","Blue Tang","Blue Whale","Broadclub Cuttlefish","Bull Shark","Chambered Nautilus","Chilean Basket Star","Chilean Jack Mackerel","Chinook Salmon","Christmas Tree Worm","Clam","Clown Anemonefish","Clown Triggerfish","Cod","Coelacanth","Cockscomb Cup Coral","Common Fangtooth","Conch","Cookiecutter Shark","Copepod","Coral","Corydoras","Cownose Ray","Crab","Crown-of-Thorns Starfish","Cushion Star","Cuttlefish","California Sea Otters","Dolphin","Dolphinfish","Dory","Devil Fish","Dugong","Dumbo Octopus","Dungeness Crab","Eccentric Sand Dollar","Edible Sea Cucumber","Eel","Elephant Seal","Elkhorn Coral","Emperor Shrimp","Estuarine Crocodile","Fathead Sculpin","Fiddler Crab","Fin Whale","Flameback","Flamingo Tongue Snail","Flashlight Fish","Flatback Turtle","Flatfish","Flying Fish","Flounder","Fluke","French Angelfish","Frilled Shark","Fugu (also called Pufferfish)","Gar","Geoduck","Giant Barrel Sponge","Giant Caribbean Sea Anemone","Giant Clam","Giant Isopod","Giant Kingfish","Giant Oarfish","Giant Pacific Octopus","Giant Pyrosome","Giant Sea Star","Giant Squid","Glowing Sucker Octopus","Giant Tube Worm","Goblin Shark","Goosefish","Great White Shark","Greenland Shark","Grey Atlantic Seal","Grouper","Grunion","Guineafowl Puffer","Haddock","Hake","Halibut","Hammerhead Shark","Hapuka","Harbor Porpoise","Harbor Seal","Hatchetfish","Hawaiian Monk Seal","Hawksbill Turtle","Hector's Dolphin","Hermit Crab","Herring","Hoki","Horn Shark","Horseshoe Crab","Humpback Anglerfish","Humpback Whale","Icefish","Imperator Angelfish","Irukandji Jellyfish","Isopod","Ivory Bush Coral","Japanese Spider Crab","Jellyfish","John Dory","Juan Fernandez Fur Seal","Killer Whale","Kiwa Hirsuta","Krill","Lagoon Triggerfish","Lamprey","Leafy Seadragon","Leopard Seal","Limpet","Ling","Lionfish","Lions Mane Jellyfish","Lobe Coral","Lobster","Loggerhead Turtle","Longnose Sawshark","Longsnout Seahorse","Lophelia Coral","Marrus Orthocanna","Manatee","Manta Ray","Marlin","Megamouth Shark","Mexican Lookdown","Mimic Octopus","Moon Jelly","Mollusk","Monkfish","Moray Eel","Mullet","Mussel","Megaladon","Napoleon Wrasse","Nassau Grouper","Narwhal","Nautilus","Needlefish","Northern Seahorse","North Atlantic Right Whale","Northern Red Snapper","Norway Lobster","Nudibranch","Nurse Shark","Oarfish","Ocean Sunfish","Oceanic Whitetip Shark","Octopus","Olive Sea Snake","Orange Roughy","Ostracod","Otter","Oyster","Pacific Angelshark","Pacific Blackdragon","Pacific Halibut","Pacific Sardine","Pacific Sea Nettle Jellyfish","Pacific White Sided Dolphin","Pantropical Spotted Dolphin","Patagonian Toothfish","Peacock Mantis Shrimp","Pelagic Thresher Shark","Penguin","Peruvian Anchoveta","Pilchard","Pink Salmon","Pinniped","Plankton","Porpoise","Polar Bear","Portuguese Man o' War","Pycnogonid Sea Spider","Quahog","Queen Angelfish","Queen Conch","Queen Parrotfish","Queensland Grouper","Ragfish","Ratfish","Rattail Fish","Ray","Red Drum","Red King Crab","Ringed Seal","Risso's Dolphin","Ross Seals","Sablefish","Salmon","Sand Dollar","Sandbar Shark","Sawfish","Sarcastic Fringehead","Scalloped Hammerhead Shark","Seahorse","Sea Cucumber","Sea Lion","Sea Urchin","Seal","Shark","Shortfin Mako Shark","Shovelnose Guitarfish","Shrimp","Silverside Fish","Skipjack Tuna","Slender Snipe Eel","Smalltooth Sawfish","Smelts","Sockeye Salmon","Southern Stingray","Sponge","Spotted Porcupinefish","Spotted Dolphin","Spotted Eagle Ray","Spotted Moray","Squid","Squidworm","Starfish","Stickleback","Stonefish","Stoplight Loosejaw","Sturgeon","Swordfish","Tan Bristlemouth","Tasseled Wobbegong","Terrible Claw Lobster","Threespot Damselfish","Tiger Prawn","Tiger Shark","Tilefish","Toadfish","Tropical Two-Wing Flyfish","Tuna","Umbrella Squid","Velvet Crab","Venus Flytrap Sea Anemone","Vigtorniella Worm","Viperfish","Vampire Squid","Vaquita","Wahoo","Walrus","West Indian Manatee","Whale","Whale Shark","Whiptail Gulper","White-Beaked Dolphin","White-Ring Garden Eel","White Shrimp","Wobbegong","Wrasse","Wreckfish","Xiphosura","Yellowtail Damselfish","Yelloweye Rockfish","Yellow Cup Black Coral","Yellow Tube Sponge","Yellowfin Tuna","Zebrashark","Zooplankton"],
7334 //list of desert, grassland, and forest animals comes from http://www.skyenimals.com/
7335 "desert" : ["Aardwolf","Addax","African Wild Ass","Ant","Antelope","Armadillo","Baboon","Badger","Bat","Bearded Dragon","Beetle","Bird","Black-footed Cat","Boa","Brown Bear","Bustard","Butterfly","Camel","Caracal","Caracara","Caterpillar","Centipede","Cheetah","Chipmunk","Chuckwalla","Climbing Mouse","Coati","Cobra","Cotton Rat","Cougar","Courser","Crane Fly","Crow","Dassie Rat","Dove","Dunnart","Eagle","Echidna","Elephant","Emu","Falcon","Fly","Fox","Frogmouth","Gecko","Geoffroy's Cat","Gerbil","Grasshopper","Guanaco","Gundi","Hamster","Hawk","Hedgehog","Hyena","Hyrax","Jackal","Kangaroo","Kangaroo Rat","Kestrel","Kowari","Kultarr","Leopard","Lion","Macaw","Meerkat","Mouse","Oryx","Ostrich","Owl","Pronghorn","Python","Rabbit","Raccoon","Rattlesnake","Rhinoceros","Sand Cat","Spectacled Bear","Spiny Mouse","Starling","Stick Bug","Tarantula","Tit","Toad","Tortoise","Tyrant Flycatcher","Viper","Vulture","Waxwing","Xerus","Zebra"],
7336 "grassland" : ["Aardvark","Aardwolf","Accentor","African Buffalo","African Wild Dog","Alpaca","Anaconda","Ant","Anteater","Antelope","Armadillo","Baboon","Badger","Bandicoot","Barbet","Bat","Bee","Bee-eater","Beetle","Bird","Bison","Black-footed Cat","Black-footed Ferret","Bluebird","Boa","Bowerbird","Brown Bear","Bush Dog","Bushshrike","Bustard","Butterfly","Buzzard","Caracal","Caracara","Cardinal","Caterpillar","Cheetah","Chipmunk","Civet","Climbing Mouse","Clouded Leopard","Coati","Cobra","Cockatoo","Cockroach","Common Genet","Cotton Rat","Cougar","Courser","Coyote","Crane","Crane Fly","Cricket","Crow","Culpeo","Death Adder","Deer","Deer Mouse","Dingo","Dinosaur","Dove","Drongo","Duck","Duiker","Dunnart","Eagle","Echidna","Elephant","Elk","Emu","Falcon","Finch","Flea","Fly","Flying Frog","Fox","Frog","Frogmouth","Garter Snake","Gazelle","Gecko","Geoffroy's Cat","Gerbil","Giant Tortoise","Giraffe","Grasshopper","Grison","Groundhog","Grouse","Guanaco","Guinea Pig","Hamster","Harrier","Hartebeest","Hawk","Hedgehog","Helmetshrike","Hippopotamus","Hornbill","Hyena","Hyrax","Impala","Jackal","Jaguar","Jaguarundi","Kangaroo","Kangaroo Rat","Kestrel","Kultarr","Ladybug","Leopard","Lion","Macaw","Meerkat","Mouse","Newt","Oryx","Ostrich","Owl","Pangolin","Pheasant","Prairie Dog","Pronghorn","Przewalski's Horse","Python","Quoll","Rabbit","Raven","Rhinoceros","Shelduck","Sloth Bear","Spectacled Bear","Squirrel","Starling","Stick Bug","Tamandua","Tasmanian Devil","Thornbill","Thrush","Toad","Tortoise"],
7337 "forest" : ["Agouti","Anaconda","Anoa","Ant","Anteater","Antelope","Armadillo","Asian Black Bear","Aye-aye","Babirusa","Baboon","Badger","Bandicoot","Banteng","Barbet","Basilisk","Bat","Bearded Dragon","Bee","Bee-eater","Beetle","Bettong","Binturong","Bird-of-paradise","Bongo","Bowerbird","Bulbul","Bush Dog","Bushbaby","Bushshrike","Butterfly","Buzzard","Caecilian","Cardinal","Cassowary","Caterpillar","Centipede","Chameleon","Chimpanzee","Cicada","Civet","Clouded Leopard","Coati","Cobra","Cockatoo","Cockroach","Colugo","Cotinga","Cotton Rat","Cougar","Crane Fly","Cricket","Crocodile","Crow","Cuckoo","Cuscus","Death Adder","Deer","Dhole","Dingo","Dinosaur","Drongo","Duck","Duiker","Eagle","Echidna","Elephant","Finch","Flat-headed Cat","Flea","Flowerpecker","Fly","Flying Frog","Fossa","Frog","Frogmouth","Gaur","Gecko","Gorilla","Grison","Hawaiian Honeycreeper","Hawk","Hedgehog","Helmetshrike","Hornbill","Hyrax","Iguana","Jackal","Jaguar","Jaguarundi","Kestrel","Ladybug","Lemur","Leopard","Lion","Macaw","Mandrill","Margay","Monkey","Mouse","Mouse Deer","Newt","Okapi","Old World Flycatcher","Orangutan","Owl","Pangolin","Peafowl","Pheasant","Possum","Python","Quokka","Rabbit","Raccoon","Red Panda","Red River Hog","Rhinoceros","Sloth Bear","Spectacled Bear","Squirrel","Starling","Stick Bug","Sun Bear","Tamandua","Tamarin","Tapir","Tarantula","Thrush","Tiger","Tit","Toad","Tortoise","Toucan","Trogon","Trumpeter","Turaco","Turtle","Tyrant Flycatcher","Viper","Vulture","Wallaby","Warbler","Wasp","Waxwing","Weaver","Weaver-finch","Whistler","White-eye","Whydah","Woodswallow","Worm","Wren","Xenops","Yellowjacket","Accentor","African Buffalo","American Black Bear","Anole","Bird","Bison","Boa","Brown Bear","Chipmunk","Common Genet","Copperhead","Coyote","Deer Mouse","Dormouse","Elk","Emu","Fisher","Fox","Garter Snake","Giant Panda","Giant Tortoise","Groundhog","Grouse","Guanaco","Himalayan Tahr","Kangaroo","Koala","Numbat","Quoll","Raccoon dog","Tasmanian Devil","Thornbill","Turkey","Vole","Weasel","Wildcat","Wolf","Wombat","Woodchuck","Woodpecker"],
7338 //list of farm animals comes from https://www.buzzle.com/articles/farm-animals-list.html
7339 "farm" : ["Alpaca","Buffalo","Banteng","Cow","Cat","Chicken","Carp","Camel","Donkey","Dog","Duck","Emu","Goat","Gayal","Guinea","Goose","Horse","Honey","Llama","Pig","Pigeon","Rhea","Rabbit","Sheep","Silkworm","Turkey","Yak","Zebu"],
7340 //list of pet animals comes from https://www.dogbreedinfo.com/pets/pet.htm
7341 "pet" : ["Bearded Dragon","Birds","Burro","Cats","Chameleons","Chickens","Chinchillas","Chinese Water Dragon","Cows","Dogs","Donkey","Ducks","Ferrets","Fish","Geckos","Geese","Gerbils","Goats","Guinea Fowl","Guinea Pigs","Hamsters","Hedgehogs","Horses","Iguanas","Llamas","Lizards","Mice","Mule","Peafowl","Pigs and Hogs","Pigeons","Ponies","Pot Bellied Pig","Rabbits","Rats","Sheep","Skinks","Snakes","Stick Insects","Sugar Gliders","Tarantula","Turkeys","Turtles"],
7342 //list of zoo animals comes from https://bronxzoo.com/animals
7343 "zoo" : ["Aardvark","African Wild Dog","Aldabra Tortoise","American Alligator","American Bison","Amur Tiger","Anaconda","Andean Condor","Asian Elephant","Baby Doll Sheep","Bald Eagle","Barred Owl","Blue Iguana","Boer Goat","California Sea Lion","Caribbean Flamingo","Chinchilla","Collared Lemur","Coquerel's Sifaka","Cuban Amazon Parrot","Ebony Langur","Fennec Fox","Fossa","Gelada","Giant Anteater","Giraffe","Gorilla","Grizzly Bear","Henkel's Leaf-tailed Gecko","Indian Gharial","Indian Rhinoceros","King Cobra","King Vulture","Komodo Dragon","Linne's Two-toed Sloth","Lion","Little Penguin","Madagascar Tree Boa","Magellanic Penguin","Malayan Tapir","Malayan Tiger","Matschies Tree Kangaroo","Mini Donkey","Monarch Butterfly","Nile crocodile","North American Porcupine","Nubian Ibex","Okapi","Poison Dart Frog","Polar Bear","Pygmy Marmoset","Radiated Tortoise","Red Panda","Red Ruffed Lemur","Ring-tailed Lemur","Ring-tailed Mongoose","Rock Hyrax","Small Clawed Asian Otter","Snow Leopard","Snowy Owl","Southern White-faced Owl","Southern White Rhinocerous","Squirrel Monkey","Tufted Puffin","White Cheeked Gibbon","White-throated Bee Eater","Zebra"]
7344 },
7345 primes: [
7346 // 1230 first primes, i.e. all primes up to the first one greater than 10000, inclusive.
7347 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999,5003,5009,5011,5021,5023,5039,5051,5059,5077,5081,5087,5099,5101,5107,5113,5119,5147,5153,5167,5171,5179,5189,5197,5209,5227,5231,5233,5237,5261,5273,5279,5281,5297,5303,5309,5323,5333,5347,5351,5381,5387,5393,5399,5407,5413,5417,5419,5431,5437,5441,5443,5449,5471,5477,5479,5483,5501,5503,5507,5519,5521,5527,5531,5557,5563,5569,5573,5581,5591,5623,5639,5641,5647,5651,5653,5657,5659,5669,5683,5689,5693,5701,5711,5717,5737,5741,5743,5749,5779,5783,5791,5801,5807,5813,5821,5827,5839,5843,5849,5851,5857,5861,5867,5869,5879,5881,5897,5903,5923,5927,5939,5953,5981,5987,6007,6011,6029,6037,6043,6047,6053,6067,6073,6079,6089,6091,6101,6113,6121,6131,6133,6143,6151,6163,6173,6197,6199,6203,6211,6217,6221,6229,6247,6257,6263,6269,6271,6277,6287,6299,6301,6311,6317,6323,6329,6337,6343,6353,6359,6361,6367,6373,6379,6389,6397,6421,6427,6449,6451,6469,6473,6481,6491,6521,6529,6547,6551,6553,6563,6569,6571,6577,6581,6599,6607,6619,6637,6653,6659,6661,6673,6679,6689,6691,6701,6703,6709,6719,6733,6737,6761,6763,6779,6781,6791,6793,6803,6823,6827,6829,6833,6841,6857,6863,6869,6871,6883,6899,6907,6911,6917,6947,6949,6959,6961,6967,6971,6977,6983,6991,6997,7001,7013,7019,7027,7039,7043,7057,7069,7079,7103,7109,7121,7127,7129,7151,7159,7177,7187,7193,7207,7211,7213,7219,7229,7237,7243,7247,7253,7283,7297,7307,7309,7321,7331,7333,7349,7351,7369,7393,7411,7417,7433,7451,7457,7459,7477,7481,7487,7489,7499,7507,7517,7523,7529,7537,7541,7547,7549,7559,7561,7573,7577,7583,7589,7591,7603,7607,7621,7639,7643,7649,7669,7673,7681,7687,7691,7699,7703,7717,7723,7727,7741,7753,7757,7759,7789,7793,7817,7823,7829,7841,7853,7867,7873,7877,7879,7883,7901,7907,7919,7927,7933,7937,7949,7951,7963,7993,8009,8011,8017,8039,8053,8059,8069,8081,8087,8089,8093,8101,8111,8117,8123,8147,8161,8167,8171,8179,8191,8209,8219,8221,8231,8233,8237,8243,8263,8269,8273,8287,8291,8293,8297,8311,8317,8329,8353,8363,8369,8377,8387,8389,8419,8423,8429,8431,8443,8447,8461,8467,8501,8513,8521,8527,8537,8539,8543,8563,8573,8581,8597,8599,8609,8623,8627,8629,8641,8647,8663,8669,8677,8681,8689,8693,8699,8707,8713,8719,8731,8737,8741,8747,8753,8761,8779,8783,8803,8807,8819,8821,8831,8837,8839,8849,8861,8863,8867,8887,8893,8923,8929,8933,8941,8951,8963,8969,8971,8999,9001,9007,9011,9013,9029,9041,9043,9049,9059,9067,9091,9103,9109,9127,9133,9137,9151,9157,9161,9173,9181,9187,9199,9203,9209,9221,9227,9239,9241,9257,9277,9281,9283,9293,9311,9319,9323,9337,9341,9343,9349,9371,9377,9391,9397,9403,9413,9419,9421,9431,9433,9437,9439,9461,9463,9467,9473,9479,9491,9497,9511,9521,9533,9539,9547,9551,9587,9601,9613,9619,9623,9629,9631,9643,9649,9661,9677,9679,9689,9697,9719,9721,9733,9739,9743,9749,9767,9769,9781,9787,9791,9803,9811,9817,9829,9833,9839,9851,9857,9859,9871,9883,9887,9901,9907,9923,9929,9931,9941,9949,9967,9973,10007
7348 ],
7349 emotions: [
7350 "love",
7351 "joy",
7352 "surprise",
7353 "anger",
7354 "sadness",
7355 "fear"
7356 ],
7357 music_genres: {
7358 'general': [
7359 'Rock',
7360 'Pop',
7361 'Hip-Hop',
7362 'Jazz',
7363 'Classical',
7364 'Electronic',
7365 'Country',
7366 'R&B',
7367 'Reggae',
7368 'Blues',
7369 'Metal',
7370 'Folk',
7371 'Alternative',
7372 'Punk',
7373 'Disco',
7374 'Funk',
7375 'Techno',
7376 'Indie',
7377 'Gospel',
7378 'Dance',
7379 'Children\'s',
7380 'World'
7381 ],
7382 'alternative': [
7383 'Art Punk',
7384 'Alternative Rock',
7385 'Britpunk',
7386 'College Rock',
7387 'Crossover Thrash',
7388 'Crust Punk',
7389 'Emo / Emocore',
7390 'Experimental Rock',
7391 'Folk Punk',
7392 'Goth / Gothic Rock',
7393 'Grunge',
7394 'Hardcore Punk',
7395 'Hard Rock',
7396 'Indie Rock',
7397 'Lo-fi',
7398 'Musique Concrète',
7399 'New Wave',
7400 'Progressive Rock',
7401 'Punk',
7402 'Shoegaze',
7403 'Steampunk',
7404 ], 'blues': [
7405 'Acoustic Blues',
7406 'African Blues',
7407 'Blues Rock',
7408 'Blues Shouter',
7409 'British Blues',
7410 'Canadian Blues',
7411 'Chicago Blues',
7412 'Classic Blues',
7413 'Classic Female Blues',
7414 'Contemporary Blues',
7415 'Country Blues',
7416 'Dark Blues',
7417 'Delta Blues',
7418 'Detroit Blues',
7419 'Doom Blues',
7420 'Electric Blues',
7421 'Folk Blues',
7422 'Gospel Blues',
7423 'Harmonica Blues',
7424 'Hill Country Blues',
7425 'Hokum Blues',
7426 'Jazz Blues',
7427 'Jump Blues',
7428 'Kansas City Blues',
7429 'Louisiana Blues',
7430 'Memphis Blues',
7431 'Modern Blues',
7432 'New Orlean Blues',
7433 'NY Blues',
7434 'Piano Blues',
7435 'Piedmont Blues',
7436 'Punk Blues',
7437 'Ragtime Blues',
7438 'Rhythm Blues',
7439 'Soul Blues',
7440 'St.Louis Blues',
7441 'Soul Blues',
7442 'Swamp Blues',
7443 'Texas Blues',
7444 'Urban Blues',
7445 'Vandeville',
7446 'West Coast Blues',
7447 ], 'children\'s': [
7448 'Lullabies',
7449 'Sing - Along',
7450 'Stories'
7451 ], 'classical': [
7452 'Avant-Garde',
7453 'Ballet',
7454 'Baroque',
7455 'Cantata',
7456 'Chamber Music',
7457 'String Quartet',
7458 'Chant',
7459 'Choral',
7460 'Classical Crossover',
7461 'Concerto',
7462 'Concerto Grosso',
7463 'Contemporary Classical',
7464 'Early Music',
7465 'Expressionist',
7466 'High Classical',
7467 'Impressionist',
7468 'Mass Requiem',
7469 'Medieval',
7470 'Minimalism',
7471 'Modern Composition',
7472 'Modern Classical',
7473 'Opera',
7474 'Oratorio',
7475 'Orchestral',
7476 'Organum',
7477 'Renaissance',
7478 'Romantic (early period)',
7479 'Romantic (later period)',
7480 'Sonata',
7481 'Symphonic',
7482 'Symphony',
7483 'Twelve-tone',
7484 'Wedding Music'
7485 ], 'country': [
7486 'Alternative Country',
7487 'Americana',
7488 'Australian Country',
7489 'Bakersfield Sound',
7490 'Bluegrass',
7491 'Blues Country',
7492 'Cajun Fiddle Tunes',
7493 'Christian Country',
7494 'Classic Country',
7495 'Close Harmony',
7496 'Contemporary Bluegrass',
7497 'Contemporary Country',
7498 'Country Gospel',
7499 'Country Pop',
7500 'Country Rap',
7501 'Country Rock',
7502 'Country Soul',
7503 'Cowboy / Western',
7504 'Cowpunk',
7505 'Dansband',
7506 'Honky Tonk',
7507 'Franco-Country',
7508 'Gulf and Western',
7509 'Hellbilly Music',
7510 'Honky Tonk',
7511 'Instrumental Country',
7512 'Lubbock Sound',
7513 'Nashville Sound',
7514 'Neotraditional Country',
7515 'Outlaw Country',
7516 'Progressive',
7517 'Psychobilly / Punkabilly',
7518 'Red Dirt',
7519 'Sertanejo',
7520 'Texas County',
7521 'Traditional Bluegrass',
7522 'Traditional Country',
7523 'Truck-Driving Country',
7524 'Urban Cowboy',
7525 'Western Swing'
7526 ], 'dance': [
7527 'Club / Club Dance',
7528 'Breakcore',
7529 'Breakbeat / Breakstep',
7530 'Chillstep',
7531 'Deep House',
7532 'Dubstep',
7533 'Dancehall',
7534 'Electro House',
7535 'Electroswing',
7536 'Exercise',
7537 'Future Garage',
7538 'Garage',
7539 'Glitch Hop',
7540 'Glitch Pop',
7541 'Grime',
7542 'Hardcore',
7543 'Hard Dance',
7544 'Hi-NRG / Eurodance',
7545 'Horrorcore',
7546 'House',
7547 'Jackin House',
7548 'Jungle / Drum n bass',
7549 'Liquid Dub',
7550 'Regstep',
7551 'Speedcore',
7552 'Techno',
7553 'Trance',
7554 'Trap'
7555 ], electronic: [
7556 '2-Step',
7557 '8bit',
7558 'Ambient',
7559 'Asian Underground',
7560 'Bassline',
7561 'Chillwave',
7562 'Chiptune',
7563 'Crunk',
7564 'Downtempo',
7565 'Drum & Bass',
7566 'Hard Step',
7567 'Electro',
7568 'Electro-swing',
7569 'Electroacoustic',
7570 'Electronica',
7571 'Electronic Rock',
7572 'Eurodance',
7573 'Hardstyle',
7574 'Hi-Nrg',
7575 'IDM/Experimental',
7576 'Industrial',
7577 'Trip Hop',
7578 'Vaporwave',
7579 'UK Garage',
7580 'House',
7581 'Dubstep',
7582 'Deep House',
7583 'EDM',
7584 'Future Bass',
7585 'Psychedelic trance'
7586 ], 'jazz' : [
7587 'Acid Jazz',
7588 'Afro-Cuban Jazz',
7589 'Avant-Garde Jazz',
7590 'Bebop',
7591 'Big Band',
7592 'Blue Note',
7593 'British Dance Band (Jazz)',
7594 'Cape Jazz',
7595 'Chamber Jazz',
7596 'Contemporary Jazz',
7597 'Continental Jazz',
7598 'Cool Jazz',
7599 'Crossover Jazz',
7600 'Dark Jazz',
7601 'Dixieland',
7602 'Early Jazz',
7603 'Electro Swing (Jazz)',
7604 'Ethio-jazz',
7605 'Ethno-Jazz',
7606 'European Free Jazz',
7607 'Free Funk (Avant-Garde / Funk Jazz)',
7608 'Free Jazz',
7609 'Fusion',
7610 'Gypsy Jazz',
7611 'Hard Bop',
7612 'Indo Jazz',
7613 'Jazz Blues',
7614 'Jazz-Funk (see Free Funk)',
7615 'Jazz-Fusion',
7616 'Jazz Rap',
7617 'Jazz Rock',
7618 'Kansas City Jazz',
7619 'Latin Jazz',
7620 'M-Base Jazz',
7621 'Mainstream Jazz',
7622 'Modal Jazz',
7623 'Neo-Bop',
7624 'Neo-Swing',
7625 'Nu Jazz',
7626 'Orchestral Jazz',
7627 'Post-Bop',
7628 'Punk Jazz',
7629 'Ragtime',
7630 'Ska Jazz',
7631 'Skiffle (also Folk)',
7632 'Smooth Jazz',
7633 'Soul Jazz',
7634 'Swing Jazz',
7635 'Straight-Ahead Jazz',
7636 'Trad Jazz',
7637 'Third Stream',
7638 'Jazz-Funk',
7639 'Free Jazz',
7640 'West Coast Jazz'
7641 ], 'metal': [
7642 'Heavy Metal',
7643 'Speed Metal',
7644 'Thrash Metal',
7645 'Power Metal',
7646 'Death Metal',
7647 'Black Metal',
7648 'Pagan Metal',
7649 'Viking Metal',
7650 'Folk Metal',
7651 'Symphonic Metal',
7652 'Gothic Metal',
7653 'Glam Metal',
7654 'Hair Metal',
7655 'Doom Metal',
7656 'Groove Metal',
7657 'Industrial Metal',
7658 'Modern Metal',
7659 'Neoclassical Metal',
7660 'New Wave Of British Heavy Metal',
7661 'Post Metal',
7662 'Progressive Metal',
7663 'Avantgarde Metal',
7664 'Sludge',
7665 'Djent',
7666 'Drone',
7667 'Kawaii Metal',
7668 'Pirate Metal',
7669 'Nu Metal',
7670 'Neue Deutsche Härte',
7671 'Math Metal',
7672 'Crossover',
7673 'Grindcore',
7674 'Hardcore',
7675 'Metalcore',
7676 'Deathcore',
7677 'Post Hardcore',
7678 'Mathcore'
7679 ], 'folk': [
7680 'American Folk Revival',
7681 'Anti - Folk',
7682 'British Folk Revival',
7683 'Contemporary Folk',
7684 'Filk Music',
7685 'Freak Folk',
7686 'Indie Folk',
7687 'Industrial Folk',
7688 'Neofolk',
7689 'Progressive Folk',
7690 'Psychedelic Folk',
7691 'Sung Poetry',
7692 'Techno - Folk',
7693 'Folk Rock',
7694 'Old-time Music',
7695 'Bluegrass',
7696 'Appalachian',
7697 'Roots Revival',
7698 'Celtic',
7699 'Indie Folk'
7700 ], 'pop': [
7701 'Adult Contemporary',
7702 'Arab Pop',
7703 'Baroque',
7704 'Britpop',
7705 'Bubblegum Pop',
7706 'Chamber Pop',
7707 'Chanson',
7708 'Christian Pop',
7709 'Classical Crossover',
7710 'Europop',
7711 'Austropop',
7712 'Balkan Pop',
7713 'French Pop',
7714 'Korean Pop',
7715 'Japanese Pop',
7716 'Chinese Pop',
7717 'Latin Pop',
7718 'Laïkó',
7719 'Nederpop',
7720 'Russian Pop',
7721 'Dance Pop',
7722 'Dream Pop',
7723 'Electro Pop',
7724 'Iranian Pop',
7725 'Jangle Pop',
7726 'Latin Ballad',
7727 'Levenslied',
7728 'Louisiana Swamp Pop',
7729 'Mexican Pop',
7730 'Motorpop',
7731 'New Romanticism',
7732 'Orchestral Pop',
7733 'Pop Rap',
7734 'Popera',
7735 'Pop / Rock',
7736 'Pop Punk',
7737 'Power Pop',
7738 'Psychedelic Pop',
7739 'Russian Pop',
7740 'Schlager',
7741 'Soft Rock',
7742 'Sophisti - Pop',
7743 'Space Age Pop',
7744 'Sunshine Pop',
7745 'Surf Pop',
7746 'Synthpop',
7747 'Teen Pop',
7748 'Traditional Pop Music',
7749 'Turkish Pop',
7750 'Vispop',
7751 'Wonky Pop'
7752 ], 'r&b': [
7753 '(Carolina) Beach Music',
7754 'Contemporary R & B',
7755 'Disco',
7756 'Doo Wop',
7757 'Funk',
7758 'Modern Soul',
7759 'Motown',
7760 'Neo - Soul',
7761 'Northern Soul',
7762 'Psychedelic Soul',
7763 'Quiet Storm',
7764 'Soul',
7765 'Soul Blues',
7766 'Southern Soul'
7767 ], 'reggae': [
7768 '2 - Tone',
7769 'Dub',
7770 'Roots Reggae',
7771 'Reggae Fusion',
7772 'Reggae en Español',
7773 'Spanish Reggae',
7774 'Reggae 110',
7775 'Reggae Bultrón',
7776 'Romantic Flow',
7777 'Lovers Rock',
7778 'Raggamuffin',
7779 'Ragga',
7780 'Dancehall',
7781 'Ska',
7782 ], 'rock': [
7783 'Acid Rock',
7784 'Adult - Oriented Rock',
7785 'Afro Punk',
7786 'Adult Alternative',
7787 'Alternative Rock',
7788 'American Traditional Rock',
7789 'Anatolian Rock',
7790 'Arena Rock',
7791 'Art Rock',
7792 'Blues - Rock',
7793 'British Invasion',
7794 'Cock Rock',
7795 'Death Metal / Black Metal',
7796 'Doom Metal',
7797 'Glam Rock',
7798 'Gothic Metal',
7799 'Grind Core',
7800 'Hair Metal',
7801 'Hard Rock',
7802 'Math Metal',
7803 'Math Rock',
7804 'Metal',
7805 'Metal Core',
7806 'Noise Rock',
7807 'Jam Bands',
7808 'Post Punk',
7809 'Post Rock',
7810 'Prog - Rock / Art Rock',
7811 'Progressive Metal',
7812 'Psychedelic',
7813 'Rock & Roll',
7814 'Rockabilly',
7815 'Roots Rock',
7816 'Singer / Songwriter',
7817 'Southern Rock',
7818 'Spazzcore',
7819 'Stoner Metal',
7820 'Surf',
7821 'Technical Death Metal',
7822 'Tex - Mex',
7823 'Thrash Metal',
7824 'Time Lord Rock(Trock)',
7825 'Trip - hop',
7826 'Yacht Rock',
7827 'School House Rock'
7828 ], 'hip-hop': [
7829 'Alternative Rap',
7830 'Avant - Garde',
7831 'Bounce',
7832 'Chap Hop',
7833 'Christian Hip Hop',
7834 'Conscious Hip Hop',
7835 'Country - Rap',
7836 'Grunk',
7837 'Crunkcore',
7838 'Cumbia Rap',
7839 'Dirty South',
7840 'East Coast',
7841 'Brick City Club',
7842 'Hardcore Hip Hop',
7843 'Mafioso Rap',
7844 'New Jersey Hip Hop',
7845 'Freestyle Rap',
7846 'G - Funk',
7847 'Gangsta Rap',
7848 'Golden Age',
7849 'Grime',
7850 'Hardcore Rap',
7851 'Hip - Hop',
7852 'Hip Pop',
7853 'Horrorcore',
7854 'Hyphy',
7855 'Industrial Hip Hop',
7856 'Instrumental Hip Hop',
7857 'Jazz Rap',
7858 'Latin Rap',
7859 'Low Bap',
7860 'Lyrical Hip Hop',
7861 'Merenrap',
7862 'Midwest Hip Hop',
7863 'Chicago Hip Hop',
7864 'Detroit Hip Hop',
7865 'Horrorcore',
7866 'St.Louis Hip Hop',
7867 'Twin Cities Hip Hop',
7868 'Motswako',
7869 'Nerdcore',
7870 'New Jack Swing',
7871 'New School Hip Hop',
7872 'Old School Rap',
7873 'Rap',
7874 'Trap',
7875 'Turntablism',
7876 'Underground Rap',
7877 'West Coast Rap',
7878 'East Coast Rap',
7879 'Trap',
7880 'UK Grime',
7881 'Hyphy',
7882 'Emo-rap',
7883 'Cloud rap',
7884 'G-funk',
7885 'Boom Bap',
7886 'Mumble',
7887 'Drill',
7888 'UK Drill',
7889 'Soundcloud Rap',
7890 'Lo-fi'
7891 ], 'punk': [
7892 'Afro-punk',
7893 'Anarcho punk',
7894 'Art punk',
7895 'Christian punk',
7896 'Crust punk',
7897 'Deathrock',
7898 'Egg punk',
7899 'Garage punk',
7900 'Glam punk',
7901 'Hardcore punk',
7902 'Horror punk',
7903 'Incelcore/e-punk',
7904 'Oi!',
7905 'Peace punk',
7906 'Punk pathetique',
7907 'Queercore',
7908 'Riot Grrrl',
7909 'Skate punk',
7910 'Street punk',
7911 'Taqwacore',
7912 'Trallpunk'
7913 ], 'disco': [
7914 'Nu-disco',
7915 'Disco-funk',
7916 'Hi-NRG',
7917 'Italo Disco',
7918 'Eurodisco',
7919 'Boogie',
7920 'Space Disco',
7921 'Post-disco',
7922 'Electro Disco',
7923 'Disco House',
7924 'Disco Pop',
7925 'Soulful House'
7926 ], 'funk': [
7927 'Funk Rock',
7928 'P-Funk (Parliament-Funkadelic)',
7929 'Psychedelic Funk',
7930 'Funk Metal',
7931 'Electro-Funk',
7932 'Go-go',
7933 'Boogie-Funk',
7934 'Jazz-Funk',
7935 'Soul-Funk',
7936 'Funky Disco',
7937 'Nu-Funk',
7938 'Afrobeat',
7939 'Latin Funk',
7940 'G-Funk',
7941 'Acid Jazz',
7942 'Funktronica',
7943 'Folk-Funk',
7944 'Space Funk',
7945 'Ambient Funk',
7946 'Hard Funk',
7947 'Fusion Funk'
7948 ], 'techno': [
7949 'Acid Techno',
7950 'Ambient Techno',
7951 'Detroit Techno',
7952 'Dub Techno',
7953 'Minimal Techno',
7954 'Industrial Techno',
7955 'Hard Techno',
7956 'Trance',
7957 'Progressive Techno',
7958 'Tech House',
7959 'Electronica',
7960 'Breakbeat Techno',
7961 'Electro Techno',
7962 'Melodic Techno',
7963 'Experimental Techno',
7964 'Dark Techno',
7965 'Ebm',
7966 'Hypnotic Techno',
7967 'Psychedelic Techno',
7968 'Rave Techno',
7969 'Techno-Pop'
7970 ], 'indie': [
7971 'Indie Rock',
7972 'Indie Pop',
7973 'Indie Folk',
7974 'Indie Electronic',
7975 'Indie Punk',
7976 'Indie Hip-Hop',
7977 'Dream Pop',
7978 'Shoegaze',
7979 'Lo-fi',
7980 'Chillwave',
7981 'Freak Folk',
7982 'Noise Pop',
7983 'Math Rock',
7984 'Post-Punk',
7985 'Garage Rock',
7986 'Experimental Indie',
7987 'Surf Rock',
7988 'Alternative Country',
7989 'Indie Soul',
7990 'Art Rock',
7991 'Indie R&B',
7992 'Indietronica',
7993 'Emo',
7994 'Post-Rock',
7995 'Indie Pop-Rock',
7996 'Indie Synthpop',
7997 'Noise Rock',
7998 'Psych Folk',
7999 'Indie Blues'
8000 ], 'gospel': [
8001 'Traditional Gospel',
8002 'Contemporary Gospel',
8003 'Southern Gospel',
8004 'Black Gospel',
8005 'Urban Contemporary Gospel',
8006 'Gospel Blues',
8007 'Bluegrass Gospel',
8008 'Country Gospel',
8009 'Praise and Worship',
8010 'Christian Hip-Hop',
8011 'Gospel Jazz',
8012 'Reggae Gospel',
8013 'African Gospel',
8014 'Latin Gospel',
8015 'R&B Gospel',
8016 'Gospel Choir',
8017 'Acappella Gospel',
8018 'Instrumental Gospel',
8019 'Gospel Rap'
8020 ], 'world': [
8021 'African',
8022 'Arabic',
8023 'Asian',
8024 'Caribbean',
8025 'Celtic',
8026 'European',
8027 'Latin American',
8028 'Middle Eastern',
8029 'Native American',
8030 'Polynesian',
8031 'Reggae',
8032 'Ska',
8033 'Salsa',
8034 'Flamenco',
8035 'Bossa Nova',
8036 'Tango',
8037 'Fado',
8038 'Klezmer',
8039 'Balkan',
8040 'Afrobeat',
8041 'Mongolian Throat Singing',
8042 'Indian Classical',
8043 'Gamelan',
8044 'Sufi Music',
8045 'Zydeco',
8046 'Kora Music',
8047 'Andean Music',
8048 'Irish Traditional',
8049 'Gypsy Jazz',
8050 'Bollywood',
8051 'Bhangra',
8052 'Jawaiian',
8053 'Hawaiian Slack Key Guitar',
8054 'Calypso',
8055 'Cuban Son',
8056 'Taiko Drumming',
8057 'African Highlife',
8058 'Merengue',
8059 'Tuvan Throat Singing'
8060 ]
8061 },
8062
8063 // Data sourced from https://unicode.org/emoji/charts/full-emoji-list.html
8064 emojis: {
8065 "smileys_and_emotion": [
8066 "0x1f600",
8067 "0x1f603",
8068 "0x1f604",
8069 "0x1f601",
8070 "0x1f606",
8071 "0x1f605",
8072 "0x1f923",
8073 "0x1f602",
8074 "0x1f642",
8075 "0x1f643",
8076 "0x1fae0",
8077 "0x1f609",
8078 "0x1f60a",
8079 "0x1f607",
8080 "0x1f970",
8081 "0x1f60d",
8082 "0x1f929",
8083 "0x1f618",
8084 "0x1f617",
8085 "0x263a",
8086 "0x1f61a",
8087 "0x1f619",
8088 "0x1f972",
8089 "0x1f60b",
8090 "0x1f61b",
8091 "0x1f61c",
8092 "0x1f92a",
8093 "0x1f61d",
8094 "0x1f911",
8095 "0x1f917",
8096 "0x1f92d",
8097 "0x1fae2",
8098 "0x1fae3",
8099 "0x1f92b",
8100 "0x1f914",
8101 "0x1fae1",
8102 "0x1f910",
8103 "0x1f928",
8104 "0x1f610",
8105 "0x1f611",
8106 "0x1f636",
8107 "0x1fae5",
8108 "0x1f636",
8109 "0x200d",
8110 "0x1f32b",
8111 "0xfe0f",
8112 "0x1f60f",
8113 "0x1f612",
8114 "0x1f644",
8115 "0x1f62c",
8116 "0x1f62e",
8117 "0x200d",
8118 "0x1f4a8",
8119 "0x1f925",
8120 "0x1fae8",
8121 "0x1f642",
8122 "0x200d",
8123 "0x2194",
8124 "0xfe0f",
8125 "0x1f642",
8126 "0x200d",
8127 "0x2195",
8128 "0xfe0f",
8129 "0x1f60c",
8130 "0x1f614",
8131 "0x1f62a",
8132 "0x1f924",
8133 "0x1f634",
8134 "0x1f637",
8135 "0x1f912",
8136 "0x1f915",
8137 "0x1f922",
8138 "0x1f92e",
8139 "0x1f927",
8140 "0x1f975",
8141 "0x1f976",
8142 "0x1f974",
8143 "0x1f635",
8144 "0x1f635",
8145 "0x200d",
8146 "0x1f4ab",
8147 "0x1f92f",
8148 "0x1f920",
8149 "0x1f973",
8150 "0x1f978",
8151 "0x1f60e",
8152 "0x1f913",
8153 "0x1f9d0",
8154 "0x1f615",
8155 "0x1fae4",
8156 "0x1f61f",
8157 "0x1f641",
8158 "0x2639",
8159 "0x1f62e",
8160 "0x1f62f",
8161 "0x1f632",
8162 "0x1f633",
8163 "0x1f97a",
8164 "0x1f979",
8165 "0x1f626",
8166 "0x1f627",
8167 "0x1f628",
8168 "0x1f630",
8169 "0x1f625",
8170 "0x1f622",
8171 "0x1f62d",
8172 "0x1f631",
8173 "0x1f616",
8174 "0x1f623",
8175 "0x1f61e",
8176 "0x1f613",
8177 "0x1f629",
8178 "0x1f62b",
8179 "0x1f971",
8180 "0x1f624",
8181 "0x1f621",
8182 "0x1f620",
8183 "0x1f92c",
8184 "0x1f608",
8185 "0x1f47f",
8186 "0x1f480",
8187 "0x2620",
8188 "0x1f4a9",
8189 "0x1f921",
8190 "0x1f479",
8191 "0x1f47a",
8192 "0x1f47b",
8193 "0x1f47d",
8194 "0x1f47e",
8195 "0x1f916",
8196 "0x1f63a",
8197 "0x1f638",
8198 "0x1f639",
8199 "0x1f63b",
8200 "0x1f63c",
8201 "0x1f63d",
8202 "0x1f640",
8203 "0x1f63f",
8204 "0x1f63e",
8205 "0x1f648",
8206 "0x1f649",
8207 "0x1f64a",
8208 "0x1f48c",
8209 "0x1f498",
8210 "0x1f49d",
8211 "0x1f496",
8212 "0x1f497",
8213 "0x1f493",
8214 "0x1f49e",
8215 "0x1f495",
8216 "0x1f49f",
8217 "0x2763",
8218 "0x1f494",
8219 "0x2764",
8220 "0xfe0f",
8221 "0x200d",
8222 "0x1f525",
8223 "0x2764",
8224 "0xfe0f",
8225 "0x200d",
8226 "0x1fa79",
8227 "0x2764",
8228 "0x1fa77",
8229 "0x1f9e1",
8230 "0x1f49b",
8231 "0x1f49a",
8232 "0x1f499",
8233 "0x1fa75",
8234 "0x1f49c",
8235 "0x1f90e",
8236 "0x1f5a4",
8237 "0x1fa76",
8238 "0x1f90d",
8239 "0x1f48b",
8240 "0x1f4af",
8241 "0x1f4a2",
8242 "0x1f4a5",
8243 "0x1f4ab",
8244 "0x1f4a6",
8245 "0x1f4a8",
8246 "0x1f573",
8247 "0x1f4ac",
8248 "0x1f441",
8249 "0xfe0f",
8250 "0x200d",
8251 "0x1f5e8",
8252 "0xfe0f",
8253 "0x1f5e8",
8254 "0x1f5ef",
8255 "0x1f4ad",
8256 "0x1f4a4"
8257 ],
8258 "people_and_body": [
8259 "0x1f44b",
8260 "0x1f91a",
8261 "0x1f590",
8262 "0x270b",
8263 "0x1f596",
8264 "0x1faf1",
8265 "0x1faf2",
8266 "0x1faf3",
8267 "0x1faf4",
8268 "0x1faf7",
8269 "0x1faf8",
8270 "0x1f44c",
8271 "0x1f90c",
8272 "0x1f90f",
8273 "0x270c",
8274 "0x1f91e",
8275 "0x1faf0",
8276 "0x1f91f",
8277 "0x1f918",
8278 "0x1f919",
8279 "0x1f448",
8280 "0x1f449",
8281 "0x1f446",
8282 "0x1f595",
8283 "0x1f447",
8284 "0x261d",
8285 "0x1faf5",
8286 "0x1f44d",
8287 "0x1f44e",
8288 "0x270a",
8289 "0x1f44a",
8290 "0x1f91b",
8291 "0x1f91c",
8292 "0x1f44f",
8293 "0x1f64c",
8294 "0x1faf6",
8295 "0x1f450",
8296 "0x1f932",
8297 "0x1f91d",
8298 "0x1f64f",
8299 "0x270d",
8300 "0x1f485",
8301 "0x1f933",
8302 "0x1f4aa",
8303 "0x1f9be",
8304 "0x1f9bf",
8305 "0x1f9b5",
8306 "0x1f9b6",
8307 "0x1f442",
8308 "0x1f9bb",
8309 "0x1f443",
8310 "0x1f9e0",
8311 "0x1fac0",
8312 "0x1fac1",
8313 "0x1f9b7",
8314 "0x1f9b4",
8315 "0x1f440",
8316 "0x1f441",
8317 "0x1f445",
8318 "0x1f444",
8319 "0x1fae6",
8320 "0x1f476",
8321 "0x1f9d2",
8322 "0x1f466",
8323 "0x1f467",
8324 "0x1f9d1",
8325 "0x1f471",
8326 "0x1f468",
8327 "0x1f9d4",
8328 "0x1f9d4",
8329 "0x200d",
8330 "0x2642",
8331 "0xfe0f",
8332 "0x1f9d4",
8333 "0x200d",
8334 "0x2640",
8335 "0xfe0f",
8336 "0x1f468",
8337 "0x200d",
8338 "0x1f9b0",
8339 "0x1f468",
8340 "0x200d",
8341 "0x1f9b1",
8342 "0x1f468",
8343 "0x200d",
8344 "0x1f9b3",
8345 "0x1f468",
8346 "0x200d",
8347 "0x1f9b2",
8348 "0x1f469",
8349 "0x1f469",
8350 "0x200d",
8351 "0x1f9b0",
8352 "0x1f9d1",
8353 "0x200d",
8354 "0x1f9b0",
8355 "0x1f469",
8356 "0x200d",
8357 "0x1f9b1",
8358 "0x1f9d1",
8359 "0x200d",
8360 "0x1f9b1",
8361 "0x1f469",
8362 "0x200d",
8363 "0x1f9b3",
8364 "0x1f9d1",
8365 "0x200d",
8366 "0x1f9b3",
8367 "0x1f469",
8368 "0x200d",
8369 "0x1f9b2",
8370 "0x1f9d1",
8371 "0x200d",
8372 "0x1f9b2",
8373 "0x1f471",
8374 "0x200d",
8375 "0x2640",
8376 "0xfe0f",
8377 "0x1f471",
8378 "0x200d",
8379 "0x2642",
8380 "0xfe0f",
8381 "0x1f9d3",
8382 "0x1f474",
8383 "0x1f475",
8384 "0x1f64d",
8385 "0x1f64d",
8386 "0x200d",
8387 "0x2642",
8388 "0xfe0f",
8389 "0x1f64d",
8390 "0x200d",
8391 "0x2640",
8392 "0xfe0f",
8393 "0x1f64e",
8394 "0x1f64e",
8395 "0x200d",
8396 "0x2642",
8397 "0xfe0f",
8398 "0x1f64e",
8399 "0x200d",
8400 "0x2640",
8401 "0xfe0f",
8402 "0x1f645",
8403 "0x1f645",
8404 "0x200d",
8405 "0x2642",
8406 "0xfe0f",
8407 "0x1f645",
8408 "0x200d",
8409 "0x2640",
8410 "0xfe0f",
8411 "0x1f646",
8412 "0x1f646",
8413 "0x200d",
8414 "0x2642",
8415 "0xfe0f",
8416 "0x1f646",
8417 "0x200d",
8418 "0x2640",
8419 "0xfe0f",
8420 "0x1f481",
8421 "0x1f481",
8422 "0x200d",
8423 "0x2642",
8424 "0xfe0f",
8425 "0x1f481",
8426 "0x200d",
8427 "0x2640",
8428 "0xfe0f",
8429 "0x1f64b",
8430 "0x1f64b",
8431 "0x200d",
8432 "0x2642",
8433 "0xfe0f",
8434 "0x1f64b",
8435 "0x200d",
8436 "0x2640",
8437 "0xfe0f",
8438 "0x1f9cf",
8439 "0x1f9cf",
8440 "0x200d",
8441 "0x2642",
8442 "0xfe0f",
8443 "0x1f9cf",
8444 "0x200d",
8445 "0x2640",
8446 "0xfe0f",
8447 "0x1f647",
8448 "0x1f647",
8449 "0x200d",
8450 "0x2642",
8451 "0xfe0f",
8452 "0x1f647",
8453 "0x200d",
8454 "0x2640",
8455 "0xfe0f",
8456 "0x1f926",
8457 "0x1f926",
8458 "0x200d",
8459 "0x2642",
8460 "0xfe0f",
8461 "0x1f926",
8462 "0x200d",
8463 "0x2640",
8464 "0xfe0f",
8465 "0x1f937",
8466 "0x1f937",
8467 "0x200d",
8468 "0x2642",
8469 "0xfe0f",
8470 "0x1f937",
8471 "0x200d",
8472 "0x2640",
8473 "0xfe0f",
8474 "0x1f9d1",
8475 "0x200d",
8476 "0x2695",
8477 "0xfe0f",
8478 "0x1f468",
8479 "0x200d",
8480 "0x2695",
8481 "0xfe0f",
8482 "0x1f469",
8483 "0x200d",
8484 "0x2695",
8485 "0xfe0f",
8486 "0x1f9d1",
8487 "0x200d",
8488 "0x1f393",
8489 "0x1f468",
8490 "0x200d",
8491 "0x1f393",
8492 "0x1f469",
8493 "0x200d",
8494 "0x1f393",
8495 "0x1f9d1",
8496 "0x200d",
8497 "0x1f3eb",
8498 "0x1f468",
8499 "0x200d",
8500 "0x1f3eb",
8501 "0x1f469",
8502 "0x200d",
8503 "0x1f3eb",
8504 "0x1f9d1",
8505 "0x200d",
8506 "0x2696",
8507 "0xfe0f",
8508 "0x1f468",
8509 "0x200d",
8510 "0x2696",
8511 "0xfe0f",
8512 "0x1f469",
8513 "0x200d",
8514 "0x2696",
8515 "0xfe0f",
8516 "0x1f9d1",
8517 "0x200d",
8518 "0x1f33e",
8519 "0x1f468",
8520 "0x200d",
8521 "0x1f33e",
8522 "0x1f469",
8523 "0x200d",
8524 "0x1f33e",
8525 "0x1f9d1",
8526 "0x200d",
8527 "0x1f373",
8528 "0x1f468",
8529 "0x200d",
8530 "0x1f373",
8531 "0x1f469",
8532 "0x200d",
8533 "0x1f373",
8534 "0x1f9d1",
8535 "0x200d",
8536 "0x1f527",
8537 "0x1f468",
8538 "0x200d",
8539 "0x1f527",
8540 "0x1f469",
8541 "0x200d",
8542 "0x1f527",
8543 "0x1f9d1",
8544 "0x200d",
8545 "0x1f3ed",
8546 "0x1f468",
8547 "0x200d",
8548 "0x1f3ed",
8549 "0x1f469",
8550 "0x200d",
8551 "0x1f3ed",
8552 "0x1f9d1",
8553 "0x200d",
8554 "0x1f4bc",
8555 "0x1f468",
8556 "0x200d",
8557 "0x1f4bc",
8558 "0x1f469",
8559 "0x200d",
8560 "0x1f4bc",
8561 "0x1f9d1",
8562 "0x200d",
8563 "0x1f52c",
8564 "0x1f468",
8565 "0x200d",
8566 "0x1f52c",
8567 "0x1f469",
8568 "0x200d",
8569 "0x1f52c",
8570 "0x1f9d1",
8571 "0x200d",
8572 "0x1f4bb",
8573 "0x1f468",
8574 "0x200d",
8575 "0x1f4bb",
8576 "0x1f469",
8577 "0x200d",
8578 "0x1f4bb",
8579 "0x1f9d1",
8580 "0x200d",
8581 "0x1f3a4",
8582 "0x1f468",
8583 "0x200d",
8584 "0x1f3a4",
8585 "0x1f469",
8586 "0x200d",
8587 "0x1f3a4",
8588 "0x1f9d1",
8589 "0x200d",
8590 "0x1f3a8",
8591 "0x1f468",
8592 "0x200d",
8593 "0x1f3a8",
8594 "0x1f469",
8595 "0x200d",
8596 "0x1f3a8",
8597 "0x1f9d1",
8598 "0x200d",
8599 "0x2708",
8600 "0xfe0f",
8601 "0x1f468",
8602 "0x200d",
8603 "0x2708",
8604 "0xfe0f",
8605 "0x1f469",
8606 "0x200d",
8607 "0x2708",
8608 "0xfe0f",
8609 "0x1f9d1",
8610 "0x200d",
8611 "0x1f680",
8612 "0x1f468",
8613 "0x200d",
8614 "0x1f680",
8615 "0x1f469",
8616 "0x200d",
8617 "0x1f680",
8618 "0x1f9d1",
8619 "0x200d",
8620 "0x1f692",
8621 "0x1f468",
8622 "0x200d",
8623 "0x1f692",
8624 "0x1f469",
8625 "0x200d",
8626 "0x1f692",
8627 "0x1f46e",
8628 "0x1f46e",
8629 "0x200d",
8630 "0x2642",
8631 "0xfe0f",
8632 "0x1f46e",
8633 "0x200d",
8634 "0x2640",
8635 "0xfe0f",
8636 "0x1f575",
8637 "0x1f575",
8638 "0xfe0f",
8639 "0x200d",
8640 "0x2642",
8641 "0xfe0f",
8642 "0x1f575",
8643 "0xfe0f",
8644 "0x200d",
8645 "0x2640",
8646 "0xfe0f",
8647 "0x1f482",
8648 "0x1f482",
8649 "0x200d",
8650 "0x2642",
8651 "0xfe0f",
8652 "0x1f482",
8653 "0x200d",
8654 "0x2640",
8655 "0xfe0f",
8656 "0x1f977",
8657 "0x1f477",
8658 "0x1f477",
8659 "0x200d",
8660 "0x2642",
8661 "0xfe0f",
8662 "0x1f477",
8663 "0x200d",
8664 "0x2640",
8665 "0xfe0f",
8666 "0x1fac5",
8667 "0x1f934",
8668 "0x1f478",
8669 "0x1f473",
8670 "0x1f473",
8671 "0x200d",
8672 "0x2642",
8673 "0xfe0f",
8674 "0x1f473",
8675 "0x200d",
8676 "0x2640",
8677 "0xfe0f",
8678 "0x1f472",
8679 "0x1f9d5",
8680 "0x1f935",
8681 "0x1f935",
8682 "0x200d",
8683 "0x2642",
8684 "0xfe0f",
8685 "0x1f935",
8686 "0x200d",
8687 "0x2640",
8688 "0xfe0f",
8689 "0x1f470",
8690 "0x1f470",
8691 "0x200d",
8692 "0x2642",
8693 "0xfe0f",
8694 "0x1f470",
8695 "0x200d",
8696 "0x2640",
8697 "0xfe0f",
8698 "0x1f930",
8699 "0x1fac3",
8700 "0x1fac4",
8701 "0x1f931",
8702 "0x1f469",
8703 "0x200d",
8704 "0x1f37c",
8705 "0x1f468",
8706 "0x200d",
8707 "0x1f37c",
8708 "0x1f9d1",
8709 "0x200d",
8710 "0x1f37c",
8711 "0x1f47c",
8712 "0x1f385",
8713 "0x1f936",
8714 "0x1f9d1",
8715 "0x200d",
8716 "0x1f384",
8717 "0x1f9b8",
8718 "0x1f9b8",
8719 "0x200d",
8720 "0x2642",
8721 "0xfe0f",
8722 "0x1f9b8",
8723 "0x200d",
8724 "0x2640",
8725 "0xfe0f",
8726 "0x1f9b9",
8727 "0x1f9b9",
8728 "0x200d",
8729 "0x2642",
8730 "0xfe0f",
8731 "0x1f9b9",
8732 "0x200d",
8733 "0x2640",
8734 "0xfe0f",
8735 "0x1f9d9",
8736 "0x1f9d9",
8737 "0x200d",
8738 "0x2642",
8739 "0xfe0f",
8740 "0x1f9d9",
8741 "0x200d",
8742 "0x2640",
8743 "0xfe0f",
8744 "0x1f9da",
8745 "0x1f9da",
8746 "0x200d",
8747 "0x2642",
8748 "0xfe0f",
8749 "0x1f9da",
8750 "0x200d",
8751 "0x2640",
8752 "0xfe0f",
8753 "0x1f9db",
8754 "0x1f9db",
8755 "0x200d",
8756 "0x2642",
8757 "0xfe0f",
8758 "0x1f9db",
8759 "0x200d",
8760 "0x2640",
8761 "0xfe0f",
8762 "0x1f9dc",
8763 "0x1f9dc",
8764 "0x200d",
8765 "0x2642",
8766 "0xfe0f",
8767 "0x1f9dc",
8768 "0x200d",
8769 "0x2640",
8770 "0xfe0f",
8771 "0x1f9dd",
8772 "0x1f9dd",
8773 "0x200d",
8774 "0x2642",
8775 "0xfe0f",
8776 "0x1f9dd",
8777 "0x200d",
8778 "0x2640",
8779 "0xfe0f",
8780 "0x1f9de",
8781 "0x1f9de",
8782 "0x200d",
8783 "0x2642",
8784 "0xfe0f",
8785 "0x1f9de",
8786 "0x200d",
8787 "0x2640",
8788 "0xfe0f",
8789 "0x1f9df",
8790 "0x1f9df",
8791 "0x200d",
8792 "0x2642",
8793 "0xfe0f",
8794 "0x1f9df",
8795 "0x200d",
8796 "0x2640",
8797 "0xfe0f",
8798 "0x1f9cc",
8799 "0x1f486",
8800 "0x1f486",
8801 "0x200d",
8802 "0x2642",
8803 "0xfe0f",
8804 "0x1f486",
8805 "0x200d",
8806 "0x2640",
8807 "0xfe0f",
8808 "0x1f487",
8809 "0x1f487",
8810 "0x200d",
8811 "0x2642",
8812 "0xfe0f",
8813 "0x1f487",
8814 "0x200d",
8815 "0x2640",
8816 "0xfe0f",
8817 "0x1f6b6",
8818 "0x1f6b6",
8819 "0x200d",
8820 "0x2642",
8821 "0xfe0f",
8822 "0x1f6b6",
8823 "0x200d",
8824 "0x2640",
8825 "0xfe0f",
8826 "0x1f6b6",
8827 "0x200d",
8828 "0x27a1",
8829 "0xfe0f",
8830 "0x1f6b6",
8831 "0x200d",
8832 "0x2640",
8833 "0xfe0f",
8834 "0x200d",
8835 "0x27a1",
8836 "0xfe0f",
8837 "0x1f6b6",
8838 "0x200d",
8839 "0x2642",
8840 "0xfe0f",
8841 "0x200d",
8842 "0x27a1",
8843 "0xfe0f",
8844 "0x1f9cd",
8845 "0x1f9cd",
8846 "0x200d",
8847 "0x2642",
8848 "0xfe0f",
8849 "0x1f9cd",
8850 "0x200d",
8851 "0x2640",
8852 "0xfe0f",
8853 "0x1f9ce",
8854 "0x1f9ce",
8855 "0x200d",
8856 "0x2642",
8857 "0xfe0f",
8858 "0x1f9ce",
8859 "0x200d",
8860 "0x2640",
8861 "0xfe0f",
8862 "0x1f9ce",
8863 "0x200d",
8864 "0x27a1",
8865 "0xfe0f",
8866 "0x1f9ce",
8867 "0x200d",
8868 "0x2640",
8869 "0xfe0f",
8870 "0x200d",
8871 "0x27a1",
8872 "0xfe0f",
8873 "0x1f9ce",
8874 "0x200d",
8875 "0x2642",
8876 "0xfe0f",
8877 "0x200d",
8878 "0x27a1",
8879 "0xfe0f",
8880 "0x1f9d1",
8881 "0x200d",
8882 "0x1f9af",
8883 "0x1f9d1",
8884 "0x200d",
8885 "0x1f9af",
8886 "0x200d",
8887 "0x27a1",
8888 "0xfe0f",
8889 "0x1f468",
8890 "0x200d",
8891 "0x1f9af",
8892 "0x1f468",
8893 "0x200d",
8894 "0x1f9af",
8895 "0x200d",
8896 "0x27a1",
8897 "0xfe0f",
8898 "0x1f469",
8899 "0x200d",
8900 "0x1f9af",
8901 "0x1f469",
8902 "0x200d",
8903 "0x1f9af",
8904 "0x200d",
8905 "0x27a1",
8906 "0xfe0f",
8907 "0x1f9d1",
8908 "0x200d",
8909 "0x1f9bc",
8910 "0x1f9d1",
8911 "0x200d",
8912 "0x1f9bc",
8913 "0x200d",
8914 "0x27a1",
8915 "0xfe0f",
8916 "0x1f468",
8917 "0x200d",
8918 "0x1f9bc",
8919 "0x1f468",
8920 "0x200d",
8921 "0x1f9bc",
8922 "0x200d",
8923 "0x27a1",
8924 "0xfe0f",
8925 "0x1f469",
8926 "0x200d",
8927 "0x1f9bc",
8928 "0x1f469",
8929 "0x200d",
8930 "0x1f9bc",
8931 "0x200d",
8932 "0x27a1",
8933 "0xfe0f",
8934 "0x1f9d1",
8935 "0x200d",
8936 "0x1f9bd",
8937 "0x1f9d1",
8938 "0x200d",
8939 "0x1f9bd",
8940 "0x200d",
8941 "0x27a1",
8942 "0xfe0f",
8943 "0x1f468",
8944 "0x200d",
8945 "0x1f9bd",
8946 "0x1f468",
8947 "0x200d",
8948 "0x1f9bd",
8949 "0x200d",
8950 "0x27a1",
8951 "0xfe0f",
8952 "0x1f469",
8953 "0x200d",
8954 "0x1f9bd",
8955 "0x1f469",
8956 "0x200d",
8957 "0x1f9bd",
8958 "0x200d",
8959 "0x27a1",
8960 "0xfe0f",
8961 "0x1f3c3",
8962 "0x1f3c3",
8963 "0x200d",
8964 "0x2642",
8965 "0xfe0f",
8966 "0x1f3c3",
8967 "0x200d",
8968 "0x2640",
8969 "0xfe0f",
8970 "0x1f3c3",
8971 "0x200d",
8972 "0x27a1",
8973 "0xfe0f",
8974 "0x1f3c3",
8975 "0x200d",
8976 "0x2640",
8977 "0xfe0f",
8978 "0x200d",
8979 "0x27a1",
8980 "0xfe0f",
8981 "0x1f3c3",
8982 "0x200d",
8983 "0x2642",
8984 "0xfe0f",
8985 "0x200d",
8986 "0x27a1",
8987 "0xfe0f",
8988 "0x1f483",
8989 "0x1f57a",
8990 "0x1f574",
8991 "0x1f46f",
8992 "0x1f46f",
8993 "0x200d",
8994 "0x2642",
8995 "0xfe0f",
8996 "0x1f46f",
8997 "0x200d",
8998 "0x2640",
8999 "0xfe0f",
9000 "0x1f9d6",
9001 "0x1f9d6",
9002 "0x200d",
9003 "0x2642",
9004 "0xfe0f",
9005 "0x1f9d6",
9006 "0x200d",
9007 "0x2640",
9008 "0xfe0f",
9009 "0x1f9d7",
9010 "0x1f9d7",
9011 "0x200d",
9012 "0x2642",
9013 "0xfe0f",
9014 "0x1f9d7",
9015 "0x200d",
9016 "0x2640",
9017 "0xfe0f",
9018 "0x1f93a",
9019 "0x1f3c7",
9020 "0x26f7",
9021 "0x1f3c2",
9022 "0x1f3cc",
9023 "0x1f3cc",
9024 "0xfe0f",
9025 "0x200d",
9026 "0x2642",
9027 "0xfe0f",
9028 "0x1f3cc",
9029 "0xfe0f",
9030 "0x200d",
9031 "0x2640",
9032 "0xfe0f",
9033 "0x1f3c4",
9034 "0x1f3c4",
9035 "0x200d",
9036 "0x2642",
9037 "0xfe0f",
9038 "0x1f3c4",
9039 "0x200d",
9040 "0x2640",
9041 "0xfe0f",
9042 "0x1f6a3",
9043 "0x1f6a3",
9044 "0x200d",
9045 "0x2642",
9046 "0xfe0f",
9047 "0x1f6a3",
9048 "0x200d",
9049 "0x2640",
9050 "0xfe0f",
9051 "0x1f3ca",
9052 "0x1f3ca",
9053 "0x200d",
9054 "0x2642",
9055 "0xfe0f",
9056 "0x1f3ca",
9057 "0x200d",
9058 "0x2640",
9059 "0xfe0f",
9060 "0x26f9",
9061 "0x26f9",
9062 "0xfe0f",
9063 "0x200d",
9064 "0x2642",
9065 "0xfe0f",
9066 "0x26f9",
9067 "0xfe0f",
9068 "0x200d",
9069 "0x2640",
9070 "0xfe0f",
9071 "0x1f3cb",
9072 "0x1f3cb",
9073 "0xfe0f",
9074 "0x200d",
9075 "0x2642",
9076 "0xfe0f",
9077 "0x1f3cb",
9078 "0xfe0f",
9079 "0x200d",
9080 "0x2640",
9081 "0xfe0f",
9082 "0x1f6b4",
9083 "0x1f6b4",
9084 "0x200d",
9085 "0x2642",
9086 "0xfe0f",
9087 "0x1f6b4",
9088 "0x200d",
9089 "0x2640",
9090 "0xfe0f",
9091 "0x1f6b5",
9092 "0x1f6b5",
9093 "0x200d",
9094 "0x2642",
9095 "0xfe0f",
9096 "0x1f6b5",
9097 "0x200d",
9098 "0x2640",
9099 "0xfe0f",
9100 "0x1f938",
9101 "0x1f938",
9102 "0x200d",
9103 "0x2642",
9104 "0xfe0f",
9105 "0x1f938",
9106 "0x200d",
9107 "0x2640",
9108 "0xfe0f",
9109 "0x1f93c",
9110 "0x1f93c",
9111 "0x200d",
9112 "0x2642",
9113 "0xfe0f",
9114 "0x1f93c",
9115 "0x200d",
9116 "0x2640",
9117 "0xfe0f",
9118 "0x1f93d",
9119 "0x1f93d",
9120 "0x200d",
9121 "0x2642",
9122 "0xfe0f",
9123 "0x1f93d",
9124 "0x200d",
9125 "0x2640",
9126 "0xfe0f",
9127 "0x1f93e",
9128 "0x1f93e",
9129 "0x200d",
9130 "0x2642",
9131 "0xfe0f",
9132 "0x1f93e",
9133 "0x200d",
9134 "0x2640",
9135 "0xfe0f",
9136 "0x1f939",
9137 "0x1f939",
9138 "0x200d",
9139 "0x2642",
9140 "0xfe0f",
9141 "0x1f939",
9142 "0x200d",
9143 "0x2640",
9144 "0xfe0f",
9145 "0x1f9d8",
9146 "0x1f9d8",
9147 "0x200d",
9148 "0x2642",
9149 "0xfe0f",
9150 "0x1f9d8",
9151 "0x200d",
9152 "0x2640",
9153 "0xfe0f",
9154 "0x1f6c0",
9155 "0x1f6cc",
9156 "0x1f9d1",
9157 "0x200d",
9158 "0x1f91d",
9159 "0x200d",
9160 "0x1f9d1",
9161 "0x1f46d",
9162 "0x1f46b",
9163 "0x1f46c",
9164 "0x1f48f",
9165 "0x1f469",
9166 "0x200d",
9167 "0x2764",
9168 "0xfe0f",
9169 "0x200d",
9170 "0x1f48b",
9171 "0x200d",
9172 "0x1f468",
9173 "0x1f468",
9174 "0x200d",
9175 "0x2764",
9176 "0xfe0f",
9177 "0x200d",
9178 "0x1f48b",
9179 "0x200d",
9180 "0x1f468",
9181 "0x1f469",
9182 "0x200d",
9183 "0x2764",
9184 "0xfe0f",
9185 "0x200d",
9186 "0x1f48b",
9187 "0x200d",
9188 "0x1f469",
9189 "0x1f491",
9190 "0x1f469",
9191 "0x200d",
9192 "0x2764",
9193 "0xfe0f",
9194 "0x200d",
9195 "0x1f468",
9196 "0x1f468",
9197 "0x200d",
9198 "0x2764",
9199 "0xfe0f",
9200 "0x200d",
9201 "0x1f468",
9202 "0x1f469",
9203 "0x200d",
9204 "0x2764",
9205 "0xfe0f",
9206 "0x200d",
9207 "0x1f469",
9208 "0x1f468",
9209 "0x200d",
9210 "0x1f469",
9211 "0x200d",
9212 "0x1f466",
9213 "0x1f468",
9214 "0x200d",
9215 "0x1f469",
9216 "0x200d",
9217 "0x1f467",
9218 "0x1f468",
9219 "0x200d",
9220 "0x1f469",
9221 "0x200d",
9222 "0x1f467",
9223 "0x200d",
9224 "0x1f466",
9225 "0x1f468",
9226 "0x200d",
9227 "0x1f469",
9228 "0x200d",
9229 "0x1f466",
9230 "0x200d",
9231 "0x1f466",
9232 "0x1f468",
9233 "0x200d",
9234 "0x1f469",
9235 "0x200d",
9236 "0x1f467",
9237 "0x200d",
9238 "0x1f467",
9239 "0x1f468",
9240 "0x200d",
9241 "0x1f468",
9242 "0x200d",
9243 "0x1f466",
9244 "0x1f468",
9245 "0x200d",
9246 "0x1f468",
9247 "0x200d",
9248 "0x1f467",
9249 "0x1f468",
9250 "0x200d",
9251 "0x1f468",
9252 "0x200d",
9253 "0x1f467",
9254 "0x200d",
9255 "0x1f466",
9256 "0x1f468",
9257 "0x200d",
9258 "0x1f468",
9259 "0x200d",
9260 "0x1f466",
9261 "0x200d",
9262 "0x1f466",
9263 "0x1f468",
9264 "0x200d",
9265 "0x1f468",
9266 "0x200d",
9267 "0x1f467",
9268 "0x200d",
9269 "0x1f467",
9270 "0x1f469",
9271 "0x200d",
9272 "0x1f469",
9273 "0x200d",
9274 "0x1f466",
9275 "0x1f469",
9276 "0x200d",
9277 "0x1f469",
9278 "0x200d",
9279 "0x1f467",
9280 "0x1f469",
9281 "0x200d",
9282 "0x1f469",
9283 "0x200d",
9284 "0x1f467",
9285 "0x200d",
9286 "0x1f466",
9287 "0x1f469",
9288 "0x200d",
9289 "0x1f469",
9290 "0x200d",
9291 "0x1f466",
9292 "0x200d",
9293 "0x1f466",
9294 "0x1f469",
9295 "0x200d",
9296 "0x1f469",
9297 "0x200d",
9298 "0x1f467",
9299 "0x200d",
9300 "0x1f467",
9301 "0x1f468",
9302 "0x200d",
9303 "0x1f466",
9304 "0x1f468",
9305 "0x200d",
9306 "0x1f466",
9307 "0x200d",
9308 "0x1f466",
9309 "0x1f468",
9310 "0x200d",
9311 "0x1f467",
9312 "0x1f468",
9313 "0x200d",
9314 "0x1f467",
9315 "0x200d",
9316 "0x1f466",
9317 "0x1f468",
9318 "0x200d",
9319 "0x1f467",
9320 "0x200d",
9321 "0x1f467",
9322 "0x1f469",
9323 "0x200d",
9324 "0x1f466",
9325 "0x1f469",
9326 "0x200d",
9327 "0x1f466",
9328 "0x200d",
9329 "0x1f466",
9330 "0x1f469",
9331 "0x200d",
9332 "0x1f467",
9333 "0x1f469",
9334 "0x200d",
9335 "0x1f467",
9336 "0x200d",
9337 "0x1f466",
9338 "0x1f469",
9339 "0x200d",
9340 "0x1f467",
9341 "0x200d",
9342 "0x1f467",
9343 "0x1f5e3",
9344 "0x1f464",
9345 "0x1f465",
9346 "0x1fac2",
9347 "0x1f46a",
9348 "0x1f9d1",
9349 "0x200d",
9350 "0x1f9d1",
9351 "0x200d",
9352 "0x1f9d2",
9353 "0x1f9d1",
9354 "0x200d",
9355 "0x1f9d1",
9356 "0x200d",
9357 "0x1f9d2",
9358 "0x200d",
9359 "0x1f9d2",
9360 "0x1f9d1",
9361 "0x200d",
9362 "0x1f9d2",
9363 "0x1f9d1",
9364 "0x200d",
9365 "0x1f9d2",
9366 "0x200d",
9367 "0x1f9d2",
9368 "0x1f463"
9369 ],
9370 "animals_and_nature": [
9371 "0x1f435",
9372 "0x1f412",
9373 "0x1f98d",
9374 "0x1f9a7",
9375 "0x1f436",
9376 "0x1f415",
9377 "0x1f9ae",
9378 "0x1f415",
9379 "0x200d",
9380 "0x1f9ba",
9381 "0x1f429",
9382 "0x1f43a",
9383 "0x1f98a",
9384 "0x1f99d",
9385 "0x1f431",
9386 "0x1f408",
9387 "0x1f408",
9388 "0x200d",
9389 "0x2b1b",
9390 "0x1f981",
9391 "0x1f42f",
9392 "0x1f405",
9393 "0x1f406",
9394 "0x1f434",
9395 "0x1face",
9396 "0x1facf",
9397 "0x1f40e",
9398 "0x1f984",
9399 "0x1f993",
9400 "0x1f98c",
9401 "0x1f9ac",
9402 "0x1f42e",
9403 "0x1f402",
9404 "0x1f403",
9405 "0x1f404",
9406 "0x1f437",
9407 "0x1f416",
9408 "0x1f417",
9409 "0x1f43d",
9410 "0x1f40f",
9411 "0x1f411",
9412 "0x1f410",
9413 "0x1f42a",
9414 "0x1f42b",
9415 "0x1f999",
9416 "0x1f992",
9417 "0x1f418",
9418 "0x1f9a3",
9419 "0x1f98f",
9420 "0x1f99b",
9421 "0x1f42d",
9422 "0x1f401",
9423 "0x1f400",
9424 "0x1f439",
9425 "0x1f430",
9426 "0x1f407",
9427 "0x1f43f",
9428 "0x1f9ab",
9429 "0x1f994",
9430 "0x1f987",
9431 "0x1f43b",
9432 "0x1f43b",
9433 "0x200d",
9434 "0x2744",
9435 "0xfe0f",
9436 "0x1f428",
9437 "0x1f43c",
9438 "0x1f9a5",
9439 "0x1f9a6",
9440 "0x1f9a8",
9441 "0x1f998",
9442 "0x1f9a1",
9443 "0x1f43e",
9444 "0x1f983",
9445 "0x1f414",
9446 "0x1f413",
9447 "0x1f423",
9448 "0x1f424",
9449 "0x1f425",
9450 "0x1f426",
9451 "0x1f427",
9452 "0x1f54a",
9453 "0x1f985",
9454 "0x1f986",
9455 "0x1f9a2",
9456 "0x1f989",
9457 "0x1f9a4",
9458 "0x1fab6",
9459 "0x1f9a9",
9460 "0x1f99a",
9461 "0x1f99c",
9462 "0x1fabd",
9463 "0x1f426",
9464 "0x200d",
9465 "0x2b1b",
9466 "0x1fabf",
9467 "0x1f426",
9468 "0x200d",
9469 "0x1f525",
9470 "0x1f438",
9471 "0x1f40a",
9472 "0x1f422",
9473 "0x1f98e",
9474 "0x1f40d",
9475 "0x1f432",
9476 "0x1f409",
9477 "0x1f995",
9478 "0x1f996",
9479 "0x1f433",
9480 "0x1f40b",
9481 "0x1f42c",
9482 "0x1f9ad",
9483 "0x1f41f",
9484 "0x1f420",
9485 "0x1f421",
9486 "0x1f988",
9487 "0x1f419",
9488 "0x1f41a",
9489 "0x1fab8",
9490 "0x1fabc",
9491 "0x1f40c",
9492 "0x1f98b",
9493 "0x1f41b",
9494 "0x1f41c",
9495 "0x1f41d",
9496 "0x1fab2",
9497 "0x1f41e",
9498 "0x1f997",
9499 "0x1fab3",
9500 "0x1f577",
9501 "0x1f578",
9502 "0x1f982",
9503 "0x1f99f",
9504 "0x1fab0",
9505 "0x1fab1",
9506 "0x1f9a0",
9507 "0x1f490",
9508 "0x1f338",
9509 "0x1f4ae",
9510 "0x1fab7",
9511 "0x1f3f5",
9512 "0x1f339",
9513 "0x1f940",
9514 "0x1f33a",
9515 "0x1f33b",
9516 "0x1f33c",
9517 "0x1f337",
9518 "0x1fabb",
9519 "0x1f331",
9520 "0x1fab4",
9521 "0x1f332",
9522 "0x1f333",
9523 "0x1f334",
9524 "0x1f335",
9525 "0x1f33e",
9526 "0x1f33f",
9527 "0x2618",
9528 "0x1f340",
9529 "0x1f341",
9530 "0x1f342",
9531 "0x1f343",
9532 "0x1fab9",
9533 "0x1faba",
9534 "0x1f344"
9535 ],
9536 "food_and_drink": [
9537 "0x1f347",
9538 "0x1f348",
9539 "0x1f349",
9540 "0x1f34a",
9541 "0x1f34b",
9542 "0x1f34b",
9543 "0x200d",
9544 "0x1f7e9",
9545 "0x1f34c",
9546 "0x1f34d",
9547 "0x1f96d",
9548 "0x1f34e",
9549 "0x1f34f",
9550 "0x1f350",
9551 "0x1f351",
9552 "0x1f352",
9553 "0x1f353",
9554 "0x1fad0",
9555 "0x1f95d",
9556 "0x1f345",
9557 "0x1fad2",
9558 "0x1f965",
9559 "0x1f951",
9560 "0x1f346",
9561 "0x1f954",
9562 "0x1f955",
9563 "0x1f33d",
9564 "0x1f336",
9565 "0x1fad1",
9566 "0x1f952",
9567 "0x1f96c",
9568 "0x1f966",
9569 "0x1f9c4",
9570 "0x1f9c5",
9571 "0x1f95c",
9572 "0x1fad8",
9573 "0x1f330",
9574 "0x1fada",
9575 "0x1fadb",
9576 "0x1f344",
9577 "0x200d",
9578 "0x1f7eb",
9579 "0x1f35e",
9580 "0x1f950",
9581 "0x1f956",
9582 "0x1fad3",
9583 "0x1f968",
9584 "0x1f96f",
9585 "0x1f95e",
9586 "0x1f9c7",
9587 "0x1f9c0",
9588 "0x1f356",
9589 "0x1f357",
9590 "0x1f969",
9591 "0x1f953",
9592 "0x1f354",
9593 "0x1f35f",
9594 "0x1f355",
9595 "0x1f32d",
9596 "0x1f96a",
9597 "0x1f32e",
9598 "0x1f32f",
9599 "0x1fad4",
9600 "0x1f959",
9601 "0x1f9c6",
9602 "0x1f95a",
9603 "0x1f373",
9604 "0x1f958",
9605 "0x1f372",
9606 "0x1fad5",
9607 "0x1f963",
9608 "0x1f957",
9609 "0x1f37f",
9610 "0x1f9c8",
9611 "0x1f9c2",
9612 "0x1f96b",
9613 "0x1f371",
9614 "0x1f358",
9615 "0x1f359",
9616 "0x1f35a",
9617 "0x1f35b",
9618 "0x1f35c",
9619 "0x1f35d",
9620 "0x1f360",
9621 "0x1f362",
9622 "0x1f363",
9623 "0x1f364",
9624 "0x1f365",
9625 "0x1f96e",
9626 "0x1f361",
9627 "0x1f95f",
9628 "0x1f960",
9629 "0x1f961",
9630 "0x1f980",
9631 "0x1f99e",
9632 "0x1f990",
9633 "0x1f991",
9634 "0x1f9aa",
9635 "0x1f366",
9636 "0x1f367",
9637 "0x1f368",
9638 "0x1f369",
9639 "0x1f36a",
9640 "0x1f382",
9641 "0x1f370",
9642 "0x1f9c1",
9643 "0x1f967",
9644 "0x1f36b",
9645 "0x1f36c",
9646 "0x1f36d",
9647 "0x1f36e",
9648 "0x1f36f",
9649 "0x1f37c",
9650 "0x1f95b",
9651 "0x2615",
9652 "0x1fad6",
9653 "0x1f375",
9654 "0x1f376",
9655 "0x1f37e",
9656 "0x1f377",
9657 "0x1f378",
9658 "0x1f379",
9659 "0x1f37a",
9660 "0x1f37b",
9661 "0x1f942",
9662 "0x1f943",
9663 "0x1fad7",
9664 "0x1f964",
9665 "0x1f9cb",
9666 "0x1f9c3",
9667 "0x1f9c9",
9668 "0x1f9ca",
9669 "0x1f962",
9670 "0x1f37d",
9671 "0x1f374",
9672 "0x1f944",
9673 "0x1f52a",
9674 "0x1fad9",
9675 "0x1f3fa"
9676 ],
9677 "travel_and_places": [
9678 "0x1f30d",
9679 "0x1f30e",
9680 "0x1f30f",
9681 "0x1f310",
9682 "0x1f5fa",
9683 "0x1f5fe",
9684 "0x1f9ed",
9685 "0x1f3d4",
9686 "0x26f0",
9687 "0x1f30b",
9688 "0x1f5fb",
9689 "0x1f3d5",
9690 "0x1f3d6",
9691 "0x1f3dc",
9692 "0x1f3dd",
9693 "0x1f3de",
9694 "0x1f3df",
9695 "0x1f3db",
9696 "0x1f3d7",
9697 "0x1f9f1",
9698 "0x1faa8",
9699 "0x1fab5",
9700 "0x1f6d6",
9701 "0x1f3d8",
9702 "0x1f3da",
9703 "0x1f3e0",
9704 "0x1f3e1",
9705 "0x1f3e2",
9706 "0x1f3e3",
9707 "0x1f3e4",
9708 "0x1f3e5",
9709 "0x1f3e6",
9710 "0x1f3e8",
9711 "0x1f3e9",
9712 "0x1f3ea",
9713 "0x1f3eb",
9714 "0x1f3ec",
9715 "0x1f3ed",
9716 "0x1f3ef",
9717 "0x1f3f0",
9718 "0x1f492",
9719 "0x1f5fc",
9720 "0x1f5fd",
9721 "0x26ea",
9722 "0x1f54c",
9723 "0x1f6d5",
9724 "0x1f54d",
9725 "0x26e9",
9726 "0x1f54b",
9727 "0x26f2",
9728 "0x26fa",
9729 "0x1f301",
9730 "0x1f303",
9731 "0x1f3d9",
9732 "0x1f304",
9733 "0x1f305",
9734 "0x1f306",
9735 "0x1f307",
9736 "0x1f309",
9737 "0x2668",
9738 "0x1f3a0",
9739 "0x1f6dd",
9740 "0x1f3a1",
9741 "0x1f3a2",
9742 "0x1f488",
9743 "0x1f3aa",
9744 "0x1f682",
9745 "0x1f683",
9746 "0x1f684",
9747 "0x1f685",
9748 "0x1f686",
9749 "0x1f687",
9750 "0x1f688",
9751 "0x1f689",
9752 "0x1f68a",
9753 "0x1f69d",
9754 "0x1f69e",
9755 "0x1f68b",
9756 "0x1f68c",
9757 "0x1f68d",
9758 "0x1f68e",
9759 "0x1f690",
9760 "0x1f691",
9761 "0x1f692",
9762 "0x1f693",
9763 "0x1f694",
9764 "0x1f695",
9765 "0x1f696",
9766 "0x1f697",
9767 "0x1f698",
9768 "0x1f699",
9769 "0x1f6fb",
9770 "0x1f69a",
9771 "0x1f69b",
9772 "0x1f69c",
9773 "0x1f3ce",
9774 "0x1f3cd",
9775 "0x1f6f5",
9776 "0x1f9bd",
9777 "0x1f9bc",
9778 "0x1f6fa",
9779 "0x1f6b2",
9780 "0x1f6f4",
9781 "0x1f6f9",
9782 "0x1f6fc",
9783 "0x1f68f",
9784 "0x1f6e3",
9785 "0x1f6e4",
9786 "0x1f6e2",
9787 "0x26fd",
9788 "0x1f6de",
9789 "0x1f6a8",
9790 "0x1f6a5",
9791 "0x1f6a6",
9792 "0x1f6d1",
9793 "0x1f6a7",
9794 "0x2693",
9795 "0x1f6df",
9796 "0x26f5",
9797 "0x1f6f6",
9798 "0x1f6a4",
9799 "0x1f6f3",
9800 "0x26f4",
9801 "0x1f6e5",
9802 "0x1f6a2",
9803 "0x2708",
9804 "0x1f6e9",
9805 "0x1f6eb",
9806 "0x1f6ec",
9807 "0x1fa82",
9808 "0x1f4ba",
9809 "0x1f681",
9810 "0x1f69f",
9811 "0x1f6a0",
9812 "0x1f6a1",
9813 "0x1f6f0",
9814 "0x1f680",
9815 "0x1f6f8",
9816 "0x1f6ce",
9817 "0x1f9f3",
9818 "0x231b",
9819 "0x23f3",
9820 "0x231a",
9821 "0x23f0",
9822 "0x23f1",
9823 "0x23f2",
9824 "0x1f570",
9825 "0x1f55b",
9826 "0x1f567",
9827 "0x1f550",
9828 "0x1f55c",
9829 "0x1f551",
9830 "0x1f55d",
9831 "0x1f552",
9832 "0x1f55e",
9833 "0x1f553",
9834 "0x1f55f",
9835 "0x1f554",
9836 "0x1f560",
9837 "0x1f555",
9838 "0x1f561",
9839 "0x1f556",
9840 "0x1f562",
9841 "0x1f557",
9842 "0x1f563",
9843 "0x1f558",
9844 "0x1f564",
9845 "0x1f559",
9846 "0x1f565",
9847 "0x1f55a",
9848 "0x1f566",
9849 "0x1f311",
9850 "0x1f312",
9851 "0x1f313",
9852 "0x1f314",
9853 "0x1f315",
9854 "0x1f316",
9855 "0x1f317",
9856 "0x1f318",
9857 "0x1f319",
9858 "0x1f31a",
9859 "0x1f31b",
9860 "0x1f31c",
9861 "0x1f321",
9862 "0x2600",
9863 "0x1f31d",
9864 "0x1f31e",
9865 "0x1fa90",
9866 "0x2b50",
9867 "0x1f31f",
9868 "0x1f320",
9869 "0x1f30c",
9870 "0x2601",
9871 "0x26c5",
9872 "0x26c8",
9873 "0x1f324",
9874 "0x1f325",
9875 "0x1f326",
9876 "0x1f327",
9877 "0x1f328",
9878 "0x1f329",
9879 "0x1f32a",
9880 "0x1f32b",
9881 "0x1f32c",
9882 "0x1f300",
9883 "0x1f308",
9884 "0x1f302",
9885 "0x2602",
9886 "0x2614",
9887 "0x26f1",
9888 "0x26a1",
9889 "0x2744",
9890 "0x2603",
9891 "0x26c4",
9892 "0x2604",
9893 "0x1f525",
9894 "0x1f4a7",
9895 "0x1f30a"
9896 ],
9897 "activities": [
9898 "0x1f383",
9899 "0x1f384",
9900 "0x1f386",
9901 "0x1f387",
9902 "0x1f9e8",
9903 "0x2728",
9904 "0x1f388",
9905 "0x1f389",
9906 "0x1f38a",
9907 "0x1f38b",
9908 "0x1f38d",
9909 "0x1f38e",
9910 "0x1f38f",
9911 "0x1f390",
9912 "0x1f391",
9913 "0x1f9e7",
9914 "0x1f380",
9915 "0x1f381",
9916 "0x1f397",
9917 "0x1f39f",
9918 "0x1f3ab",
9919 "0x1f396",
9920 "0x1f3c6",
9921 "0x1f3c5",
9922 "0x1f947",
9923 "0x1f948",
9924 "0x1f949",
9925 "0x26bd",
9926 "0x26be",
9927 "0x1f94e",
9928 "0x1f3c0",
9929 "0x1f3d0",
9930 "0x1f3c8",
9931 "0x1f3c9",
9932 "0x1f3be",
9933 "0x1f94f",
9934 "0x1f3b3",
9935 "0x1f3cf",
9936 "0x1f3d1",
9937 "0x1f3d2",
9938 "0x1f94d",
9939 "0x1f3d3",
9940 "0x1f3f8",
9941 "0x1f94a",
9942 "0x1f94b",
9943 "0x1f945",
9944 "0x26f3",
9945 "0x26f8",
9946 "0x1f3a3",
9947 "0x1f93f",
9948 "0x1f3bd",
9949 "0x1f3bf",
9950 "0x1f6f7",
9951 "0x1f94c",
9952 "0x1f3af",
9953 "0x1fa80",
9954 "0x1fa81",
9955 "0x1f52b",
9956 "0x1f3b1",
9957 "0x1f52e",
9958 "0x1fa84",
9959 "0x1f3ae",
9960 "0x1f579",
9961 "0x1f3b0",
9962 "0x1f3b2",
9963 "0x1f9e9",
9964 "0x1f9f8",
9965 "0x1fa85",
9966 "0x1faa9",
9967 "0x1fa86",
9968 "0x2660",
9969 "0x2665",
9970 "0x2666",
9971 "0x2663",
9972 "0x265f",
9973 "0x1f0cf",
9974 "0x1f004",
9975 "0x1f3b4",
9976 "0x1f3ad",
9977 "0x1f5bc",
9978 "0x1f3a8",
9979 "0x1f9f5",
9980 "0x1faa1",
9981 "0x1f9f6",
9982 "0x1faa2"
9983 ],
9984 "objects": [
9985 "0x1f453",
9986 "0x1f576",
9987 "0x1f97d",
9988 "0x1f97c",
9989 "0x1f9ba",
9990 "0x1f454",
9991 "0x1f455",
9992 "0x1f456",
9993 "0x1f9e3",
9994 "0x1f9e4",
9995 "0x1f9e5",
9996 "0x1f9e6",
9997 "0x1f457",
9998 "0x1f458",
9999 "0x1f97b",
10000 "0x1fa71",
10001 "0x1fa72",
10002 "0x1fa73",
10003 "0x1f459",
10004 "0x1f45a",
10005 "0x1faad",
10006 "0x1f45b",
10007 "0x1f45c",
10008 "0x1f45d",
10009 "0x1f6cd",
10010 "0x1f392",
10011 "0x1fa74",
10012 "0x1f45e",
10013 "0x1f45f",
10014 "0x1f97e",
10015 "0x1f97f",
10016 "0x1f460",
10017 "0x1f461",
10018 "0x1fa70",
10019 "0x1f462",
10020 "0x1faae",
10021 "0x1f451",
10022 "0x1f452",
10023 "0x1f3a9",
10024 "0x1f393",
10025 "0x1f9e2",
10026 "0x1fa96",
10027 "0x26d1",
10028 "0x1f4ff",
10029 "0x1f484",
10030 "0x1f48d",
10031 "0x1f48e",
10032 "0x1f507",
10033 "0x1f508",
10034 "0x1f509",
10035 "0x1f50a",
10036 "0x1f4e2",
10037 "0x1f4e3",
10038 "0x1f4ef",
10039 "0x1f514",
10040 "0x1f515",
10041 "0x1f3bc",
10042 "0x1f3b5",
10043 "0x1f3b6",
10044 "0x1f399",
10045 "0x1f39a",
10046 "0x1f39b",
10047 "0x1f3a4",
10048 "0x1f3a7",
10049 "0x1f4fb",
10050 "0x1f3b7",
10051 "0x1fa97",
10052 "0x1f3b8",
10053 "0x1f3b9",
10054 "0x1f3ba",
10055 "0x1f3bb",
10056 "0x1fa95",
10057 "0x1f941",
10058 "0x1fa98",
10059 "0x1fa87",
10060 "0x1fa88",
10061 "0x1f4f1",
10062 "0x1f4f2",
10063 "0x260e",
10064 "0x1f4de",
10065 "0x1f4df",
10066 "0x1f4e0",
10067 "0x1f50b",
10068 "0x1faab",
10069 "0x1f50c",
10070 "0x1f4bb",
10071 "0x1f5a5",
10072 "0x1f5a8",
10073 "0x2328",
10074 "0x1f5b1",
10075 "0x1f5b2",
10076 "0x1f4bd",
10077 "0x1f4be",
10078 "0x1f4bf",
10079 "0x1f4c0",
10080 "0x1f9ee",
10081 "0x1f3a5",
10082 "0x1f39e",
10083 "0x1f4fd",
10084 "0x1f3ac",
10085 "0x1f4fa",
10086 "0x1f4f7",
10087 "0x1f4f8",
10088 "0x1f4f9",
10089 "0x1f4fc",
10090 "0x1f50d",
10091 "0x1f50e",
10092 "0x1f56f",
10093 "0x1f4a1",
10094 "0x1f526",
10095 "0x1f3ee",
10096 "0x1fa94",
10097 "0x1f4d4",
10098 "0x1f4d5",
10099 "0x1f4d6",
10100 "0x1f4d7",
10101 "0x1f4d8",
10102 "0x1f4d9",
10103 "0x1f4da",
10104 "0x1f4d3",
10105 "0x1f4d2",
10106 "0x1f4c3",
10107 "0x1f4dc",
10108 "0x1f4c4",
10109 "0x1f4f0",
10110 "0x1f5de",
10111 "0x1f4d1",
10112 "0x1f516",
10113 "0x1f3f7",
10114 "0x1f4b0",
10115 "0x1fa99",
10116 "0x1f4b4",
10117 "0x1f4b5",
10118 "0x1f4b6",
10119 "0x1f4b7",
10120 "0x1f4b8",
10121 "0x1f4b3",
10122 "0x1f9fe",
10123 "0x1f4b9",
10124 "0x2709",
10125 "0x1f4e7",
10126 "0x1f4e8",
10127 "0x1f4e9",
10128 "0x1f4e4",
10129 "0x1f4e5",
10130 "0x1f4e6",
10131 "0x1f4eb",
10132 "0x1f4ea",
10133 "0x1f4ec",
10134 "0x1f4ed",
10135 "0x1f4ee",
10136 "0x1f5f3",
10137 "0x270f",
10138 "0x2712",
10139 "0x1f58b",
10140 "0x1f58a",
10141 "0x1f58c",
10142 "0x1f58d",
10143 "0x1f4dd",
10144 "0x1f4bc",
10145 "0x1f4c1",
10146 "0x1f4c2",
10147 "0x1f5c2",
10148 "0x1f4c5",
10149 "0x1f4c6",
10150 "0x1f5d2",
10151 "0x1f5d3",
10152 "0x1f4c7",
10153 "0x1f4c8",
10154 "0x1f4c9",
10155 "0x1f4ca",
10156 "0x1f4cb",
10157 "0x1f4cc",
10158 "0x1f4cd",
10159 "0x1f4ce",
10160 "0x1f587",
10161 "0x1f4cf",
10162 "0x1f4d0",
10163 "0x2702",
10164 "0x1f5c3",
10165 "0x1f5c4",
10166 "0x1f5d1",
10167 "0x1f512",
10168 "0x1f513",
10169 "0x1f50f",
10170 "0x1f510",
10171 "0x1f511",
10172 "0x1f5dd",
10173 "0x1f528",
10174 "0x1fa93",
10175 "0x26cf",
10176 "0x2692",
10177 "0x1f6e0",
10178 "0x1f5e1",
10179 "0x2694",
10180 "0x1f4a3",
10181 "0x1fa83",
10182 "0x1f3f9",
10183 "0x1f6e1",
10184 "0x1fa9a",
10185 "0x1f527",
10186 "0x1fa9b",
10187 "0x1f529",
10188 "0x2699",
10189 "0x1f5dc",
10190 "0x2696",
10191 "0x1f9af",
10192 "0x1f517",
10193 "0x26d3",
10194 "0xfe0f",
10195 "0x200d",
10196 "0x1f4a5",
10197 "0x26d3",
10198 "0x1fa9d",
10199 "0x1f9f0",
10200 "0x1f9f2",
10201 "0x1fa9c",
10202 "0x2697",
10203 "0x1f9ea",
10204 "0x1f9eb",
10205 "0x1f9ec",
10206 "0x1f52c",
10207 "0x1f52d",
10208 "0x1f4e1",
10209 "0x1f489",
10210 "0x1fa78",
10211 "0x1f48a",
10212 "0x1fa79",
10213 "0x1fa7c",
10214 "0x1fa7a",
10215 "0x1fa7b",
10216 "0x1f6aa",
10217 "0x1f6d7",
10218 "0x1fa9e",
10219 "0x1fa9f",
10220 "0x1f6cf",
10221 "0x1f6cb",
10222 "0x1fa91",
10223 "0x1f6bd",
10224 "0x1faa0",
10225 "0x1f6bf",
10226 "0x1f6c1",
10227 "0x1faa4",
10228 "0x1fa92",
10229 "0x1f9f4",
10230 "0x1f9f7",
10231 "0x1f9f9",
10232 "0x1f9fa",
10233 "0x1f9fb",
10234 "0x1faa3",
10235 "0x1f9fc",
10236 "0x1fae7",
10237 "0x1faa5",
10238 "0x1f9fd",
10239 "0x1f9ef",
10240 "0x1f6d2",
10241 "0x1f6ac",
10242 "0x26b0",
10243 "0x1faa6",
10244 "0x26b1",
10245 "0x1f9ff",
10246 "0x1faac",
10247 "0x1f5ff",
10248 "0x1faa7",
10249 "0x1faaa"
10250 ],
10251 "symbols": [
10252 "0x1f3e7",
10253 "0x1f6ae",
10254 "0x1f6b0",
10255 "0x267f",
10256 "0x1f6b9",
10257 "0x1f6ba",
10258 "0x1f6bb",
10259 "0x1f6bc",
10260 "0x1f6be",
10261 "0x1f6c2",
10262 "0x1f6c3",
10263 "0x1f6c4",
10264 "0x1f6c5",
10265 "0x26a0",
10266 "0x1f6b8",
10267 "0x26d4",
10268 "0x1f6ab",
10269 "0x1f6b3",
10270 "0x1f6ad",
10271 "0x1f6af",
10272 "0x1f6b1",
10273 "0x1f6b7",
10274 "0x1f4f5",
10275 "0x1f51e",
10276 "0x2622",
10277 "0x2623",
10278 "0x2b06",
10279 "0x2197",
10280 "0x27a1",
10281 "0x2198",
10282 "0x2b07",
10283 "0x2199",
10284 "0x2b05",
10285 "0x2196",
10286 "0x2195",
10287 "0x2194",
10288 "0x21a9",
10289 "0x21aa",
10290 "0x2934",
10291 "0x2935",
10292 "0x1f503",
10293 "0x1f504",
10294 "0x1f519",
10295 "0x1f51a",
10296 "0x1f51b",
10297 "0x1f51c",
10298 "0x1f51d",
10299 "0x1f6d0",
10300 "0x269b",
10301 "0x1f549",
10302 "0x2721",
10303 "0x2638",
10304 "0x262f",
10305 "0x271d",
10306 "0x2626",
10307 "0x262a",
10308 "0x262e",
10309 "0x1f54e",
10310 "0x1f52f",
10311 "0x1faaf",
10312 "0x2648",
10313 "0x2649",
10314 "0x264a",
10315 "0x264b",
10316 "0x264c",
10317 "0x264d",
10318 "0x264e",
10319 "0x264f",
10320 "0x2650",
10321 "0x2651",
10322 "0x2652",
10323 "0x2653",
10324 "0x26ce",
10325 "0x1f500",
10326 "0x1f501",
10327 "0x1f502",
10328 "0x25b6",
10329 "0x23e9",
10330 "0x23ed",
10331 "0x23ef",
10332 "0x25c0",
10333 "0x23ea",
10334 "0x23ee",
10335 "0x1f53c",
10336 "0x23eb",
10337 "0x1f53d",
10338 "0x23ec",
10339 "0x23f8",
10340 "0x23f9",
10341 "0x23fa",
10342 "0x23cf",
10343 "0x1f3a6",
10344 "0x1f505",
10345 "0x1f506",
10346 "0x1f4f6",
10347 "0x1f6dc",
10348 "0x1f4f3",
10349 "0x1f4f4",
10350 "0x2640",
10351 "0x2642",
10352 "0x26a7",
10353 "0x2716",
10354 "0x2795",
10355 "0x2796",
10356 "0x2797",
10357 "0x1f7f0",
10358 "0x267e",
10359 "0x203c",
10360 "0x2049",
10361 "0x2753",
10362 "0x2754",
10363 "0x2755",
10364 "0x2757",
10365 "0x3030",
10366 "0x1f4b1",
10367 "0x1f4b2",
10368 "0x2695",
10369 "0x267b",
10370 "0x269c",
10371 "0x1f531",
10372 "0x1f4db",
10373 "0x1f530",
10374 "0x2b55",
10375 "0x2705",
10376 "0x2611",
10377 "0x2714",
10378 "0x274c",
10379 "0x274e",
10380 "0x27b0",
10381 "0x27bf",
10382 "0x303d",
10383 "0x2733",
10384 "0x2734",
10385 "0x2747",
10386 "0x00a9",
10387 "0x00ae",
10388 "0x2122",
10389 "0x0023",
10390 "0xfe0f",
10391 "0x20e3",
10392 "0x002a",
10393 "0xfe0f",
10394 "0x20e3",
10395 "0x0030",
10396 "0xfe0f",
10397 "0x20e3",
10398 "0x0031",
10399 "0xfe0f",
10400 "0x20e3",
10401 "0x0032",
10402 "0xfe0f",
10403 "0x20e3",
10404 "0x0033",
10405 "0xfe0f",
10406 "0x20e3",
10407 "0x0034",
10408 "0xfe0f",
10409 "0x20e3",
10410 "0x0035",
10411 "0xfe0f",
10412 "0x20e3",
10413 "0x0036",
10414 "0xfe0f",
10415 "0x20e3",
10416 "0x0037",
10417 "0xfe0f",
10418 "0x20e3",
10419 "0x0038",
10420 "0xfe0f",
10421 "0x20e3",
10422 "0x0039",
10423 "0xfe0f",
10424 "0x20e3",
10425 "0x1f51f",
10426 "0x1f520",
10427 "0x1f521",
10428 "0x1f522",
10429 "0x1f523",
10430 "0x1f524",
10431 "0x1f170",
10432 "0x1f18e",
10433 "0x1f171",
10434 "0x1f191",
10435 "0x1f192",
10436 "0x1f193",
10437 "0x2139",
10438 "0x1f194",
10439 "0x24c2",
10440 "0x1f195",
10441 "0x1f196",
10442 "0x1f17e",
10443 "0x1f197",
10444 "0x1f17f",
10445 "0x1f198",
10446 "0x1f199",
10447 "0x1f19a",
10448 "0x1f201",
10449 "0x1f202",
10450 "0x1f237",
10451 "0x1f236",
10452 "0x1f22f",
10453 "0x1f250",
10454 "0x1f239",
10455 "0x1f21a",
10456 "0x1f232",
10457 "0x1f251",
10458 "0x1f238",
10459 "0x1f234",
10460 "0x1f233",
10461 "0x3297",
10462 "0x3299",
10463 "0x1f23a",
10464 "0x1f235",
10465 "0x1f534",
10466 "0x1f7e0",
10467 "0x1f7e1",
10468 "0x1f7e2",
10469 "0x1f535",
10470 "0x1f7e3",
10471 "0x1f7e4",
10472 "0x26ab",
10473 "0x26aa",
10474 "0x1f7e5",
10475 "0x1f7e7",
10476 "0x1f7e8",
10477 "0x1f7e9",
10478 "0x1f7e6",
10479 "0x1f7ea",
10480 "0x1f7eb",
10481 "0x2b1b",
10482 "0x2b1c",
10483 "0x25fc",
10484 "0x25fb",
10485 "0x25fe",
10486 "0x25fd",
10487 "0x25aa",
10488 "0x25ab",
10489 "0x1f536",
10490 "0x1f537",
10491 "0x1f538",
10492 "0x1f539",
10493 "0x1f53a",
10494 "0x1f53b",
10495 "0x1f4a0",
10496 "0x1f518",
10497 "0x1f533",
10498 "0x1f532"
10499 ],
10500 "flags": [
10501 "0x1f3c1",
10502 "0x1f6a9",
10503 "0x1f38c",
10504 "0x1f3f4",
10505 "0x1f3f3",
10506 "0x1f3f3",
10507 "0xfe0f",
10508 "0x200d",
10509 "0x1f308",
10510 "0x1f3f3",
10511 "0xfe0f",
10512 "0x200d",
10513 "0x26a7",
10514 "0xfe0f",
10515 "0x1f3f4",
10516 "0x200d",
10517 "0x2620",
10518 "0xfe0f",
10519 "0x1f1e6",
10520 "0x1f1e8",
10521 "0x1f1e6",
10522 "0x1f1e9",
10523 "0x1f1e6",
10524 "0x1f1ea",
10525 "0x1f1e6",
10526 "0x1f1eb",
10527 "0x1f1e6",
10528 "0x1f1ec",
10529 "0x1f1e6",
10530 "0x1f1ee",
10531 "0x1f1e6",
10532 "0x1f1f1",
10533 "0x1f1e6",
10534 "0x1f1f2",
10535 "0x1f1e6",
10536 "0x1f1f4",
10537 "0x1f1e6",
10538 "0x1f1f6",
10539 "0x1f1e6",
10540 "0x1f1f7",
10541 "0x1f1e6",
10542 "0x1f1f8",
10543 "0x1f1e6",
10544 "0x1f1f9",
10545 "0x1f1e6",
10546 "0x1f1fa",
10547 "0x1f1e6",
10548 "0x1f1fc",
10549 "0x1f1e6",
10550 "0x1f1fd",
10551 "0x1f1e6",
10552 "0x1f1ff",
10553 "0x1f1e7",
10554 "0x1f1e6",
10555 "0x1f1e7",
10556 "0x1f1e7",
10557 "0x1f1e7",
10558 "0x1f1e9",
10559 "0x1f1e7",
10560 "0x1f1ea",
10561 "0x1f1e7",
10562 "0x1f1eb",
10563 "0x1f1e7",
10564 "0x1f1ec",
10565 "0x1f1e7",
10566 "0x1f1ed",
10567 "0x1f1e7",
10568 "0x1f1ee",
10569 "0x1f1e7",
10570 "0x1f1ef",
10571 "0x1f1e7",
10572 "0x1f1f1",
10573 "0x1f1e7",
10574 "0x1f1f2",
10575 "0x1f1e7",
10576 "0x1f1f3",
10577 "0x1f1e7",
10578 "0x1f1f4",
10579 "0x1f1e7",
10580 "0x1f1f6",
10581 "0x1f1e7",
10582 "0x1f1f7",
10583 "0x1f1e7",
10584 "0x1f1f8",
10585 "0x1f1e7",
10586 "0x1f1f9",
10587 "0x1f1e7",
10588 "0x1f1fb",
10589 "0x1f1e7",
10590 "0x1f1fc",
10591 "0x1f1e7",
10592 "0x1f1fe",
10593 "0x1f1e7",
10594 "0x1f1ff",
10595 "0x1f1e8",
10596 "0x1f1e6",
10597 "0x1f1e8",
10598 "0x1f1e8",
10599 "0x1f1e8",
10600 "0x1f1e9",
10601 "0x1f1e8",
10602 "0x1f1eb",
10603 "0x1f1e8",
10604 "0x1f1ec",
10605 "0x1f1e8",
10606 "0x1f1ed",
10607 "0x1f1e8",
10608 "0x1f1ee",
10609 "0x1f1e8",
10610 "0x1f1f0",
10611 "0x1f1e8",
10612 "0x1f1f1",
10613 "0x1f1e8",
10614 "0x1f1f2",
10615 "0x1f1e8",
10616 "0x1f1f3",
10617 "0x1f1e8",
10618 "0x1f1f4",
10619 "0x1f1e8",
10620 "0x1f1f5",
10621 "0x1f1e8",
10622 "0x1f1f7",
10623 "0x1f1e8",
10624 "0x1f1fa",
10625 "0x1f1e8",
10626 "0x1f1fb",
10627 "0x1f1e8",
10628 "0x1f1fc",
10629 "0x1f1e8",
10630 "0x1f1fd",
10631 "0x1f1e8",
10632 "0x1f1fe",
10633 "0x1f1e8",
10634 "0x1f1ff",
10635 "0x1f1e9",
10636 "0x1f1ea",
10637 "0x1f1e9",
10638 "0x1f1ec",
10639 "0x1f1e9",
10640 "0x1f1ef",
10641 "0x1f1e9",
10642 "0x1f1f0",
10643 "0x1f1e9",
10644 "0x1f1f2",
10645 "0x1f1e9",
10646 "0x1f1f4",
10647 "0x1f1e9",
10648 "0x1f1ff",
10649 "0x1f1ea",
10650 "0x1f1e6",
10651 "0x1f1ea",
10652 "0x1f1e8",
10653 "0x1f1ea",
10654 "0x1f1ea",
10655 "0x1f1ea",
10656 "0x1f1ec",
10657 "0x1f1ea",
10658 "0x1f1ed",
10659 "0x1f1ea",
10660 "0x1f1f7",
10661 "0x1f1ea",
10662 "0x1f1f8",
10663 "0x1f1ea",
10664 "0x1f1f9",
10665 "0x1f1ea",
10666 "0x1f1fa",
10667 "0x1f1eb",
10668 "0x1f1ee",
10669 "0x1f1eb",
10670 "0x1f1ef",
10671 "0x1f1eb",
10672 "0x1f1f0",
10673 "0x1f1eb",
10674 "0x1f1f2",
10675 "0x1f1eb",
10676 "0x1f1f4",
10677 "0x1f1eb",
10678 "0x1f1f7",
10679 "0x1f1ec",
10680 "0x1f1e6",
10681 "0x1f1ec",
10682 "0x1f1e7",
10683 "0x1f1ec",
10684 "0x1f1e9",
10685 "0x1f1ec",
10686 "0x1f1ea",
10687 "0x1f1ec",
10688 "0x1f1eb",
10689 "0x1f1ec",
10690 "0x1f1ec",
10691 "0x1f1ec",
10692 "0x1f1ed",
10693 "0x1f1ec",
10694 "0x1f1ee",
10695 "0x1f1ec",
10696 "0x1f1f1",
10697 "0x1f1ec",
10698 "0x1f1f2",
10699 "0x1f1ec",
10700 "0x1f1f3",
10701 "0x1f1ec",
10702 "0x1f1f5",
10703 "0x1f1ec",
10704 "0x1f1f6",
10705 "0x1f1ec",
10706 "0x1f1f7",
10707 "0x1f1ec",
10708 "0x1f1f8",
10709 "0x1f1ec",
10710 "0x1f1f9",
10711 "0x1f1ec",
10712 "0x1f1fa",
10713 "0x1f1ec",
10714 "0x1f1fc",
10715 "0x1f1ec",
10716 "0x1f1fe",
10717 "0x1f1ed",
10718 "0x1f1f0",
10719 "0x1f1ed",
10720 "0x1f1f2",
10721 "0x1f1ed",
10722 "0x1f1f3",
10723 "0x1f1ed",
10724 "0x1f1f7",
10725 "0x1f1ed",
10726 "0x1f1f9",
10727 "0x1f1ed",
10728 "0x1f1fa",
10729 "0x1f1ee",
10730 "0x1f1e8",
10731 "0x1f1ee",
10732 "0x1f1e9",
10733 "0x1f1ee",
10734 "0x1f1ea",
10735 "0x1f1ee",
10736 "0x1f1f1",
10737 "0x1f1ee",
10738 "0x1f1f2",
10739 "0x1f1ee",
10740 "0x1f1f3",
10741 "0x1f1ee",
10742 "0x1f1f4",
10743 "0x1f1ee",
10744 "0x1f1f6",
10745 "0x1f1ee",
10746 "0x1f1f7",
10747 "0x1f1ee",
10748 "0x1f1f8",
10749 "0x1f1ee",
10750 "0x1f1f9",
10751 "0x1f1ef",
10752 "0x1f1ea",
10753 "0x1f1ef",
10754 "0x1f1f2",
10755 "0x1f1ef",
10756 "0x1f1f4",
10757 "0x1f1ef",
10758 "0x1f1f5",
10759 "0x1f1f0",
10760 "0x1f1ea",
10761 "0x1f1f0",
10762 "0x1f1ec",
10763 "0x1f1f0",
10764 "0x1f1ed",
10765 "0x1f1f0",
10766 "0x1f1ee",
10767 "0x1f1f0",
10768 "0x1f1f2",
10769 "0x1f1f0",
10770 "0x1f1f3",
10771 "0x1f1f0",
10772 "0x1f1f5",
10773 "0x1f1f0",
10774 "0x1f1f7",
10775 "0x1f1f0",
10776 "0x1f1fc",
10777 "0x1f1f0",
10778 "0x1f1fe",
10779 "0x1f1f0",
10780 "0x1f1ff",
10781 "0x1f1f1",
10782 "0x1f1e6",
10783 "0x1f1f1",
10784 "0x1f1e7",
10785 "0x1f1f1",
10786 "0x1f1e8",
10787 "0x1f1f1",
10788 "0x1f1ee",
10789 "0x1f1f1",
10790 "0x1f1f0",
10791 "0x1f1f1",
10792 "0x1f1f7",
10793 "0x1f1f1",
10794 "0x1f1f8",
10795 "0x1f1f1",
10796 "0x1f1f9",
10797 "0x1f1f1",
10798 "0x1f1fa",
10799 "0x1f1f1",
10800 "0x1f1fb",
10801 "0x1f1f1",
10802 "0x1f1fe",
10803 "0x1f1f2",
10804 "0x1f1e6",
10805 "0x1f1f2",
10806 "0x1f1e8",
10807 "0x1f1f2",
10808 "0x1f1e9",
10809 "0x1f1f2",
10810 "0x1f1ea",
10811 "0x1f1f2",
10812 "0x1f1eb",
10813 "0x1f1f2",
10814 "0x1f1ec",
10815 "0x1f1f2",
10816 "0x1f1ed",
10817 "0x1f1f2",
10818 "0x1f1f0",
10819 "0x1f1f2",
10820 "0x1f1f1",
10821 "0x1f1f2",
10822 "0x1f1f2",
10823 "0x1f1f2",
10824 "0x1f1f3",
10825 "0x1f1f2",
10826 "0x1f1f4",
10827 "0x1f1f2",
10828 "0x1f1f5",
10829 "0x1f1f2",
10830 "0x1f1f6",
10831 "0x1f1f2",
10832 "0x1f1f7",
10833 "0x1f1f2",
10834 "0x1f1f8",
10835 "0x1f1f2",
10836 "0x1f1f9",
10837 "0x1f1f2",
10838 "0x1f1fa",
10839 "0x1f1f2",
10840 "0x1f1fb",
10841 "0x1f1f2",
10842 "0x1f1fc",
10843 "0x1f1f2",
10844 "0x1f1fd",
10845 "0x1f1f2",
10846 "0x1f1fe",
10847 "0x1f1f2",
10848 "0x1f1ff",
10849 "0x1f1f3",
10850 "0x1f1e6",
10851 "0x1f1f3",
10852 "0x1f1e8",
10853 "0x1f1f3",
10854 "0x1f1ea",
10855 "0x1f1f3",
10856 "0x1f1eb",
10857 "0x1f1f3",
10858 "0x1f1ec",
10859 "0x1f1f3",
10860 "0x1f1ee",
10861 "0x1f1f3",
10862 "0x1f1f1",
10863 "0x1f1f3",
10864 "0x1f1f4",
10865 "0x1f1f3",
10866 "0x1f1f5",
10867 "0x1f1f3",
10868 "0x1f1f7",
10869 "0x1f1f3",
10870 "0x1f1fa",
10871 "0x1f1f3",
10872 "0x1f1ff",
10873 "0x1f1f4",
10874 "0x1f1f2",
10875 "0x1f1f5",
10876 "0x1f1e6",
10877 "0x1f1f5",
10878 "0x1f1ea",
10879 "0x1f1f5",
10880 "0x1f1eb",
10881 "0x1f1f5",
10882 "0x1f1ec",
10883 "0x1f1f5",
10884 "0x1f1ed",
10885 "0x1f1f5",
10886 "0x1f1f0",
10887 "0x1f1f5",
10888 "0x1f1f1",
10889 "0x1f1f5",
10890 "0x1f1f2",
10891 "0x1f1f5",
10892 "0x1f1f3",
10893 "0x1f1f5",
10894 "0x1f1f7",
10895 "0x1f1f5",
10896 "0x1f1f8",
10897 "0x1f1f5",
10898 "0x1f1f9",
10899 "0x1f1f5",
10900 "0x1f1fc",
10901 "0x1f1f5",
10902 "0x1f1fe",
10903 "0x1f1f6",
10904 "0x1f1e6",
10905 "0x1f1f7",
10906 "0x1f1ea",
10907 "0x1f1f7",
10908 "0x1f1f4",
10909 "0x1f1f7",
10910 "0x1f1f8",
10911 "0x1f1f7",
10912 "0x1f1fa",
10913 "0x1f1f7",
10914 "0x1f1fc",
10915 "0x1f1f8",
10916 "0x1f1e6",
10917 "0x1f1f8",
10918 "0x1f1e7",
10919 "0x1f1f8",
10920 "0x1f1e8",
10921 "0x1f1f8",
10922 "0x1f1e9",
10923 "0x1f1f8",
10924 "0x1f1ea",
10925 "0x1f1f8",
10926 "0x1f1ec",
10927 "0x1f1f8",
10928 "0x1f1ed",
10929 "0x1f1f8",
10930 "0x1f1ee",
10931 "0x1f1f8",
10932 "0x1f1ef",
10933 "0x1f1f8",
10934 "0x1f1f0",
10935 "0x1f1f8",
10936 "0x1f1f1",
10937 "0x1f1f8",
10938 "0x1f1f2",
10939 "0x1f1f8",
10940 "0x1f1f3",
10941 "0x1f1f8",
10942 "0x1f1f4",
10943 "0x1f1f8",
10944 "0x1f1f7",
10945 "0x1f1f8",
10946 "0x1f1f8",
10947 "0x1f1f8",
10948 "0x1f1f9",
10949 "0x1f1f8",
10950 "0x1f1fb",
10951 "0x1f1f8",
10952 "0x1f1fd",
10953 "0x1f1f8",
10954 "0x1f1fe",
10955 "0x1f1f8",
10956 "0x1f1ff",
10957 "0x1f1f9",
10958 "0x1f1e6",
10959 "0x1f1f9",
10960 "0x1f1e8",
10961 "0x1f1f9",
10962 "0x1f1e9",
10963 "0x1f1f9",
10964 "0x1f1eb",
10965 "0x1f1f9",
10966 "0x1f1ec",
10967 "0x1f1f9",
10968 "0x1f1ed",
10969 "0x1f1f9",
10970 "0x1f1ef",
10971 "0x1f1f9",
10972 "0x1f1f0",
10973 "0x1f1f9",
10974 "0x1f1f1",
10975 "0x1f1f9",
10976 "0x1f1f2",
10977 "0x1f1f9",
10978 "0x1f1f3",
10979 "0x1f1f9",
10980 "0x1f1f4",
10981 "0x1f1f9",
10982 "0x1f1f7",
10983 "0x1f1f9",
10984 "0x1f1f9",
10985 "0x1f1f9",
10986 "0x1f1fb",
10987 "0x1f1f9",
10988 "0x1f1fc",
10989 "0x1f1f9",
10990 "0x1f1ff",
10991 "0x1f1fa",
10992 "0x1f1e6",
10993 "0x1f1fa",
10994 "0x1f1ec",
10995 "0x1f1fa",
10996 "0x1f1f2",
10997 "0x1f1fa",
10998 "0x1f1f3",
10999 "0x1f1fa",
11000 "0x1f1f8",
11001 "0x1f1fa",
11002 "0x1f1fe",
11003 "0x1f1fa",
11004 "0x1f1ff",
11005 "0x1f1fb",
11006 "0x1f1e6",
11007 "0x1f1fb",
11008 "0x1f1e8",
11009 "0x1f1fb",
11010 "0x1f1ea",
11011 "0x1f1fb",
11012 "0x1f1ec",
11013 "0x1f1fb",
11014 "0x1f1ee",
11015 "0x1f1fb",
11016 "0x1f1f3",
11017 "0x1f1fb",
11018 "0x1f1fa",
11019 "0x1f1fc",
11020 "0x1f1eb",
11021 "0x1f1fc",
11022 "0x1f1f8",
11023 "0x1f1fd",
11024 "0x1f1f0",
11025 "0x1f1fe",
11026 "0x1f1ea",
11027 "0x1f1fe",
11028 "0x1f1f9",
11029 "0x1f1ff",
11030 "0x1f1e6",
11031 "0x1f1ff",
11032 "0x1f1f2",
11033 "0x1f1ff",
11034 "0x1f1fc",
11035 "0x1f3f4",
11036 "0xe0067",
11037 "0xe0062",
11038 "0xe0065",
11039 "0xe006e",
11040 "0xe0067",
11041 "0xe007f",
11042 "0x1f3f4",
11043 "0xe0067",
11044 "0xe0062",
11045 "0xe0073",
11046 "0xe0063",
11047 "0xe0074",
11048 "0xe007f",
11049 "0x1f3f4",
11050 "0xe0067",
11051 "0xe0062",
11052 "0xe0077",
11053 "0xe006c",
11054 "0xe0073",
11055 "0xe007f"
11056 ]
11057 }
11058 };
11059
11060 var o_hasOwnProperty = Object.prototype.hasOwnProperty;
11061 var o_keys = (Object.keys || function(obj) {
11062 var result = [];
11063 for (var key in obj) {
11064 if (o_hasOwnProperty.call(obj, key)) {
11065 result.push(key);
11066 }
11067 }
11068
11069 return result;
11070 });
11071
11072
11073 function _copyObject(source, target) {
11074 var keys = o_keys(source);
11075 var key;
11076
11077 for (var i = 0, l = keys.length; i < l; i++) {
11078 key = keys[i];
11079 target[key] = source[key] || target[key];
11080 }
11081 }
11082
11083 function _copyArray(source, target) {
11084 for (var i = 0, l = source.length; i < l; i++) {
11085 target[i] = source[i];
11086 }
11087 }
11088
11089 function copyObject(source, _target) {
11090 var isArray = Array.isArray(source);
11091 var target = _target || (isArray ? new Array(source.length) : {});
11092
11093 if (isArray) {
11094 _copyArray(source, target);
11095 } else {
11096 _copyObject(source, target);
11097 }
11098
11099 return target;
11100 }
11101
11102 /** Get the data based on key**/
11103 Chance.prototype.get = function (name) {
11104 return copyObject(data[name]);
11105 };
11106
11107 // Mac Address
11108 Chance.prototype.mac_address = function(options){
11109 // typically mac addresses are separated by ":"
11110 // however they can also be separated by "-"
11111 // the network variant uses a dot every fourth byte
11112
11113 options = initOptions(options);
11114 if(!options.separator) {
11115 options.separator = options.networkVersion ? "." : ":";
11116 }
11117
11118 var mac_pool="ABCDEF1234567890",
11119 mac = "";
11120 if(!options.networkVersion) {
11121 mac = this.n(this.string, 6, { pool: mac_pool, length:2 }).join(options.separator);
11122 } else {
11123 mac = this.n(this.string, 3, { pool: mac_pool, length:4 }).join(options.separator);
11124 }
11125
11126 return mac;
11127 };
11128
11129 Chance.prototype.normal = function (options) {
11130 options = initOptions(options, {mean : 0, dev : 1, pool : []});
11131
11132 testRange(
11133 options.pool.constructor !== Array,
11134 "Chance: The pool option must be a valid array."
11135 );
11136 testRange(
11137 typeof options.mean !== 'number',
11138 "Chance: Mean (mean) must be a number"
11139 );
11140 testRange(
11141 typeof options.dev !== 'number',
11142 "Chance: Standard deviation (dev) must be a number"
11143 );
11144
11145 // If a pool has been passed, then we are returning an item from that pool,
11146 // using the normal distribution settings that were passed in
11147 if (options.pool.length > 0) {
11148 return this.normal_pool(options);
11149 }
11150
11151 // The Marsaglia Polar method
11152 var s, u, v, norm,
11153 mean = options.mean,
11154 dev = options.dev;
11155
11156 do {
11157 // U and V are from the uniform distribution on (-1, 1)
11158 u = this.random() * 2 - 1;
11159 v = this.random() * 2 - 1;
11160
11161 s = u * u + v * v;
11162 } while (s >= 1);
11163
11164 // Compute the standard normal variate
11165 norm = u * Math.sqrt(-2 * Math.log(s) / s);
11166
11167 // Shape and scale
11168 return dev * norm + mean;
11169 };
11170
11171 Chance.prototype.normal_pool = function(options) {
11172 var performanceCounter = 0;
11173 do {
11174 var idx = Math.round(this.normal({ mean: options.mean, dev: options.dev }));
11175 if (idx < options.pool.length && idx >= 0) {
11176 return options.pool[idx];
11177 } else {
11178 performanceCounter++;
11179 }
11180 } while(performanceCounter < 100);
11181
11182 throw new RangeError("Chance: Your pool is too small for the given mean and standard deviation. Please adjust.");
11183 };
11184
11185 Chance.prototype.radio = function (options) {
11186 // Initial Letter (Typically Designated by Side of Mississippi River)
11187 options = initOptions(options, {side : "?"});
11188 var fl = "";
11189 switch (options.side.toLowerCase()) {
11190 case "east":
11191 case "e":
11192 fl = "W";
11193 break;
11194 case "west":
11195 case "w":
11196 fl = "K";
11197 break;
11198 default:
11199 fl = this.character({pool: "KW"});
11200 break;
11201 }
11202
11203 return fl + this.character({alpha: true, casing: "upper"}) +
11204 this.character({alpha: true, casing: "upper"}) +
11205 this.character({alpha: true, casing: "upper"});
11206 };
11207
11208 // Set the data as key and data or the data map
11209 Chance.prototype.set = function (name, values) {
11210 if (typeof name === "string") {
11211 data[name] = values;
11212 } else {
11213 data = copyObject(name, data);
11214 }
11215 };
11216
11217 Chance.prototype.tv = function (options) {
11218 return this.radio(options);
11219 };
11220
11221 // ID number for Brazil companies
11222 Chance.prototype.cnpj = function () {
11223 var n = this.n(this.natural, 8, { max: 9 });
11224 var d1 = 2+n[7]*6+n[6]*7+n[5]*8+n[4]*9+n[3]*2+n[2]*3+n[1]*4+n[0]*5;
11225 d1 = 11 - (d1 % 11);
11226 if (d1>=10){
11227 d1 = 0;
11228 }
11229 var d2 = d1*2+3+n[7]*7+n[6]*8+n[5]*9+n[4]*2+n[3]*3+n[2]*4+n[1]*5+n[0]*6;
11230 d2 = 11 - (d2 % 11);
11231 if (d2>=10){
11232 d2 = 0;
11233 }
11234 return ''+n[0]+n[1]+'.'+n[2]+n[3]+n[4]+'.'+n[5]+n[6]+n[7]+'/0001-'+d1+d2;
11235 };
11236
11237 Chance.prototype.emotion = function () {
11238 return this.pick(this.get("emotions"));
11239 };
11240
11241 // -- End Miscellaneous --
11242
11243 Chance.prototype.mersenne_twister = function (seed) {
11244 return new MersenneTwister(seed);
11245 };
11246
11247 Chance.prototype.blueimp_md5 = function () {
11248 return new BlueImpMD5();
11249 };
11250
11251 // Mersenne Twister from https://gist.github.com/banksean/300494
11252 /*
11253 A C-program for MT19937, with initialization improved 2002/1/26.
11254 Coded by Takuji Nishimura and Makoto Matsumoto.
11255
11256 Before using, initialize the state by using init_genrand(seed)
11257 or init_by_array(init_key, key_length).
11258
11259 Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
11260 All rights reserved.
11261
11262 Redistribution and use in source and binary forms, with or without
11263 modification, are permitted provided that the following conditions
11264 are met:
11265
11266 1. Redistributions of source code must retain the above copyright
11267 notice, this list of conditions and the following disclaimer.
11268
11269 2. Redistributions in binary form must reproduce the above copyright
11270 notice, this list of conditions and the following disclaimer in the
11271 documentation and/or other materials provided with the distribution.
11272
11273 3. The names of its contributors may not be used to endorse or promote
11274 products derived from this software without specific prior written
11275 permission.
11276
11277 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
11278 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11279 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
11280 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
11281 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
11282 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
11283 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
11284 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
11285 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
11286 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
11287 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11288
11289
11290 Any feedback is very welcome.
11291 http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
11292 email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space)
11293 */
11294 var MersenneTwister = function (seed) {
11295 if (seed === undefined) {
11296 // kept random number same size as time used previously to ensure no unexpected results downstream
11297 seed = Math.floor(Math.random()*Math.pow(10,13));
11298 }
11299 /* Period parameters */
11300 this.N = 624;
11301 this.M = 397;
11302 this.MATRIX_A = 0x9908b0df; /* constant vector a */
11303 this.UPPER_MASK = 0x80000000; /* most significant w-r bits */
11304 this.LOWER_MASK = 0x7fffffff; /* least significant r bits */
11305
11306 this.mt = new Array(this.N); /* the array for the state vector */
11307 this.mti = this.N + 1; /* mti==N + 1 means mt[N] is not initialized */
11308
11309 this.init_genrand(seed);
11310 };
11311
11312 /* initializes mt[N] with a seed */
11313 MersenneTwister.prototype.init_genrand = function (s) {
11314 this.mt[0] = s >>> 0;
11315 for (this.mti = 1; this.mti < this.N; this.mti++) {
11316 s = this.mt[this.mti - 1] ^ (this.mt[this.mti - 1] >>> 30);
11317 this.mt[this.mti] = (((((s & 0xffff0000) >>> 16) * 1812433253) << 16) + (s & 0x0000ffff) * 1812433253) + this.mti;
11318 /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */
11319 /* In the previous versions, MSBs of the seed affect */
11320 /* only MSBs of the array mt[]. */
11321 /* 2002/01/09 modified by Makoto Matsumoto */
11322 this.mt[this.mti] >>>= 0;
11323 /* for >32 bit machines */
11324 }
11325 };
11326
11327 /* initialize by an array with array-length */
11328 /* init_key is the array for initializing keys */
11329 /* key_length is its length */
11330 /* slight change for C++, 2004/2/26 */
11331 MersenneTwister.prototype.init_by_array = function (init_key, key_length) {
11332 var i = 1, j = 0, k, s;
11333 this.init_genrand(19650218);
11334 k = (this.N > key_length ? this.N : key_length);
11335 for (; k; k--) {
11336 s = this.mt[i - 1] ^ (this.mt[i - 1] >>> 30);
11337 this.mt[i] = (this.mt[i] ^ (((((s & 0xffff0000) >>> 16) * 1664525) << 16) + ((s & 0x0000ffff) * 1664525))) + init_key[j] + j; /* non linear */
11338 this.mt[i] >>>= 0; /* for WORDSIZE > 32 machines */
11339 i++;
11340 j++;
11341 if (i >= this.N) { this.mt[0] = this.mt[this.N - 1]; i = 1; }
11342 if (j >= key_length) { j = 0; }
11343 }
11344 for (k = this.N - 1; k; k--) {
11345 s = this.mt[i - 1] ^ (this.mt[i - 1] >>> 30);
11346 this.mt[i] = (this.mt[i] ^ (((((s & 0xffff0000) >>> 16) * 1566083941) << 16) + (s & 0x0000ffff) * 1566083941)) - i; /* non linear */
11347 this.mt[i] >>>= 0; /* for WORDSIZE > 32 machines */
11348 i++;
11349 if (i >= this.N) { this.mt[0] = this.mt[this.N - 1]; i = 1; }
11350 }
11351
11352 this.mt[0] = 0x80000000; /* MSB is 1; assuring non-zero initial array */
11353 };
11354
11355 /* generates a random number on [0,0xffffffff]-interval */
11356 MersenneTwister.prototype.genrand_int32 = function () {
11357 var y;
11358 var mag01 = new Array(0x0, this.MATRIX_A);
11359 /* mag01[x] = x * MATRIX_A for x=0,1 */
11360
11361 if (this.mti >= this.N) { /* generate N words at one time */
11362 var kk;
11363
11364 if (this.mti === this.N + 1) { /* if init_genrand() has not been called, */
11365 this.init_genrand(5489); /* a default initial seed is used */
11366 }
11367 for (kk = 0; kk < this.N - this.M; kk++) {
11368 y = (this.mt[kk]&this.UPPER_MASK)|(this.mt[kk + 1]&this.LOWER_MASK);
11369 this.mt[kk] = this.mt[kk + this.M] ^ (y >>> 1) ^ mag01[y & 0x1];
11370 }
11371 for (;kk < this.N - 1; kk++) {
11372 y = (this.mt[kk]&this.UPPER_MASK)|(this.mt[kk + 1]&this.LOWER_MASK);
11373 this.mt[kk] = this.mt[kk + (this.M - this.N)] ^ (y >>> 1) ^ mag01[y & 0x1];
11374 }
11375 y = (this.mt[this.N - 1]&this.UPPER_MASK)|(this.mt[0]&this.LOWER_MASK);
11376 this.mt[this.N - 1] = this.mt[this.M - 1] ^ (y >>> 1) ^ mag01[y & 0x1];
11377
11378 this.mti = 0;
11379 }
11380
11381 y = this.mt[this.mti++];
11382
11383 /* Tempering */
11384 y ^= (y >>> 11);
11385 y ^= (y << 7) & 0x9d2c5680;
11386 y ^= (y << 15) & 0xefc60000;
11387 y ^= (y >>> 18);
11388
11389 return y >>> 0;
11390 };
11391
11392 /* generates a random number on [0,0x7fffffff]-interval */
11393 MersenneTwister.prototype.genrand_int31 = function () {
11394 return (this.genrand_int32() >>> 1);
11395 };
11396
11397 /* generates a random number on [0,1]-real-interval */
11398 MersenneTwister.prototype.genrand_real1 = function () {
11399 return this.genrand_int32() * (1.0 / 4294967295.0);
11400 /* divided by 2^32-1 */
11401 };
11402
11403 /* generates a random number on [0,1)-real-interval */
11404 MersenneTwister.prototype.random = function () {
11405 return this.genrand_int32() * (1.0 / 4294967296.0);
11406 /* divided by 2^32 */
11407 };
11408
11409 /* generates a random number on (0,1)-real-interval */
11410 MersenneTwister.prototype.genrand_real3 = function () {
11411 return (this.genrand_int32() + 0.5) * (1.0 / 4294967296.0);
11412 /* divided by 2^32 */
11413 };
11414
11415 /* generates a random number on [0,1) with 53-bit resolution*/
11416 MersenneTwister.prototype.genrand_res53 = function () {
11417 var a = this.genrand_int32()>>>5, b = this.genrand_int32()>>>6;
11418 return (a * 67108864.0 + b) * (1.0 / 9007199254740992.0);
11419 };
11420
11421 // BlueImp MD5 hashing algorithm from https://github.com/blueimp/JavaScript-MD5
11422 var BlueImpMD5 = function () {};
11423
11424 BlueImpMD5.prototype.VERSION = '1.0.1';
11425
11426 /*
11427 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
11428 * to work around bugs in some JS interpreters.
11429 */
11430 BlueImpMD5.prototype.safe_add = function safe_add(x, y) {
11431 var lsw = (x & 0xFFFF) + (y & 0xFFFF),
11432 msw = (x >> 16) + (y >> 16) + (lsw >> 16);
11433 return (msw << 16) | (lsw & 0xFFFF);
11434 };
11435
11436 /*
11437 * Bitwise rotate a 32-bit number to the left.
11438 */
11439 BlueImpMD5.prototype.bit_roll = function (num, cnt) {
11440 return (num << cnt) | (num >>> (32 - cnt));
11441 };
11442
11443 /*
11444 * These functions implement the five basic operations the algorithm uses.
11445 */
11446 BlueImpMD5.prototype.md5_cmn = function (q, a, b, x, s, t) {
11447 return this.safe_add(this.bit_roll(this.safe_add(this.safe_add(a, q), this.safe_add(x, t)), s), b);
11448 };
11449 BlueImpMD5.prototype.md5_ff = function (a, b, c, d, x, s, t) {
11450 return this.md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
11451 };
11452 BlueImpMD5.prototype.md5_gg = function (a, b, c, d, x, s, t) {
11453 return this.md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
11454 };
11455 BlueImpMD5.prototype.md5_hh = function (a, b, c, d, x, s, t) {
11456 return this.md5_cmn(b ^ c ^ d, a, b, x, s, t);
11457 };
11458 BlueImpMD5.prototype.md5_ii = function (a, b, c, d, x, s, t) {
11459 return this.md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
11460 };
11461
11462 /*
11463 * Calculate the MD5 of an array of little-endian words, and a bit length.
11464 */
11465 BlueImpMD5.prototype.binl_md5 = function (x, len) {
11466 /* append padding */
11467 x[len >> 5] |= 0x80 << (len % 32);
11468 x[(((len + 64) >>> 9) << 4) + 14] = len;
11469
11470 var i, olda, oldb, oldc, oldd,
11471 a = 1732584193,
11472 b = -271733879,
11473 c = -1732584194,
11474 d = 271733878;
11475
11476 for (i = 0; i < x.length; i += 16) {
11477 olda = a;
11478 oldb = b;
11479 oldc = c;
11480 oldd = d;
11481
11482 a = this.md5_ff(a, b, c, d, x[i], 7, -680876936);
11483 d = this.md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
11484 c = this.md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
11485 b = this.md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
11486 a = this.md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
11487 d = this.md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
11488 c = this.md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
11489 b = this.md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
11490 a = this.md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
11491 d = this.md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
11492 c = this.md5_ff(c, d, a, b, x[i + 10], 17, -42063);
11493 b = this.md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
11494 a = this.md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
11495 d = this.md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
11496 c = this.md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
11497 b = this.md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
11498
11499 a = this.md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
11500 d = this.md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
11501 c = this.md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
11502 b = this.md5_gg(b, c, d, a, x[i], 20, -373897302);
11503 a = this.md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
11504 d = this.md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
11505 c = this.md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
11506 b = this.md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
11507 a = this.md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
11508 d = this.md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
11509 c = this.md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
11510 b = this.md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
11511 a = this.md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
11512 d = this.md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
11513 c = this.md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
11514 b = this.md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
11515
11516 a = this.md5_hh(a, b, c, d, x[i + 5], 4, -378558);
11517 d = this.md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
11518 c = this.md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
11519 b = this.md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
11520 a = this.md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
11521 d = this.md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
11522 c = this.md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
11523 b = this.md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
11524 a = this.md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
11525 d = this.md5_hh(d, a, b, c, x[i], 11, -358537222);
11526 c = this.md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
11527 b = this.md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
11528 a = this.md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
11529 d = this.md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
11530 c = this.md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
11531 b = this.md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
11532
11533 a = this.md5_ii(a, b, c, d, x[i], 6, -198630844);
11534 d = this.md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
11535 c = this.md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
11536 b = this.md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
11537 a = this.md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
11538 d = this.md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
11539 c = this.md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
11540 b = this.md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
11541 a = this.md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
11542 d = this.md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
11543 c = this.md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
11544 b = this.md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
11545 a = this.md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
11546 d = this.md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
11547 c = this.md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
11548 b = this.md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
11549
11550 a = this.safe_add(a, olda);
11551 b = this.safe_add(b, oldb);
11552 c = this.safe_add(c, oldc);
11553 d = this.safe_add(d, oldd);
11554 }
11555 return [a, b, c, d];
11556 };
11557
11558 /*
11559 * Convert an array of little-endian words to a string
11560 */
11561 BlueImpMD5.prototype.binl2rstr = function (input) {
11562 var i,
11563 output = '';
11564 for (i = 0; i < input.length * 32; i += 8) {
11565 output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF);
11566 }
11567 return output;
11568 };
11569
11570 /*
11571 * Convert a raw string to an array of little-endian words
11572 * Characters >255 have their high-byte silently ignored.
11573 */
11574 BlueImpMD5.prototype.rstr2binl = function (input) {
11575 var i,
11576 output = [];
11577 output[(input.length >> 2) - 1] = undefined;
11578 for (i = 0; i < output.length; i += 1) {
11579 output[i] = 0;
11580 }
11581 for (i = 0; i < input.length * 8; i += 8) {
11582 output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (i % 32);
11583 }
11584 return output;
11585 };
11586
11587 /*
11588 * Calculate the MD5 of a raw string
11589 */
11590 BlueImpMD5.prototype.rstr_md5 = function (s) {
11591 return this.binl2rstr(this.binl_md5(this.rstr2binl(s), s.length * 8));
11592 };
11593
11594 /*
11595 * Calculate the HMAC-MD5, of a key and some data (raw strings)
11596 */
11597 BlueImpMD5.prototype.rstr_hmac_md5 = function (key, data) {
11598 var i,
11599 bkey = this.rstr2binl(key),
11600 ipad = [],
11601 opad = [],
11602 hash;
11603 ipad[15] = opad[15] = undefined;
11604 if (bkey.length > 16) {
11605 bkey = this.binl_md5(bkey, key.length * 8);
11606 }
11607 for (i = 0; i < 16; i += 1) {
11608 ipad[i] = bkey[i] ^ 0x36363636;
11609 opad[i] = bkey[i] ^ 0x5C5C5C5C;
11610 }
11611 hash = this.binl_md5(ipad.concat(this.rstr2binl(data)), 512 + data.length * 8);
11612 return this.binl2rstr(this.binl_md5(opad.concat(hash), 512 + 128));
11613 };
11614
11615 /*
11616 * Convert a raw string to a hex string
11617 */
11618 BlueImpMD5.prototype.rstr2hex = function (input) {
11619 var hex_tab = '0123456789abcdef',
11620 output = '',
11621 x,
11622 i;
11623 for (i = 0; i < input.length; i += 1) {
11624 x = input.charCodeAt(i);
11625 output += hex_tab.charAt((x >>> 4) & 0x0F) +
11626 hex_tab.charAt(x & 0x0F);
11627 }
11628 return output;
11629 };
11630
11631 /*
11632 * Encode a string as utf-8
11633 */
11634 BlueImpMD5.prototype.str2rstr_utf8 = function (input) {
11635 return unescape(encodeURIComponent(input));
11636 };
11637
11638 /*
11639 * Take string arguments and return either raw or hex encoded strings
11640 */
11641 BlueImpMD5.prototype.raw_md5 = function (s) {
11642 return this.rstr_md5(this.str2rstr_utf8(s));
11643 };
11644 BlueImpMD5.prototype.hex_md5 = function (s) {
11645 return this.rstr2hex(this.raw_md5(s));
11646 };
11647 BlueImpMD5.prototype.raw_hmac_md5 = function (k, d) {
11648 return this.rstr_hmac_md5(this.str2rstr_utf8(k), this.str2rstr_utf8(d));
11649 };
11650 BlueImpMD5.prototype.hex_hmac_md5 = function (k, d) {
11651 return this.rstr2hex(this.raw_hmac_md5(k, d));
11652 };
11653
11654 BlueImpMD5.prototype.md5 = function (string, key, raw) {
11655 if (!key) {
11656 if (!raw) {
11657 return this.hex_md5(string);
11658 }
11659
11660 return this.raw_md5(string);
11661 }
11662
11663 if (!raw) {
11664 return this.hex_hmac_md5(key, string);
11665 }
11666
11667 return this.raw_hmac_md5(key, string);
11668 };
11669
11670 // CommonJS module
11671 if (typeof exports !== 'undefined') {
11672 if (typeof module !== 'undefined' && module.exports) {
11673 exports = module.exports = Chance;
11674 }
11675 exports.Chance = Chance;
11676 }
11677
11678 // Register as an anonymous AMD module
11679 if (typeof define === 'function' && define.amd) {
11680 define([], function () {
11681 return Chance;
11682 });
11683 }
11684
11685 // if there is a importsScrips object define chance for worker
11686 // allows worker to use full Chance functionality with seed
11687 if (typeof importScripts !== 'undefined') {
11688 chance = new Chance();
11689 self.Chance = Chance;
11690 }
11691
11692 // If there is a window object, that at least has a document property,
11693 // instantiate and define chance on the window
11694 if (typeof window === "object" && typeof window.document === "object") {
11695 window.Chance = Chance;
11696 window.chance = new Chance();
11697 }
11698})();