UNPKG

wdt-emoji-bundle

Version:

Slack like emoji selector with apple, twitter, google, emojione, facebook, messenger and custom emoji support.

798 lines (727 loc) 189 kB
"use strict"; ;(function () { var root = this; var previous_emoji = root.EmojiConvertor; /** * @global * @namespace */ var emoji = function () { var self = this; /** * The set of images to use for graphical emoji. * * @memberof emoji * @type {string} */ self.img_set = 'apple'; /** * Configuration details for different image sets. This includes a path to a directory containing the * individual images (`path`) and a URL to sprite sheets (`sheet`). All of these images can be found * in the [emoji-data repository]{@link https://github.com/iamcal/emoji-data}. Using a CDN for these * is not a bad idea. * * @memberof emoji * @type {object} */ self.img_sets = { 'apple' : {'path': '/emoji-data/img-apple-64/', 'sheet': '/emoji-data/sheet_apple_64.png', 'mask': 1}, 'google' : {'path': '/emoji-data/img-google-64/', 'sheet': '/emoji-data/sheet_google_64.png', 'mask': 2}, 'twitter' : {'path': '/emoji-data/img-twitter-64/', 'sheet': '/emoji-data/sheet_twitter_64.png', 'mask': 4}, 'emojione' : {'path': '/emoji-data/img-emojione-64/', 'sheet': '/emoji-data/sheet_emojione_64.png', 'mask': 8}, 'facebook' : {'path': '/emoji-data/img-facebook-64/', 'sheet': '/emoji-data/sheet_facebook_64.png', 'mask': 16}, 'messenger': {'path': '/emoji-data/img-messenger-64/', 'sheet': '/emoji-data/sheet_messenger_64.png', 'mask': 32}, }; /** * Use a CSS class instead of specifying a sprite or background image for * the span representing the emoticon. This requires a CSS sheet with * emoticon data-uris. * * @memberof emoji * @type bool * @todo document how to build the CSS stylesheet self requires. */ self.use_css_imgs = false; /** * Instead of replacing emoticons with the appropriate representations, * replace them with their colon string representation. * @memberof emoji * @type bool */ self.colons_mode = false; self.text_mode = false; /** * If true, sets the "title" property on the span or image that gets * inserted for the emoticon. * @memberof emoji * @type bool */ self.include_title = false; /** * If true, sets the text of the span or image that gets inserted for the * emoticon. * @memberof emoji * @type bool */ self.include_text = false; /** * If the platform supports native emoticons, use those instead * of the fallbacks. * @memberof emoji * @type bool */ self.allow_native = true; /** * Set to true to use CSS sprites instead of individual images on * platforms that support it. * * @memberof emoji * @type bool */ self.use_sheet = false; /** * * Set to true to avoid black & white native Windows emoji being used. * * @memberof emoji * @type bool */ self.avoid_ms_emoji = true; /** * * Set to true to allow :CAPITALIZATION: * * @memberof emoji * @type bool */ self.allow_caps = false; /** * * Suffix to allow for individual image cache busting * * @memberof emoji * @type string */ self.img_suffix = ''; // Keeps track of what has been initialized. /** @private */ self.inits = {}; self.map = {}; // discover the environment settings self.init_env(); return self; } emoji.prototype.noConflict = function () { root.EmojiConvertor = previous_emoji; return emoji; } /** * @memberof emoji * @param {string} str A string potentially containing ascii emoticons * (ie. `:)`) * * @returns {string} A new string with all emoticons in `str` * replaced by a representatation that's supported by the current * environtment. */ emoji.prototype.replace_emoticons = function (str) { var self = this; var colonized = self.replace_emoticons_with_colons(str); return self.replace_colons(colonized); }; /** * @memberof emoji * @param {string} str A string potentially containing ascii emoticons * (ie. `:)`) * * @returns {string} A new string with all emoticons in `str` * replaced by their colon string representations (ie. `:smile:`) */ emoji.prototype.replace_emoticons_with_colons = function (str) { var self = this; self.init_emoticons(); var _prev_offset = 0; var emoticons_with_parens = []; var str_replaced = str.replace(self.rx_emoticons, function (m, $1, emoticon, offset) { var prev_offset = _prev_offset; _prev_offset = offset + m.length; var has_open_paren = emoticon.indexOf('(') !== -1; var has_close_paren = emoticon.indexOf(')') !== -1; /* * Track paren-having emoticons for fixing later */ if ((has_open_paren || has_close_paren) && emoticons_with_parens.indexOf(emoticon) == -1) { emoticons_with_parens.push(emoticon); } /* * Look for preceding open paren for emoticons that contain a close paren * This prevents matching "8)" inside "(around 7 - 8)" */ if (has_close_paren && !has_open_paren) { var piece = str.substring(prev_offset, offset); if (piece.indexOf('(') !== -1 && piece.indexOf(')') === -1) return m; } /* * See if we're in a numbered list * This prevents matching "8)" inside "7) foo\n8) bar" */ if (m === '\n8)') { var before_match = str.substring(0, offset); if (/\n?(6\)|7\))/.test(before_match)) return m; } var val = self.data[self.map.emoticons[emoticon]][3][0]; return val ? $1 + ':' + val + ':' : m; }); /* * Come back and fix emoticons we ignored because they were inside parens. * It's useful to do self at the end so we don't get tripped up by other, * normal emoticons */ if (emoticons_with_parens.length) { var escaped_emoticons = emoticons_with_parens.map(self.escape_rx); var parenthetical_rx = new RegExp('(\\(.+)(' + escaped_emoticons.join('|') + ')(.+\\))', 'g'); str_replaced = str_replaced.replace(parenthetical_rx, function (m, $1, emoticon, $2) { var val = self.data[self.map.emoticons[emoticon]][3][0]; return val ? $1 + ':' + val + ':' + $2 : m; }); } return str_replaced; }; /** * @memberof emoji * @param {string} str A string potentially containing colon string * representations of emoticons (ie. `:smile:`) * * @returns {string} A new string with all colon string emoticons replaced * with the appropriate representation. */ emoji.prototype.replace_colons = function (str) { var self = this; self.init_colons(); return str.replace(self.rx_colons, function (m) { var idx = m.substr(1, m.length - 2); if (self.allow_caps) idx = idx.toLowerCase(); // special case - an emoji with a skintone modified if (idx.indexOf('::skin-tone-') > -1) { var skin_tone = idx.substr(-1, 1); var skin_idx = 'skin-tone-' + skin_tone; var skin_val = self.map.colons[skin_idx]; idx = idx.substr(0, idx.length - 13); var val = self.map.colons[idx]; if (val) { return self.replacement(val, idx, ':', { 'idx' : skin_val, 'actual' : skin_idx, 'wrapper': ':' }); } else { return ':' + idx + ':' + self.replacement(skin_val, skin_idx, ':'); } } else { var val = self.map.colons[idx]; return val ? self.replacement(val, idx, ':') : m; } }); }; /** * @memberof emoji * @param {string} str A string potentially containing unified unicode * emoticons. (ie. 😄) * * @returns {string} A new string with all unicode emoticons replaced with * the appropriate representation for the current environment. */ emoji.prototype.replace_unified = function (str) { var self = this; self.init_unified(); return str.replace(self.rx_unified, function (m, p1, p2) { var val = self.map.unified[p1]; if (!val) return m; var idx = null; if (p2 == '\uD83C\uDFFB') idx = '1f3fb'; if (p2 == '\uD83C\uDFFC') idx = '1f3fc'; if (p2 == '\uD83C\uDFFD') idx = '1f3fd'; if (p2 == '\uD83C\uDFFE') idx = '1f3fe'; if (p2 == '\uD83C\uDFFF') idx = '1f3ff'; if (idx) { return self.replacement(val, null, null, { idx : idx, actual : p2, wrapper: '' }); } return self.replacement(val); }); }; emoji.prototype.addAliases = function (map) { var self = this; self.init_colons(); for (var i in map) { self.map.colons[i] = map[i]; } }; emoji.prototype.removeAliases = function (list) { var self = this; for (var i = 0; i < list.length; i++) { var alias = list[i]; // first, delete the alias mapping delete self.map.colons[alias]; // now reset it to the default, if one exists finder_block: { for (var j in self.data) { for (var k = 0; k < self.data[j][3].length; k++) { if (alias == self.data[j][3][k]) { self.map.colons[alias] = j; break finder_block; } } } } } }; // Does the actual replacement of a character with the appropriate /** @private */ emoji.prototype.replacement = function (idx, actual, wrapper, variation) { var self = this; var full_idx = idx; // for emoji with variation modifiers, set `extra` to the standalone output for the // modifier (used if we can't combine the glyph) and set variation_idx to key of the // variation modifier (used below) var extra = ''; var variation_idx = 0; if (typeof variation === 'object') { extra = self.replacement(variation.idx, variation.actual, variation.wrapper); variation_idx = idx + '-' + variation.idx; } var img_set = self.img_set; // When not using sheets (which all contain all emoji), // make sure we use an img_set that contains this emoji. // For now, assume set "apple" has all individual images. if ((!self.use_sheet || !self.supports_css) && !(self.data[idx][6] & self.img_sets[self.img_set].mask)) { img_set = 'apple'; } // deal with simple modes (colons and text) first wrapper = wrapper || ''; if (self.colons_mode) return ':' + self.data[idx][3][0] + ':' + extra; var text_name = (actual) ? wrapper + actual + wrapper : self.data[idx][8] || wrapper + self.data[idx][3][0] + wrapper; if (self.text_mode) return text_name + extra; // native modes next. // for variations selectors, we just need to output them raw, which `extra` will contain. self.init_env(); if (self.replace_mode == 'unified' && self.allow_native && self.data[idx][0][0]) return self.data[idx][0][0] + extra; if (self.replace_mode == 'softbank' && self.allow_native && self.data[idx][1]) return self.data[idx][1] + extra; if (self.replace_mode == 'google' && self.allow_native && self.data[idx][2]) return self.data[idx][2] + extra; // finally deal with image modes. // variation selectors are more complex here - if the image set and particular emoji supports variations, then // use the variation image. otherwise, return it as a separate image (already calculated in `extra`). // first we set up the params we'll use if we can't use a variation. var img = self.data[idx][7] || self.img_sets[img_set].path + idx + '.png' + self.img_suffix; var title = self.include_title ? ' title="' + (actual || self.data[idx][3][0]) + '"' : ''; var text = self.include_text ? wrapper + (actual || self.data[idx][3][0]) + wrapper : ''; var px = self.data[idx][4]; var py = self.data[idx][5]; // now we'll see if we can use a varition. if we can, we can override the params above and blank // out `extra` so we output a sinlge glyph. // we need to check that: // * we requested a variation // * such a variation exists in `emoji.variations_data` // * we're not using a custom image for self glyph // * the variation has an image defined for the current image set if (variation_idx && self.variations_data[variation_idx] && self.variations_data[variation_idx][2] && !self.data[idx][7]) { if (self.variations_data[variation_idx][2] & self.img_sets[self.img_set].mask) { img = self.img_sets[self.img_set].path + variation_idx + '.png'; px = self.variations_data[variation_idx][0]; py = self.variations_data[variation_idx][1]; extra = ''; full_idx = variation_idx; // add variation text if (self.include_text && variation && variation.actual && variation.wrapper) { text += variation.wrapper + variation.actual + variation.wrapper; } } } if (self.supports_css) { if (self.use_sheet && px != null && py != null) { var mul = 100 / (self.sheet_size - 1); var style = 'background: url(' + self.img_sets[img_set].sheet + ');background-position:' + (mul * px) + '% ' + (mul * py) + '%;background-size:' + self.sheet_size + '00%'; return '<span class="emoji-outer emoji-sizer"><span class="emoji-inner" style="' + style + '"' + title + ' data-codepoints="' + full_idx + '">' + text + '</span></span>' + extra; } else if (self.use_css_imgs) { return '<span class="emoji emoji-' + idx + '"' + title + ' data-codepoints="' + full_idx + '">' + text + '</span>' + extra; } else { return '<span class="emoji emoji-sizer" style="background-image:url(' + img + ')"' + title + ' data-codepoints="' + full_idx + '">' + text + '</span>' + extra; } } return '<img src="' + img + '" class="emoji" data-codepoints="' + full_idx + '" ' + title + '/>' + extra; }; // Initializes the text emoticon data /** @private */ emoji.prototype.init_emoticons = function () { var self = this; if (self.inits.emoticons) return; self.init_colons(); // we require this for the emoticons map self.inits.emoticons = 1; var a = []; self.map.emoticons = {}; for (var i in self.emoticons_data) { // because we never see some characters in our text except as entities, we must do some replacing var emoticon = i.replace(/\&/g, '&amp;').replace(/\</g, '&lt;').replace(/\>/g, '&gt;'); if (!self.map.colons[self.emoticons_data[i]]) continue; self.map.emoticons[emoticon] = self.map.colons[self.emoticons_data[i]]; a.push(self.escape_rx(emoticon)); } self.rx_emoticons = new RegExp(('(^|\\s)(' + a.join('|') + ')(?=$|[\\s|\\?\\.,!])'), 'g'); }; // Initializes the colon string data /** @private */ emoji.prototype.init_colons = function () { var self = this; if (self.inits.colons) return; self.inits.colons = 1; self.rx_colons = new RegExp('\:[a-zA-Z0-9-_+]+\:(\:skin-tone-[2-6]\:)?', 'g'); self.map.colons = {}; for (var i in self.data) { for (var j = 0; j < self.data[i][3].length; j++) { self.map.colons[self.data[i][3][j]] = i; } } }; // initializes the unified unicode emoticon data /** @private */ emoji.prototype.init_unified = function () { var self = this; if (self.inits.unified) return; self.inits.unified = 1; var a = []; self.map.unified = {}; for (var i in self.data) { for (var j = 0; j < self.data[i][0].length; j++) { a.push(self.data[i][0][j].replace('*', '\\*')); self.map.unified[self.data[i][0][j]] = i; } } a = a.sort(function (a, b) { return b.length - a.length; }); self.rx_unified = new RegExp('(' + a.join('|') + ')(\uD83C[\uDFFB-\uDFFF])?', "g"); }; // initializes the environment, figuring out what representation // of emoticons is best. /** @private */ emoji.prototype.init_env = function () { var self = this; if (self.inits.env) return; self.inits.env = 1; self.replace_mode = 'img'; self.supports_css = false; if (typeof(navigator) !== 'undefined') { var ua = navigator.userAgent; if (window.getComputedStyle) { try { var st = window.getComputedStyle(document.body); if (st['background-size'] || st['backgroundSize']) { self.supports_css = true; } } catch (e) { // Swallow an exception caused by hidden iFrames on Firefox // https://github.com/iamcal/js-emoji/issues/73 if (ua.match(/Firefox/i)) { self.supports_css = true; } } } if (ua.match(/(iPhone|iPod|iPad|iPhone\s+Simulator)/i)) { if (ua.match(/OS\s+[12345]/i)) { self.replace_mode = 'softbank'; return; } if (ua.match(/OS\s+[6789]/i)) { self.replace_mode = 'unified'; return; } } if (ua.match(/Mac OS X 10[._ ](?:[789]|1\d)/i)) { self.replace_mode = 'unified'; return; } if (!self.avoid_ms_emoji) { if (ua.match(/Windows NT 6.[1-9]/i) || ua.match(/Windows NT 10.[0-9]/i)) { if (!ua.match(/Chrome/i) && !ua.match(/MSIE 8/i)) { self.replace_mode = 'unified'; return; } } } } // Need a better way to detect android devices that actually // support emoji. if (false && ua.match(/Android/i)) { self.replace_mode = 'google'; return; } if (self.supports_css) { self.replace_mode = 'css'; } // nothing fancy detected - use images }; /** @private */ emoji.prototype.escape_rx = function (text) { return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); }; emoji.prototype.sheet_size = 41; /** @private */ emoji.prototype.data = { "00a9" : [["\u00A9\uFE0F", "\u00A9"], "\uE24E", "\uDBBA\uDF29", ["copyright"], 0, 0, 11, 0], "00ae" : [["\u00AE\uFE0F", "\u00AE"], "\uE24F", "\uDBBA\uDF2D", ["registered"], 0, 1, 11, 0], "203c" : [["\u203C\uFE0F", "\u203C"], "", "\uDBBA\uDF06", ["bangbang"], 0, 2, 15, 0], "2049" : [["\u2049\uFE0F", "\u2049"], "", "\uDBBA\uDF05", ["interrobang"], 0, 3, 15, 0], "2122" : [["\u2122\uFE0F", "\u2122"], "\uE537", "\uDBBA\uDF2A", ["tm"], 0, 4, 11, 0], "2139" : [["\u2139\uFE0F", "\u2139"], "", "\uDBBA\uDF47", ["information_source"], 0, 5, 15, 0], "2194" : [["\u2194\uFE0F", "\u2194"], "", "\uDBBA\uDEF6", ["left_right_arrow"], 0, 6, 15, 0], "2195" : [["\u2195\uFE0F", "\u2195"], "", "\uDBBA\uDEF7", ["arrow_up_down"], 0, 7, 15, 0], "2196" : [["\u2196\uFE0F", "\u2196"], "\uE237", "\uDBBA\uDEF2", ["arrow_upper_left"], 0, 8, 15, 0], "2197" : [["\u2197\uFE0F", "\u2197"], "\uE236", "\uDBBA\uDEF0", ["arrow_upper_right"], 0, 9, 15, 0], "2198" : [["\u2198\uFE0F", "\u2198"], "\uE238", "\uDBBA\uDEF1", ["arrow_lower_right"], 0, 10, 15, 0], "2199" : [["\u2199\uFE0F", "\u2199"], "\uE239", "\uDBBA\uDEF3", ["arrow_lower_left"], 0, 11, 15, 0], "21a9" : [["\u21A9\uFE0F", "\u21A9"], "", "\uDBBA\uDF83", ["leftwards_arrow_with_hook"], 0, 12, 15, 0], "21aa" : [["\u21AA\uFE0F", "\u21AA"], "", "\uDBBA\uDF88", ["arrow_right_hook"], 0, 13, 15, 0], "231a" : [["\u231A\uFE0F", "\u231A"], "", "\uDBB8\uDC1D", ["watch"], 0, 14, 15, 0], "231b" : [["\u231B\uFE0F", "\u231B"], "", "\uDBB8\uDC1C", ["hourglass"], 0, 15, 15, 0], "2328" : [["\u2328\uFE0F", "\u2328"], "", "", ["keyboard"], 0, 16, 15, 0], "23cf" : [["\u23CF"], "", "", ["eject"], 0, 17, 2, 0], "23e9" : [["\u23E9"], "\uE23C", "\uDBBA\uDEFE", ["fast_forward"], 0, 18, 15, 0], "23ea" : [["\u23EA"], "\uE23D", "\uDBBA\uDEFF", ["rewind"], 0, 19, 15, 0], "23eb" : [["\u23EB"], "", "\uDBBA\uDF03", ["arrow_double_up"], 0, 20, 15, 0], "23ec" : [["\u23EC"], "", "\uDBBA\uDF02", ["arrow_double_down"], 0, 21, 15, 0], "23ed" : [["\u23ED"], "", "", ["black_right_pointing_double_triangle_with_vertical_bar"], 0, 22, 15, 0], "23ee" : [["\u23EE"], "", "", ["black_left_pointing_double_triangle_with_vertical_bar"], 0, 23, 15, 0], "23ef" : [["\u23EF"], "", "", ["black_right_pointing_triangle_with_double_vertical_bar"], 0, 24, 15, 0], "23f0" : [["\u23F0"], "\uE02D", "\uDBB8\uDC2A", ["alarm_clock"], 0, 25, 15, 0], "23f1" : [["\u23F1"], "", "", ["stopwatch"], 0, 26, 15, 0], "23f2" : [["\u23F2"], "", "", ["timer_clock"], 0, 27, 15, 0], "23f3" : [["\u23F3"], "", "\uDBB8\uDC1B", ["hourglass_flowing_sand"], 0, 28, 15, 0], "23f8" : [["\u23F8"], "", "", ["double_vertical_bar"], 0, 29, 15, 0], "23f9" : [["\u23F9"], "", "", ["black_square_for_stop"], 0, 30, 15, 0], "23fa" : [["\u23FA"], "", "", ["black_circle_for_record"], 0, 31, 15, 0], "24c2" : [["\u24C2\uFE0F", "\u24C2"], "\uE434", "\uDBB9\uDFE1", ["m"], 0, 32, 15, 0], "25aa" : [["\u25AA\uFE0F", "\u25AA"], "\uE21A", "\uDBBA\uDF6E", ["black_small_square"], 0, 33, 15, 0], "25ab" : [["\u25AB\uFE0F", "\u25AB"], "\uE21B", "\uDBBA\uDF6D", ["white_small_square"], 0, 34, 15, 0], "25b6" : [["\u25B6\uFE0F", "\u25B6"], "\uE23A", "\uDBBA\uDEFC", ["arrow_forward"], 0, 35, 15, 0], "25c0" : [["\u25C0\uFE0F", "\u25C0"], "\uE23B", "\uDBBA\uDEFD", ["arrow_backward"], 0, 36, 15, 0], "25fb" : [["\u25FB\uFE0F", "\u25FB"], "\uE21B", "\uDBBA\uDF71", ["white_medium_square"], 0, 37, 15, 0], "25fc" : [["\u25FC\uFE0F", "\u25FC"], "\uE21A", "\uDBBA\uDF72", ["black_medium_square"], 0, 38, 15, 0], "25fd" : [["\u25FD\uFE0F", "\u25FD"], "\uE21B", "\uDBBA\uDF6F", ["white_medium_small_square"], 0, 39, 15, 0], "25fe" : [["\u25FE\uFE0F", "\u25FE"], "\uE21A", "\uDBBA\uDF70", ["black_medium_small_square"], 0, 40, 15, 0], "2600" : [["\u2600\uFE0F", "\u2600"], "\uE04A", "\uDBB8\uDC00", ["sunny"], 1, 0, 15, 0], "2601" : [["\u2601\uFE0F", "\u2601"], "\uE049", "\uDBB8\uDC01", ["cloud"], 1, 1, 15, 0], "2602" : [["\u2602\uFE0F", "\u2602"], "", "", ["umbrella"], 1, 2, 15, 0], "2603" : [["\u2603\uFE0F", "\u2603"], "", "", ["snowman"], 1, 3, 15, 0], "2604" : [["\u2604\uFE0F", "\u2604"], "", "", ["comet"], 1, 4, 15, 0], "260e" : [["\u260E\uFE0F", "\u260E"], "\uE009", "\uDBB9\uDD23", ["phone", "telephone"], 1, 5, 15, 0], "2611" : [["\u2611\uFE0F", "\u2611"], "", "\uDBBA\uDF8B", ["ballot_box_with_check"], 1, 6, 15, 0], "2614" : [["\u2614\uFE0F", "\u2614"], "\uE04B", "\uDBB8\uDC02", ["umbrella_with_rain_drops"], 1, 7, 15, 0], "2615" : [["\u2615\uFE0F", "\u2615"], "\uE045", "\uDBBA\uDD81", ["coffee"], 1, 8, 15, 0], "2618" : [["\u2618"], "", "", ["shamrock"], 1, 9, 15, 0], "261d" : [["\u261D\uFE0F", "\u261D"], "\uE00F", "\uDBBA\uDF98", ["point_up"], 1, 10, 15, 0], "2620" : [["\u2620\uFE0F", "\u2620"], "", "", ["skull_and_crossbones"], 1, 16, 15, 0], "2622" : [["\u2622\uFE0F", "\u2622"], "", "", ["radioactive_sign"], 1, 17, 15, 0], "2623" : [["\u2623\uFE0F", "\u2623"], "", "", ["biohazard_sign"], 1, 18, 15, 0], "2626" : [["\u2626\uFE0F", "\u2626"], "", "", ["orthodox_cross"], 1, 19, 15, 0], "262a" : [["\u262A\uFE0F", "\u262A"], "", "", ["star_and_crescent"], 1, 20, 15, 0], "262e" : [["\u262E\uFE0F", "\u262E"], "", "", ["peace_symbol"], 1, 21, 15, 0], "262f" : [["\u262F\uFE0F", "\u262F"], "", "", ["yin_yang"], 1, 22, 15, 0], "2638" : [["\u2638\uFE0F", "\u2638"], "", "", ["wheel_of_dharma"], 1, 23, 15, 0], "2639" : [["\u2639\uFE0F", "\u2639"], "", "", ["white_frowning_face"], 1, 24, 15, 0], "263a" : [["\u263A\uFE0F", "\u263A"], "\uE414", "\uDBB8\uDF36", ["relaxed"], 1, 25, 15, 0], "2648" : [["\u2648\uFE0F", "\u2648"], "\uE23F", "\uDBB8\uDC2B", ["aries"], 1, 26, 15, 0], "2649" : [["\u2649\uFE0F", "\u2649"], "\uE240", "\uDBB8\uDC2C", ["taurus"], 1, 27, 15, 0], "264a" : [["\u264A\uFE0F", "\u264A"], "\uE241", "\uDBB8\uDC2D", ["gemini"], 1, 28, 15, 0], "264b" : [["\u264B\uFE0F", "\u264B"], "\uE242", "\uDBB8\uDC2E", ["cancer"], 1, 29, 15, 0], "264c" : [["\u264C\uFE0F", "\u264C"], "\uE243", "\uDBB8\uDC2F", ["leo"], 1, 30, 15, 0], "264d" : [["\u264D\uFE0F", "\u264D"], "\uE244", "\uDBB8\uDC30", ["virgo"], 1, 31, 15, 0], "264e" : [["\u264E\uFE0F", "\u264E"], "\uE245", "\uDBB8\uDC31", ["libra"], 1, 32, 15, 0], "264f" : [["\u264F\uFE0F", "\u264F"], "\uE246", "\uDBB8\uDC32", ["scorpius"], 1, 33, 15, 0], "2650" : [["\u2650\uFE0F", "\u2650"], "\uE247", "\uDBB8\uDC33", ["sagittarius"], 1, 34, 15, 0], "2651" : [["\u2651\uFE0F", "\u2651"], "\uE248", "\uDBB8\uDC34", ["capricorn"], 1, 35, 15, 0], "2652" : [["\u2652\uFE0F", "\u2652"], "\uE249", "\uDBB8\uDC35", ["aquarius"], 1, 36, 15, 0], "2653" : [["\u2653\uFE0F", "\u2653"], "\uE24A", "\uDBB8\uDC36", ["pisces"], 1, 37, 15, 0], "2660" : [["\u2660\uFE0F", "\u2660"], "\uE20E", "\uDBBA\uDF1B", ["spades"], 1, 38, 15, 0], "2663" : [["\u2663\uFE0F", "\u2663"], "\uE20F", "\uDBBA\uDF1D", ["clubs"], 1, 39, 15, 0], "2665" : [["\u2665\uFE0F", "\u2665"], "\uE20C", "\uDBBA\uDF1A", ["hearts"], 1, 40, 15, 0], "2666" : [["\u2666\uFE0F", "\u2666"], "\uE20D", "\uDBBA\uDF1C", ["diamonds"], 2, 0, 15, 0], "2668" : [["\u2668\uFE0F", "\u2668"], "\uE123", "\uDBB9\uDFFA", ["hotsprings"], 2, 1, 15, 0], "267b" : [["\u267B\uFE0F", "\u267B"], "", "\uDBBA\uDF2C", ["recycle"], 2, 2, 15, 0], "267f" : [["\u267F\uFE0F", "\u267F"], "\uE20A", "\uDBBA\uDF20", ["wheelchair"], 2, 3, 15, 0], "2692" : [["\u2692"], "", "", ["hammer_and_pick"], 2, 4, 15, 0], "2693" : [["\u2693\uFE0F", "\u2693"], "\uE202", "\uDBB9\uDCC1", ["anchor"], 2, 5, 15, 0], "2694" : [["\u2694"], "", "", ["crossed_swords"], 2, 6, 15, 0], "2696" : [["\u2696"], "", "", ["scales"], 2, 7, 15, 0], "2697" : [["\u2697"], "", "", ["alembic"], 2, 8, 15, 0], "2699" : [["\u2699"], "", "", ["gear"], 2, 9, 15, 0], "269b" : [["\u269B"], "", "", ["atom_symbol"], 2, 10, 15, 0], "269c" : [["\u269C"], "", "", ["fleur_de_lis"], 2, 11, 15, 0], "26a0" : [["\u26A0\uFE0F", "\u26A0"], "\uE252", "\uDBBA\uDF23", ["warning"], 2, 12, 15, 0], "26a1" : [["\u26A1\uFE0F", "\u26A1"], "\uE13D", "\uDBB8\uDC04", ["zap"], 2, 13, 15, 0], "26aa" : [["\u26AA\uFE0F", "\u26AA"], "\uE219", "\uDBBA\uDF65", ["white_circle"], 2, 14, 15, 0], "26ab" : [["\u26AB\uFE0F", "\u26AB"], "\uE219", "\uDBBA\uDF66", ["black_circle"], 2, 15, 15, 0], "26b0" : [["\u26B0"], "", "", ["coffin"], 2, 16, 15, 0], "26b1" : [["\u26B1"], "", "", ["funeral_urn"], 2, 17, 15, 0], "26bd" : [["\u26BD\uFE0F", "\u26BD"], "\uE018", "\uDBB9\uDFD4", ["soccer"], 2, 18, 15, 0], "26be" : [["\u26BE\uFE0F", "\u26BE"], "\uE016", "\uDBB9\uDFD1", ["baseball"], 2, 19, 15, 0], "26c4" : [["\u26C4\uFE0F", "\u26C4"], "\uE048", "\uDBB8\uDC03", ["snowman_without_snow"], 2, 20, 15, 0], "26c5" : [["\u26C5\uFE0F", "\u26C5"], "\uE04A\uE049", "\uDBB8\uDC0F", ["partly_sunny"], 2, 21, 15, 0], "26c8" : [["\u26C8"], "", "", ["thunder_cloud_and_rain"], 2, 22, 15, 0], "26ce" : [["\u26CE"], "\uE24B", "\uDBB8\uDC37", ["ophiuchus"], 2, 23, 15, 0], "26cf" : [["\u26CF"], "", "", ["pick"], 2, 24, 15, 0], "26d1" : [["\u26D1"], "", "", ["helmet_with_white_cross"], 2, 25, 15, 0], "26d3" : [["\u26D3"], "", "", ["chains"], 2, 26, 15, 0], "26d4" : [["\u26D4\uFE0F", "\u26D4"], "\uE137", "\uDBBA\uDF26", ["no_entry"], 2, 27, 15, 0], "26e9" : [["\u26E9"], "", "", ["shinto_shrine"], 2, 28, 15, 0], "26ea" : [["\u26EA\uFE0F", "\u26EA"], "\uE037", "\uDBB9\uDCBB", ["church"], 2, 29, 15, 0], "26f0" : [["\u26F0"], "", "", ["mountain"], 2, 30, 15, 0], "26f1" : [["\u26F1"], "", "", ["umbrella_on_ground"], 2, 31, 15, 0], "26f2" : [["\u26F2\uFE0F", "\u26F2"], "\uE121", "\uDBB9\uDCBC", ["fountain"], 2, 32, 15, 0], "26f3" : [["\u26F3\uFE0F", "\u26F3"], "\uE014", "\uDBB9\uDFD2", ["golf"], 2, 33, 15, 0], "26f4" : [["\u26F4"], "", "", ["ferry"], 2, 34, 15, 0], "26f5" : [["\u26F5\uFE0F", "\u26F5"], "\uE01C", "\uDBB9\uDFEA", ["boat", "sailboat"], 2, 35, 15, 0], "26f7" : [["\u26F7"], "", "", ["skier"], 2, 36, 15, 0], "26f8" : [["\u26F8"], "", "", ["ice_skate"], 2, 37, 15, 0], "26f9" : [["\u26F9"], "", "", ["person_with_ball"], 2, 38, 15, 0], "26fa" : [["\u26FA\uFE0F", "\u26FA"], "\uE122", "\uDBB9\uDFFB", ["tent"], 3, 3, 15, 0], "26fd" : [["\u26FD\uFE0F", "\u26FD"], "\uE03A", "\uDBB9\uDFF5", ["fuelpump"], 3, 4, 15, 0], "2702" : [["\u2702\uFE0F", "\u2702"], "\uE313", "\uDBB9\uDD3E", ["scissors"], 3, 5, 15, 0], "2705" : [["\u2705"], "", "\uDBBA\uDF4A", ["white_check_mark"], 3, 6, 15, 0], "2708" : [["\u2708\uFE0F", "\u2708"], "\uE01D", "\uDBB9\uDFE9", ["airplane"], 3, 7, 15, 0], "2709" : [["\u2709\uFE0F", "\u2709"], "\uE103", "\uDBB9\uDD29", ["email", "envelope"], 3, 8, 15, 0], "270a" : [["\u270A"], "\uE010", "\uDBBA\uDF93", ["fist"], 3, 9, 15, 0], "270b" : [["\u270B"], "\uE012", "\uDBBA\uDF95", ["hand", "raised_hand"], 3, 15, 15, 0], "270c" : [["\u270C\uFE0F", "\u270C"], "\uE011", "\uDBBA\uDF94", ["v"], 3, 21, 15, 0], "270d" : [["\u270D\uFE0F", "\u270D"], "", "", ["writing_hand"], 3, 27, 15, 0], "270f" : [["\u270F\uFE0F", "\u270F"], "\uE301", "\uDBB9\uDD39", ["pencil2"], 3, 33, 15, 0], "2712" : [["\u2712\uFE0F", "\u2712"], "", "\uDBB9\uDD36", ["black_nib"], 3, 34, 15, 0], "2714" : [["\u2714\uFE0F", "\u2714"], "", "\uDBBA\uDF49", ["heavy_check_mark"], 3, 35, 15, 0], "2716" : [["\u2716\uFE0F", "\u2716"], "\uE333", "\uDBBA\uDF53", ["heavy_multiplication_x"], 3, 36, 15, 0], "271d" : [["\u271D\uFE0F", "\u271D"], "", "", ["latin_cross"], 3, 37, 15, 0], "2721" : [["\u2721\uFE0F", "\u2721"], "", "", ["star_of_david"], 3, 38, 15, 0], "2728" : [["\u2728"], "\uE32E", "\uDBBA\uDF60", ["sparkles"], 3, 39, 15, 0], "2733" : [["\u2733\uFE0F", "\u2733"], "\uE206", "\uDBBA\uDF62", ["eight_spoked_asterisk"], 3, 40, 15, 0], "2734" : [["\u2734\uFE0F", "\u2734"], "\uE205", "\uDBBA\uDF61", ["eight_pointed_black_star"], 4, 0, 15, 0], "2744" : [["\u2744\uFE0F", "\u2744"], "", "\uDBB8\uDC0E", ["snowflake"], 4, 1, 15, 0], "2747" : [["\u2747\uFE0F", "\u2747"], "\uE32E", "\uDBBA\uDF77", ["sparkle"], 4, 2, 15, 0], "274c" : [["\u274C"], "\uE333", "\uDBBA\uDF45", ["x"], 4, 3, 15, 0], "274e" : [["\u274E"], "\uE333", "\uDBBA\uDF46", ["negative_squared_cross_mark"], 4, 4, 15, 0], "2753" : [["\u2753"], "\uE020", "\uDBBA\uDF09", ["question"], 4, 5, 15, 0], "2754" : [["\u2754"], "\uE336", "\uDBBA\uDF0A", ["grey_question"], 4, 6, 15, 0], "2755" : [["\u2755"], "\uE337", "\uDBBA\uDF0B", ["grey_exclamation"], 4, 7, 15, 0], "2757" : [["\u2757\uFE0F", "\u2757"], "\uE021", "\uDBBA\uDF04", ["exclamation", "heavy_exclamation_mark"], 4, 8, 15, 0], "2763" : [["\u2763\uFE0F", "\u2763"], "", "", ["heavy_heart_exclamation_mark_ornament"], 4, 9, 15, 0], "2764" : [["\u2764\uFE0F", "\u2764"], "\uE022", "\uDBBA\uDF0C", ["heart"], 4, 10, 15, 0, "<3"], "2795" : [["\u2795"], "", "\uDBBA\uDF51", ["heavy_plus_sign"], 4, 11, 15, 0], "2796" : [["\u2796"], "", "\uDBBA\uDF52", ["heavy_minus_sign"], 4, 12, 15, 0], "2797" : [["\u2797"], "", "\uDBBA\uDF54", ["heavy_division_sign"], 4, 13, 15, 0], "27a1" : [["\u27A1\uFE0F", "\u27A1"], "\uE234", "\uDBBA\uDEFA", ["arrow_right"], 4, 14, 15, 0], "27b0" : [["\u27B0"], "", "\uDBBA\uDF08", ["curly_loop"], 4, 15, 15, 0], "27bf" : [["\u27BF"], "\uE211", "\uDBBA\uDC2B", ["loop"], 4, 16, 15, 0], "2934" : [["\u2934\uFE0F", "\u2934"], "\uE236", "\uDBBA\uDEF4", ["arrow_heading_up"], 4, 17, 15, 0], "2935" : [["\u2935\uFE0F", "\u2935"], "\uE238", "\uDBBA\uDEF5", ["arrow_heading_down"], 4, 18, 15, 0], "2b05" : [["\u2B05\uFE0F", "\u2B05"], "\uE235", "\uDBBA\uDEFB", ["arrow_left"], 4, 19, 15, 0], "2b06" : [["\u2B06\uFE0F", "\u2B06"], "\uE232", "\uDBBA\uDEF8", ["arrow_up"], 4, 20, 15, 0], "2b07" : [["\u2B07\uFE0F", "\u2B07"], "\uE233", "\uDBBA\uDEF9", ["arrow_down"], 4, 21, 15, 0], "2b1b" : [["\u2B1B\uFE0F", "\u2B1B"], "\uE21A", "\uDBBA\uDF6C", ["black_large_square"], 4, 22, 15, 0], "2b1c" : [["\u2B1C\uFE0F", "\u2B1C"], "\uE21B", "\uDBBA\uDF6B", ["white_large_square"], 4, 23, 15, 0], "2b50" : [["\u2B50\uFE0F", "\u2B50"], "\uE32F", "\uDBBA\uDF68", ["star"], 4, 24, 15, 0], "2b55" : [["\u2B55\uFE0F", "\u2B55"], "\uE332", "\uDBBA\uDF44", ["o"], 4, 25, 15, 0], "3030" : [["\u3030\uFE0F", "\u3030"], "", "\uDBBA\uDF07", ["wavy_dash"], 4, 26, 15, 0], "303d" : [["\u303D\uFE0F", "\u303D"], "\uE12C", "\uDBBA\uDC1B", ["part_alternation_mark"], 4, 27, 15, 0], "3297" : [["\u3297\uFE0F", "\u3297"], "\uE30D", "\uDBBA\uDF43", ["congratulations"], 4, 28, 15, 0], "3299" : [["\u3299\uFE0F", "\u3299"], "\uE315", "\uDBBA\uDF2B", ["secret"], 4, 29, 15, 0], "1f004" : [["\uD83C\uDC04\uFE0F", "\uD83C\uDC04"], "\uE12D", "\uDBBA\uDC0B", ["mahjong"], 4, 30, 15, 0], "1f0cf" : [["\uD83C\uDCCF"], "", "\uDBBA\uDC12", ["black_joker"], 4, 31, 15, 0], "1f170" : [["\uD83C\uDD70\uFE0F", "\uD83C\uDD70"], "\uE532", "\uDBB9\uDD0B", ["a"], 4, 32, 15, 0], "1f171" : [["\uD83C\uDD71\uFE0F", "\uD83C\uDD71"], "\uE533", "\uDBB9\uDD0C", ["b"], 4, 33, 15, 0], "1f17e" : [["\uD83C\uDD7E\uFE0F", "\uD83C\uDD7E"], "\uE535", "\uDBB9\uDD0E", ["o2"], 4, 34, 15, 0], "1f17f" : [["\uD83C\uDD7F\uFE0F", "\uD83C\uDD7F"], "\uE14F", "\uDBB9\uDFF6", ["parking"], 4, 35, 15, 0], "1f18e" : [["\uD83C\uDD8E"], "\uE534", "\uDBB9\uDD0D", ["ab"], 4, 36, 15, 0], "1f191" : [["\uD83C\uDD91"], "", "\uDBBA\uDF84", ["cl"], 4, 37, 15, 0], "1f192" : [["\uD83C\uDD92"], "\uE214", "\uDBBA\uDF38", ["cool"], 4, 38, 15, 0], "1f193" : [["\uD83C\uDD93"], "", "\uDBBA\uDF21", ["free"], 4, 39, 15, 0], "1f194" : [["\uD83C\uDD94"], "\uE229", "\uDBBA\uDF81", ["id"], 4, 40, 15, 0], "1f195" : [["\uD83C\uDD95"], "\uE212", "\uDBBA\uDF36", ["new"], 5, 0, 15, 0], "1f196" : [["\uD83C\uDD96"], "", "\uDBBA\uDF28", ["ng"], 5, 1, 15, 0], "1f197" : [["\uD83C\uDD97"], "\uE24D", "\uDBBA\uDF27", ["ok"], 5, 2, 15, 0], "1f198" : [["\uD83C\uDD98"], "", "\uDBBA\uDF4F", ["sos"], 5, 3, 15, 0], "1f199" : [["\uD83C\uDD99"], "\uE213", "\uDBBA\uDF37", ["up"], 5, 4, 15, 0], "1f19a" : [["\uD83C\uDD9A"], "\uE12E", "\uDBBA\uDF32", ["vs"], 5, 5, 15, 0], "1f201" : [["\uD83C\uDE01"], "\uE203", "\uDBBA\uDF24", ["koko"], 5, 6, 15, 0], "1f202" : [["\uD83C\uDE02\uFE0F", "\uD83C\uDE02"], "\uE228", "\uDBBA\uDF3F", ["sa"], 5, 7, 15, 0], "1f21a" : [["\uD83C\uDE1A\uFE0F", "\uD83C\uDE1A"], "\uE216", "\uDBBA\uDF3A", ["u7121"], 5, 8, 15, 0], "1f22f" : [["\uD83C\uDE2F\uFE0F", "\uD83C\uDE2F"], "\uE22C", "\uDBBA\uDF40", ["u6307"], 5, 9, 15, 0], "1f232" : [["\uD83C\uDE32"], "", "\uDBBA\uDF2E", ["u7981"], 5, 10, 15, 0], "1f233" : [["\uD83C\uDE33"], "\uE22B", "\uDBBA\uDF2F", ["u7a7a"], 5, 11, 15, 0], "1f234" : [["\uD83C\uDE34"], "", "\uDBBA\uDF30", ["u5408"], 5, 12, 15, 0], "1f235" : [["\uD83C\uDE35"], "\uE22A", "\uDBBA\uDF31", ["u6e80"], 5, 13, 15, 0], "1f236" : [["\uD83C\uDE36"], "\uE215", "\uDBBA\uDF39", ["u6709"], 5, 14, 15, 0], "1f237" : [["\uD83C\uDE37\uFE0F", "\uD83C\uDE37"], "\uE217", "\uDBBA\uDF3B", ["u6708"], 5, 15, 15, 0], "1f238" : [["\uD83C\uDE38"], "\uE218", "\uDBBA\uDF3C", ["u7533"], 5, 16, 15, 0], "1f239" : [["\uD83C\uDE39"], "\uE227", "\uDBBA\uDF3E", ["u5272"], 5, 17, 15, 0], "1f23a" : [["\uD83C\uDE3A"], "\uE22D", "\uDBBA\uDF41", ["u55b6"], 5, 18, 15, 0], "1f250" : [["\uD83C\uDE50"], "\uE226", "\uDBBA\uDF3D", ["ideograph_advantage"], 5, 19, 15, 0], "1f251" : [["\uD83C\uDE51"], "", "\uDBBA\uDF50", ["accept"], 5, 20, 15, 0], "1f300" : [["\uD83C\uDF00"], "\uE443", "\uDBB8\uDC05", ["cyclone"], 5, 21, 15, 0], "1f301" : [["\uD83C\uDF01"], "", "\uDBB8\uDC06", ["foggy"], 5, 22, 15, 0], "1f302" : [["\uD83C\uDF02"], "\uE43C", "\uDBB8\uDC07", ["closed_umbrella"], 5, 23, 15, 0], "1f303" : [["\uD83C\uDF03"], "\uE44B", "\uDBB8\uDC08", ["night_with_stars"], 5, 24, 15, 0], "1f304" : [["\uD83C\uDF04"], "\uE04D", "\uDBB8\uDC09", ["sunrise_over_mountains"], 5, 25, 15, 0], "1f305" : [["\uD83C\uDF05"], "\uE449", "\uDBB8\uDC0A", ["sunrise"], 5, 26, 15, 0], "1f306" : [["\uD83C\uDF06"], "\uE146", "\uDBB8\uDC0B", ["city_sunset"], 5, 27, 15, 0], "1f307" : [["\uD83C\uDF07"], "\uE44A", "\uDBB8\uDC0C", ["city_sunrise"], 5, 28, 15, 0], "1f308" : [["\uD83C\uDF08"], "\uE44C", "\uDBB8\uDC0D", ["rainbow"], 5, 29, 15, 0], "1f309" : [["\uD83C\uDF09"], "\uE44B", "\uDBB8\uDC10", ["bridge_at_night"], 5, 30, 15, 0], "1f30a" : [["\uD83C\uDF0A"], "\uE43E", "\uDBB8\uDC38", ["ocean"], 5, 31, 15, 0], "1f30b" : [["\uD83C\uDF0B"], "", "\uDBB8\uDC3A", ["volcano"], 5, 32, 15, 0], "1f30c" : [["\uD83C\uDF0C"], "\uE44B", "\uDBB8\uDC3B", ["milky_way"], 5, 33, 15, 0], "1f30d" : [["\uD83C\uDF0D"], "", "", ["earth_africa"], 5, 34, 15, 0], "1f30e" : [["\uD83C\uDF0E"], "", "", ["earth_americas"], 5, 35, 15, 0], "1f30f" : [["\uD83C\uDF0F"], "", "\uDBB8\uDC39", ["earth_asia"], 5, 36, 15, 0], "1f310" : [["\uD83C\uDF10"], "", "", ["globe_with_meridians"], 5, 37, 15, 0], "1f311" : [["\uD83C\uDF11"], "", "\uDBB8\uDC11", ["new_moon"], 5, 38, 15, 0], "1f312" : [["\uD83C\uDF12"], "", "", ["waxing_crescent_moon"], 5, 39, 15, 0], "1f313" : [["\uD83C\uDF13"], "\uE04C", "\uDBB8\uDC13", ["first_quarter_moon"], 5, 40, 15, 0], "1f314" : [["\uD83C\uDF14"], "\uE04C", "\uDBB8\uDC12", ["moon", "waxing_gibbous_moon"], 6, 0, 15, 0], "1f315" : [["\uD83C\uDF15"], "", "\uDBB8\uDC15", ["full_moon"], 6, 1, 15, 0], "1f316" : [["\uD83C\uDF16"], "", "", ["waning_gibbous_moon"], 6, 2, 15, 0], "1f317" : [["\uD83C\uDF17"], "", "", ["last_quarter_moon"], 6, 3, 15, 0], "1f318" : [["\uD83C\uDF18"], "", "", ["waning_crescent_moon"], 6, 4, 15, 0], "1f319" : [["\uD83C\uDF19"], "\uE04C", "\uDBB8\uDC14", ["crescent_moon"], 6, 5, 15, 0], "1f31a" : [["\uD83C\uDF1A"], "", "", ["new_moon_with_face"], 6, 6, 15, 0], "1f31b" : [["\uD83C\uDF1B"], "\uE04C", "\uDBB8\uDC16", ["first_quarter_moon_with_face"], 6, 7, 15, 0], "1f31c" : [["\uD83C\uDF1C"], "", "", ["last_quarter_moon_with_face"], 6, 8, 15, 0], "1f31d" : [["\uD83C\uDF1D"], "", "", ["full_moon_with_face"], 6, 9, 15, 0], "1f31e" : [["\uD83C\uDF1E"], "", "", ["sun_with_face"], 6, 10, 15, 0], "1f31f" : [["\uD83C\uDF1F"], "\uE335", "\uDBBA\uDF69", ["star2"], 6, 11, 15, 0], "1f320" : [["\uD83C\uDF20"], "", "\uDBBA\uDF6A", ["stars"], 6, 12, 15, 0], "1f321" : [["\uD83C\uDF21"], "", "", ["thermometer"], 6, 13, 15, 0], "1f324" : [["\uD83C\uDF24"], "", "", ["mostly_sunny", "sun_small_cloud"], 6, 14, 15, 0], "1f325" : [["\uD83C\uDF25"], "", "", ["barely_sunny", "sun_behind_cloud"], 6, 15, 15, 0], "1f326" : [["\uD83C\uDF26"], "", "", ["partly_sunny_rain", "sun_behind_rain_cloud"], 6, 16, 15, 0], "1f327" : [["\uD83C\uDF27"], "", "", ["rain_cloud"], 6, 17, 15, 0], "1f328" : [["\uD83C\uDF28"], "", "", ["snow_cloud"], 6, 18, 15, 0], "1f329" : [["\uD83C\uDF29"], "", "", ["lightning", "lightning_cloud"], 6, 19, 15, 0], "1f32a" : [["\uD83C\uDF2A"], "", "", ["tornado", "tornado_cloud"], 6, 20, 15, 0], "1f32b" : [["\uD83C\uDF2B"], "", "", ["fog"], 6, 21, 15, 0], "1f32c" : [["\uD83C\uDF2C"], "", "", ["wind_blowing_face"], 6, 22, 15, 0], "1f32d" : [["\uD83C\uDF2D"], "", "", ["hotdog"], 6, 23, 15, 0], "1f32e" : [["\uD83C\uDF2E"], "", "", ["taco"], 6, 24, 15, 0], "1f32f" : [["\uD83C\uDF2F"], "", "", ["burrito"], 6, 25, 15, 0], "1f330" : [["\uD83C\uDF30"], "", "\uDBB8\uDC4C", ["chestnut"], 6, 26, 15, 0], "1f331" : [["\uD83C\uDF31"], "\uE110", "\uDBB8\uDC3E", ["seedling"], 6, 27, 15, 0], "1f332" : [["\uD83C\uDF32"], "", "", ["evergreen_tree"], 6, 28, 15, 0], "1f333" : [["\uD83C\uDF33"], "", "", ["deciduous_tree"], 6, 29, 15, 0], "1f334" : [["\uD83C\uDF34"], "\uE307", "\uDBB8\uDC47", ["palm_tree"], 6, 30, 15, 0], "1f335" : [["\uD83C\uDF35"], "\uE308", "\uDBB8\uDC48", ["cactus"], 6, 31, 15, 0], "1f336" : [["\uD83C\uDF36"], "", "", ["hot_pepper"], 6, 32, 15, 0], "1f337" : [["\uD83C\uDF37"], "\uE304", "\uDBB8\uDC3D", ["tulip"], 6, 33, 15, 0], "1f338" : [["\uD83C\uDF38"], "\uE030", "\uDBB8\uDC40", ["cherry_blossom"], 6, 34, 15, 0], "1f339" : [["\uD83C\uDF39"], "\uE032", "\uDBB8\uDC41", ["rose"], 6, 35, 15, 0], "1f33a" : [["\uD83C\uDF3A"], "\uE303", "\uDBB8\uDC45", ["hibiscus"], 6, 36, 15, 0], "1f33b" : [["\uD83C\uDF3B"], "\uE305", "\uDBB8\uDC46", ["sunflower"], 6, 37, 15, 0], "1f33c"