diff --git a/.eslintignore.errorfiles b/.eslintignore.errorfiles index ffd492d491..55eaf75e4b 100644 --- a/.eslintignore.errorfiles +++ b/.eslintignore.errorfiles @@ -1,6 +1,5 @@ # autogenerated file: run scripts/generate-eslint-error-ignore-file to update. -src/AddThreepid.js src/async-components/views/dialogs/EncryptedEventDialog.js src/autocomplete/AutocompleteProvider.js src/autocomplete/Autocompleter.js @@ -9,8 +8,6 @@ src/autocomplete/DuckDuckGoProvider.js src/autocomplete/EmojiProvider.js src/autocomplete/RoomProvider.js src/autocomplete/UserProvider.js -src/Avatar.js -src/BasePlatform.js src/CallHandler.js src/component-index.js src/components/structures/ContextualMenu.js @@ -96,7 +93,6 @@ src/components/views/rooms/MessageComposerInput.js src/components/views/rooms/MessageComposerInputOld.js src/components/views/rooms/PresenceLabel.js src/components/views/rooms/ReadReceiptMarker.js -src/components/views/rooms/RoomHeader.js src/components/views/rooms/RoomList.js src/components/views/rooms/RoomNameEditor.js src/components/views/rooms/RoomPreviewBar.js @@ -115,16 +111,7 @@ src/components/views/settings/ChangePassword.js src/components/views/settings/DevicesPanel.js src/components/views/settings/DevicesPanelEntry.js src/components/views/settings/EnableNotificationsButton.js -src/components/views/voip/CallView.js -src/components/views/voip/IncomingCallBox.js -src/components/views/voip/VideoFeed.js -src/components/views/voip/VideoView.js src/ContentMessages.js -src/createRoom.js -src/DateUtils.js -src/email.js -src/Entities.js -src/extend.js src/HtmlUtils.js src/ImageUtils.js src/Invite.js @@ -135,30 +122,20 @@ src/Markdown.js src/MatrixClientPeg.js src/Modal.js src/Notifier.js -src/ObjectUtils.js -src/PasswordReset.js src/PlatformPeg.js src/Presence.js src/ratelimitedfunc.js -src/Resend.js src/RichText.js src/Roles.js -src/RoomListSorter.js -src/RoomNotifs.js src/Rooms.js src/ScalarAuthClient.js src/ScalarMessaging.js -src/SdkConfig.js -src/Skinner.js -src/SlashCommands.js -src/stores/LifecycleStore.js src/TabComplete.js src/TabCompleteEntries.js src/TextForEvent.js src/Tinter.js src/UiEffects.js src/Unread.js -src/UserActivity.js src/utils/DecryptFile.js src/utils/DMRoomMap.js src/utils/FormattingUtils.js diff --git a/.travis-test-riot.sh b/.travis-test-riot.sh index 4296c72e6c..87200871a5 100755 --- a/.travis-test-riot.sh +++ b/.travis-test-riot.sh @@ -22,8 +22,11 @@ git checkout "$curbranch" || git checkout develop mkdir node_modules npm install -(cd node_modules/matrix-js-sdk && npm install) +# use the version of js-sdk we just used in the react-sdk tests +rm -r node_modules/matrix-js-sdk +ln -s "$REACT_SDK_DIR/node_modules/matrix-js-sdk" node_modules/matrix-js-sdk +# ... and, of course, the version of react-sdk we just built rm -r node_modules/matrix-react-sdk ln -s "$REACT_SDK_DIR" node_modules/matrix-react-sdk diff --git a/.travis.yml b/.travis.yml index 918cec696b..4137d754bf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,15 @@ +# we need trusty for the chrome addon +dist: trusty + +# we don't need sudo, so can run in a container, which makes startup much +# quicker. +sudo: false + language: node_js node_js: - node # Latest stable version of nodejs. +addons: + chrome: stable install: - npm install - (cd node_modules/matrix-js-sdk && npm install) diff --git a/karma.conf.js b/karma.conf.js index d544248332..d8a6c25cc6 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -116,11 +116,25 @@ module.exports = function (config) { browsers: [ 'Chrome', //'PhantomJS', + //'ChromeHeadless', ], + customLaunchers: { + 'ChromeHeadless': { + base: 'Chrome', + flags: [ + // See https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md + '--headless', + '--disable-gpu', + // Without a remote debugging port, Google Chrome exits immediately. + '--remote-debugging-port=9222', + ], + } + }, + // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits - singleRun: true, + // singleRun: false, // Concurrency level // how many browser should be started simultaneous diff --git a/package.json b/package.json index ed12e6a5e4..888fd9e32a 100644 --- a/package.json +++ b/package.json @@ -41,8 +41,8 @@ "lintall": "eslint src/ test/", "clean": "rimraf lib", "prepublish": "npm run build && git rev-parse HEAD > git-revision.txt", - "test": "karma start $KARMAFLAGS --browsers PhantomJS", - "test-multi": "karma start $KARMAFLAGS --single-run=false" + "test": "karma start $KARMAFLAGS --single-run=true --browsers ChromeHeadless", + "test-multi": "karma start $KARMAFLAGS" }, "dependencies": { "babel-runtime": "^6.11.6", @@ -75,6 +75,7 @@ "react-gemini-scrollbar": "matrix-org/react-gemini-scrollbar#5e97aef", "sanitize-html": "^1.11.1", "text-encoding-utf-8": "^1.0.1", + "url": "^0.11.0", "velocity-vector": "vector-im/velocity#059e3b2", "whatwg-fetch": "^1.0.0" }, @@ -106,12 +107,10 @@ "karma-cli": "^0.1.2", "karma-junit-reporter": "^0.4.1", "karma-mocha": "^0.2.2", - "karma-phantomjs-launcher": "^1.0.0", "karma-sourcemap-loader": "^0.3.7", "karma-webpack": "^1.7.0", "mocha": "^2.4.5", "parallelshell": "^1.2.0", - "phantomjs-prebuilt": "^2.1.7", "react-addons-test-utils": "^15.4.0", "require-json": "0.0.1", "rimraf": "^2.4.3", diff --git a/scripts/emoji-data-strip.js b/scripts/emoji-data-strip.js index d7c80e7e37..40156471fe 100644 --- a/scripts/emoji-data-strip.js +++ b/scripts/emoji-data-strip.js @@ -1,5 +1,6 @@ #!/usr/bin/env node const EMOJI_DATA = require('emojione/emoji.json'); +const EMOJI_SUPPORTED = Object.keys(require('emojione').emojioneList); const fs = require('fs'); const output = Object.keys(EMOJI_DATA).map( @@ -16,7 +17,9 @@ const output = Object.keys(EMOJI_DATA).map( } return newDatum; } -); +).filter((datum) => { + return EMOJI_SUPPORTED.includes(datum.shortname); +}); // Write to a file in src. Changes should be checked into git. This file is copied by // babel using --copy-files diff --git a/src/AddThreepid.js b/src/AddThreepid.js index 8be7a19b13..337e38d867 100644 --- a/src/AddThreepid.js +++ b/src/AddThreepid.js @@ -15,7 +15,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -var MatrixClientPeg = require("./MatrixClientPeg"); +import MatrixClientPeg from './MatrixClientPeg'; import { _t } from './languageHandler'; /** @@ -44,7 +44,7 @@ class AddThreepid { this.sessionId = res.sid; return res; }, function(err) { - if (err.errcode == 'M_THREEPID_IN_USE') { + if (err.errcode === 'M_THREEPID_IN_USE') { err.message = _t('This email address is already in use'); } else if (err.httpStatus) { err.message = err.message + ` (Status ${err.httpStatus})`; @@ -69,7 +69,7 @@ class AddThreepid { this.sessionId = res.sid; return res; }, function(err) { - if (err.errcode == 'M_THREEPID_IN_USE') { + if (err.errcode === 'M_THREEPID_IN_USE') { err.message = _t('This phone number is already in use'); } else if (err.httpStatus) { err.message = err.message + ` (Status ${err.httpStatus})`; @@ -85,16 +85,15 @@ class AddThreepid { * the request failed. */ checkEmailLinkClicked() { - var identityServerDomain = MatrixClientPeg.get().idBaseUrl.split("://")[1]; + const identityServerDomain = MatrixClientPeg.get().idBaseUrl.split("://")[1]; return MatrixClientPeg.get().addThreePid({ sid: this.sessionId, client_secret: this.clientSecret, - id_server: identityServerDomain + id_server: identityServerDomain, }, this.bind).catch(function(err) { if (err.httpStatus === 401) { err.message = _t('Failed to verify email address: make sure you clicked the link in the email'); - } - else if (err.httpStatus) { + } else if (err.httpStatus) { err.message += ` (Status ${err.httpStatus})`; } throw err; @@ -104,6 +103,7 @@ class AddThreepid { /** * Takes a phone number verification code as entered by the user and validates * it with the ID server, then if successful, adds the phone number. + * @param {string} token phone number verification code as entered by the user * @return {Promise} Resolves if the phone number was added. Rejects with an object * with a "message" property which contains a human-readable message detailing why * the request failed. @@ -119,7 +119,7 @@ class AddThreepid { return MatrixClientPeg.get().addThreePid({ sid: this.sessionId, client_secret: this.clientSecret, - id_server: identityServerDomain + id_server: identityServerDomain, }, this.bind); }); } diff --git a/src/Avatar.js b/src/Avatar.js index c0127d49af..d41a3f6a79 100644 --- a/src/Avatar.js +++ b/src/Avatar.js @@ -15,18 +15,18 @@ limitations under the License. */ 'use strict'; -var ContentRepo = require("matrix-js-sdk").ContentRepo; -var MatrixClientPeg = require('./MatrixClientPeg'); +import {ContentRepo} from 'matrix-js-sdk'; +import MatrixClientPeg from './MatrixClientPeg'; module.exports = { avatarUrlForMember: function(member, width, height, resizeMethod) { - var url = member.getAvatarUrl( + let url = member.getAvatarUrl( MatrixClientPeg.get().getHomeserverUrl(), Math.floor(width * window.devicePixelRatio), Math.floor(height * window.devicePixelRatio), resizeMethod, false, - false + false, ); if (!url) { // member can be null here currently since on invites, the JS SDK @@ -38,11 +38,11 @@ module.exports = { }, avatarUrlForUser: function(user, width, height, resizeMethod) { - var url = ContentRepo.getHttpUriForMxc( + const url = ContentRepo.getHttpUriForMxc( MatrixClientPeg.get().getHomeserverUrl(), user.avatarUrl, Math.floor(width * window.devicePixelRatio), Math.floor(height * window.devicePixelRatio), - resizeMethod + resizeMethod, ); if (!url || url.length === 0) { return null; @@ -51,11 +51,11 @@ module.exports = { }, defaultAvatarUrlForString: function(s) { - var images = ['76cfa6', '50e2c2', 'f4c371']; - var total = 0; - for (var i = 0; i < s.length; ++i) { + const images = ['76cfa6', '50e2c2', 'f4c371']; + let total = 0; + for (let i = 0; i < s.length; ++i) { total += s.charCodeAt(i); } return 'img/' + images[total % images.length] + '.png'; - } + }, }; diff --git a/src/BasePlatform.js b/src/BasePlatform.js index a920479823..5f8772c7aa 100644 --- a/src/BasePlatform.js +++ b/src/BasePlatform.js @@ -57,6 +57,7 @@ export default class BasePlatform { /** * Returns true if the platform supports displaying * notifications, otherwise false. + * @returns {boolean} whether the platform supports displaying notifications */ supportsNotifications(): boolean { return false; @@ -65,6 +66,7 @@ export default class BasePlatform { /** * Returns true if the application currently has permission * to display notifications. Otherwise false. + * @returns {boolean} whether the application has permission to display notifications */ maySendNotifications(): boolean { return false; diff --git a/src/DateUtils.js b/src/DateUtils.js index 09ef9c996f..78eef57eae 100644 --- a/src/DateUtils.js +++ b/src/DateUtils.js @@ -61,17 +61,18 @@ function twelveHourTime(date) { module.exports = { formatDate: function(date, showTwelveHour=false) { - var now = new Date(); + const now = new Date(); const days = getDaysArray(); const months = getMonthsArray(); if (date.toDateString() === now.toDateString()) { return this.formatTime(date); - } - else if (now.getTime() - date.getTime() < 6 * 24 * 60 * 60 * 1000) { + } else if (now.getTime() - date.getTime() < 6 * 24 * 60 * 60 * 1000) { // TODO: use standard date localize function provided in counterpart - return _t('%(weekDayName)s %(time)s', {weekDayName: days[date.getDay()], time: this.formatTime(date, showTwelveHour)}); - } - else if (now.getFullYear() === date.getFullYear()) { + return _t('%(weekDayName)s %(time)s', { + weekDayName: days[date.getDay()], + time: this.formatTime(date, showTwelveHour), + }); + } else if (now.getFullYear() === date.getFullYear()) { // TODO: use standard date localize function provided in counterpart return _t('%(weekDayName)s, %(monthName)s %(day)s %(time)s', { weekDayName: days[date.getDay()], diff --git a/src/Entities.js b/src/Entities.js index 7c3909f36f..21abd9c473 100644 --- a/src/Entities.js +++ b/src/Entities.js @@ -14,8 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -var React = require('react'); -var sdk = require('./index'); +import sdk from './index'; function isMatch(query, name, uid) { query = query.toLowerCase(); @@ -33,8 +32,8 @@ function isMatch(query, name, uid) { } // split spaces in name and try matching constituent parts - var parts = name.split(" "); - for (var i = 0; i < parts.length; i++) { + const parts = name.split(" "); + for (let i = 0; i < parts.length; i++) { if (parts[i].indexOf(query) === 0) { return true; } @@ -67,7 +66,7 @@ class Entity { class MemberEntity extends Entity { getJsx() { - var MemberTile = sdk.getComponent("rooms.MemberTile"); + const MemberTile = sdk.getComponent("rooms.MemberTile"); return ( <MemberTile key={this.model.userId} member={this.model} /> ); @@ -84,6 +83,7 @@ class UserEntity extends Entity { super(model); this.showInviteButton = Boolean(showInviteButton); this.inviteFn = inviteFn; + this.onClick = this.onClick.bind(this); } onClick() { @@ -93,15 +93,15 @@ class UserEntity extends Entity { } getJsx() { - var UserTile = sdk.getComponent("rooms.UserTile"); + const UserTile = sdk.getComponent("rooms.UserTile"); return ( <UserTile key={this.model.userId} user={this.model} - showInviteButton={this.showInviteButton} onClick={this.onClick.bind(this)} /> + showInviteButton={this.showInviteButton} onClick={this.onClick} /> ); } matches(queryString) { - var name = this.model.displayName || this.model.userId; + const name = this.model.displayName || this.model.userId; return isMatch(queryString, name, this.model.userId); } } @@ -109,7 +109,7 @@ class UserEntity extends Entity { module.exports = { newEntity: function(jsx, matchFn) { - var entity = new Entity(); + const entity = new Entity(); entity.getJsx = function() { return jsx; }; @@ -137,5 +137,5 @@ module.exports = { return users.map(function(u) { return new UserEntity(u, showInviteButton, inviteFn); }); - } + }, }; diff --git a/src/Lifecycle.js b/src/Lifecycle.js index 06f5d9ef00..f64e2b3858 100644 --- a/src/Lifecycle.js +++ b/src/Lifecycle.js @@ -419,6 +419,8 @@ export function logout() { * listen for events while a session is logged in. */ function startMatrixClient() { + console.log(`Lifecycle: Starting MatrixClient`); + // dispatch this before starting the matrix client: it's used // to add listeners for the 'sync' event so otherwise we'd have // a race condition (and we need to dispatch synchronously for this diff --git a/src/MatrixClientPeg.js b/src/MatrixClientPeg.js index 0676e4600f..b31cf7511e 100644 --- a/src/MatrixClientPeg.js +++ b/src/MatrixClientPeg.js @@ -77,22 +77,26 @@ class MatrixClientPeg { this._createClient(creds); } - start() { + async start() { const opts = utils.deepCopy(this.opts); // the react sdk doesn't work without this, so don't allow opts.pendingEventOrdering = "detached"; - let promise = this.matrixClient.store.startup(); - // log any errors when starting up the database (if one exists) - promise.catch((err) => { + try { + let promise = this.matrixClient.store.startup(); + console.log(`MatrixClientPeg: waiting for MatrixClient store to initialise`); + await promise; + } catch(err) { + // log any errors when starting up the database (if one exists) console.error(`Error starting matrixclient store: ${err}`); - }); + } // regardless of errors, start the client. If we did error out, we'll // just end up doing a full initial /sync. - promise.finally(() => { - this.get().startClient(opts); - }); + + console.log(`MatrixClientPeg: really starting MatrixClient`); + this.get().startClient(opts); + console.log(`MatrixClientPeg: MatrixClient started`); } getCredentials(): MatrixClientCreds { diff --git a/src/ObjectUtils.js b/src/ObjectUtils.js index 5fac588a4f..07d8b465af 100644 --- a/src/ObjectUtils.js +++ b/src/ObjectUtils.js @@ -23,8 +23,8 @@ limitations under the License. * { key: $KEY, val: $VALUE, place: "add|del" } */ module.exports.getKeyValueArrayDiffs = function(before, after) { - var results = []; - var delta = {}; + const results = []; + const delta = {}; Object.keys(before).forEach(function(beforeKey) { delta[beforeKey] = delta[beforeKey] || 0; // init to 0 initially delta[beforeKey]--; // keys present in the past have -ve values @@ -46,9 +46,9 @@ module.exports.getKeyValueArrayDiffs = function(before, after) { results.push({ place: "del", key: muxedKey, val: beforeVal }); }); break; - case 0: // A mix of added/removed keys + case 0: {// A mix of added/removed keys // compare old & new vals - var itemDelta = {}; + const itemDelta = {}; before[muxedKey].forEach(function(beforeVal) { itemDelta[beforeVal] = itemDelta[beforeVal] || 0; itemDelta[beforeVal]--; @@ -68,9 +68,9 @@ module.exports.getKeyValueArrayDiffs = function(before, after) { } }); break; + } default: - console.error("Calculated key delta of " + delta[muxedKey] + - " - this should never happen!"); + console.error("Calculated key delta of " + delta[muxedKey] + " - this should never happen!"); break; } }); @@ -79,8 +79,10 @@ module.exports.getKeyValueArrayDiffs = function(before, after) { }; /** - * Shallow-compare two objects for equality: each key and value must be - * identical + * Shallow-compare two objects for equality: each key and value must be identical + * @param {Object} objA First object to compare against the second + * @param {Object} objB Second object to compare against the first + * @return {boolean} whether the two objects have same key=values */ module.exports.shallowEqual = function(objA, objB) { if (objA === objB) { @@ -92,15 +94,15 @@ module.exports.shallowEqual = function(objA, objB) { return false; } - var keysA = Object.keys(objA); - var keysB = Object.keys(objB); + const keysA = Object.keys(objA); + const keysB = Object.keys(objB); if (keysA.length !== keysB.length) { return false; } - for (var i = 0; i < keysA.length; i++) { - var key = keysA[i]; + for (let i = 0; i < keysA.length; i++) { + const key = keysA[i]; if (!objB.hasOwnProperty(key) || objA[key] !== objB[key]) { return false; } diff --git a/src/PasswordReset.js b/src/PasswordReset.js index 0739ca0a24..71fc4f6b31 100644 --- a/src/PasswordReset.js +++ b/src/PasswordReset.js @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -var Matrix = require("matrix-js-sdk"); +import * as Matrix from 'matrix-js-sdk'; import { _t } from './languageHandler'; /** @@ -34,7 +34,7 @@ class PasswordReset { constructor(homeserverUrl, identityUrl) { this.client = Matrix.createClient({ baseUrl: homeserverUrl, - idBaseUrl: identityUrl + idBaseUrl: identityUrl, }); this.clientSecret = this.client.generateClientSecret(); this.identityServerDomain = identityUrl.split("://")[1]; @@ -53,7 +53,7 @@ class PasswordReset { this.sessionId = res.sid; return res; }, function(err) { - if (err.errcode == 'M_THREEPID_NOT_FOUND') { + if (err.errcode === 'M_THREEPID_NOT_FOUND') { err.message = _t('This email address was not found'); } else if (err.httpStatus) { err.message = err.message + ` (Status ${err.httpStatus})`; @@ -75,16 +75,15 @@ class PasswordReset { threepid_creds: { sid: this.sessionId, client_secret: this.clientSecret, - id_server: this.identityServerDomain - } + id_server: this.identityServerDomain, + }, }, this.password).catch(function(err) { if (err.httpStatus === 401) { err.message = _t('Failed to verify email address: make sure you clicked the link in the email'); - } - else if (err.httpStatus === 404) { - err.message = _t('Your email address does not appear to be associated with a Matrix ID on this Homeserver.'); - } - else if (err.httpStatus) { + } else if (err.httpStatus === 404) { + err.message = + _t('Your email address does not appear to be associated with a Matrix ID on this Homeserver.'); + } else if (err.httpStatus) { err.message += ` (Status ${err.httpStatus})`; } throw err; diff --git a/src/Resend.js b/src/Resend.js index bbd980ea7f..1fee5854ea 100644 --- a/src/Resend.js +++ b/src/Resend.js @@ -14,10 +14,8 @@ See the License for the specific language governing permissions and limitations under the License. */ -var MatrixClientPeg = require('./MatrixClientPeg'); -var dis = require('./dispatcher'); -var sdk = require('./index'); -var Modal = require('./Modal'); +import MatrixClientPeg from './MatrixClientPeg'; +import dis from './dispatcher'; import { EventStatus } from 'matrix-js-sdk'; module.exports = { @@ -37,12 +35,10 @@ module.exports = { }, resend: function(event) { const room = MatrixClientPeg.get().getRoom(event.getRoomId()); - MatrixClientPeg.get().resendEvent( - event, room - ).done(function(res) { + MatrixClientPeg.get().resendEvent(event, room).done(function(res) { dis.dispatch({ action: 'message_sent', - event: event + event: event, }); }, function(err) { // XXX: temporary logging to try to diagnose @@ -58,7 +54,7 @@ module.exports = { dis.dispatch({ action: 'message_send_failed', - event: event + event: event, }); }); }, @@ -66,7 +62,7 @@ module.exports = { MatrixClientPeg.get().cancelPendingEvent(event); dis.dispatch({ action: 'message_send_cancelled', - event: event + event: event, }); }, }; diff --git a/src/Roles.js b/src/Roles.js index 8c1f711bbe..83d8192c67 100644 --- a/src/Roles.js +++ b/src/Roles.js @@ -19,7 +19,7 @@ export function levelRoleMap() { return { undefined: _t('Default'), 0: _t('User'), - 50: _t('Moderator'), + 50: _t('Moderator'), 100: _t('Admin'), }; } diff --git a/src/RoomListSorter.js b/src/RoomListSorter.js index 7a43c1891e..c06cc60c97 100644 --- a/src/RoomListSorter.js +++ b/src/RoomListSorter.js @@ -19,8 +19,7 @@ limitations under the License. function tsOfNewestEvent(room) { if (room.timeline.length) { return room.timeline[room.timeline.length - 1].getTs(); - } - else { + } else { return Number.MAX_SAFE_INTEGER; } } @@ -32,5 +31,5 @@ function mostRecentActivityFirst(roomList) { } module.exports = { - mostRecentActivityFirst: mostRecentActivityFirst + mostRecentActivityFirst, }; diff --git a/src/RoomNotifs.js b/src/RoomNotifs.js index 7cb7d4b9de..88b6e56c7f 100644 --- a/src/RoomNotifs.js +++ b/src/RoomNotifs.js @@ -52,7 +52,7 @@ export function getRoomNotifsState(roomId) { } export function setRoomNotifsState(roomId, newState) { - if (newState == MUTE) { + if (newState === MUTE) { return setRoomNotifsStateMuted(roomId); } else { return setRoomNotifsStateUnmuted(roomId, newState); @@ -80,11 +80,11 @@ function setRoomNotifsStateMuted(roomId) { kind: 'event_match', key: 'room_id', pattern: roomId, - } + }, ], actions: [ 'dont_notify', - ] + ], })); return q.all(promises); @@ -99,16 +99,16 @@ function setRoomNotifsStateUnmuted(roomId, newState) { promises.push(cli.deletePushRule('global', 'override', overrideMuteRule.rule_id)); } - if (newState == 'all_messages') { + if (newState === 'all_messages') { const roomRule = cli.getRoomPushRule('global', roomId); if (roomRule) { promises.push(cli.deletePushRule('global', 'room', roomRule.rule_id)); } - } else if (newState == 'mentions_only') { + } else if (newState === 'mentions_only') { promises.push(cli.addPushRule('global', 'room', roomId, { actions: [ 'dont_notify', - ] + ], })); // https://matrix.org/jira/browse/SPEC-400 promises.push(cli.setPushRuleEnabled('global', 'room', roomId, true)); @@ -119,8 +119,8 @@ function setRoomNotifsStateUnmuted(roomId, newState) { { set_tweak: 'sound', value: 'default', - } - ] + }, + ], })); // https://matrix.org/jira/browse/SPEC-400 promises.push(cli.setPushRuleEnabled('global', 'room', roomId, true)); @@ -145,20 +145,10 @@ function isRuleForRoom(roomId, rule) { return false; } const cond = rule.conditions[0]; - if ( - cond.kind == 'event_match' && - cond.key == 'room_id' && - cond.pattern == roomId - ) { - return true; - } - return false; + return (cond.kind === 'event_match' && cond.key === 'room_id' && cond.pattern === roomId); } function isMuteRule(rule) { - return ( - rule.actions.length == 1 && - rule.actions[0] == 'dont_notify' - ); + return (rule.actions.length === 1 && rule.actions[0] === 'dont_notify'); } diff --git a/src/SdkConfig.js b/src/SdkConfig.js index 8d8e93a889..48ebf011f2 100644 --- a/src/SdkConfig.js +++ b/src/SdkConfig.js @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -var DEFAULTS = { +const DEFAULTS = { // URL to a page we show in an iframe to configure integrations integrations_ui_url: "https://scalar.vector.im/", // Base URL to the REST interface of the integrations server @@ -30,8 +30,8 @@ class SdkConfig { } static put(cfg) { - var defaultKeys = Object.keys(DEFAULTS); - for (var i = 0; i < defaultKeys.length; ++i) { + const defaultKeys = Object.keys(DEFAULTS); + for (let i = 0; i < defaultKeys.length; ++i) { if (cfg[defaultKeys[i]] === undefined) { cfg[defaultKeys[i]] = DEFAULTS[defaultKeys[i]]; } diff --git a/src/Skinner.js b/src/Skinner.js index 0688c9fc26..f47572ba01 100644 --- a/src/Skinner.js +++ b/src/Skinner.js @@ -51,19 +51,18 @@ class Skinner { if (this.components !== null) { throw new Error( "Attempted to load a skin while a skin is already loaded"+ - "If you want to change the active skin, call resetSkin first" - ); + "If you want to change the active skin, call resetSkin first"); } this.components = {}; - var compKeys = Object.keys(skinObject.components); - for (var i = 0; i < compKeys.length; ++i) { - var comp = skinObject.components[compKeys[i]]; + const compKeys = Object.keys(skinObject.components); + for (let i = 0; i < compKeys.length; ++i) { + const comp = skinObject.components[compKeys[i]]; this.addComponent(compKeys[i], comp); } } addComponent(name, comp) { - var slot = name; + let slot = name; if (comp.replaces !== undefined) { if (comp.replaces.indexOf('.') > -1) { slot = comp.replaces; diff --git a/src/SlashCommands.js b/src/SlashCommands.js index 185ea504ac..b1cd59f3a9 100644 --- a/src/SlashCommands.js +++ b/src/SlashCommands.js @@ -186,7 +186,7 @@ const commands = { if (targetRoomId) { break; } } if (!targetRoomId) { - return reject(_t("Unrecognised room alias:") + ' ' + roomAlias); + return reject(_t("Unrecognised room alias:") + ' ' + roomAlias); } } } @@ -344,8 +344,7 @@ const commands = { _t('WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device' + ' %(deviceId)s is "%(fprint)s" which does not match the provided key' + ' "%(fingerprint)s". This could mean your communications are being intercepted!', - {deviceId: deviceId, fprint: fprint, userId: userId, fingerprint: fingerprint}) - ); + {deviceId: deviceId, fprint: fprint, userId: userId, fingerprint: fingerprint})); } } } diff --git a/src/UserActivity.js b/src/UserActivity.js index 1ae272f5df..b6fae38ed5 100644 --- a/src/UserActivity.js +++ b/src/UserActivity.js @@ -14,10 +14,10 @@ See the License for the specific language governing permissions and limitations under the License. */ -var dis = require("./dispatcher"); +import dis from './dispatcher'; -var MIN_DISPATCH_INTERVAL_MS = 500; -var CURRENTLY_ACTIVE_THRESHOLD_MS = 2000; +const MIN_DISPATCH_INTERVAL_MS = 500; +const CURRENTLY_ACTIVE_THRESHOLD_MS = 2000; /** * This class watches for user activity (moving the mouse or pressing a key) @@ -58,16 +58,15 @@ class UserActivity { /** * Return true if there has been user activity very recently * (ie. within a few seconds) + * @returns {boolean} true if user is currently/very recently active */ userCurrentlyActive() { return this.lastActivityAtTs > new Date().getTime() - CURRENTLY_ACTIVE_THRESHOLD_MS; } _onUserActivity(event) { - if (event.screenX && event.type == "mousemove") { - if (event.screenX === this.lastScreenX && - event.screenY === this.lastScreenY) - { + if (event.screenX && event.type === "mousemove") { + if (event.screenX === this.lastScreenX && event.screenY === this.lastScreenY) { // mouse hasn't actually moved return; } @@ -79,28 +78,24 @@ class UserActivity { if (this.lastDispatchAtTs < this.lastActivityAtTs - MIN_DISPATCH_INTERVAL_MS) { this.lastDispatchAtTs = this.lastActivityAtTs; dis.dispatch({ - action: 'user_activity' + action: 'user_activity', }); if (!this.activityEndTimer) { - this.activityEndTimer = setTimeout( - this._onActivityEndTimer.bind(this), MIN_DISPATCH_INTERVAL_MS - ); + this.activityEndTimer = setTimeout(this._onActivityEndTimer.bind(this), MIN_DISPATCH_INTERVAL_MS); } } } _onActivityEndTimer() { - var now = new Date().getTime(); - var targetTime = this.lastActivityAtTs + MIN_DISPATCH_INTERVAL_MS; + const now = new Date().getTime(); + const targetTime = this.lastActivityAtTs + MIN_DISPATCH_INTERVAL_MS; if (now >= targetTime) { dis.dispatch({ - action: 'user_activity_end' + action: 'user_activity_end', }); this.activityEndTimer = undefined; } else { - this.activityEndTimer = setTimeout( - this._onActivityEndTimer.bind(this), targetTime - now - ); + this.activityEndTimer = setTimeout(this._onActivityEndTimer.bind(this), targetTime - now); } } } diff --git a/src/autocomplete/CommandProvider.js b/src/autocomplete/CommandProvider.js index 9ae3a7badb..6f2f68b121 100644 --- a/src/autocomplete/CommandProvider.js +++ b/src/autocomplete/CommandProvider.js @@ -21,6 +21,7 @@ import AutocompleteProvider from './AutocompleteProvider'; import FuzzyMatcher from './FuzzyMatcher'; import {TextualCompletion} from './Components'; +// TODO merge this with the factory mechanics of SlashCommands? // Warning: Since the description string will be translated in _t(result.description), all these strings below must be in i18n/strings/en_EN.json file const COMMANDS = [ { @@ -28,11 +29,6 @@ const COMMANDS = [ args: '<message>', description: 'Displays action', }, - { - command: '/part', - args: '[#alias:domain]', - description: 'Leave room', - }, { command: '/ban', args: '<user-id> [reason]', @@ -43,6 +39,11 @@ const COMMANDS = [ args: '<user-id>', description: 'Unbans user with given id', }, + { + command: '/op', + args: '<user-id> [<power-level>]', + description: 'Define the power level of a user', + }, { command: '/deop', args: '<user-id>', @@ -58,6 +59,16 @@ const COMMANDS = [ args: '<room-alias>', description: 'Joins room with given alias', }, + { + command: '/part', + args: '[<room-alias>]', + description: 'Leave room', + }, + { + command: '/topic', + args: '<topic>', + description: 'Sets the room topic', + }, { command: '/kick', args: '<user-id> [reason]', @@ -74,10 +85,16 @@ const COMMANDS = [ description: 'Searches DuckDuckGo for results', }, { - command: '/op', - args: '<userId> [<power level>]', - description: 'Define the power level of a user', + command: '/tint', + args: '<color1> [<color2>]', + description: 'Changes colour scheme of current room', }, + { + command: '/verify', + args: '<user-id> <device-id> <device-signing-key>', + description: 'Verifies a user, device, and pubkey tuple', + }, + // Omitting `/markdown` as it only seems to apply to OldComposer ]; const COMMAND_RE = /(^\/\w*)/g; diff --git a/src/autocomplete/EmojiProvider.js b/src/autocomplete/EmojiProvider.js index 5afcbedd2e..5cb3c4af2f 100644 --- a/src/autocomplete/EmojiProvider.js +++ b/src/autocomplete/EmojiProvider.js @@ -101,7 +101,7 @@ export default class EmojiProvider extends AutocompleteProvider { } renderCompletions(completions: [React.Component]): ?React.Component { - return <div className="mx_Autocomplete_Completion_container_pill"> + return <div className="mx_Autocomplete_Completion_container_pill mx_Autocomplete_Completion_container_truncate"> {completions} </div>; } diff --git a/src/autocomplete/QueryMatcher.js b/src/autocomplete/QueryMatcher.js index 1b2ee1bc0d..07398e7a5f 100644 --- a/src/autocomplete/QueryMatcher.js +++ b/src/autocomplete/QueryMatcher.js @@ -69,6 +69,12 @@ export default class QueryMatcher { if (this.options.shouldMatchWordsOnly === undefined) { this.options.shouldMatchWordsOnly = true; } + + // By default, match anywhere in the string being searched. If enabled, only return + // matches that are prefixed with the query. + if (this.options.shouldMatchPrefix === undefined) { + this.options.shouldMatchPrefix = false; + } } setObjects(objects: Array<Object>) { @@ -80,13 +86,27 @@ export default class QueryMatcher { if (this.options.shouldMatchWordsOnly) { query = query.replace(/[^\w]/g, ''); } - const results = _sortedUniq(_sortBy(_flatMap(this.keyMap.keys, (key) => { + if (query.length === 0) { + return []; + } + const results = []; + this.keyMap.keys.forEach((key) => { let resultKey = key.toLowerCase(); if (this.options.shouldMatchWordsOnly) { resultKey = resultKey.replace(/[^\w]/g, ''); } - return resultKey.indexOf(query) !== -1 ? this.keyMap.objectMap[key] : []; - }), (candidate) => this.keyMap.priorityMap.get(candidate))); - return results; + const index = resultKey.indexOf(query); + if (index !== -1 && (!this.options.shouldMatchPrefix || index === 0)) { + results.push({key, index}); + } + }); + + return _sortedUniq(_flatMap(_sortBy(results, (candidate) => { + return candidate.index; + }).map((candidate) => { + // return an array of objects (those given to setObjects) that have the given + // key as a property. + return this.keyMap.objectMap[candidate.key]; + }))); } } diff --git a/src/autocomplete/RoomProvider.js b/src/autocomplete/RoomProvider.js index a001f381ee..bf8495a90e 100644 --- a/src/autocomplete/RoomProvider.js +++ b/src/autocomplete/RoomProvider.js @@ -78,7 +78,7 @@ export default class RoomProvider extends AutocompleteProvider { } renderCompletions(completions: [React.Component]): ?React.Component { - return <div className="mx_Autocomplete_Completion_container_pill"> + return <div className="mx_Autocomplete_Completion_container_pill mx_Autocomplete_Completion_container_truncate"> {completions} </div>; } diff --git a/src/autocomplete/UserProvider.js b/src/autocomplete/UserProvider.js index 4e0c0f5ea7..26ec15e124 100644 --- a/src/autocomplete/UserProvider.js +++ b/src/autocomplete/UserProvider.js @@ -37,10 +37,11 @@ export default class UserProvider extends AutocompleteProvider { constructor() { super(USER_REGEX, { - keys: ['name', 'userId'], + keys: ['name'], }); this.matcher = new FuzzyMatcher([], { - keys: ['name', 'userId'], + keys: ['name'], + shouldMatchPrefix: true, }); } @@ -50,7 +51,7 @@ export default class UserProvider extends AutocompleteProvider { let completions = []; let {command, range} = this.getCurrentCommand(query, selection, force); if (command) { - completions = this.matcher.match(command[0]).map(user => { + completions = this.matcher.match(command[0]).slice(0, 4).map((user) => { let displayName = (user.name || user.userId || '').replace(' (IRC)', ''); // FIXME when groups are done let completion = displayName; if (range.start === 0) { @@ -68,7 +69,7 @@ export default class UserProvider extends AutocompleteProvider { ), range, }; - }).slice(0, 4); + }); } return completions; } @@ -90,7 +91,9 @@ export default class UserProvider extends AutocompleteProvider { if (member.userId !== currentUserId) return true; }); - this.users = _sortBy(this.users, (user) => 1E20 - lastSpoken[user.userId] || 1E20); + this.users = _sortBy(this.users, (completion) => + 1E20 - lastSpoken[completion.user.userId] || 1E20, + ); this.matcher.setObjects(this.users); } @@ -98,9 +101,10 @@ export default class UserProvider extends AutocompleteProvider { onUserSpoke(user: RoomMember) { if(user.userId === MatrixClientPeg.get().credentials.userId) return; - // Probably unsafe to compare by reference here? - _pull(this.users, user); - this.users.splice(0, 0, user); + this.users = this.users.splice( + this.users.findIndex((user2) => user2.userId === user.userId), 1); + this.users = [user, ...this.users]; + this.matcher.setObjects(this.users); } @@ -112,7 +116,7 @@ export default class UserProvider extends AutocompleteProvider { } renderCompletions(completions: [React.Component]): ?React.Component { - return <div className="mx_Autocomplete_Completion_container_pill"> + return <div className="mx_Autocomplete_Completion_container_pill mx_Autocomplete_Completion_container_truncate"> {completions} </div>; } diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 6f4c931ab7..9fed0e7d5b 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -18,8 +18,12 @@ limitations under the License. import React from 'react'; import MatrixClientPeg from '../../../MatrixClientPeg'; +import ScalarAuthClient from '../../../ScalarAuthClient'; +import SdkConfig from '../../../SdkConfig'; import { _t } from '../../../languageHandler'; +import url from 'url'; + export default React.createClass({ displayName: 'AppTile', @@ -36,6 +40,51 @@ export default React.createClass({ }; }, + getInitialState: function() { + return { + loading: false, + widgetUrl: this.props.url, + error: null, + }; + }, + + // Returns true if props.url is a scalar URL, typically https://scalar.vector.im/api + isScalarUrl: function() { + const scalarUrl = SdkConfig.get().integrations_rest_url; + return scalarUrl && this.props.url.startsWith(scalarUrl); + }, + + componentWillMount: function() { + if (!this.isScalarUrl()) { + return; + } + // Fetch the token before loading the iframe as we need to mangle the URL + this.setState({ + loading: true, + }); + this._scalarClient = new ScalarAuthClient(); + this._scalarClient.getScalarToken().done((token) => { + // Append scalar_token as a query param + const u = url.parse(this.props.url); + if (!u.search) { + u.search = "?scalar_token=" + encodeURIComponent(token); + } else { + u.search += "&scalar_token=" + encodeURIComponent(token); + } + + this.setState({ + error: null, + widgetUrl: u.format(), + loading: false, + }); + }, (err) => { + this.setState({ + error: err.message, + loading: false, + }); + }); + }, + _onEditClick: function() { console.log("Edit widget %s", this.props.id); }, @@ -72,6 +121,18 @@ export default React.createClass({ }, render: function() { + let appTileBody; + if (this.state.loading) { + appTileBody = ( + <div> Loading... </div> + ); + } else { + appTileBody = ( + <div className="mx_AppTileBody"> + <iframe ref="appFrame" src={this.state.widgetUrl} allowFullScreen="true"></iframe> + </div> + ); + } return ( <div className={this.props.fullWidth ? "mx_AppTileFullWidth" : "mx_AppTile"} id={this.props.id}> <div className="mx_AppTileMenuBar"> @@ -93,9 +154,7 @@ export default React.createClass({ /> </span> </div> - <div className="mx_AppTileBody"> - <iframe ref="appFrame" src={this.props.url} allowFullScreen="true"></iframe> - </div> + {appTileBody} </div> ); }, diff --git a/src/components/views/messages/TextualBody.js b/src/components/views/messages/TextualBody.js index 190b1341c3..2c50a94a6a 100644 --- a/src/components/views/messages/TextualBody.js +++ b/src/components/views/messages/TextualBody.js @@ -143,9 +143,15 @@ module.exports = React.createClass({ if (this.props.showUrlPreview && !this.state.links.length) { var links = this.findLinks(this.refs.content.children); if (links.length) { - this.setState({ links: links.map((link)=>{ - return link.getAttribute("href"); - })}); + // de-dup the links (but preserve ordering) + const seen = new Set(); + links = links.filter((link) => { + if (seen.has(link)) return false; + seen.add(link); + return true; + }); + + this.setState({ links: links }); // lazy-load the hidden state of the preview widget from localstorage if (global.localStorage) { @@ -158,12 +164,13 @@ module.exports = React.createClass({ findLinks: function(nodes) { var links = []; + for (var i = 0; i < nodes.length; i++) { var node = nodes[i]; if (node.tagName === "A" && node.getAttribute("href")) { if (this.isLinkPreviewable(node)) { - links.push(node); + links.push(node.getAttribute("href")); } } else if (node.tagName === "PRE" || node.tagName === "CODE" || diff --git a/src/components/views/rooms/Autocomplete.js b/src/components/views/rooms/Autocomplete.js index dd6d9d1ae9..807e93cc0b 100644 --- a/src/components/views/rooms/Autocomplete.js +++ b/src/components/views/rooms/Autocomplete.js @@ -68,7 +68,7 @@ export default class Autocomplete extends React.Component { let autocompleteDelay = UserSettingsStore.getLocalSetting('autocompleteDelay', 200); // Don't debounce if we are already showing completions - if (this.state.completions.length > 0) { + if (this.state.completions.length > 0 || this.state.forceComplete) { autocompleteDelay = 0; } @@ -177,7 +177,7 @@ export default class Autocomplete extends React.Component { hide: false, }, () => { this.complete(this.props.query, this.props.selection).then(() => { - done.resolve(); + done.resolve(this.countCompletions()); }); }); return done.promise; diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 294cbdb84c..83e717d55d 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -43,6 +43,8 @@ import Markdown from '../../../Markdown'; import ComposerHistoryManager from '../../../ComposerHistoryManager'; import {onSendMessageFailed} from './MessageComposerInputOld'; +import MessageComposerStore from '../../../stores/MessageComposerStore'; + const TYPING_USER_TIMEOUT = 10000, TYPING_SERVER_TIMEOUT = 30000; const ZWS_CODE = 8203; @@ -130,7 +132,10 @@ export default class MessageComposerInput extends React.Component { isRichtextEnabled, // the currently displayed editor state (note: this is always what is modified on input) - editorState: null, + editorState: this.createEditorState( + isRichtextEnabled, + MessageComposerStore.getContentState(this.props.room.roomId), + ), // the original editor state, before we started tabbing through completions originalEditorState: null, @@ -138,11 +143,10 @@ export default class MessageComposerInput extends React.Component { // the virtual state "above" the history stack, the message currently being composed that // we want to persist whilst browsing history currentlyComposedEditorState: null, - }; - // bit of a hack, but we need to do this here since createEditorState needs isRichtextEnabled - /* eslint react/no-direct-mutation-state:0 */ - this.state.editorState = this.createEditorState(); + // whether there were any completions + someCompletions: null, + }; this.client = MatrixClientPeg.get(); } @@ -336,6 +340,14 @@ export default class MessageComposerInput extends React.Component { this.onFinishedTyping(); } + // Record the editor state for this room so that it can be retrieved after + // switching to another room and back + dis.dispatch({ + action: 'content_state', + room_id: this.props.room.roomId, + content_state: state.editorState.getCurrentContent(), + }); + if (!state.hasOwnProperty('originalEditorState')) { state.originalEditorState = null; } @@ -632,6 +644,10 @@ export default class MessageComposerInput extends React.Component { }; onVerticalArrow = (e, up) => { + if (e.ctrlKey || e.shiftKey || e.altKey || e.metaKey) { + return; + } + // Select history only if we are not currently auto-completing if (this.autocomplete.state.completionList.length === 0) { // Don't go back in history if we're in the middle of a multi-line message @@ -640,17 +656,16 @@ export default class MessageComposerInput extends React.Component { const firstBlock = this.state.editorState.getCurrentContent().getFirstBlock(); const lastBlock = this.state.editorState.getCurrentContent().getLastBlock(); - const selectionOffset = selection.getAnchorOffset(); let canMoveUp = false; let canMoveDown = false; if (blockKey === firstBlock.getKey()) { - const textBeforeCursor = firstBlock.getText().slice(0, selectionOffset); - canMoveUp = textBeforeCursor.indexOf('\n') === -1; + canMoveUp = selection.getStartOffset() === selection.getEndOffset() && + selection.getStartOffset() === 0; } if (blockKey === lastBlock.getKey()) { - const textAfterCursor = lastBlock.getText().slice(selectionOffset); - canMoveDown = textAfterCursor.indexOf('\n') === -1; + canMoveDown = selection.getStartOffset() === selection.getEndOffset() && + selection.getStartOffset() === lastBlock.getText().length; } if ((up && !canMoveUp) || (!up && !canMoveDown)) return; @@ -707,10 +722,16 @@ export default class MessageComposerInput extends React.Component { }; onTab = async (e) => { + this.setState({ + someCompletions: null, + }); e.preventDefault(); if (this.autocomplete.state.completionList.length === 0) { // Force completions to show for the text currently entered - await this.autocomplete.forceComplete(); + const completionCount = await this.autocomplete.forceComplete(); + this.setState({ + someCompletions: completionCount > 0, + }); // Select the first item by moving "down" await this.moveAutocompleteSelection(false); } else { @@ -831,6 +852,7 @@ export default class MessageComposerInput extends React.Component { const className = classNames('mx_MessageComposer_input', { mx_MessageComposer_input_empty: hidePlaceholder, + mx_MessageComposer_input_error: this.state.someCompletions === false, }); const content = activeEditorState.getCurrentContent(); diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index c60f5c37ae..85aedadf64 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -16,18 +16,18 @@ limitations under the License. 'use strict'; -var React = require('react'); -var classNames = require('classnames'); -var sdk = require('../../../index'); +import React from 'react'; +import classNames from 'classnames'; +import sdk from '../../../index'; import { _t } from '../../../languageHandler'; -var MatrixClientPeg = require('../../../MatrixClientPeg'); -var Modal = require("../../../Modal"); -var dis = require("../../../dispatcher"); -var rate_limited_func = require('../../../ratelimitedfunc'); +import MatrixClientPeg from '../../../MatrixClientPeg'; +import Modal from "../../../Modal"; +import dis from "../../../dispatcher"; +import RateLimitedFunc from '../../../ratelimitedfunc'; -var linkify = require('linkifyjs'); -var linkifyElement = require('linkifyjs/element'); -var linkifyMatrix = require('../../../linkify-matrix'); +import * as linkify from 'linkifyjs'; +import linkifyElement from 'linkifyjs/element'; +import linkifyMatrix from '../../../linkify-matrix'; import AccessibleButton from '../elements/AccessibleButton'; import {CancelButton} from './SimpleRoomHeader'; @@ -58,7 +58,7 @@ module.exports = React.createClass({ }, componentDidMount: function() { - var cli = MatrixClientPeg.get(); + const cli = MatrixClientPeg.get(); cli.on("RoomState.events", this._onRoomStateEvents); // When a room name occurs, RoomState.events is fired *before* @@ -79,14 +79,14 @@ module.exports = React.createClass({ if (this.props.room) { this.props.room.removeListener("Room.name", this._onRoomNameChange); } - var cli = MatrixClientPeg.get(); + const cli = MatrixClientPeg.get(); if (cli) { cli.removeListener("RoomState.events", this._onRoomStateEvents); } }, _onRoomStateEvents: function(event, state) { - if (!this.props.room || event.getRoomId() != this.props.room.roomId) { + if (!this.props.room || event.getRoomId() !== this.props.room.roomId) { return; } @@ -94,7 +94,8 @@ module.exports = React.createClass({ this._rateLimitedUpdate(); }, - _rateLimitedUpdate: new rate_limited_func(function() { + _rateLimitedUpdate: new RateLimitedFunc(function() { + /* eslint-disable babel/no-invalid-this */ this.forceUpdate(); }, 500), @@ -109,15 +110,14 @@ module.exports = React.createClass({ }, onAvatarSelected: function(ev) { - var self = this; - var changeAvatar = this.refs.changeAvatar; + const changeAvatar = this.refs.changeAvatar; if (!changeAvatar) { console.error("No ChangeAvatar found to upload image to!"); return; } changeAvatar.onFileSelected(ev).catch(function(err) { - var errMsg = (typeof err === "string") ? err : (err.error || ""); - var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); + const errMsg = (typeof err === "string") ? err : (err.error || ""); + const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); console.error("Failed to set avatar: " + errMsg); Modal.createDialog(ErrorDialog, { title: _t("Error"), @@ -133,10 +133,10 @@ module.exports = React.createClass({ /** * After editing the settings, get the new name for the room * - * Returns undefined if we didn't let the user edit the room name + * @return {?string} newName or undefined if we didn't let the user edit the room name */ getEditedName: function() { - var newName; + let newName; if (this.refs.nameEditor) { newName = this.refs.nameEditor.getRoomName(); } @@ -146,10 +146,10 @@ module.exports = React.createClass({ /** * After editing the settings, get the new topic for the room * - * Returns undefined if we didn't let the user edit the room topic + * @return {?string} newTopic or undefined if we didn't let the user edit the room topic */ getEditedTopic: function() { - var newTopic; + let newTopic; if (this.refs.topicEditor) { newTopic = this.refs.topicEditor.getTopic(); } @@ -157,38 +157,31 @@ module.exports = React.createClass({ }, render: function() { - var RoomAvatar = sdk.getComponent("avatars.RoomAvatar"); - var ChangeAvatar = sdk.getComponent("settings.ChangeAvatar"); - var TintableSvg = sdk.getComponent("elements.TintableSvg"); + const RoomAvatar = sdk.getComponent("avatars.RoomAvatar"); + const ChangeAvatar = sdk.getComponent("settings.ChangeAvatar"); + const TintableSvg = sdk.getComponent("elements.TintableSvg"); const EmojiText = sdk.getComponent('elements.EmojiText'); - var header; - var name = null; - var searchStatus = null; - var topic_el = null; - var cancel_button = null; - var spinner = null; - var save_button = null; - var settings_button = null; + let name = null; + let searchStatus = null; + let topicElement = null; + let cancelButton = null; + let spinner = null; + let saveButton = null; + let settingsButton = null; + + let canSetRoomName; + let canSetRoomAvatar; + let canSetRoomTopic; if (this.props.editing) { - // calculate permissions. XXX: this should be done on mount or something - var user_id = MatrixClientPeg.get().credentials.userId; + const userId = MatrixClientPeg.get().credentials.userId; - var can_set_room_name = this.props.room.currentState.maySendStateEvent( - 'm.room.name', user_id - ); - var can_set_room_avatar = this.props.room.currentState.maySendStateEvent( - 'm.room.avatar', user_id - ); - var can_set_room_topic = this.props.room.currentState.maySendStateEvent( - 'm.room.topic', user_id - ); - var can_set_room_name = this.props.room.currentState.maySendStateEvent( - 'm.room.name', user_id - ); + canSetRoomName = this.props.room.currentState.maySendStateEvent('m.room.name', userId); + canSetRoomAvatar = this.props.room.currentState.maySendStateEvent('m.room.avatar', userId); + canSetRoomTopic = this.props.room.currentState.maySendStateEvent('m.room.topic', userId); - save_button = ( + saveButton = ( <AccessibleButton className="mx_RoomHeader_textButton" onClick={this.props.onSaveClick}> {_t("Save")} </AccessibleButton> @@ -196,39 +189,41 @@ module.exports = React.createClass({ } if (this.props.onCancelClick) { - cancel_button = <CancelButton onClick={this.props.onCancelClick}/>; + cancelButton = <CancelButton onClick={this.props.onCancelClick}/>; } if (this.props.saving) { - var Spinner = sdk.getComponent("elements.Spinner"); + const Spinner = sdk.getComponent("elements.Spinner"); spinner = <div className="mx_RoomHeader_spinner"><Spinner/></div>; } - if (can_set_room_name) { - var RoomNameEditor = sdk.getComponent("rooms.RoomNameEditor"); + if (canSetRoomName) { + const RoomNameEditor = sdk.getComponent("rooms.RoomNameEditor"); name = <RoomNameEditor ref="nameEditor" room={this.props.room} />; - } - else { - var searchStatus; + } else { // don't display the search count until the search completes and // gives us a valid (possibly zero) searchCount. - if (this.props.searchInfo && this.props.searchInfo.searchCount !== undefined && this.props.searchInfo.searchCount !== null) { - searchStatus = <div className="mx_RoomHeader_searchStatus"> { _t("(~%(count)s results)", { count: this.props.searchInfo.searchCount }) }</div>; + if (this.props.searchInfo && + this.props.searchInfo.searchCount !== undefined && + this.props.searchInfo.searchCount !== null) { + searchStatus = <div className="mx_RoomHeader_searchStatus"> + { _t("(~%(count)s results)", { count: this.props.searchInfo.searchCount }) } + </div>; } // XXX: this is a bit inefficient - we could just compare room.name for 'Empty room'... - var settingsHint = false; - var members = this.props.room ? this.props.room.getJoinedMembers() : undefined; + let settingsHint = false; + const members = this.props.room ? this.props.room.getJoinedMembers() : undefined; if (members) { if (members.length === 1 && members[0].userId === MatrixClientPeg.get().credentials.userId) { - var name = this.props.room.currentState.getStateEvents('m.room.name', ''); - if (!name || !name.getContent().name) { + const nameEvent = this.props.room.currentState.getStateEvents('m.room.name', ''); + if (!nameEvent || !nameEvent.getContent().name) { settingsHint = true; } } } - var roomName = _t("Join Room"); + let roomName = _t("Join Room"); if (this.props.oobData && this.props.oobData.name) { roomName = this.props.oobData.name; } else if (this.props.room) { @@ -243,24 +238,25 @@ module.exports = React.createClass({ </div>; } - if (can_set_room_topic) { - var RoomTopicEditor = sdk.getComponent("rooms.RoomTopicEditor"); - topic_el = <RoomTopicEditor ref="topicEditor" room={this.props.room} />; + if (canSetRoomTopic) { + const RoomTopicEditor = sdk.getComponent("rooms.RoomTopicEditor"); + topicElement = <RoomTopicEditor ref="topicEditor" room={this.props.room} />; } else { - var topic; + let topic; if (this.props.room) { - var ev = this.props.room.currentState.getStateEvents('m.room.topic', ''); + const ev = this.props.room.currentState.getStateEvents('m.room.topic', ''); if (ev) { topic = ev.getContent().topic; } } if (topic) { - topic_el = <EmojiText dir="auto" element="div" className="mx_RoomHeader_topic" ref="topic" title={topic}>{ topic }</EmojiText>; + topicElement = + <div className="mx_RoomHeader_topic" ref="topic" title={ topic } dir="auto">{ topic }</div>; } } - var roomAvatar = null; - if (can_set_room_avatar) { + let roomAvatar = null; + if (canSetRoomAvatar) { roomAvatar = ( <div className="mx_RoomHeader_avatarPicker"> <div onClick={ this.onAvatarPickerClick }> @@ -276,8 +272,7 @@ module.exports = React.createClass({ </div> </div> ); - } - else if (this.props.room || (this.props.oobData && this.props.oobData.name)) { + } else if (this.props.room || (this.props.oobData && this.props.oobData.name)) { roomAvatar = ( <div onClick={this.props.onSettingsClick}> <RoomAvatar room={this.props.room} width={48} height={48} oobData={this.props.oobData} /> @@ -285,9 +280,8 @@ module.exports = React.createClass({ ); } - var settings_button; if (this.props.onSettingsClick) { - settings_button = + settingsButton = <AccessibleButton className="mx_RoomHeader_button" onClick={this.props.onSettingsClick} title={_t("Settings")}> <TintableSvg src="img/icons-settings-room.svg" width="16" height="16"/> </AccessibleButton>; @@ -301,61 +295,58 @@ module.exports = React.createClass({ // </div>; // } - var forget_button; + let forgetButton; if (this.props.onForgetClick) { - forget_button = + forgetButton = <AccessibleButton className="mx_RoomHeader_button" onClick={this.props.onForgetClick} title={ _t("Forget room") }> <TintableSvg src="img/leave.svg" width="26" height="20"/> </AccessibleButton>; } - let search_button; + let searchButton; if (this.props.onSearchClick && this.props.inRoom) { - search_button = + searchButton = <AccessibleButton className="mx_RoomHeader_button" onClick={this.props.onSearchClick} title={ _t("Search") }> <TintableSvg src="img/icons-search.svg" width="35" height="35"/> </AccessibleButton>; } - var rightPanel_buttons; + let rightPanelButtons; if (this.props.collapsedRhs) { - rightPanel_buttons = + rightPanelButtons = <AccessibleButton className="mx_RoomHeader_button" onClick={this.onShowRhsClick} title={ _t('Show panel') }> <TintableSvg src="img/maximise.svg" width="10" height="16"/> </AccessibleButton>; } - var right_row; + let rightRow; if (!this.props.editing) { - right_row = + rightRow = <div className="mx_RoomHeader_rightRow"> - { settings_button } - { forget_button } - { search_button } - { rightPanel_buttons } + { settingsButton } + { forgetButton } + { searchButton } + { rightPanelButtons } </div>; } - header = - <div className="mx_RoomHeader_wrapper"> - <div className="mx_RoomHeader_leftRow"> - <div className="mx_RoomHeader_avatar"> - { roomAvatar } - </div> - <div className="mx_RoomHeader_info"> - { name } - { topic_el } - </div> - </div> - {spinner} - {save_button} - {cancel_button} - {right_row} - </div>; - return ( <div className={ "mx_RoomHeader " + (this.props.editing ? "mx_RoomHeader_editing" : "") }> - { header } + <div className="mx_RoomHeader_wrapper"> + <div className="mx_RoomHeader_leftRow"> + <div className="mx_RoomHeader_avatar"> + { roomAvatar } + </div> + <div className="mx_RoomHeader_info"> + { name } + { topicElement } + </div> + </div> + {spinner} + {saveButton} + {cancelButton} + {rightRow} + </div> </div> ); }, diff --git a/src/components/views/voip/CallView.js b/src/components/views/voip/CallView.js index b53794637f..e669f7e0a6 100644 --- a/src/components/views/voip/CallView.js +++ b/src/components/views/voip/CallView.js @@ -13,11 +13,11 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -var React = require("react"); -var dis = require("../../../dispatcher"); -var CallHandler = require("../../../CallHandler"); -var sdk = require('../../../index'); -var MatrixClientPeg = require("../../../MatrixClientPeg"); +import React from 'react'; +import dis from '../../../dispatcher'; +import CallHandler from '../../../CallHandler'; +import sdk from '../../../index'; +import MatrixClientPeg from '../../../MatrixClientPeg'; import { _t } from '../../../languageHandler'; module.exports = React.createClass({ @@ -73,10 +73,10 @@ module.exports = React.createClass({ }, showCall: function() { - var call; + let call; if (this.props.room) { - var roomId = this.props.room.roomId; + const roomId = this.props.room.roomId; call = CallHandler.getCallForRoom(roomId) || (this.props.ConferenceHandler ? this.props.ConferenceHandler.getConferenceCallForRoom(roomId) : @@ -86,9 +86,7 @@ module.exports = React.createClass({ if (this.call) { this.setState({ call: call }); } - - } - else { + } else { call = CallHandler.getAnyActiveCall(); this.setState({ call: call }); } @@ -109,8 +107,7 @@ module.exports = React.createClass({ call.confUserId ? "none" : "block" ); this.getVideoView().getRemoteVideoElement().style.display = "block"; - } - else { + } else { this.getVideoView().getLocalVideoElement().style.display = "none"; this.getVideoView().getRemoteVideoElement().style.display = "none"; dis.dispatch({action: 'video_fullscreen', fullscreen: false}); @@ -126,11 +123,11 @@ module.exports = React.createClass({ }, render: function() { - var VideoView = sdk.getComponent('voip.VideoView'); + const VideoView = sdk.getComponent('voip.VideoView'); - var voice; + let voice; if (this.state.call && this.state.call.type === "voice" && this.props.showVoice) { - var callRoom = MatrixClientPeg.get().getRoom(this.state.call.roomId); + const callRoom = MatrixClientPeg.get().getRoom(this.state.call.roomId); voice = ( <div className="mx_CallView_voice" onClick={ this.props.onClick }> {_t("Active call (%(roomName)s)", {roomName: callRoom.name})} @@ -147,6 +144,6 @@ module.exports = React.createClass({ { voice } </div> ); - } + }, }); diff --git a/src/components/views/voip/IncomingCallBox.js b/src/components/views/voip/IncomingCallBox.js index 1b806fc5b3..c5934b74dc 100644 --- a/src/components/views/voip/IncomingCallBox.js +++ b/src/components/views/voip/IncomingCallBox.js @@ -13,10 +13,9 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -var React = require('react'); -var MatrixClientPeg = require('../../../MatrixClientPeg'); -var dis = require("../../../dispatcher"); -var CallHandler = require("../../../CallHandler"); +import React from 'react'; +import MatrixClientPeg from '../../../MatrixClientPeg'; +import dis from '../../../dispatcher'; import { _t } from '../../../languageHandler'; module.exports = React.createClass({ @@ -29,34 +28,32 @@ module.exports = React.createClass({ onAnswerClick: function() { dis.dispatch({ action: 'answer', - room_id: this.props.incomingCall.roomId + room_id: this.props.incomingCall.roomId, }); }, onRejectClick: function() { dis.dispatch({ action: 'hangup', - room_id: this.props.incomingCall.roomId + room_id: this.props.incomingCall.roomId, }); }, render: function() { - var room = null; + let room = null; if (this.props.incomingCall) { room = MatrixClientPeg.get().getRoom(this.props.incomingCall.roomId); } - var caller = room ? room.name : _t("unknown caller"); + const caller = room ? room.name : _t("unknown caller"); let incomingCallText = null; if (this.props.incomingCall) { if (this.props.incomingCall.type === "voice") { incomingCallText = _t("Incoming voice call from %(name)s", {name: caller}); - } - else if (this.props.incomingCall.type === "video") { + } else if (this.props.incomingCall.type === "video") { incomingCallText = _t("Incoming video call from %(name)s", {name: caller}); - } - else { + } else { incomingCallText = _t("Incoming call from %(name)s", {name: caller}); } } @@ -81,6 +78,6 @@ module.exports = React.createClass({ </div> </div> ); - } + }, }); diff --git a/src/components/views/voip/VideoFeed.js b/src/components/views/voip/VideoFeed.js index 0b8d0b20fc..953dbc866f 100644 --- a/src/components/views/voip/VideoFeed.js +++ b/src/components/views/voip/VideoFeed.js @@ -16,7 +16,7 @@ limitations under the License. 'use strict'; -var React = require('react'); +import React from 'react'; module.exports = React.createClass({ displayName: 'VideoFeed', diff --git a/src/components/views/voip/VideoView.js b/src/components/views/voip/VideoView.js index ea37579237..6ebf2078c1 100644 --- a/src/components/views/voip/VideoView.js +++ b/src/components/views/voip/VideoView.js @@ -16,11 +16,11 @@ limitations under the License. 'use strict'; -var React = require('react'); -var ReactDOM = require('react-dom'); +import React from 'react'; +import ReactDOM from 'react-dom'; -var sdk = require('../../../index'); -var dis = require('../../../dispatcher'); +import sdk from '../../../index'; +import dis from '../../../dispatcher'; module.exports = React.createClass({ displayName: 'VideoView', @@ -53,9 +53,10 @@ module.exports = React.createClass({ // this needs to be somewhere at the top of the DOM which // always exists to avoid audio interruptions. // Might as well just use DOM. - var remoteAudioElement = document.getElementById("remoteAudio"); + const remoteAudioElement = document.getElementById("remoteAudio"); if (!remoteAudioElement) { - console.error("Failed to find remoteAudio element - cannot play audio! You need to add an <audio/> to the DOM."); + console.error("Failed to find remoteAudio element - cannot play audio!" + + "You need to add an <audio/> to the DOM."); } return remoteAudioElement; }, @@ -70,22 +71,21 @@ module.exports = React.createClass({ onAction: function(payload) { switch (payload.action) { - case 'video_fullscreen': + case 'video_fullscreen': { if (!this.container) { return; } - var element = this.container; + const element = this.container; if (payload.fullscreen) { - var requestMethod = ( + const requestMethod = ( element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullscreen ); requestMethod.call(element); - } - else { - var exitMethod = ( + } else { + const exitMethod = ( document.exitFullscreen || document.mozCancelFullScreen || document.webkitExitFullscreen || @@ -96,17 +96,18 @@ module.exports = React.createClass({ } } break; + } } }, render: function() { - var VideoFeed = sdk.getComponent('voip.VideoFeed'); + const VideoFeed = sdk.getComponent('voip.VideoFeed'); // if we're fullscreen, we don't want to set a maxHeight on the video element. - var fullscreenElement = (document.fullscreenElement || + const fullscreenElement = (document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement); - var maxVideoHeight = fullscreenElement ? null : this.props.maxHeight; + const maxVideoHeight = fullscreenElement ? null : this.props.maxHeight; return ( <div className="mx_VideoView" ref={this.setContainer} onClick={ this.props.onClick }> @@ -119,5 +120,5 @@ module.exports = React.createClass({ </div> </div> ); - } + }, }); diff --git a/src/createRoom.js b/src/createRoom.js index ce83f31c27..830ac50ef5 100644 --- a/src/createRoom.js +++ b/src/createRoom.js @@ -14,24 +14,24 @@ See the License for the specific language governing permissions and limitations under the License. */ -var MatrixClientPeg = require('./MatrixClientPeg'); -var Modal = require('./Modal'); -var sdk = require('./index'); +import MatrixClientPeg from './MatrixClientPeg'; +import Modal from './Modal'; +import sdk from './index'; import { _t } from './languageHandler'; -var dis = require("./dispatcher"); -var Rooms = require("./Rooms"); +import dis from "./dispatcher"; +import * as Rooms from "./Rooms"; -var q = require('q'); +import q from 'q'; /** * Create a new room, and switch to it. * - * Returns a promise which resolves to the room id, or null if the - * action was aborted or failed. - * * @param {object=} opts parameters for creating the room * @param {string=} opts.dmUserId If specified, make this a DM room for this user and invite them * @param {object=} opts.createOpts set of options to pass to createRoom call. + * + * @returns {Promise} which resolves to the room id, or null if the + * action was aborted or failed. */ function createRoom(opts) { opts = opts || {}; @@ -69,11 +69,11 @@ function createRoom(opts) { createOpts.initial_state = createOpts.initial_state || [ { content: { - guest_access: 'can_join' + guest_access: 'can_join', }, type: 'm.room.guest_access', state_key: '', - } + }, ]; const modal = Modal.createDialog(Loader, null, 'mx_Dialog_spinner'); diff --git a/src/email.js b/src/email.js index c4375079d7..3fd535c849 100644 --- a/src/email.js +++ b/src/email.js @@ -14,10 +14,10 @@ See the License for the specific language governing permissions and limitations under the License. */ -var EMAIL_ADDRESS_REGEX = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i; +const EMAIL_ADDRESS_REGEX = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i; module.exports = { looksValid: function(email) { return EMAIL_ADDRESS_REGEX.test(email); - } + }, }; diff --git a/src/extend.js b/src/extend.js index cc3c33b2e7..4b3f028a94 100644 --- a/src/extend.js +++ b/src/extend.js @@ -17,7 +17,7 @@ limitations under the License. 'use strict'; module.exports = function(dest, src) { - for (var i in src) { + for (const i in src) { if (src.hasOwnProperty(i)) { dest[i] = src[i]; } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 4940bea7a5..15ae37c94e 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -196,6 +196,7 @@ "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s changed the topic to \"%(topic)s\".", "Changes to who can read history will only apply to future messages in this room": "Changes to who can read history will only apply to future messages in this room", "Changes your display nickname": "Changes your display nickname", + "Changes colour scheme of current room": "Changes colour scheme of current room", "changing room on a RoomView is not supported": "changing room on a RoomView is not supported", "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.", "Claimed Ed25519 fingerprint key": "Claimed Ed25519 fingerprint key", @@ -514,6 +515,7 @@ "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s set their display name to %(displayName)s.", "Set": "Set", "Settings": "Settings", + "Sets the room topic": "Sets the room topic", "Show Apps": "Show Apps", "Show panel": "Show panel", "Show Text Formatting Toolbar": "Show Text Formatting Toolbar", @@ -845,6 +847,7 @@ "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.", "In future this verification process will be more sophisticated.": "In future this verification process will be more sophisticated.", "Verify device": "Verify device", + "Verifies a user, device, and pubkey tuple": "Verifies a user, device, and pubkey tuple", "I verify that the keys match": "I verify that the keys match", "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.", "Unable to restore session": "Unable to restore session", diff --git a/src/stores/LifecycleStore.js b/src/stores/LifecycleStore.js index d954ef16b6..0d76f06e72 100644 --- a/src/stores/LifecycleStore.js +++ b/src/stores/LifecycleStore.js @@ -50,7 +50,7 @@ class LifecycleStore extends Store { deferred_action: null, }); break; - case 'sync_state': + case 'sync_state': { if (payload.state !== 'PREPARED') { break; } @@ -61,6 +61,7 @@ class LifecycleStore extends Store { }); dis.dispatch(deferredAction); break; + } case 'on_logged_out': this.reset(); break; diff --git a/src/stores/MessageComposerStore.js b/src/stores/MessageComposerStore.js new file mode 100644 index 0000000000..d02bcf953f --- /dev/null +++ b/src/stores/MessageComposerStore.js @@ -0,0 +1,77 @@ +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +import dis from '../dispatcher'; +import {Store} from 'flux/utils'; +import {convertToRaw, convertFromRaw} from 'draft-js'; + +const INITIAL_STATE = { + editorStateMap: localStorage.getItem('content_state') ? + JSON.parse(localStorage.getItem('content_state')) : {}, +}; + +/** + * A class for storing application state to do with the message composer. This is a simple + * flux store that listens for actions and updates its state accordingly, informing any + * listeners (views) of state changes. + */ +class MessageComposerStore extends Store { + constructor() { + super(dis); + + // Initialise state + this._state = Object.assign({}, INITIAL_STATE); + } + + _setState(newState) { + this._state = Object.assign(this._state, newState); + this.__emitChange(); + } + + __onDispatch(payload) { + switch (payload.action) { + case 'content_state': + this._contentState(payload); + break; + case 'on_logged_out': + this.reset(); + break; + } + } + + _contentState(payload) { + const editorStateMap = this._state.editorStateMap; + editorStateMap[payload.room_id] = convertToRaw(payload.content_state); + localStorage.setItem('content_state', JSON.stringify(editorStateMap)); + this._setState({ + editorStateMap: editorStateMap, + }); + } + + getContentState(roomId) { + return this._state.editorStateMap[roomId] ? + convertFromRaw(this._state.editorStateMap[roomId]) : null; + } + + reset() { + this._state = Object.assign({}, INITIAL_STATE); + } +} + +let singletonMessageComposerStore = null; +if (!singletonMessageComposerStore) { + singletonMessageComposerStore = new MessageComposerStore(); +} +module.exports = singletonMessageComposerStore; diff --git a/src/stripped-emoji.json b/src/stripped-emoji.json index fc72dd3441..00928833c1 100644 --- a/src/stripped-emoji.json +++ b/src/stripped-emoji.json @@ -1 +1 @@ -[{"name":"modern pentathlon","shortname":"","category":"unicode9","emoji_order":"67"},{"name":"hundred points symbol","shortname":":100:","category":"symbols","emoji_order":"856"},{"name":"input symbol for numbers","shortname":":1234:","category":"symbols","emoji_order":"913"},{"name":"grinning face","shortname":":grinning:","category":"people","emoji_order":"1"},{"name":"grimacing face","shortname":":grimacing:","category":"people","emoji_order":"2"},{"name":"grinning face with smiling eyes","shortname":":grin:","category":"people","emoji_order":"3"},{"name":"face with tears of joy","shortname":":joy:","category":"people","emoji_order":"4","aliases_ascii":[":')",":'-)"]},{"name":"smiling face with open mouth","shortname":":smiley:","category":"people","emoji_order":"5","aliases_ascii":[":D",":-D","=D"]},{"name":"smiling face with open mouth and smiling eyes","shortname":":smile:","category":"people","emoji_order":"6"},{"name":"smiling face with open mouth and cold sweat","shortname":":sweat_smile:","category":"people","emoji_order":"7","aliases_ascii":["':)","':-)","'=)","':D","':-D","'=D"]},{"name":"smiling face with open mouth and tightly-closed eyes","shortname":":laughing:","category":"people","emoji_order":"8","aliases_ascii":[">:)",">;)",">:-)",">=)"]},{"name":"smiling face with halo","shortname":":innocent:","category":"people","emoji_order":"9","aliases_ascii":["O:-)","0:-3","0:3","0:-)","0:)","0;^)","O:)","O;-)","O=)","0;-)","O:-3","O:3"]},{"name":"winking face","shortname":":wink:","category":"people","emoji_order":"10","aliases_ascii":[";)",";-)","*-)","*)",";-]",";]",";D",";^)"]},{"name":"smiling face with smiling eyes","shortname":":blush:","category":"people","emoji_order":"11"},{"name":"slightly smiling face","shortname":":slight_smile:","category":"people","emoji_order":"12","aliases_ascii":[":)",":-)","=]","=)",":]"]},{"name":"upside-down face","shortname":":upside_down:","category":"people","emoji_order":"13"},{"name":"white smiling face","shortname":":relaxed:","category":"people","emoji_order":"14"},{"name":"face savouring delicious food","shortname":":yum:","category":"people","emoji_order":"15"},{"name":"relieved face","shortname":":relieved:","category":"people","emoji_order":"16"},{"name":"smiling face with heart-shaped eyes","shortname":":heart_eyes:","category":"people","emoji_order":"17"},{"name":"face throwing a kiss","shortname":":kissing_heart:","category":"people","emoji_order":"18","aliases_ascii":[":*",":-*","=*",":^*"]},{"name":"kissing face","shortname":":kissing:","category":"people","emoji_order":"19"},{"name":"kissing face with smiling eyes","shortname":":kissing_smiling_eyes:","category":"people","emoji_order":"20"},{"name":"kissing face with closed eyes","shortname":":kissing_closed_eyes:","category":"people","emoji_order":"21"},{"name":"face with stuck-out tongue and winking eye","shortname":":stuck_out_tongue_winking_eye:","category":"people","emoji_order":"22","aliases_ascii":[">:P","X-P","x-p"]},{"name":"face with stuck-out tongue and tightly-closed eyes","shortname":":stuck_out_tongue_closed_eyes:","category":"people","emoji_order":"23"},{"name":"face with stuck-out tongue","shortname":":stuck_out_tongue:","category":"people","emoji_order":"24","aliases_ascii":[":P",":-P","=P",":-p",":p","=p",":-Þ",":Þ",":þ",":-þ",":-b",":b","d:"]},{"name":"money-mouth face","shortname":":money_mouth:","category":"people","emoji_order":"25"},{"name":"nerd face","shortname":":nerd:","category":"people","emoji_order":"26"},{"name":"smiling face with sunglasses","shortname":":sunglasses:","category":"people","emoji_order":"27","aliases_ascii":["B-)","B)","8)","8-)","B-D","8-D"]},{"name":"hugging face","shortname":":hugging:","category":"people","emoji_order":"28"},{"name":"smirking face","shortname":":smirk:","category":"people","emoji_order":"29"},{"name":"face without mouth","shortname":":no_mouth:","category":"people","emoji_order":"30","aliases_ascii":[":-X",":X",":-#",":#","=X","=x",":x",":-x","=#"]},{"name":"neutral face","shortname":":neutral_face:","category":"people","emoji_order":"31"},{"name":"expressionless face","shortname":":expressionless:","category":"people","emoji_order":"32","aliases_ascii":["-_-","-__-","-___-"]},{"name":"unamused face","shortname":":unamused:","category":"people","emoji_order":"33"},{"name":"face with rolling eyes","shortname":":rolling_eyes:","category":"people","emoji_order":"34"},{"name":"thinking face","shortname":":thinking:","category":"people","emoji_order":"35"},{"name":"flushed face","shortname":":flushed:","category":"people","emoji_order":"36","aliases_ascii":[":$","=$"]},{"name":"disappointed face","shortname":":disappointed:","category":"people","emoji_order":"37","aliases_ascii":[">:[",":-(",":(",":-[",":[","=("]},{"name":"worried face","shortname":":worried:","category":"people","emoji_order":"38"},{"name":"angry face","shortname":":angry:","category":"people","emoji_order":"39","aliases_ascii":[">:(",">:-(",":@"]},{"name":"pouting face","shortname":":rage:","category":"people","emoji_order":"40"},{"name":"pensive face","shortname":":pensive:","category":"people","emoji_order":"41"},{"name":"confused face","shortname":":confused:","category":"people","emoji_order":"42","aliases_ascii":[">:\\",">:/",":-/",":-.",":/",":\\","=/","=\\",":L","=L"]},{"name":"slightly frowning face","shortname":":slight_frown:","category":"people","emoji_order":"43"},{"name":"white frowning face","shortname":":frowning2:","category":"people","emoji_order":"44"},{"name":"persevering face","shortname":":persevere:","category":"people","emoji_order":"45","aliases_ascii":[">.<"]},{"name":"confounded face","shortname":":confounded:","category":"people","emoji_order":"46"},{"name":"tired face","shortname":":tired_face:","category":"people","emoji_order":"47"},{"name":"weary face","shortname":":weary:","category":"people","emoji_order":"48"},{"name":"face with look of triumph","shortname":":triumph:","category":"people","emoji_order":"49"},{"name":"face with open mouth","shortname":":open_mouth:","category":"people","emoji_order":"50","aliases_ascii":[":-O",":O",":-o",":o","O_O",">:O"]},{"name":"face screaming in fear","shortname":":scream:","category":"people","emoji_order":"51"},{"name":"fearful face","shortname":":fearful:","category":"people","emoji_order":"52","aliases_ascii":["D:"]},{"name":"face with open mouth and cold sweat","shortname":":cold_sweat:","category":"people","emoji_order":"53"},{"name":"hushed face","shortname":":hushed:","category":"people","emoji_order":"54"},{"name":"frowning face with open mouth","shortname":":frowning:","category":"people","emoji_order":"55"},{"name":"anguished face","shortname":":anguished:","category":"people","emoji_order":"56"},{"name":"crying face","shortname":":cry:","category":"people","emoji_order":"57","aliases_ascii":[":'(",":'-(",";(",";-("]},{"name":"disappointed but relieved face","shortname":":disappointed_relieved:","category":"people","emoji_order":"58"},{"name":"sleepy face","shortname":":sleepy:","category":"people","emoji_order":"59"},{"name":"face with cold sweat","shortname":":sweat:","category":"people","emoji_order":"60","aliases_ascii":["':(","':-(","'=("]},{"name":"loudly crying face","shortname":":sob:","category":"people","emoji_order":"61"},{"name":"dizzy face","shortname":":dizzy_face:","category":"people","emoji_order":"62","aliases_ascii":["#-)","#)","%-)","%)","X)","X-)"]},{"name":"astonished face","shortname":":astonished:","category":"people","emoji_order":"63"},{"name":"zipper-mouth face","shortname":":zipper_mouth:","category":"people","emoji_order":"64"},{"name":"face with medical mask","shortname":":mask:","category":"people","emoji_order":"65"},{"name":"face with thermometer","shortname":":thermometer_face:","category":"people","emoji_order":"66"},{"name":"face with head-bandage","shortname":":head_bandage:","category":"people","emoji_order":"67"},{"name":"sleeping face","shortname":":sleeping:","category":"people","emoji_order":"68"},{"name":"sleeping symbol","shortname":":zzz:","category":"people","emoji_order":"69"},{"name":"pile of poo","shortname":":poop:","category":"people","emoji_order":"70"},{"name":"smiling face with horns","shortname":":smiling_imp:","category":"people","emoji_order":"71"},{"name":"imp","shortname":":imp:","category":"people","emoji_order":"72"},{"name":"japanese ogre","shortname":":japanese_ogre:","category":"people","emoji_order":"73"},{"name":"japanese goblin","shortname":":japanese_goblin:","category":"people","emoji_order":"74"},{"name":"skull","shortname":":skull:","category":"people","emoji_order":"75"},{"name":"ghost","shortname":":ghost:","category":"people","emoji_order":"76"},{"name":"extraterrestrial alien","shortname":":alien:","category":"people","emoji_order":"77"},{"name":"robot face","shortname":":robot:","category":"people","emoji_order":"78"},{"name":"smiling cat face with open mouth","shortname":":smiley_cat:","category":"people","emoji_order":"79"},{"name":"grinning cat face with smiling eyes","shortname":":smile_cat:","category":"people","emoji_order":"80"},{"name":"cat face with tears of joy","shortname":":joy_cat:","category":"people","emoji_order":"81"},{"name":"smiling cat face with heart-shaped eyes","shortname":":heart_eyes_cat:","category":"people","emoji_order":"82"},{"name":"cat face with wry smile","shortname":":smirk_cat:","category":"people","emoji_order":"83"},{"name":"kissing cat face with closed eyes","shortname":":kissing_cat:","category":"people","emoji_order":"84"},{"name":"weary cat face","shortname":":scream_cat:","category":"people","emoji_order":"85"},{"name":"crying cat face","shortname":":crying_cat_face:","category":"people","emoji_order":"86"},{"name":"pouting cat face","shortname":":pouting_cat:","category":"people","emoji_order":"87"},{"name":"person raising both hands in celebration","shortname":":raised_hands:","category":"people","emoji_order":"88"},{"name":"clapping hands sign","shortname":":clap:","category":"people","emoji_order":"89"},{"name":"waving hand sign","shortname":":wave:","category":"people","emoji_order":"90"},{"name":"thumbs up sign","shortname":":thumbsup:","category":"people","emoji_order":"91"},{"name":"thumbs down sign","shortname":":thumbsdown:","category":"people","emoji_order":"92"},{"name":"fisted hand sign","shortname":":punch:","category":"people","emoji_order":"93"},{"name":"raised fist","shortname":":fist:","category":"people","emoji_order":"94"},{"name":"victory hand","shortname":":v:","category":"people","emoji_order":"95"},{"name":"ok hand sign","shortname":":ok_hand:","category":"people","emoji_order":"96"},{"name":"raised hand","shortname":":raised_hand:","category":"people","emoji_order":"97"},{"name":"open hands sign","shortname":":open_hands:","category":"people","emoji_order":"98"},{"name":"flexed biceps","shortname":":muscle:","category":"people","emoji_order":"99"},{"name":"person with folded hands","shortname":":pray:","category":"people","emoji_order":"100"},{"name":"white up pointing index","shortname":":point_up:","category":"people","emoji_order":"101"},{"name":"white up pointing backhand index","shortname":":point_up_2:","category":"people","emoji_order":"102"},{"name":"white down pointing backhand index","shortname":":point_down:","category":"people","emoji_order":"103"},{"name":"white left pointing backhand index","shortname":":point_left:","category":"people","emoji_order":"104"},{"name":"white right pointing backhand index","shortname":":point_right:","category":"people","emoji_order":"105"},{"name":"reversed hand with middle finger extended","shortname":":middle_finger:","category":"people","emoji_order":"106"},{"name":"raised hand with fingers splayed","shortname":":hand_splayed:","category":"people","emoji_order":"107"},{"name":"sign of the horns","shortname":":metal:","category":"people","emoji_order":"108"},{"name":"raised hand with part between middle and ring fingers","shortname":":vulcan:","category":"people","emoji_order":"109"},{"name":"writing hand","shortname":":writing_hand:","category":"people","emoji_order":"110"},{"name":"nail polish","shortname":":nail_care:","category":"people","emoji_order":"111"},{"name":"mouth","shortname":":lips:","category":"people","emoji_order":"112"},{"name":"tongue","shortname":":tongue:","category":"people","emoji_order":"113"},{"name":"ear","shortname":":ear:","category":"people","emoji_order":"114"},{"name":"nose","shortname":":nose:","category":"people","emoji_order":"115"},{"name":"eye","shortname":":eye:","category":"people","emoji_order":"116"},{"name":"eyes","shortname":":eyes:","category":"people","emoji_order":"117"},{"name":"bust in silhouette","shortname":":bust_in_silhouette:","category":"people","emoji_order":"118"},{"name":"busts in silhouette","shortname":":busts_in_silhouette:","category":"people","emoji_order":"119"},{"name":"speaking head in silhouette","shortname":":speaking_head:","category":"people","emoji_order":"120"},{"name":"baby","shortname":":baby:","category":"people","emoji_order":"121"},{"name":"boy","shortname":":boy:","category":"people","emoji_order":"122"},{"name":"girl","shortname":":girl:","category":"people","emoji_order":"123"},{"name":"man","shortname":":man:","category":"people","emoji_order":"124"},{"name":"woman","shortname":":woman:","category":"people","emoji_order":"125"},{"name":"person with blond hair","shortname":":person_with_blond_hair:","category":"people","emoji_order":"126"},{"name":"older man","shortname":":older_man:","category":"people","emoji_order":"127"},{"name":"older woman","shortname":":older_woman:","category":"people","emoji_order":"128"},{"name":"man with gua pi mao","shortname":":man_with_gua_pi_mao:","category":"people","emoji_order":"129"},{"name":"man with turban","shortname":":man_with_turban:","category":"people","emoji_order":"130"},{"name":"police officer","shortname":":cop:","category":"people","emoji_order":"131"},{"name":"construction worker","shortname":":construction_worker:","category":"people","emoji_order":"132"},{"name":"guardsman","shortname":":guardsman:","category":"people","emoji_order":"133"},{"name":"sleuth or spy","shortname":":spy:","category":"people","emoji_order":"134"},{"name":"father christmas","shortname":":santa:","category":"people","emoji_order":"135"},{"name":"baby angel","shortname":":angel:","category":"people","emoji_order":"136"},{"name":"princess","shortname":":princess:","category":"people","emoji_order":"137"},{"name":"bride with veil","shortname":":bride_with_veil:","category":"people","emoji_order":"138"},{"name":"pedestrian","shortname":":walking:","category":"people","emoji_order":"139"},{"name":"runner","shortname":":runner:","category":"people","emoji_order":"140"},{"name":"dancer","shortname":":dancer:","category":"people","emoji_order":"141"},{"name":"woman with bunny ears","shortname":":dancers:","category":"people","emoji_order":"142"},{"name":"man and woman holding hands","shortname":":couple:","category":"people","emoji_order":"143"},{"name":"two men holding hands","shortname":":two_men_holding_hands:","category":"people","emoji_order":"144"},{"name":"two women holding hands","shortname":":two_women_holding_hands:","category":"people","emoji_order":"145"},{"name":"person bowing deeply","shortname":":bow:","category":"people","emoji_order":"146"},{"name":"information desk person","shortname":":information_desk_person:","category":"people","emoji_order":"147"},{"name":"face with no good gesture","shortname":":no_good:","category":"people","emoji_order":"148"},{"name":"face with ok gesture","shortname":":ok_woman:","category":"people","emoji_order":"149","aliases_ascii":["*\\0/*","\\0/","*\\O/*","\\O/"]},{"name":"happy person raising one hand","shortname":":raising_hand:","category":"people","emoji_order":"150"},{"name":"person with pouting face","shortname":":person_with_pouting_face:","category":"people","emoji_order":"151"},{"name":"person frowning","shortname":":person_frowning:","category":"people","emoji_order":"152"},{"name":"haircut","shortname":":haircut:","category":"people","emoji_order":"153"},{"name":"face massage","shortname":":massage:","category":"people","emoji_order":"154"},{"name":"couple with heart","shortname":":couple_with_heart:","category":"people","emoji_order":"155"},{"name":"couple (woman,woman)","shortname":":couple_ww:","category":"people","emoji_order":"156"},{"name":"couple (man,man)","shortname":":couple_mm:","category":"people","emoji_order":"157"},{"name":"kiss","shortname":":couplekiss:","category":"people","emoji_order":"158"},{"name":"kiss (woman,woman)","shortname":":kiss_ww:","category":"people","emoji_order":"159"},{"name":"kiss (man,man)","shortname":":kiss_mm:","category":"people","emoji_order":"160"},{"name":"family","shortname":":family:","category":"people","emoji_order":"161"},{"name":"family (man,woman,girl)","shortname":":family_mwg:","category":"people","emoji_order":"162"},{"name":"family (man,woman,girl,boy)","shortname":":family_mwgb:","category":"people","emoji_order":"163"},{"name":"family (man,woman,boy,boy)","shortname":":family_mwbb:","category":"people","emoji_order":"164"},{"name":"family (man,woman,girl,girl)","shortname":":family_mwgg:","category":"people","emoji_order":"165"},{"name":"family (woman,woman,boy)","shortname":":family_wwb:","category":"people","emoji_order":"166"},{"name":"family (woman,woman,girl)","shortname":":family_wwg:","category":"people","emoji_order":"167"},{"name":"family (woman,woman,girl,boy)","shortname":":family_wwgb:","category":"people","emoji_order":"168"},{"name":"family (woman,woman,boy,boy)","shortname":":family_wwbb:","category":"people","emoji_order":"169"},{"name":"family (woman,woman,girl,girl)","shortname":":family_wwgg:","category":"people","emoji_order":"170"},{"name":"family (man,man,boy)","shortname":":family_mmb:","category":"people","emoji_order":"171"},{"name":"family (man,man,girl)","shortname":":family_mmg:","category":"people","emoji_order":"172"},{"name":"family (man,man,girl,boy)","shortname":":family_mmgb:","category":"people","emoji_order":"173"},{"name":"family (man,man,boy,boy)","shortname":":family_mmbb:","category":"people","emoji_order":"174"},{"name":"family (man,man,girl,girl)","shortname":":family_mmgg:","category":"people","emoji_order":"175"},{"name":"womans clothes","shortname":":womans_clothes:","category":"people","emoji_order":"176"},{"name":"t-shirt","shortname":":shirt:","category":"people","emoji_order":"177"},{"name":"jeans","shortname":":jeans:","category":"people","emoji_order":"178"},{"name":"necktie","shortname":":necktie:","category":"people","emoji_order":"179"},{"name":"dress","shortname":":dress:","category":"people","emoji_order":"180"},{"name":"bikini","shortname":":bikini:","category":"people","emoji_order":"181"},{"name":"kimono","shortname":":kimono:","category":"people","emoji_order":"182"},{"name":"lipstick","shortname":":lipstick:","category":"people","emoji_order":"183"},{"name":"kiss mark","shortname":":kiss:","category":"people","emoji_order":"184"},{"name":"footprints","shortname":":footprints:","category":"people","emoji_order":"185"},{"name":"high-heeled shoe","shortname":":high_heel:","category":"people","emoji_order":"186"},{"name":"womans sandal","shortname":":sandal:","category":"people","emoji_order":"187"},{"name":"womans boots","shortname":":boot:","category":"people","emoji_order":"188"},{"name":"mans shoe","shortname":":mans_shoe:","category":"people","emoji_order":"189"},{"name":"athletic shoe","shortname":":athletic_shoe:","category":"people","emoji_order":"190"},{"name":"womans hat","shortname":":womans_hat:","category":"people","emoji_order":"191"},{"name":"top hat","shortname":":tophat:","category":"people","emoji_order":"192"},{"name":"helmet with white cross","shortname":":helmet_with_cross:","category":"people","emoji_order":"193"},{"name":"graduation cap","shortname":":mortar_board:","category":"people","emoji_order":"194"},{"name":"crown","shortname":":crown:","category":"people","emoji_order":"195"},{"name":"school satchel","shortname":":school_satchel:","category":"people","emoji_order":"196"},{"name":"pouch","shortname":":pouch:","category":"people","emoji_order":"197"},{"name":"purse","shortname":":purse:","category":"people","emoji_order":"198"},{"name":"handbag","shortname":":handbag:","category":"people","emoji_order":"199"},{"name":"briefcase","shortname":":briefcase:","category":"people","emoji_order":"200"},{"name":"eyeglasses","shortname":":eyeglasses:","category":"people","emoji_order":"201"},{"name":"dark sunglasses","shortname":":dark_sunglasses:","category":"people","emoji_order":"202"},{"name":"ring","shortname":":ring:","category":"people","emoji_order":"203"},{"name":"closed umbrella","shortname":":closed_umbrella:","category":"people","emoji_order":"204"},{"name":"dog face","shortname":":dog:","category":"nature","emoji_order":"205"},{"name":"cat face","shortname":":cat:","category":"nature","emoji_order":"206"},{"name":"mouse face","shortname":":mouse:","category":"nature","emoji_order":"207"},{"name":"hamster face","shortname":":hamster:","category":"nature","emoji_order":"208"},{"name":"rabbit face","shortname":":rabbit:","category":"nature","emoji_order":"209"},{"name":"bear face","shortname":":bear:","category":"nature","emoji_order":"210"},{"name":"panda face","shortname":":panda_face:","category":"nature","emoji_order":"211"},{"name":"koala","shortname":":koala:","category":"nature","emoji_order":"212"},{"name":"tiger face","shortname":":tiger:","category":"nature","emoji_order":"213"},{"name":"lion face","shortname":":lion_face:","category":"nature","emoji_order":"214"},{"name":"cow face","shortname":":cow:","category":"nature","emoji_order":"215"},{"name":"pig face","shortname":":pig:","category":"nature","emoji_order":"216"},{"name":"pig nose","shortname":":pig_nose:","category":"nature","emoji_order":"217"},{"name":"frog face","shortname":":frog:","category":"nature","emoji_order":"218"},{"name":"octopus","shortname":":octopus:","category":"nature","emoji_order":"219"},{"name":"monkey face","shortname":":monkey_face:","category":"nature","emoji_order":"220"},{"name":"see-no-evil monkey","shortname":":see_no_evil:","category":"nature","emoji_order":"221"},{"name":"hear-no-evil monkey","shortname":":hear_no_evil:","category":"nature","emoji_order":"222"},{"name":"speak-no-evil monkey","shortname":":speak_no_evil:","category":"nature","emoji_order":"223"},{"name":"monkey","shortname":":monkey:","category":"nature","emoji_order":"224"},{"name":"chicken","shortname":":chicken:","category":"nature","emoji_order":"225"},{"name":"penguin","shortname":":penguin:","category":"nature","emoji_order":"226"},{"name":"bird","shortname":":bird:","category":"nature","emoji_order":"227"},{"name":"baby chick","shortname":":baby_chick:","category":"nature","emoji_order":"228"},{"name":"hatching chick","shortname":":hatching_chick:","category":"nature","emoji_order":"229"},{"name":"front-facing baby chick","shortname":":hatched_chick:","category":"nature","emoji_order":"230"},{"name":"wolf face","shortname":":wolf:","category":"nature","emoji_order":"231"},{"name":"boar","shortname":":boar:","category":"nature","emoji_order":"232"},{"name":"horse face","shortname":":horse:","category":"nature","emoji_order":"233"},{"name":"unicorn face","shortname":":unicorn:","category":"nature","emoji_order":"234"},{"name":"honeybee","shortname":":bee:","category":"nature","emoji_order":"235"},{"name":"bug","shortname":":bug:","category":"nature","emoji_order":"236"},{"name":"snail","shortname":":snail:","category":"nature","emoji_order":"237"},{"name":"lady beetle","shortname":":beetle:","category":"nature","emoji_order":"238"},{"name":"ant","shortname":":ant:","category":"nature","emoji_order":"239"},{"name":"spider","shortname":":spider:","category":"nature","emoji_order":"240"},{"name":"scorpion","shortname":":scorpion:","category":"nature","emoji_order":"241"},{"name":"crab","shortname":":crab:","category":"nature","emoji_order":"242"},{"name":"snake","shortname":":snake:","category":"nature","emoji_order":"243"},{"name":"turtle","shortname":":turtle:","category":"nature","emoji_order":"244"},{"name":"tropical fish","shortname":":tropical_fish:","category":"nature","emoji_order":"245"},{"name":"fish","shortname":":fish:","category":"nature","emoji_order":"246"},{"name":"blowfish","shortname":":blowfish:","category":"nature","emoji_order":"247"},{"name":"dolphin","shortname":":dolphin:","category":"nature","emoji_order":"248"},{"name":"spouting whale","shortname":":whale:","category":"nature","emoji_order":"249"},{"name":"whale","shortname":":whale2:","category":"nature","emoji_order":"250"},{"name":"crocodile","shortname":":crocodile:","category":"nature","emoji_order":"251"},{"name":"leopard","shortname":":leopard:","category":"nature","emoji_order":"252"},{"name":"tiger","shortname":":tiger2:","category":"nature","emoji_order":"253"},{"name":"water buffalo","shortname":":water_buffalo:","category":"nature","emoji_order":"254"},{"name":"ox","shortname":":ox:","category":"nature","emoji_order":"255"},{"name":"cow","shortname":":cow2:","category":"nature","emoji_order":"256"},{"name":"dromedary camel","shortname":":dromedary_camel:","category":"nature","emoji_order":"257"},{"name":"bactrian camel","shortname":":camel:","category":"nature","emoji_order":"258"},{"name":"elephant","shortname":":elephant:","category":"nature","emoji_order":"259"},{"name":"goat","shortname":":goat:","category":"nature","emoji_order":"260"},{"name":"ram","shortname":":ram:","category":"nature","emoji_order":"261"},{"name":"sheep","shortname":":sheep:","category":"nature","emoji_order":"262"},{"name":"horse","shortname":":racehorse:","category":"nature","emoji_order":"263"},{"name":"pig","shortname":":pig2:","category":"nature","emoji_order":"264"},{"name":"rat","shortname":":rat:","category":"nature","emoji_order":"265"},{"name":"mouse","shortname":":mouse2:","category":"nature","emoji_order":"266"},{"name":"rooster","shortname":":rooster:","category":"nature","emoji_order":"267"},{"name":"turkey","shortname":":turkey:","category":"nature","emoji_order":"268"},{"name":"dove of peace","shortname":":dove:","category":"nature","emoji_order":"269"},{"name":"dog","shortname":":dog2:","category":"nature","emoji_order":"270"},{"name":"poodle","shortname":":poodle:","category":"nature","emoji_order":"271"},{"name":"cat","shortname":":cat2:","category":"nature","emoji_order":"272"},{"name":"rabbit","shortname":":rabbit2:","category":"nature","emoji_order":"273"},{"name":"chipmunk","shortname":":chipmunk:","category":"nature","emoji_order":"274"},{"name":"paw prints","shortname":":feet:","category":"nature","emoji_order":"275"},{"name":"dragon","shortname":":dragon:","category":"nature","emoji_order":"276"},{"name":"dragon face","shortname":":dragon_face:","category":"nature","emoji_order":"277"},{"name":"cactus","shortname":":cactus:","category":"nature","emoji_order":"278"},{"name":"christmas tree","shortname":":christmas_tree:","category":"nature","emoji_order":"279"},{"name":"evergreen tree","shortname":":evergreen_tree:","category":"nature","emoji_order":"280"},{"name":"deciduous tree","shortname":":deciduous_tree:","category":"nature","emoji_order":"281"},{"name":"palm tree","shortname":":palm_tree:","category":"nature","emoji_order":"282"},{"name":"seedling","shortname":":seedling:","category":"nature","emoji_order":"283"},{"name":"herb","shortname":":herb:","category":"nature","emoji_order":"284"},{"name":"shamrock","shortname":":shamrock:","category":"nature","emoji_order":"285"},{"name":"four leaf clover","shortname":":four_leaf_clover:","category":"nature","emoji_order":"286"},{"name":"pine decoration","shortname":":bamboo:","category":"nature","emoji_order":"287"},{"name":"tanabata tree","shortname":":tanabata_tree:","category":"nature","emoji_order":"288"},{"name":"leaf fluttering in wind","shortname":":leaves:","category":"nature","emoji_order":"289"},{"name":"fallen leaf","shortname":":fallen_leaf:","category":"nature","emoji_order":"290"},{"name":"maple leaf","shortname":":maple_leaf:","category":"nature","emoji_order":"291"},{"name":"ear of rice","shortname":":ear_of_rice:","category":"nature","emoji_order":"292"},{"name":"hibiscus","shortname":":hibiscus:","category":"nature","emoji_order":"293"},{"name":"sunflower","shortname":":sunflower:","category":"nature","emoji_order":"294"},{"name":"rose","shortname":":rose:","category":"nature","emoji_order":"295"},{"name":"tulip","shortname":":tulip:","category":"nature","emoji_order":"296"},{"name":"blossom","shortname":":blossom:","category":"nature","emoji_order":"297"},{"name":"cherry blossom","shortname":":cherry_blossom:","category":"nature","emoji_order":"298"},{"name":"bouquet","shortname":":bouquet:","category":"nature","emoji_order":"299"},{"name":"mushroom","shortname":":mushroom:","category":"nature","emoji_order":"300"},{"name":"chestnut","shortname":":chestnut:","category":"nature","emoji_order":"301"},{"name":"jack-o-lantern","shortname":":jack_o_lantern:","category":"nature","emoji_order":"302"},{"name":"spiral shell","shortname":":shell:","category":"nature","emoji_order":"303"},{"name":"spider web","shortname":":spider_web:","category":"nature","emoji_order":"304"},{"name":"earth globe americas","shortname":":earth_americas:","category":"nature","emoji_order":"305"},{"name":"earth globe europe-africa","shortname":":earth_africa:","category":"nature","emoji_order":"306"},{"name":"earth globe asia-australia","shortname":":earth_asia:","category":"nature","emoji_order":"307"},{"name":"full moon symbol","shortname":":full_moon:","category":"nature","emoji_order":"308"},{"name":"waning gibbous moon symbol","shortname":":waning_gibbous_moon:","category":"nature","emoji_order":"309"},{"name":"last quarter moon symbol","shortname":":last_quarter_moon:","category":"nature","emoji_order":"310"},{"name":"waning crescent moon symbol","shortname":":waning_crescent_moon:","category":"nature","emoji_order":"311"},{"name":"new moon symbol","shortname":":new_moon:","category":"nature","emoji_order":"312"},{"name":"waxing crescent moon symbol","shortname":":waxing_crescent_moon:","category":"nature","emoji_order":"313"},{"name":"first quarter moon symbol","shortname":":first_quarter_moon:","category":"nature","emoji_order":"314"},{"name":"waxing gibbous moon symbol","shortname":":waxing_gibbous_moon:","category":"nature","emoji_order":"315"},{"name":"new moon with face","shortname":":new_moon_with_face:","category":"nature","emoji_order":"316"},{"name":"full moon with face","shortname":":full_moon_with_face:","category":"nature","emoji_order":"317"},{"name":"first quarter moon with face","shortname":":first_quarter_moon_with_face:","category":"nature","emoji_order":"318"},{"name":"last quarter moon with face","shortname":":last_quarter_moon_with_face:","category":"nature","emoji_order":"319"},{"name":"sun with face","shortname":":sun_with_face:","category":"nature","emoji_order":"320"},{"name":"crescent moon","shortname":":crescent_moon:","category":"nature","emoji_order":"321"},{"name":"white medium star","shortname":":star:","category":"nature","emoji_order":"322"},{"name":"glowing star","shortname":":star2:","category":"nature","emoji_order":"323"},{"name":"dizzy symbol","shortname":":dizzy:","category":"nature","emoji_order":"324"},{"name":"sparkles","shortname":":sparkles:","category":"nature","emoji_order":"325"},{"name":"comet","shortname":":comet:","category":"nature","emoji_order":"326"},{"name":"black sun with rays","shortname":":sunny:","category":"nature","emoji_order":"327"},{"name":"white sun with small cloud","shortname":":white_sun_small_cloud:","category":"nature","emoji_order":"328"},{"name":"sun behind cloud","shortname":":partly_sunny:","category":"nature","emoji_order":"329"},{"name":"white sun behind cloud","shortname":":white_sun_cloud:","category":"nature","emoji_order":"330"},{"name":"white sun behind cloud with rain","shortname":":white_sun_rain_cloud:","category":"nature","emoji_order":"331"},{"name":"cloud","shortname":":cloud:","category":"nature","emoji_order":"332"},{"name":"cloud with rain","shortname":":cloud_rain:","category":"nature","emoji_order":"333"},{"name":"thunder cloud and rain","shortname":":thunder_cloud_rain:","category":"nature","emoji_order":"334"},{"name":"cloud with lightning","shortname":":cloud_lightning:","category":"nature","emoji_order":"335"},{"name":"high voltage sign","shortname":":zap:","category":"nature","emoji_order":"336"},{"name":"fire","shortname":":fire:","category":"nature","emoji_order":"337"},{"name":"collision symbol","shortname":":boom:","category":"nature","emoji_order":"338"},{"name":"snowflake","shortname":":snowflake:","category":"nature","emoji_order":"339"},{"name":"cloud with snow","shortname":":cloud_snow:","category":"nature","emoji_order":"340"},{"name":"snowman","shortname":":snowman2:","category":"nature","emoji_order":"341"},{"name":"snowman without snow","shortname":":snowman:","category":"nature","emoji_order":"342"},{"name":"wind blowing face","shortname":":wind_blowing_face:","category":"nature","emoji_order":"343"},{"name":"dash symbol","shortname":":dash:","category":"nature","emoji_order":"344"},{"name":"cloud with tornado","shortname":":cloud_tornado:","category":"nature","emoji_order":"345"},{"name":"fog","shortname":":fog:","category":"nature","emoji_order":"346"},{"name":"umbrella","shortname":":umbrella2:","category":"nature","emoji_order":"347"},{"name":"umbrella with rain drops","shortname":":umbrella:","category":"nature","emoji_order":"348"},{"name":"droplet","shortname":":droplet:","category":"nature","emoji_order":"349"},{"name":"splashing sweat symbol","shortname":":sweat_drops:","category":"nature","emoji_order":"350"},{"name":"water wave","shortname":":ocean:","category":"nature","emoji_order":"351"},{"name":"green apple","shortname":":green_apple:","category":"food","emoji_order":"352"},{"name":"red apple","shortname":":apple:","category":"food","emoji_order":"353"},{"name":"pear","shortname":":pear:","category":"food","emoji_order":"354"},{"name":"tangerine","shortname":":tangerine:","category":"food","emoji_order":"355"},{"name":"lemon","shortname":":lemon:","category":"food","emoji_order":"356"},{"name":"banana","shortname":":banana:","category":"food","emoji_order":"357"},{"name":"watermelon","shortname":":watermelon:","category":"food","emoji_order":"358"},{"name":"grapes","shortname":":grapes:","category":"food","emoji_order":"359"},{"name":"strawberry","shortname":":strawberry:","category":"food","emoji_order":"360"},{"name":"melon","shortname":":melon:","category":"food","emoji_order":"361"},{"name":"cherries","shortname":":cherries:","category":"food","emoji_order":"362"},{"name":"peach","shortname":":peach:","category":"food","emoji_order":"363"},{"name":"pineapple","shortname":":pineapple:","category":"food","emoji_order":"364"},{"name":"tomato","shortname":":tomato:","category":"food","emoji_order":"365"},{"name":"aubergine","shortname":":eggplant:","category":"food","emoji_order":"366"},{"name":"hot pepper","shortname":":hot_pepper:","category":"food","emoji_order":"367"},{"name":"ear of maize","shortname":":corn:","category":"food","emoji_order":"368"},{"name":"roasted sweet potato","shortname":":sweet_potato:","category":"food","emoji_order":"369"},{"name":"honey pot","shortname":":honey_pot:","category":"food","emoji_order":"370"},{"name":"bread","shortname":":bread:","category":"food","emoji_order":"371"},{"name":"cheese wedge","shortname":":cheese:","category":"food","emoji_order":"372"},{"name":"poultry leg","shortname":":poultry_leg:","category":"food","emoji_order":"373"},{"name":"meat on bone","shortname":":meat_on_bone:","category":"food","emoji_order":"374"},{"name":"fried shrimp","shortname":":fried_shrimp:","category":"food","emoji_order":"375"},{"name":"egg","shortname":":egg:","category":"unicode9","emoji_order":"75"},{"name":"hamburger","shortname":":hamburger:","category":"food","emoji_order":"377"},{"name":"french fries","shortname":":fries:","category":"food","emoji_order":"378"},{"name":"hot dog","shortname":":hotdog:","category":"food","emoji_order":"379"},{"name":"slice of pizza","shortname":":pizza:","category":"food","emoji_order":"380"},{"name":"spaghetti","shortname":":spaghetti:","category":"food","emoji_order":"381"},{"name":"taco","shortname":":taco:","category":"food","emoji_order":"382"},{"name":"burrito","shortname":":burrito:","category":"food","emoji_order":"383"},{"name":"steaming bowl","shortname":":ramen:","category":"food","emoji_order":"384"},{"name":"pot of food","shortname":":stew:","category":"food","emoji_order":"385"},{"name":"fish cake with swirl design","shortname":":fish_cake:","category":"food","emoji_order":"386"},{"name":"sushi","shortname":":sushi:","category":"food","emoji_order":"387"},{"name":"bento box","shortname":":bento:","category":"food","emoji_order":"388"},{"name":"curry and rice","shortname":":curry:","category":"food","emoji_order":"389"},{"name":"rice ball","shortname":":rice_ball:","category":"food","emoji_order":"390"},{"name":"cooked rice","shortname":":rice:","category":"food","emoji_order":"391"},{"name":"rice cracker","shortname":":rice_cracker:","category":"food","emoji_order":"392"},{"name":"oden","shortname":":oden:","category":"food","emoji_order":"393"},{"name":"dango","shortname":":dango:","category":"food","emoji_order":"394"},{"name":"shaved ice","shortname":":shaved_ice:","category":"food","emoji_order":"395"},{"name":"ice cream","shortname":":ice_cream:","category":"food","emoji_order":"396"},{"name":"soft ice cream","shortname":":icecream:","category":"food","emoji_order":"397"},{"name":"shortcake","shortname":":cake:","category":"food","emoji_order":"398"},{"name":"birthday cake","shortname":":birthday:","category":"food","emoji_order":"399"},{"name":"custard","shortname":":custard:","category":"food","emoji_order":"400"},{"name":"candy","shortname":":candy:","category":"food","emoji_order":"401"},{"name":"lollipop","shortname":":lollipop:","category":"food","emoji_order":"402"},{"name":"chocolate bar","shortname":":chocolate_bar:","category":"food","emoji_order":"403"},{"name":"popcorn","shortname":":popcorn:","category":"food","emoji_order":"404"},{"name":"doughnut","shortname":":doughnut:","category":"food","emoji_order":"405"},{"name":"cookie","shortname":":cookie:","category":"food","emoji_order":"406"},{"name":"beer mug","shortname":":beer:","category":"food","emoji_order":"407"},{"name":"clinking beer mugs","shortname":":beers:","category":"food","emoji_order":"408"},{"name":"wine glass","shortname":":wine_glass:","category":"food","emoji_order":"409"},{"name":"cocktail glass","shortname":":cocktail:","category":"food","emoji_order":"410"},{"name":"tropical drink","shortname":":tropical_drink:","category":"food","emoji_order":"411"},{"name":"bottle with popping cork","shortname":":champagne:","category":"food","emoji_order":"412"},{"name":"sake bottle and cup","shortname":":sake:","category":"food","emoji_order":"413"},{"name":"teacup without handle","shortname":":tea:","category":"food","emoji_order":"414"},{"name":"hot beverage","shortname":":coffee:","category":"food","emoji_order":"415"},{"name":"baby bottle","shortname":":baby_bottle:","category":"food","emoji_order":"416"},{"name":"fork and knife","shortname":":fork_and_knife:","category":"food","emoji_order":"417"},{"name":"fork and knife with plate","shortname":":fork_knife_plate:","category":"food","emoji_order":"418"},{"name":"soccer ball","shortname":":soccer:","category":"activity","emoji_order":"419"},{"name":"basketball and hoop","shortname":":basketball:","category":"activity","emoji_order":"420"},{"name":"american football","shortname":":football:","category":"activity","emoji_order":"421"},{"name":"baseball","shortname":":baseball:","category":"activity","emoji_order":"422"},{"name":"tennis racquet and ball","shortname":":tennis:","category":"activity","emoji_order":"423"},{"name":"volleyball","shortname":":volleyball:","category":"activity","emoji_order":"424"},{"name":"rugby football","shortname":":rugby_football:","category":"activity","emoji_order":"425"},{"name":"billiards","shortname":":8ball:","category":"activity","emoji_order":"426"},{"name":"flag in hole","shortname":":golf:","category":"activity","emoji_order":"427"},{"name":"golfer","shortname":":golfer:","category":"activity","emoji_order":"428"},{"name":"table tennis paddle and ball","shortname":":ping_pong:","category":"activity","emoji_order":"429"},{"name":"badminton racquet","shortname":":badminton:","category":"activity","emoji_order":"430"},{"name":"ice hockey stick and puck","shortname":":hockey:","category":"activity","emoji_order":"431"},{"name":"field hockey stick and ball","shortname":":field_hockey:","category":"activity","emoji_order":"432"},{"name":"cricket bat and ball","shortname":":cricket:","category":"activity","emoji_order":"433"},{"name":"ski and ski boot","shortname":":ski:","category":"activity","emoji_order":"434"},{"name":"skier","shortname":":skier:","category":"activity","emoji_order":"435"},{"name":"snowboarder","shortname":":snowboarder:","category":"activity","emoji_order":"436"},{"name":"ice skate","shortname":":ice_skate:","category":"activity","emoji_order":"437"},{"name":"bow and arrow","shortname":":bow_and_arrow:","category":"activity","emoji_order":"438"},{"name":"fishing pole and fish","shortname":":fishing_pole_and_fish:","category":"activity","emoji_order":"439"},{"name":"rowboat","shortname":":rowboat:","category":"activity","emoji_order":"440"},{"name":"swimmer","shortname":":swimmer:","category":"activity","emoji_order":"441"},{"name":"surfer","shortname":":surfer:","category":"activity","emoji_order":"442"},{"name":"bath","shortname":":bath:","category":"activity","emoji_order":"443"},{"name":"person with ball","shortname":":basketball_player:","category":"activity","emoji_order":"444"},{"name":"weight lifter","shortname":":lifter:","category":"activity","emoji_order":"445"},{"name":"bicyclist","shortname":":bicyclist:","category":"activity","emoji_order":"446"},{"name":"mountain bicyclist","shortname":":mountain_bicyclist:","category":"activity","emoji_order":"447"},{"name":"horse racing","shortname":":horse_racing:","category":"activity","emoji_order":"448"},{"name":"man in business suit levitating","shortname":":levitate:","category":"activity","emoji_order":"449"},{"name":"trophy","shortname":":trophy:","category":"activity","emoji_order":"450"},{"name":"running shirt with sash","shortname":":running_shirt_with_sash:","category":"activity","emoji_order":"451"},{"name":"sports medal","shortname":":medal:","category":"activity","emoji_order":"452"},{"name":"military medal","shortname":":military_medal:","category":"activity","emoji_order":"453"},{"name":"reminder ribbon","shortname":":reminder_ribbon:","category":"activity","emoji_order":"454"},{"name":"rosette","shortname":":rosette:","category":"activity","emoji_order":"455"},{"name":"ticket","shortname":":ticket:","category":"activity","emoji_order":"456"},{"name":"admission tickets","shortname":":tickets:","category":"activity","emoji_order":"457"},{"name":"performing arts","shortname":":performing_arts:","category":"activity","emoji_order":"458"},{"name":"artist palette","shortname":":art:","category":"activity","emoji_order":"459"},{"name":"circus tent","shortname":":circus_tent:","category":"activity","emoji_order":"460"},{"name":"microphone","shortname":":microphone:","category":"activity","emoji_order":"461"},{"name":"headphone","shortname":":headphones:","category":"activity","emoji_order":"462"},{"name":"musical score","shortname":":musical_score:","category":"activity","emoji_order":"463"},{"name":"musical keyboard","shortname":":musical_keyboard:","category":"activity","emoji_order":"464"},{"name":"saxophone","shortname":":saxophone:","category":"activity","emoji_order":"465"},{"name":"trumpet","shortname":":trumpet:","category":"activity","emoji_order":"466"},{"name":"guitar","shortname":":guitar:","category":"activity","emoji_order":"467"},{"name":"violin","shortname":":violin:","category":"activity","emoji_order":"468"},{"name":"clapper board","shortname":":clapper:","category":"activity","emoji_order":"469"},{"name":"video game","shortname":":video_game:","category":"activity","emoji_order":"470"},{"name":"alien monster","shortname":":space_invader:","category":"activity","emoji_order":"471"},{"name":"direct hit","shortname":":dart:","category":"activity","emoji_order":"472"},{"name":"game die","shortname":":game_die:","category":"activity","emoji_order":"473"},{"name":"slot machine","shortname":":slot_machine:","category":"activity","emoji_order":"474"},{"name":"bowling","shortname":":bowling:","category":"activity","emoji_order":"475"},{"name":"automobile","shortname":":red_car:","category":"travel","emoji_order":"476"},{"name":"taxi","shortname":":taxi:","category":"travel","emoji_order":"477"},{"name":"recreational vehicle","shortname":":blue_car:","category":"travel","emoji_order":"478"},{"name":"bus","shortname":":bus:","category":"travel","emoji_order":"479"},{"name":"trolleybus","shortname":":trolleybus:","category":"travel","emoji_order":"480"},{"name":"racing car","shortname":":race_car:","category":"travel","emoji_order":"481"},{"name":"police car","shortname":":police_car:","category":"travel","emoji_order":"482"},{"name":"ambulance","shortname":":ambulance:","category":"travel","emoji_order":"483"},{"name":"fire engine","shortname":":fire_engine:","category":"travel","emoji_order":"484"},{"name":"minibus","shortname":":minibus:","category":"travel","emoji_order":"485"},{"name":"delivery truck","shortname":":truck:","category":"travel","emoji_order":"486"},{"name":"articulated lorry","shortname":":articulated_lorry:","category":"travel","emoji_order":"487"},{"name":"tractor","shortname":":tractor:","category":"travel","emoji_order":"488"},{"name":"racing motorcycle","shortname":":motorcycle:","category":"travel","emoji_order":"489"},{"name":"bicycle","shortname":":bike:","category":"travel","emoji_order":"490"},{"name":"police cars revolving light","shortname":":rotating_light:","category":"travel","emoji_order":"491"},{"name":"oncoming police car","shortname":":oncoming_police_car:","category":"travel","emoji_order":"492"},{"name":"oncoming bus","shortname":":oncoming_bus:","category":"travel","emoji_order":"493"},{"name":"oncoming automobile","shortname":":oncoming_automobile:","category":"travel","emoji_order":"494"},{"name":"oncoming taxi","shortname":":oncoming_taxi:","category":"travel","emoji_order":"495"},{"name":"aerial tramway","shortname":":aerial_tramway:","category":"travel","emoji_order":"496"},{"name":"mountain cableway","shortname":":mountain_cableway:","category":"travel","emoji_order":"497"},{"name":"suspension railway","shortname":":suspension_railway:","category":"travel","emoji_order":"498"},{"name":"railway car","shortname":":railway_car:","category":"travel","emoji_order":"499"},{"name":"tram car","shortname":":train:","category":"travel","emoji_order":"500"},{"name":"monorail","shortname":":monorail:","category":"travel","emoji_order":"501"},{"name":"high-speed train","shortname":":bullettrain_side:","category":"travel","emoji_order":"502"},{"name":"high-speed train with bullet nose","shortname":":bullettrain_front:","category":"travel","emoji_order":"503"},{"name":"light rail","shortname":":light_rail:","category":"travel","emoji_order":"504"},{"name":"mountain railway","shortname":":mountain_railway:","category":"travel","emoji_order":"505"},{"name":"steam locomotive","shortname":":steam_locomotive:","category":"travel","emoji_order":"506"},{"name":"train","shortname":":train2:","category":"travel","emoji_order":"507"},{"name":"metro","shortname":":metro:","category":"travel","emoji_order":"508"},{"name":"tram","shortname":":tram:","category":"travel","emoji_order":"509"},{"name":"station","shortname":":station:","category":"travel","emoji_order":"510"},{"name":"helicopter","shortname":":helicopter:","category":"travel","emoji_order":"511"},{"name":"small airplane","shortname":":airplane_small:","category":"travel","emoji_order":"512"},{"name":"airplane","shortname":":airplane:","category":"travel","emoji_order":"513"},{"name":"airplane departure","shortname":":airplane_departure:","category":"travel","emoji_order":"514"},{"name":"airplane arriving","shortname":":airplane_arriving:","category":"travel","emoji_order":"515"},{"name":"sailboat","shortname":":sailboat:","category":"travel","emoji_order":"516"},{"name":"motorboat","shortname":":motorboat:","category":"travel","emoji_order":"517"},{"name":"speedboat","shortname":":speedboat:","category":"travel","emoji_order":"518"},{"name":"ferry","shortname":":ferry:","category":"travel","emoji_order":"519"},{"name":"passenger ship","shortname":":cruise_ship:","category":"travel","emoji_order":"520"},{"name":"rocket","shortname":":rocket:","category":"travel","emoji_order":"521"},{"name":"satellite","shortname":":satellite_orbital:","category":"travel","emoji_order":"522"},{"name":"seat","shortname":":seat:","category":"travel","emoji_order":"523"},{"name":"anchor","shortname":":anchor:","category":"travel","emoji_order":"524"},{"name":"construction sign","shortname":":construction:","category":"travel","emoji_order":"525"},{"name":"fuel pump","shortname":":fuelpump:","category":"travel","emoji_order":"526"},{"name":"bus stop","shortname":":busstop:","category":"travel","emoji_order":"527"},{"name":"vertical traffic light","shortname":":vertical_traffic_light:","category":"travel","emoji_order":"528"},{"name":"horizontal traffic light","shortname":":traffic_light:","category":"travel","emoji_order":"529"},{"name":"chequered flag","shortname":":checkered_flag:","category":"travel","emoji_order":"530"},{"name":"ship","shortname":":ship:","category":"travel","emoji_order":"531"},{"name":"ferris wheel","shortname":":ferris_wheel:","category":"travel","emoji_order":"532"},{"name":"roller coaster","shortname":":roller_coaster:","category":"travel","emoji_order":"533"},{"name":"carousel horse","shortname":":carousel_horse:","category":"travel","emoji_order":"534"},{"name":"building construction","shortname":":construction_site:","category":"travel","emoji_order":"535"},{"name":"foggy","shortname":":foggy:","category":"travel","emoji_order":"536"},{"name":"tokyo tower","shortname":":tokyo_tower:","category":"travel","emoji_order":"537"},{"name":"factory","shortname":":factory:","category":"travel","emoji_order":"538"},{"name":"fountain","shortname":":fountain:","category":"travel","emoji_order":"539"},{"name":"moon viewing ceremony","shortname":":rice_scene:","category":"travel","emoji_order":"540"},{"name":"mountain","shortname":":mountain:","category":"travel","emoji_order":"541"},{"name":"snow capped mountain","shortname":":mountain_snow:","category":"travel","emoji_order":"542"},{"name":"mount fuji","shortname":":mount_fuji:","category":"travel","emoji_order":"543"},{"name":"volcano","shortname":":volcano:","category":"travel","emoji_order":"544"},{"name":"silhouette of japan","shortname":":japan:","category":"travel","emoji_order":"545"},{"name":"camping","shortname":":camping:","category":"travel","emoji_order":"546"},{"name":"tent","shortname":":tent:","category":"travel","emoji_order":"547"},{"name":"national park","shortname":":park:","category":"travel","emoji_order":"548"},{"name":"motorway","shortname":":motorway:","category":"travel","emoji_order":"549"},{"name":"railway track","shortname":":railway_track:","category":"travel","emoji_order":"550"},{"name":"sunrise","shortname":":sunrise:","category":"travel","emoji_order":"551"},{"name":"sunrise over mountains","shortname":":sunrise_over_mountains:","category":"travel","emoji_order":"552"},{"name":"desert","shortname":":desert:","category":"travel","emoji_order":"553"},{"name":"beach with umbrella","shortname":":beach:","category":"travel","emoji_order":"554"},{"name":"desert island","shortname":":island:","category":"travel","emoji_order":"555"},{"name":"sunset over buildings","shortname":":city_sunset:","category":"travel","emoji_order":"556"},{"name":"cityscape at dusk","shortname":":city_dusk:","category":"travel","emoji_order":"557"},{"name":"cityscape","shortname":":cityscape:","category":"travel","emoji_order":"558"},{"name":"night with stars","shortname":":night_with_stars:","category":"travel","emoji_order":"559"},{"name":"bridge at night","shortname":":bridge_at_night:","category":"travel","emoji_order":"560"},{"name":"milky way","shortname":":milky_way:","category":"travel","emoji_order":"561"},{"name":"shooting star","shortname":":stars:","category":"travel","emoji_order":"562"},{"name":"firework sparkler","shortname":":sparkler:","category":"travel","emoji_order":"563"},{"name":"fireworks","shortname":":fireworks:","category":"travel","emoji_order":"564"},{"name":"rainbow","shortname":":rainbow:","category":"travel","emoji_order":"565"},{"name":"house buildings","shortname":":homes:","category":"travel","emoji_order":"566"},{"name":"european castle","shortname":":european_castle:","category":"travel","emoji_order":"567"},{"name":"japanese castle","shortname":":japanese_castle:","category":"travel","emoji_order":"568"},{"name":"stadium","shortname":":stadium:","category":"travel","emoji_order":"569"},{"name":"statue of liberty","shortname":":statue_of_liberty:","category":"travel","emoji_order":"570"},{"name":"house building","shortname":":house:","category":"travel","emoji_order":"571"},{"name":"house with garden","shortname":":house_with_garden:","category":"travel","emoji_order":"572"},{"name":"derelict house building","shortname":":house_abandoned:","category":"travel","emoji_order":"573"},{"name":"office building","shortname":":office:","category":"travel","emoji_order":"574"},{"name":"department store","shortname":":department_store:","category":"travel","emoji_order":"575"},{"name":"japanese post office","shortname":":post_office:","category":"travel","emoji_order":"576"},{"name":"european post office","shortname":":european_post_office:","category":"travel","emoji_order":"577"},{"name":"hospital","shortname":":hospital:","category":"travel","emoji_order":"578"},{"name":"bank","shortname":":bank:","category":"travel","emoji_order":"579"},{"name":"hotel","shortname":":hotel:","category":"travel","emoji_order":"580"},{"name":"convenience store","shortname":":convenience_store:","category":"travel","emoji_order":"581"},{"name":"school","shortname":":school:","category":"travel","emoji_order":"582"},{"name":"love hotel","shortname":":love_hotel:","category":"travel","emoji_order":"583"},{"name":"wedding","shortname":":wedding:","category":"travel","emoji_order":"584"},{"name":"classical building","shortname":":classical_building:","category":"travel","emoji_order":"585"},{"name":"church","shortname":":church:","category":"travel","emoji_order":"586"},{"name":"mosque","shortname":":mosque:","category":"travel","emoji_order":"587"},{"name":"synagogue","shortname":":synagogue:","category":"travel","emoji_order":"588"},{"name":"kaaba","shortname":":kaaba:","category":"travel","emoji_order":"589"},{"name":"shinto shrine","shortname":":shinto_shrine:","category":"travel","emoji_order":"590"},{"name":"watch","shortname":":watch:","category":"objects","emoji_order":"591"},{"name":"mobile phone","shortname":":iphone:","category":"objects","emoji_order":"592"},{"name":"mobile phone with rightwards arrow at left","shortname":":calling:","category":"objects","emoji_order":"593"},{"name":"personal computer","shortname":":computer:","category":"objects","emoji_order":"594"},{"name":"keyboard","shortname":":keyboard:","category":"objects","emoji_order":"595"},{"name":"desktop computer","shortname":":desktop:","category":"objects","emoji_order":"596"},{"name":"printer","shortname":":printer:","category":"objects","emoji_order":"597"},{"name":"three button mouse","shortname":":mouse_three_button:","category":"objects","emoji_order":"598"},{"name":"trackball","shortname":":trackball:","category":"objects","emoji_order":"599"},{"name":"joystick","shortname":":joystick:","category":"objects","emoji_order":"600"},{"name":"compression","shortname":":compression:","category":"objects","emoji_order":"601"},{"name":"minidisc","shortname":":minidisc:","category":"objects","emoji_order":"602"},{"name":"floppy disk","shortname":":floppy_disk:","category":"objects","emoji_order":"603"},{"name":"optical disc","shortname":":cd:","category":"objects","emoji_order":"604"},{"name":"dvd","shortname":":dvd:","category":"objects","emoji_order":"605"},{"name":"videocassette","shortname":":vhs:","category":"objects","emoji_order":"606"},{"name":"camera","shortname":":camera:","category":"objects","emoji_order":"607"},{"name":"camera with flash","shortname":":camera_with_flash:","category":"objects","emoji_order":"608"},{"name":"video camera","shortname":":video_camera:","category":"objects","emoji_order":"609"},{"name":"movie camera","shortname":":movie_camera:","category":"objects","emoji_order":"610"},{"name":"film projector","shortname":":projector:","category":"objects","emoji_order":"611"},{"name":"film frames","shortname":":film_frames:","category":"objects","emoji_order":"612"},{"name":"telephone receiver","shortname":":telephone_receiver:","category":"objects","emoji_order":"613"},{"name":"black telephone","shortname":":telephone:","category":"objects","emoji_order":"614"},{"name":"pager","shortname":":pager:","category":"objects","emoji_order":"615"},{"name":"fax machine","shortname":":fax:","category":"objects","emoji_order":"616"},{"name":"television","shortname":":tv:","category":"objects","emoji_order":"617"},{"name":"radio","shortname":":radio:","category":"objects","emoji_order":"618"},{"name":"studio microphone","shortname":":microphone2:","category":"objects","emoji_order":"619"},{"name":"level slider","shortname":":level_slider:","category":"objects","emoji_order":"620"},{"name":"control knobs","shortname":":control_knobs:","category":"objects","emoji_order":"621"},{"name":"stopwatch","shortname":":stopwatch:","category":"objects","emoji_order":"622"},{"name":"timer clock","shortname":":timer:","category":"objects","emoji_order":"623"},{"name":"alarm clock","shortname":":alarm_clock:","category":"objects","emoji_order":"624"},{"name":"mantlepiece clock","shortname":":clock:","category":"objects","emoji_order":"625"},{"name":"hourglass with flowing sand","shortname":":hourglass_flowing_sand:","category":"objects","emoji_order":"626"},{"name":"hourglass","shortname":":hourglass:","category":"objects","emoji_order":"627"},{"name":"satellite antenna","shortname":":satellite:","category":"objects","emoji_order":"628"},{"name":"battery","shortname":":battery:","category":"objects","emoji_order":"629"},{"name":"electric plug","shortname":":electric_plug:","category":"objects","emoji_order":"630"},{"name":"electric light bulb","shortname":":bulb:","category":"objects","emoji_order":"631"},{"name":"electric torch","shortname":":flashlight:","category":"objects","emoji_order":"632"},{"name":"candle","shortname":":candle:","category":"objects","emoji_order":"633"},{"name":"wastebasket","shortname":":wastebasket:","category":"objects","emoji_order":"634"},{"name":"oil drum","shortname":":oil:","category":"objects","emoji_order":"635"},{"name":"money with wings","shortname":":money_with_wings:","category":"objects","emoji_order":"636"},{"name":"banknote with dollar sign","shortname":":dollar:","category":"objects","emoji_order":"637"},{"name":"banknote with yen sign","shortname":":yen:","category":"objects","emoji_order":"638"},{"name":"banknote with euro sign","shortname":":euro:","category":"objects","emoji_order":"639"},{"name":"banknote with pound sign","shortname":":pound:","category":"objects","emoji_order":"640"},{"name":"money bag","shortname":":moneybag:","category":"objects","emoji_order":"641"},{"name":"credit card","shortname":":credit_card:","category":"objects","emoji_order":"642"},{"name":"gem stone","shortname":":gem:","category":"objects","emoji_order":"643"},{"name":"scales","shortname":":scales:","category":"objects","emoji_order":"644"},{"name":"wrench","shortname":":wrench:","category":"objects","emoji_order":"645"},{"name":"hammer","shortname":":hammer:","category":"objects","emoji_order":"646"},{"name":"hammer and pick","shortname":":hammer_pick:","category":"objects","emoji_order":"647"},{"name":"hammer and wrench","shortname":":tools:","category":"objects","emoji_order":"648"},{"name":"pick","shortname":":pick:","category":"objects","emoji_order":"649"},{"name":"nut and bolt","shortname":":nut_and_bolt:","category":"objects","emoji_order":"650"},{"name":"gear","shortname":":gear:","category":"objects","emoji_order":"651"},{"name":"chains","shortname":":chains:","category":"objects","emoji_order":"652"},{"name":"pistol","shortname":":gun:","category":"objects","emoji_order":"653"},{"name":"bomb","shortname":":bomb:","category":"objects","emoji_order":"654"},{"name":"hocho","shortname":":knife:","category":"objects","emoji_order":"655"},{"name":"dagger knife","shortname":":dagger:","category":"objects","emoji_order":"656"},{"name":"crossed swords","shortname":":crossed_swords:","category":"objects","emoji_order":"657"},{"name":"shield","shortname":":shield:","category":"objects","emoji_order":"658"},{"name":"smoking symbol","shortname":":smoking:","category":"objects","emoji_order":"659"},{"name":"skull and crossbones","shortname":":skull_crossbones:","category":"objects","emoji_order":"660"},{"name":"coffin","shortname":":coffin:","category":"objects","emoji_order":"661"},{"name":"funeral urn","shortname":":urn:","category":"objects","emoji_order":"662"},{"name":"amphora","shortname":":amphora:","category":"objects","emoji_order":"663"},{"name":"crystal ball","shortname":":crystal_ball:","category":"objects","emoji_order":"664"},{"name":"prayer beads","shortname":":prayer_beads:","category":"objects","emoji_order":"665"},{"name":"barber pole","shortname":":barber:","category":"objects","emoji_order":"666"},{"name":"alembic","shortname":":alembic:","category":"objects","emoji_order":"667"},{"name":"telescope","shortname":":telescope:","category":"objects","emoji_order":"668"},{"name":"microscope","shortname":":microscope:","category":"objects","emoji_order":"669"},{"name":"hole","shortname":":hole:","category":"objects","emoji_order":"670"},{"name":"pill","shortname":":pill:","category":"objects","emoji_order":"671"},{"name":"syringe","shortname":":syringe:","category":"objects","emoji_order":"672"},{"name":"thermometer","shortname":":thermometer:","category":"objects","emoji_order":"673"},{"name":"label","shortname":":label:","category":"objects","emoji_order":"674"},{"name":"bookmark","shortname":":bookmark:","category":"objects","emoji_order":"675"},{"name":"toilet","shortname":":toilet:","category":"objects","emoji_order":"676"},{"name":"shower","shortname":":shower:","category":"objects","emoji_order":"677"},{"name":"bathtub","shortname":":bathtub:","category":"objects","emoji_order":"678"},{"name":"key","shortname":":key:","category":"objects","emoji_order":"679"},{"name":"old key","shortname":":key2:","category":"objects","emoji_order":"680"},{"name":"couch and lamp","shortname":":couch:","category":"objects","emoji_order":"681"},{"name":"sleeping accommodation","shortname":":sleeping_accommodation:","category":"objects","emoji_order":"682"},{"name":"bed","shortname":":bed:","category":"objects","emoji_order":"683"},{"name":"door","shortname":":door:","category":"objects","emoji_order":"684"},{"name":"bellhop bell","shortname":":bellhop:","category":"objects","emoji_order":"685"},{"name":"frame with picture","shortname":":frame_photo:","category":"objects","emoji_order":"686"},{"name":"world map","shortname":":map:","category":"objects","emoji_order":"687"},{"name":"umbrella on ground","shortname":":beach_umbrella:","category":"objects","emoji_order":"688"},{"name":"moyai","shortname":":moyai:","category":"objects","emoji_order":"689"},{"name":"shopping bags","shortname":":shopping_bags:","category":"objects","emoji_order":"690"},{"name":"balloon","shortname":":balloon:","category":"objects","emoji_order":"691"},{"name":"carp streamer","shortname":":flags:","category":"objects","emoji_order":"692"},{"name":"ribbon","shortname":":ribbon:","category":"objects","emoji_order":"693"},{"name":"wrapped present","shortname":":gift:","category":"objects","emoji_order":"694"},{"name":"confetti ball","shortname":":confetti_ball:","category":"objects","emoji_order":"695"},{"name":"party popper","shortname":":tada:","category":"objects","emoji_order":"696"},{"name":"japanese dolls","shortname":":dolls:","category":"objects","emoji_order":"697"},{"name":"wind chime","shortname":":wind_chime:","category":"objects","emoji_order":"698"},{"name":"crossed flags","shortname":":crossed_flags:","category":"objects","emoji_order":"699"},{"name":"izakaya lantern","shortname":":izakaya_lantern:","category":"objects","emoji_order":"700"},{"name":"envelope","shortname":":envelope:","category":"objects","emoji_order":"701"},{"name":"envelope with downwards arrow above","shortname":":envelope_with_arrow:","category":"objects","emoji_order":"702"},{"name":"incoming envelope","shortname":":incoming_envelope:","category":"objects","emoji_order":"703"},{"name":"e-mail symbol","shortname":":e-mail:","category":"objects","emoji_order":"704"},{"name":"love letter","shortname":":love_letter:","category":"objects","emoji_order":"705"},{"name":"postbox","shortname":":postbox:","category":"objects","emoji_order":"706"},{"name":"closed mailbox with lowered flag","shortname":":mailbox_closed:","category":"objects","emoji_order":"707"},{"name":"closed mailbox with raised flag","shortname":":mailbox:","category":"objects","emoji_order":"708"},{"name":"open mailbox with raised flag","shortname":":mailbox_with_mail:","category":"objects","emoji_order":"709"},{"name":"open mailbox with lowered flag","shortname":":mailbox_with_no_mail:","category":"objects","emoji_order":"710"},{"name":"package","shortname":":package:","category":"objects","emoji_order":"711"},{"name":"postal horn","shortname":":postal_horn:","category":"objects","emoji_order":"712"},{"name":"inbox tray","shortname":":inbox_tray:","category":"objects","emoji_order":"713"},{"name":"outbox tray","shortname":":outbox_tray:","category":"objects","emoji_order":"714"},{"name":"scroll","shortname":":scroll:","category":"objects","emoji_order":"715"},{"name":"page with curl","shortname":":page_with_curl:","category":"objects","emoji_order":"716"},{"name":"bookmark tabs","shortname":":bookmark_tabs:","category":"objects","emoji_order":"717"},{"name":"bar chart","shortname":":bar_chart:","category":"objects","emoji_order":"718"},{"name":"chart with upwards trend","shortname":":chart_with_upwards_trend:","category":"objects","emoji_order":"719"},{"name":"chart with downwards trend","shortname":":chart_with_downwards_trend:","category":"objects","emoji_order":"720"},{"name":"page facing up","shortname":":page_facing_up:","category":"objects","emoji_order":"721"},{"name":"calendar","shortname":":date:","category":"objects","emoji_order":"722"},{"name":"tear-off calendar","shortname":":calendar:","category":"objects","emoji_order":"723"},{"name":"spiral calendar pad","shortname":":calendar_spiral:","category":"objects","emoji_order":"724"},{"name":"card index","shortname":":card_index:","category":"objects","emoji_order":"725"},{"name":"card file box","shortname":":card_box:","category":"objects","emoji_order":"726"},{"name":"ballot box with ballot","shortname":":ballot_box:","category":"objects","emoji_order":"727"},{"name":"file cabinet","shortname":":file_cabinet:","category":"objects","emoji_order":"728"},{"name":"clipboard","shortname":":clipboard:","category":"objects","emoji_order":"729"},{"name":"spiral note pad","shortname":":notepad_spiral:","category":"objects","emoji_order":"730"},{"name":"file folder","shortname":":file_folder:","category":"objects","emoji_order":"731"},{"name":"open file folder","shortname":":open_file_folder:","category":"objects","emoji_order":"732"},{"name":"card index dividers","shortname":":dividers:","category":"objects","emoji_order":"733"},{"name":"rolled-up newspaper","shortname":":newspaper2:","category":"objects","emoji_order":"734"},{"name":"newspaper","shortname":":newspaper:","category":"objects","emoji_order":"735"},{"name":"notebook","shortname":":notebook:","category":"objects","emoji_order":"736"},{"name":"closed book","shortname":":closed_book:","category":"objects","emoji_order":"737"},{"name":"green book","shortname":":green_book:","category":"objects","emoji_order":"738"},{"name":"blue book","shortname":":blue_book:","category":"objects","emoji_order":"739"},{"name":"orange book","shortname":":orange_book:","category":"objects","emoji_order":"740"},{"name":"notebook with decorative cover","shortname":":notebook_with_decorative_cover:","category":"objects","emoji_order":"741"},{"name":"ledger","shortname":":ledger:","category":"objects","emoji_order":"742"},{"name":"books","shortname":":books:","category":"objects","emoji_order":"743"},{"name":"open book","shortname":":book:","category":"objects","emoji_order":"744"},{"name":"link symbol","shortname":":link:","category":"objects","emoji_order":"745"},{"name":"paperclip","shortname":":paperclip:","category":"objects","emoji_order":"746"},{"name":"linked paperclips","shortname":":paperclips:","category":"objects","emoji_order":"747"},{"name":"black scissors","shortname":":scissors:","category":"objects","emoji_order":"748"},{"name":"triangular ruler","shortname":":triangular_ruler:","category":"objects","emoji_order":"749"},{"name":"straight ruler","shortname":":straight_ruler:","category":"objects","emoji_order":"750"},{"name":"pushpin","shortname":":pushpin:","category":"objects","emoji_order":"751"},{"name":"round pushpin","shortname":":round_pushpin:","category":"objects","emoji_order":"752"},{"name":"triangular flag on post","shortname":":triangular_flag_on_post:","category":"objects","emoji_order":"753"},{"name":"waving white flag","shortname":":flag_white:","category":"objects","emoji_order":"754"},{"name":"waving black flag","shortname":":flag_black:","category":"objects","emoji_order":"755"},{"name":"closed lock with key","shortname":":closed_lock_with_key:","category":"objects","emoji_order":"756"},{"name":"lock","shortname":":lock:","category":"objects","emoji_order":"757"},{"name":"open lock","shortname":":unlock:","category":"objects","emoji_order":"758"},{"name":"lock with ink pen","shortname":":lock_with_ink_pen:","category":"objects","emoji_order":"759"},{"name":"lower left ballpoint pen","shortname":":pen_ballpoint:","category":"objects","emoji_order":"760"},{"name":"lower left fountain pen","shortname":":pen_fountain:","category":"objects","emoji_order":"761"},{"name":"black nib","shortname":":black_nib:","category":"objects","emoji_order":"762"},{"name":"memo","shortname":":pencil:","category":"objects","emoji_order":"763"},{"name":"pencil","shortname":":pencil2:","category":"objects","emoji_order":"764"},{"name":"lower left crayon","shortname":":crayon:","category":"objects","emoji_order":"765"},{"name":"lower left paintbrush","shortname":":paintbrush:","category":"objects","emoji_order":"766"},{"name":"left-pointing magnifying glass","shortname":":mag:","category":"objects","emoji_order":"767"},{"name":"right-pointing magnifying glass","shortname":":mag_right:","category":"objects","emoji_order":"768"},{"name":"heavy black heart","shortname":":heart:","category":"symbols","emoji_order":"769","aliases_ascii":["<3"]},{"name":"yellow heart","shortname":":yellow_heart:","category":"symbols","emoji_order":"770"},{"name":"green heart","shortname":":green_heart:","category":"symbols","emoji_order":"771"},{"name":"blue heart","shortname":":blue_heart:","category":"symbols","emoji_order":"772"},{"name":"purple heart","shortname":":purple_heart:","category":"symbols","emoji_order":"773"},{"name":"broken heart","shortname":":broken_heart:","category":"symbols","emoji_order":"774","aliases_ascii":["</3"]},{"name":"heavy heart exclamation mark ornament","shortname":":heart_exclamation:","category":"symbols","emoji_order":"775"},{"name":"two hearts","shortname":":two_hearts:","category":"symbols","emoji_order":"776"},{"name":"revolving hearts","shortname":":revolving_hearts:","category":"symbols","emoji_order":"777"},{"name":"beating heart","shortname":":heartbeat:","category":"symbols","emoji_order":"778"},{"name":"growing heart","shortname":":heartpulse:","category":"symbols","emoji_order":"779"},{"name":"sparkling heart","shortname":":sparkling_heart:","category":"symbols","emoji_order":"780"},{"name":"heart with arrow","shortname":":cupid:","category":"symbols","emoji_order":"781"},{"name":"heart with ribbon","shortname":":gift_heart:","category":"symbols","emoji_order":"782"},{"name":"heart decoration","shortname":":heart_decoration:","category":"symbols","emoji_order":"783"},{"name":"peace symbol","shortname":":peace:","category":"symbols","emoji_order":"784"},{"name":"latin cross","shortname":":cross:","category":"symbols","emoji_order":"785"},{"name":"star and crescent","shortname":":star_and_crescent:","category":"symbols","emoji_order":"786"},{"name":"om symbol","shortname":":om_symbol:","category":"symbols","emoji_order":"787"},{"name":"wheel of dharma","shortname":":wheel_of_dharma:","category":"symbols","emoji_order":"788"},{"name":"star of david","shortname":":star_of_david:","category":"symbols","emoji_order":"789"},{"name":"six pointed star with middle dot","shortname":":six_pointed_star:","category":"symbols","emoji_order":"790"},{"name":"menorah with nine branches","shortname":":menorah:","category":"symbols","emoji_order":"791"},{"name":"yin yang","shortname":":yin_yang:","category":"symbols","emoji_order":"792"},{"name":"orthodox cross","shortname":":orthodox_cross:","category":"symbols","emoji_order":"793"},{"name":"place of worship","shortname":":place_of_worship:","category":"symbols","emoji_order":"794"},{"name":"ophiuchus","shortname":":ophiuchus:","category":"symbols","emoji_order":"795"},{"name":"aries","shortname":":aries:","category":"symbols","emoji_order":"796"},{"name":"taurus","shortname":":taurus:","category":"symbols","emoji_order":"797"},{"name":"gemini","shortname":":gemini:","category":"symbols","emoji_order":"798"},{"name":"cancer","shortname":":cancer:","category":"symbols","emoji_order":"799"},{"name":"leo","shortname":":leo:","category":"symbols","emoji_order":"800"},{"name":"virgo","shortname":":virgo:","category":"symbols","emoji_order":"801"},{"name":"libra","shortname":":libra:","category":"symbols","emoji_order":"802"},{"name":"scorpius","shortname":":scorpius:","category":"symbols","emoji_order":"803"},{"name":"sagittarius","shortname":":sagittarius:","category":"symbols","emoji_order":"804"},{"name":"capricorn","shortname":":capricorn:","category":"symbols","emoji_order":"805"},{"name":"aquarius","shortname":":aquarius:","category":"symbols","emoji_order":"806"},{"name":"pisces","shortname":":pisces:","category":"symbols","emoji_order":"807"},{"name":"squared id","shortname":":id:","category":"symbols","emoji_order":"808"},{"name":"atom symbol","shortname":":atom:","category":"symbols","emoji_order":"809"},{"name":"squared cjk unified ideograph-7a7a","shortname":":u7a7a:","category":"symbols","emoji_order":"810"},{"name":"squared cjk unified ideograph-5272","shortname":":u5272:","category":"symbols","emoji_order":"811"},{"name":"radioactive sign","shortname":":radioactive:","category":"symbols","emoji_order":"812"},{"name":"biohazard sign","shortname":":biohazard:","category":"symbols","emoji_order":"813"},{"name":"mobile phone off","shortname":":mobile_phone_off:","category":"symbols","emoji_order":"814"},{"name":"vibration mode","shortname":":vibration_mode:","category":"symbols","emoji_order":"815"},{"name":"squared cjk unified ideograph-6709","shortname":":u6709:","category":"symbols","emoji_order":"816"},{"name":"squared cjk unified ideograph-7121","shortname":":u7121:","category":"symbols","emoji_order":"817"},{"name":"squared cjk unified ideograph-7533","shortname":":u7533:","category":"symbols","emoji_order":"818"},{"name":"squared cjk unified ideograph-55b6","shortname":":u55b6:","category":"symbols","emoji_order":"819"},{"name":"squared cjk unified ideograph-6708","shortname":":u6708:","category":"symbols","emoji_order":"820"},{"name":"eight pointed black star","shortname":":eight_pointed_black_star:","category":"symbols","emoji_order":"821"},{"name":"squared vs","shortname":":vs:","category":"symbols","emoji_order":"822"},{"name":"circled ideograph accept","shortname":":accept:","category":"symbols","emoji_order":"823"},{"name":"white flower","shortname":":white_flower:","category":"symbols","emoji_order":"824"},{"name":"circled ideograph advantage","shortname":":ideograph_advantage:","category":"symbols","emoji_order":"825"},{"name":"circled ideograph secret","shortname":":secret:","category":"symbols","emoji_order":"826"},{"name":"circled ideograph congratulation","shortname":":congratulations:","category":"symbols","emoji_order":"827"},{"name":"squared cjk unified ideograph-5408","shortname":":u5408:","category":"symbols","emoji_order":"828"},{"name":"squared cjk unified ideograph-6e80","shortname":":u6e80:","category":"symbols","emoji_order":"829"},{"name":"squared cjk unified ideograph-7981","shortname":":u7981:","category":"symbols","emoji_order":"830"},{"name":"negative squared latin capital letter a","shortname":":a:","category":"symbols","emoji_order":"831"},{"name":"negative squared latin capital letter b","shortname":":b:","category":"symbols","emoji_order":"832"},{"name":"negative squared ab","shortname":":ab:","category":"symbols","emoji_order":"833"},{"name":"squared cl","shortname":":cl:","category":"symbols","emoji_order":"834"},{"name":"negative squared latin capital letter o","shortname":":o2:","category":"symbols","emoji_order":"835"},{"name":"squared sos","shortname":":sos:","category":"symbols","emoji_order":"836"},{"name":"no entry","shortname":":no_entry:","category":"symbols","emoji_order":"837"},{"name":"name badge","shortname":":name_badge:","category":"symbols","emoji_order":"838"},{"name":"no entry sign","shortname":":no_entry_sign:","category":"symbols","emoji_order":"839"},{"name":"cross mark","shortname":":x:","category":"symbols","emoji_order":"840"},{"name":"heavy large circle","shortname":":o:","category":"symbols","emoji_order":"841"},{"name":"anger symbol","shortname":":anger:","category":"symbols","emoji_order":"842"},{"name":"hot springs","shortname":":hotsprings:","category":"symbols","emoji_order":"843"},{"name":"no pedestrians","shortname":":no_pedestrians:","category":"symbols","emoji_order":"844"},{"name":"do not litter symbol","shortname":":do_not_litter:","category":"symbols","emoji_order":"845"},{"name":"no bicycles","shortname":":no_bicycles:","category":"symbols","emoji_order":"846"},{"name":"non-potable water symbol","shortname":":non-potable_water:","category":"symbols","emoji_order":"847"},{"name":"no one under eighteen symbol","shortname":":underage:","category":"symbols","emoji_order":"848"},{"name":"no mobile phones","shortname":":no_mobile_phones:","category":"symbols","emoji_order":"849"},{"name":"heavy exclamation mark symbol","shortname":":exclamation:","category":"symbols","emoji_order":"850"},{"name":"white exclamation mark ornament","shortname":":grey_exclamation:","category":"symbols","emoji_order":"851"},{"name":"black question mark ornament","shortname":":question:","category":"symbols","emoji_order":"852"},{"name":"white question mark ornament","shortname":":grey_question:","category":"symbols","emoji_order":"853"},{"name":"double exclamation mark","shortname":":bangbang:","category":"symbols","emoji_order":"854"},{"name":"exclamation question mark","shortname":":interrobang:","category":"symbols","emoji_order":"855"},{"name":"low brightness symbol","shortname":":low_brightness:","category":"symbols","emoji_order":"857"},{"name":"high brightness symbol","shortname":":high_brightness:","category":"symbols","emoji_order":"858"},{"name":"trident emblem","shortname":":trident:","category":"symbols","emoji_order":"859"},{"name":"fleur-de-lis","shortname":":fleur-de-lis:","category":"symbols","emoji_order":"860"},{"name":"part alternation mark","shortname":":part_alternation_mark:","category":"symbols","emoji_order":"861"},{"name":"warning sign","shortname":":warning:","category":"symbols","emoji_order":"862"},{"name":"children crossing","shortname":":children_crossing:","category":"symbols","emoji_order":"863"},{"name":"japanese symbol for beginner","shortname":":beginner:","category":"symbols","emoji_order":"864"},{"name":"black universal recycling symbol","shortname":":recycle:","category":"symbols","emoji_order":"865"},{"name":"squared cjk unified ideograph-6307","shortname":":u6307:","category":"symbols","emoji_order":"866"},{"name":"chart with upwards trend and yen sign","shortname":":chart:","category":"symbols","emoji_order":"867"},{"name":"sparkle","shortname":":sparkle:","category":"symbols","emoji_order":"868"},{"name":"eight spoked asterisk","shortname":":eight_spoked_asterisk:","category":"symbols","emoji_order":"869"},{"name":"negative squared cross mark","shortname":":negative_squared_cross_mark:","category":"symbols","emoji_order":"870"},{"name":"white heavy check mark","shortname":":white_check_mark:","category":"symbols","emoji_order":"871"},{"name":"diamond shape with a dot inside","shortname":":diamond_shape_with_a_dot_inside:","category":"symbols","emoji_order":"872"},{"name":"cyclone","shortname":":cyclone:","category":"symbols","emoji_order":"873"},{"name":"double curly loop","shortname":":loop:","category":"symbols","emoji_order":"874"},{"name":"globe with meridians","shortname":":globe_with_meridians:","category":"symbols","emoji_order":"875"},{"name":"circled latin capital letter m","shortname":":m:","category":"symbols","emoji_order":"876"},{"name":"automated teller machine","shortname":":atm:","category":"symbols","emoji_order":"877"},{"name":"squared katakana sa","shortname":":sa:","category":"symbols","emoji_order":"878"},{"name":"passport control","shortname":":passport_control:","category":"symbols","emoji_order":"879"},{"name":"customs","shortname":":customs:","category":"symbols","emoji_order":"880"},{"name":"baggage claim","shortname":":baggage_claim:","category":"symbols","emoji_order":"881"},{"name":"left luggage","shortname":":left_luggage:","category":"symbols","emoji_order":"882"},{"name":"wheelchair symbol","shortname":":wheelchair:","category":"symbols","emoji_order":"883"},{"name":"no smoking symbol","shortname":":no_smoking:","category":"symbols","emoji_order":"884"},{"name":"water closet","shortname":":wc:","category":"symbols","emoji_order":"885"},{"name":"negative squared latin capital letter p","shortname":":parking:","category":"symbols","emoji_order":"886"},{"name":"potable water symbol","shortname":":potable_water:","category":"symbols","emoji_order":"887"},{"name":"mens symbol","shortname":":mens:","category":"symbols","emoji_order":"888"},{"name":"womens symbol","shortname":":womens:","category":"symbols","emoji_order":"889"},{"name":"baby symbol","shortname":":baby_symbol:","category":"symbols","emoji_order":"890"},{"name":"restroom","shortname":":restroom:","category":"symbols","emoji_order":"891"},{"name":"put litter in its place symbol","shortname":":put_litter_in_its_place:","category":"symbols","emoji_order":"892"},{"name":"cinema","shortname":":cinema:","category":"symbols","emoji_order":"893"},{"name":"antenna with bars","shortname":":signal_strength:","category":"symbols","emoji_order":"894"},{"name":"squared katakana koko","shortname":":koko:","category":"symbols","emoji_order":"895"},{"name":"squared ng","shortname":":ng:","category":"symbols","emoji_order":"896"},{"name":"squared ok","shortname":":ok:","category":"symbols","emoji_order":"897"},{"name":"squared up with exclamation mark","shortname":":up:","category":"symbols","emoji_order":"898"},{"name":"squared cool","shortname":":cool:","category":"symbols","emoji_order":"899"},{"name":"squared new","shortname":":new:","category":"symbols","emoji_order":"900"},{"name":"squared free","shortname":":free:","category":"symbols","emoji_order":"901"},{"name":"keycap digit zero","shortname":":zero:","category":"symbols","emoji_order":"902"},{"name":"keycap digit one","shortname":":one:","category":"symbols","emoji_order":"903"},{"name":"keycap digit two","shortname":":two:","category":"symbols","emoji_order":"904"},{"name":"keycap digit three","shortname":":three:","category":"symbols","emoji_order":"905"},{"name":"keycap digit four","shortname":":four:","category":"symbols","emoji_order":"906"},{"name":"keycap digit five","shortname":":five:","category":"symbols","emoji_order":"907"},{"name":"keycap digit six","shortname":":six:","category":"symbols","emoji_order":"908"},{"name":"keycap digit seven","shortname":":seven:","category":"symbols","emoji_order":"909"},{"name":"keycap digit eight","shortname":":eight:","category":"symbols","emoji_order":"910"},{"name":"keycap digit nine","shortname":":nine:","category":"symbols","emoji_order":"911"},{"name":"keycap ten","shortname":":ten:","category":"symbols","emoji_order":"912"},{"name":"black right-pointing triangle","shortname":":arrow_forward:","category":"symbols","emoji_order":"914"},{"name":"double vertical bar","shortname":":pause_button:","category":"symbols","emoji_order":"915"},{"name":"black right-pointing double triangle with double vertical bar","shortname":":play_pause:","category":"symbols","emoji_order":"916"},{"name":"black square for stop","shortname":":stop_button:","category":"symbols","emoji_order":"917"},{"name":"black circle for record","shortname":":record_button:","category":"symbols","emoji_order":"918"},{"name":"black right-pointing double triangle with vertical bar","shortname":":track_next:","category":"symbols","emoji_order":"919"},{"name":"black left-pointing double triangle with vertical bar","shortname":":track_previous:","category":"symbols","emoji_order":"920"},{"name":"black right-pointing double triangle","shortname":":fast_forward:","category":"symbols","emoji_order":"921"},{"name":"black left-pointing double triangle","shortname":":rewind:","category":"symbols","emoji_order":"922"},{"name":"twisted rightwards arrows","shortname":":twisted_rightwards_arrows:","category":"symbols","emoji_order":"923"},{"name":"clockwise rightwards and leftwards open circle arrows","shortname":":repeat:","category":"symbols","emoji_order":"924"},{"name":"clockwise rightwards and leftwards open circle arrows with circled one overlay","shortname":":repeat_one:","category":"symbols","emoji_order":"925"},{"name":"black left-pointing triangle","shortname":":arrow_backward:","category":"symbols","emoji_order":"926"},{"name":"up-pointing small red triangle","shortname":":arrow_up_small:","category":"symbols","emoji_order":"927"},{"name":"down-pointing small red triangle","shortname":":arrow_down_small:","category":"symbols","emoji_order":"928"},{"name":"black up-pointing double triangle","shortname":":arrow_double_up:","category":"symbols","emoji_order":"929"},{"name":"black down-pointing double triangle","shortname":":arrow_double_down:","category":"symbols","emoji_order":"930"},{"name":"black rightwards arrow","shortname":":arrow_right:","category":"symbols","emoji_order":"931"},{"name":"leftwards black arrow","shortname":":arrow_left:","category":"symbols","emoji_order":"932"},{"name":"upwards black arrow","shortname":":arrow_up:","category":"symbols","emoji_order":"933"},{"name":"downwards black arrow","shortname":":arrow_down:","category":"symbols","emoji_order":"934"},{"name":"north east arrow","shortname":":arrow_upper_right:","category":"symbols","emoji_order":"935"},{"name":"south east arrow","shortname":":arrow_lower_right:","category":"symbols","emoji_order":"936"},{"name":"south west arrow","shortname":":arrow_lower_left:","category":"symbols","emoji_order":"937"},{"name":"north west arrow","shortname":":arrow_upper_left:","category":"symbols","emoji_order":"938"},{"name":"up down arrow","shortname":":arrow_up_down:","category":"symbols","emoji_order":"939"},{"name":"left right arrow","shortname":":left_right_arrow:","category":"symbols","emoji_order":"940"},{"name":"anticlockwise downwards and upwards open circle arrows","shortname":":arrows_counterclockwise:","category":"symbols","emoji_order":"941"},{"name":"rightwards arrow with hook","shortname":":arrow_right_hook:","category":"symbols","emoji_order":"942"},{"name":"leftwards arrow with hook","shortname":":leftwards_arrow_with_hook:","category":"symbols","emoji_order":"943"},{"name":"arrow pointing rightwards then curving upwards","shortname":":arrow_heading_up:","category":"symbols","emoji_order":"944"},{"name":"arrow pointing rightwards then curving downwards","shortname":":arrow_heading_down:","category":"symbols","emoji_order":"945"},{"name":"keycap number sign","shortname":":hash:","category":"symbols","emoji_order":"946"},{"name":"keycap asterisk","shortname":":asterisk:","category":"symbols","emoji_order":"947"},{"name":"information source","shortname":":information_source:","category":"symbols","emoji_order":"948"},{"name":"input symbol for latin letters","shortname":":abc:","category":"symbols","emoji_order":"949"},{"name":"input symbol for latin small letters","shortname":":abcd:","category":"symbols","emoji_order":"950"},{"name":"input symbol for latin capital letters","shortname":":capital_abcd:","category":"symbols","emoji_order":"951"},{"name":"input symbol for symbols","shortname":":symbols:","category":"symbols","emoji_order":"952"},{"name":"musical note","shortname":":musical_note:","category":"symbols","emoji_order":"953"},{"name":"multiple musical notes","shortname":":notes:","category":"symbols","emoji_order":"954"},{"name":"wavy dash","shortname":":wavy_dash:","category":"symbols","emoji_order":"955"},{"name":"curly loop","shortname":":curly_loop:","category":"symbols","emoji_order":"956"},{"name":"heavy check mark","shortname":":heavy_check_mark:","category":"symbols","emoji_order":"957"},{"name":"clockwise downwards and upwards open circle arrows","shortname":":arrows_clockwise:","category":"symbols","emoji_order":"958"},{"name":"heavy plus sign","shortname":":heavy_plus_sign:","category":"symbols","emoji_order":"959"},{"name":"heavy minus sign","shortname":":heavy_minus_sign:","category":"symbols","emoji_order":"960"},{"name":"heavy division sign","shortname":":heavy_division_sign:","category":"symbols","emoji_order":"961"},{"name":"heavy multiplication x","shortname":":heavy_multiplication_x:","category":"symbols","emoji_order":"962"},{"name":"heavy dollar sign","shortname":":heavy_dollar_sign:","category":"symbols","emoji_order":"963"},{"name":"currency exchange","shortname":":currency_exchange:","category":"symbols","emoji_order":"964"},{"name":"copyright sign","shortname":":copyright:","category":"symbols","emoji_order":"965"},{"name":"registered sign","shortname":":registered:","category":"symbols","emoji_order":"966"},{"name":"trade mark sign","shortname":":tm:","category":"symbols","emoji_order":"967"},{"name":"end with leftwards arrow above","shortname":":end:","category":"symbols","emoji_order":"968"},{"name":"back with leftwards arrow above","shortname":":back:","category":"symbols","emoji_order":"969"},{"name":"on with exclamation mark with left right arrow abo","shortname":":on:","category":"symbols","emoji_order":"970"},{"name":"top with upwards arrow above","shortname":":top:","category":"symbols","emoji_order":"971"},{"name":"soon with rightwards arrow above","shortname":":soon:","category":"symbols","emoji_order":"972"},{"name":"ballot box with check","shortname":":ballot_box_with_check:","category":"symbols","emoji_order":"973"},{"name":"radio button","shortname":":radio_button:","category":"symbols","emoji_order":"974"},{"name":"medium white circle","shortname":":white_circle:","category":"symbols","emoji_order":"975"},{"name":"medium black circle","shortname":":black_circle:","category":"symbols","emoji_order":"976"},{"name":"large red circle","shortname":":red_circle:","category":"symbols","emoji_order":"977"},{"name":"large blue circle","shortname":":large_blue_circle:","category":"symbols","emoji_order":"978"},{"name":"small orange diamond","shortname":":small_orange_diamond:","category":"symbols","emoji_order":"979"},{"name":"small blue diamond","shortname":":small_blue_diamond:","category":"symbols","emoji_order":"980"},{"name":"large orange diamond","shortname":":large_orange_diamond:","category":"symbols","emoji_order":"981"},{"name":"large blue diamond","shortname":":large_blue_diamond:","category":"symbols","emoji_order":"982"},{"name":"up-pointing red triangle","shortname":":small_red_triangle:","category":"symbols","emoji_order":"983"},{"name":"black small square","shortname":":black_small_square:","category":"symbols","emoji_order":"984"},{"name":"white small square","shortname":":white_small_square:","category":"symbols","emoji_order":"985"},{"name":"black large square","shortname":":black_large_square:","category":"symbols","emoji_order":"986"},{"name":"white large square","shortname":":white_large_square:","category":"symbols","emoji_order":"987"},{"name":"down-pointing red triangle","shortname":":small_red_triangle_down:","category":"symbols","emoji_order":"988"},{"name":"black medium square","shortname":":black_medium_square:","category":"symbols","emoji_order":"989"},{"name":"white medium square","shortname":":white_medium_square:","category":"symbols","emoji_order":"990"},{"name":"black medium small square","shortname":":black_medium_small_square:","category":"symbols","emoji_order":"991"},{"name":"white medium small square","shortname":":white_medium_small_square:","category":"symbols","emoji_order":"992"},{"name":"black square button","shortname":":black_square_button:","category":"symbols","emoji_order":"993"},{"name":"white square button","shortname":":white_square_button:","category":"symbols","emoji_order":"994"},{"name":"speaker","shortname":":speaker:","category":"symbols","emoji_order":"995"},{"name":"speaker with one sound wave","shortname":":sound:","category":"symbols","emoji_order":"996"},{"name":"speaker with three sound waves","shortname":":loud_sound:","category":"symbols","emoji_order":"997"},{"name":"speaker with cancellation stroke","shortname":":mute:","category":"symbols","emoji_order":"998"},{"name":"cheering megaphone","shortname":":mega:","category":"symbols","emoji_order":"999"},{"name":"public address loudspeaker","shortname":":loudspeaker:","category":"symbols","emoji_order":"1000"},{"name":"bell","shortname":":bell:","category":"symbols","emoji_order":"1001"},{"name":"bell with cancellation stroke","shortname":":no_bell:","category":"symbols","emoji_order":"1002"},{"name":"playing card black joker","shortname":":black_joker:","category":"symbols","emoji_order":"1003"},{"name":"mahjong tile red dragon","shortname":":mahjong:","category":"symbols","emoji_order":"1004"},{"name":"black spade suit","shortname":":spades:","category":"symbols","emoji_order":"1005"},{"name":"black club suit","shortname":":clubs:","category":"symbols","emoji_order":"1006"},{"name":"black heart suit","shortname":":hearts:","category":"symbols","emoji_order":"1007"},{"name":"black diamond suit","shortname":":diamonds:","category":"symbols","emoji_order":"1008"},{"name":"flower playing cards","shortname":":flower_playing_cards:","category":"symbols","emoji_order":"1009"},{"name":"thought balloon","shortname":":thought_balloon:","category":"symbols","emoji_order":"1010"},{"name":"right anger bubble","shortname":":anger_right:","category":"symbols","emoji_order":"1011"},{"name":"speech balloon","shortname":":speech_balloon:","category":"symbols","emoji_order":"1012"},{"name":"clock face one oclock","shortname":":clock1:","category":"symbols","emoji_order":"1013"},{"name":"clock face two oclock","shortname":":clock2:","category":"symbols","emoji_order":"1014"},{"name":"clock face three oclock","shortname":":clock3:","category":"symbols","emoji_order":"1015"},{"name":"clock face four oclock","shortname":":clock4:","category":"symbols","emoji_order":"1016"},{"name":"clock face five oclock","shortname":":clock5:","category":"symbols","emoji_order":"1017"},{"name":"clock face six oclock","shortname":":clock6:","category":"symbols","emoji_order":"1018"},{"name":"clock face seven oclock","shortname":":clock7:","category":"symbols","emoji_order":"1019"},{"name":"clock face eight oclock","shortname":":clock8:","category":"symbols","emoji_order":"1020"},{"name":"clock face nine oclock","shortname":":clock9:","category":"symbols","emoji_order":"1021"},{"name":"clock face ten oclock","shortname":":clock10:","category":"symbols","emoji_order":"1022"},{"name":"clock face eleven oclock","shortname":":clock11:","category":"symbols","emoji_order":"1023"},{"name":"clock face twelve oclock","shortname":":clock12:","category":"symbols","emoji_order":"1024"},{"name":"clock face one-thirty","shortname":":clock130:","category":"symbols","emoji_order":"1025"},{"name":"clock face two-thirty","shortname":":clock230:","category":"symbols","emoji_order":"1026"},{"name":"clock face three-thirty","shortname":":clock330:","category":"symbols","emoji_order":"1027"},{"name":"clock face four-thirty","shortname":":clock430:","category":"symbols","emoji_order":"1028"},{"name":"clock face five-thirty","shortname":":clock530:","category":"symbols","emoji_order":"1029"},{"name":"clock face six-thirty","shortname":":clock630:","category":"symbols","emoji_order":"1030"},{"name":"clock face seven-thirty","shortname":":clock730:","category":"symbols","emoji_order":"1031"},{"name":"clock face eight-thirty","shortname":":clock830:","category":"symbols","emoji_order":"1032"},{"name":"clock face nine-thirty","shortname":":clock930:","category":"symbols","emoji_order":"1033"},{"name":"clock face ten-thirty","shortname":":clock1030:","category":"symbols","emoji_order":"1034"},{"name":"clock face eleven-thirty","shortname":":clock1130:","category":"symbols","emoji_order":"1035"},{"name":"clock face twelve-thirty","shortname":":clock1230:","category":"symbols","emoji_order":"1036"},{"name":"eye in speech bubble","shortname":":eye_in_speech_bubble:","category":"symbols","emoji_order":"1037"},{"name":"ascension","shortname":":flag_ac:","category":"flags","emoji_order":"1038"},{"name":"afghanistan","shortname":":flag_af:","category":"flags","emoji_order":"1039"},{"name":"albania","shortname":":flag_al:","category":"flags","emoji_order":"1040"},{"name":"algeria","shortname":":flag_dz:","category":"flags","emoji_order":"1041"},{"name":"andorra","shortname":":flag_ad:","category":"flags","emoji_order":"1042"},{"name":"angola","shortname":":flag_ao:","category":"flags","emoji_order":"1043"},{"name":"anguilla","shortname":":flag_ai:","category":"flags","emoji_order":"1044"},{"name":"antigua and barbuda","shortname":":flag_ag:","category":"flags","emoji_order":"1045"},{"name":"argentina","shortname":":flag_ar:","category":"flags","emoji_order":"1046"},{"name":"armenia","shortname":":flag_am:","category":"flags","emoji_order":"1047"},{"name":"aruba","shortname":":flag_aw:","category":"flags","emoji_order":"1048"},{"name":"australia","shortname":":flag_au:","category":"flags","emoji_order":"1049"},{"name":"austria","shortname":":flag_at:","category":"flags","emoji_order":"1050"},{"name":"azerbaijan","shortname":":flag_az:","category":"flags","emoji_order":"1051"},{"name":"the bahamas","shortname":":flag_bs:","category":"flags","emoji_order":"1052"},{"name":"bahrain","shortname":":flag_bh:","category":"flags","emoji_order":"1053"},{"name":"bangladesh","shortname":":flag_bd:","category":"flags","emoji_order":"1054"},{"name":"barbados","shortname":":flag_bb:","category":"flags","emoji_order":"1055"},{"name":"belarus","shortname":":flag_by:","category":"flags","emoji_order":"1056"},{"name":"belgium","shortname":":flag_be:","category":"flags","emoji_order":"1057"},{"name":"belize","shortname":":flag_bz:","category":"flags","emoji_order":"1058"},{"name":"benin","shortname":":flag_bj:","category":"flags","emoji_order":"1059"},{"name":"bermuda","shortname":":flag_bm:","category":"flags","emoji_order":"1060"},{"name":"bhutan","shortname":":flag_bt:","category":"flags","emoji_order":"1061"},{"name":"bolivia","shortname":":flag_bo:","category":"flags","emoji_order":"1062"},{"name":"bosnia and herzegovina","shortname":":flag_ba:","category":"flags","emoji_order":"1063"},{"name":"botswana","shortname":":flag_bw:","category":"flags","emoji_order":"1064"},{"name":"brazil","shortname":":flag_br:","category":"flags","emoji_order":"1065"},{"name":"brunei","shortname":":flag_bn:","category":"flags","emoji_order":"1066"},{"name":"bulgaria","shortname":":flag_bg:","category":"flags","emoji_order":"1067"},{"name":"burkina faso","shortname":":flag_bf:","category":"flags","emoji_order":"1068"},{"name":"burundi","shortname":":flag_bi:","category":"flags","emoji_order":"1069"},{"name":"cape verde","shortname":":flag_cv:","category":"flags","emoji_order":"1070"},{"name":"cambodia","shortname":":flag_kh:","category":"flags","emoji_order":"1071"},{"name":"cameroon","shortname":":flag_cm:","category":"flags","emoji_order":"1072"},{"name":"canada","shortname":":flag_ca:","category":"flags","emoji_order":"1073"},{"name":"cayman islands","shortname":":flag_ky:","category":"flags","emoji_order":"1074"},{"name":"central african republic","shortname":":flag_cf:","category":"flags","emoji_order":"1075"},{"name":"chad","shortname":":flag_td:","category":"flags","emoji_order":"1076"},{"name":"chile","shortname":":flag_cl:","category":"flags","emoji_order":"1077"},{"name":"china","shortname":":flag_cn:","category":"flags","emoji_order":"1078"},{"name":"colombia","shortname":":flag_co:","category":"flags","emoji_order":"1079"},{"name":"the comoros","shortname":":flag_km:","category":"flags","emoji_order":"1080"},{"name":"the republic of the congo","shortname":":flag_cg:","category":"flags","emoji_order":"1081"},{"name":"the democratic republic of the congo","shortname":":flag_cd:","category":"flags","emoji_order":"1082"},{"name":"costa rica","shortname":":flag_cr:","category":"flags","emoji_order":"1083"},{"name":"croatia","shortname":":flag_hr:","category":"flags","emoji_order":"1084"},{"name":"cuba","shortname":":flag_cu:","category":"flags","emoji_order":"1085"},{"name":"cyprus","shortname":":flag_cy:","category":"flags","emoji_order":"1086"},{"name":"the czech republic","shortname":":flag_cz:","category":"flags","emoji_order":"1087"},{"name":"denmark","shortname":":flag_dk:","category":"flags","emoji_order":"1088"},{"name":"djibouti","shortname":":flag_dj:","category":"flags","emoji_order":"1089"},{"name":"dominica","shortname":":flag_dm:","category":"flags","emoji_order":"1090"},{"name":"the dominican republic","shortname":":flag_do:","category":"flags","emoji_order":"1091"},{"name":"ecuador","shortname":":flag_ec:","category":"flags","emoji_order":"1092"},{"name":"egypt","shortname":":flag_eg:","category":"flags","emoji_order":"1093"},{"name":"el salvador","shortname":":flag_sv:","category":"flags","emoji_order":"1094"},{"name":"equatorial guinea","shortname":":flag_gq:","category":"flags","emoji_order":"1095"},{"name":"eritrea","shortname":":flag_er:","category":"flags","emoji_order":"1096"},{"name":"estonia","shortname":":flag_ee:","category":"flags","emoji_order":"1097"},{"name":"ethiopia","shortname":":flag_et:","category":"flags","emoji_order":"1098"},{"name":"falkland islands","shortname":":flag_fk:","category":"flags","emoji_order":"1099"},{"name":"faroe islands","shortname":":flag_fo:","category":"flags","emoji_order":"1100"},{"name":"fiji","shortname":":flag_fj:","category":"flags","emoji_order":"1101"},{"name":"finland","shortname":":flag_fi:","category":"flags","emoji_order":"1102"},{"name":"france","shortname":":flag_fr:","category":"flags","emoji_order":"1103"},{"name":"french polynesia","shortname":":flag_pf:","category":"flags","emoji_order":"1104"},{"name":"gabon","shortname":":flag_ga:","category":"flags","emoji_order":"1105"},{"name":"the gambia","shortname":":flag_gm:","category":"flags","emoji_order":"1106"},{"name":"georgia","shortname":":flag_ge:","category":"flags","emoji_order":"1107"},{"name":"germany","shortname":":flag_de:","category":"flags","emoji_order":"1108"},{"name":"ghana","shortname":":flag_gh:","category":"flags","emoji_order":"1109"},{"name":"gibraltar","shortname":":flag_gi:","category":"flags","emoji_order":"1110"},{"name":"greece","shortname":":flag_gr:","category":"flags","emoji_order":"1111"},{"name":"greenland","shortname":":flag_gl:","category":"flags","emoji_order":"1112"},{"name":"grenada","shortname":":flag_gd:","category":"flags","emoji_order":"1113"},{"name":"guam","shortname":":flag_gu:","category":"flags","emoji_order":"1114"},{"name":"guatemala","shortname":":flag_gt:","category":"flags","emoji_order":"1115"},{"name":"guinea","shortname":":flag_gn:","category":"flags","emoji_order":"1116"},{"name":"guinea-bissau","shortname":":flag_gw:","category":"flags","emoji_order":"1117"},{"name":"guyana","shortname":":flag_gy:","category":"flags","emoji_order":"1118"},{"name":"haiti","shortname":":flag_ht:","category":"flags","emoji_order":"1119"},{"name":"honduras","shortname":":flag_hn:","category":"flags","emoji_order":"1120"},{"name":"hong kong","shortname":":flag_hk:","category":"flags","emoji_order":"1121"},{"name":"hungary","shortname":":flag_hu:","category":"flags","emoji_order":"1122"},{"name":"iceland","shortname":":flag_is:","category":"flags","emoji_order":"1123"},{"name":"india","shortname":":flag_in:","category":"flags","emoji_order":"1124"},{"name":"indonesia","shortname":":flag_id:","category":"flags","emoji_order":"1125"},{"name":"iran","shortname":":flag_ir:","category":"flags","emoji_order":"1126"},{"name":"iraq","shortname":":flag_iq:","category":"flags","emoji_order":"1127"},{"name":"ireland","shortname":":flag_ie:","category":"flags","emoji_order":"1128"},{"name":"israel","shortname":":flag_il:","category":"flags","emoji_order":"1129"},{"name":"italy","shortname":":flag_it:","category":"flags","emoji_order":"1130"},{"name":"côte d’ivoire","shortname":":flag_ci:","category":"flags","emoji_order":"1131"},{"name":"jamaica","shortname":":flag_jm:","category":"flags","emoji_order":"1132"},{"name":"japan","shortname":":flag_jp:","category":"flags","emoji_order":"1133"},{"name":"jersey","shortname":":flag_je:","category":"flags","emoji_order":"1134"},{"name":"jordan","shortname":":flag_jo:","category":"flags","emoji_order":"1135"},{"name":"kazakhstan","shortname":":flag_kz:","category":"flags","emoji_order":"1136"},{"name":"kenya","shortname":":flag_ke:","category":"flags","emoji_order":"1137"},{"name":"kiribati","shortname":":flag_ki:","category":"flags","emoji_order":"1138"},{"name":"kosovo","shortname":":flag_xk:","category":"flags","emoji_order":"1139"},{"name":"kuwait","shortname":":flag_kw:","category":"flags","emoji_order":"1140"},{"name":"kyrgyzstan","shortname":":flag_kg:","category":"flags","emoji_order":"1141"},{"name":"laos","shortname":":flag_la:","category":"flags","emoji_order":"1142"},{"name":"latvia","shortname":":flag_lv:","category":"flags","emoji_order":"1143"},{"name":"lebanon","shortname":":flag_lb:","category":"flags","emoji_order":"1144"},{"name":"lesotho","shortname":":flag_ls:","category":"flags","emoji_order":"1145"},{"name":"liberia","shortname":":flag_lr:","category":"flags","emoji_order":"1146"},{"name":"libya","shortname":":flag_ly:","category":"flags","emoji_order":"1147"},{"name":"liechtenstein","shortname":":flag_li:","category":"flags","emoji_order":"1148"},{"name":"lithuania","shortname":":flag_lt:","category":"flags","emoji_order":"1149"},{"name":"luxembourg","shortname":":flag_lu:","category":"flags","emoji_order":"1150"},{"name":"macau","shortname":":flag_mo:","category":"flags","emoji_order":"1151"},{"name":"macedonia","shortname":":flag_mk:","category":"flags","emoji_order":"1152"},{"name":"madagascar","shortname":":flag_mg:","category":"flags","emoji_order":"1153"},{"name":"malawi","shortname":":flag_mw:","category":"flags","emoji_order":"1154"},{"name":"malaysia","shortname":":flag_my:","category":"flags","emoji_order":"1155"},{"name":"maldives","shortname":":flag_mv:","category":"flags","emoji_order":"1156"},{"name":"mali","shortname":":flag_ml:","category":"flags","emoji_order":"1157"},{"name":"malta","shortname":":flag_mt:","category":"flags","emoji_order":"1158"},{"name":"the marshall islands","shortname":":flag_mh:","category":"flags","emoji_order":"1159"},{"name":"mauritania","shortname":":flag_mr:","category":"flags","emoji_order":"1160"},{"name":"mauritius","shortname":":flag_mu:","category":"flags","emoji_order":"1161"},{"name":"mexico","shortname":":flag_mx:","category":"flags","emoji_order":"1162"},{"name":"micronesia","shortname":":flag_fm:","category":"flags","emoji_order":"1163"},{"name":"moldova","shortname":":flag_md:","category":"flags","emoji_order":"1164"},{"name":"monaco","shortname":":flag_mc:","category":"flags","emoji_order":"1165"},{"name":"mongolia","shortname":":flag_mn:","category":"flags","emoji_order":"1166"},{"name":"montenegro","shortname":":flag_me:","category":"flags","emoji_order":"1167"},{"name":"montserrat","shortname":":flag_ms:","category":"flags","emoji_order":"1168"},{"name":"morocco","shortname":":flag_ma:","category":"flags","emoji_order":"1169"},{"name":"mozambique","shortname":":flag_mz:","category":"flags","emoji_order":"1170"},{"name":"myanmar","shortname":":flag_mm:","category":"flags","emoji_order":"1171"},{"name":"namibia","shortname":":flag_na:","category":"flags","emoji_order":"1172"},{"name":"nauru","shortname":":flag_nr:","category":"flags","emoji_order":"1173"},{"name":"nepal","shortname":":flag_np:","category":"flags","emoji_order":"1174"},{"name":"the netherlands","shortname":":flag_nl:","category":"flags","emoji_order":"1175"},{"name":"new caledonia","shortname":":flag_nc:","category":"flags","emoji_order":"1176"},{"name":"new zealand","shortname":":flag_nz:","category":"flags","emoji_order":"1177"},{"name":"nicaragua","shortname":":flag_ni:","category":"flags","emoji_order":"1178"},{"name":"niger","shortname":":flag_ne:","category":"flags","emoji_order":"1179"},{"name":"nigeria","shortname":":flag_ng:","category":"flags","emoji_order":"1180"},{"name":"niue","shortname":":flag_nu:","category":"flags","emoji_order":"1181"},{"name":"north korea","shortname":":flag_kp:","category":"flags","emoji_order":"1182"},{"name":"norway","shortname":":flag_no:","category":"flags","emoji_order":"1183"},{"name":"oman","shortname":":flag_om:","category":"flags","emoji_order":"1184"},{"name":"pakistan","shortname":":flag_pk:","category":"flags","emoji_order":"1185"},{"name":"palau","shortname":":flag_pw:","category":"flags","emoji_order":"1186"},{"name":"palestinian authority","shortname":":flag_ps:","category":"flags","emoji_order":"1187"},{"name":"panama","shortname":":flag_pa:","category":"flags","emoji_order":"1188"},{"name":"papua new guinea","shortname":":flag_pg:","category":"flags","emoji_order":"1189"},{"name":"paraguay","shortname":":flag_py:","category":"flags","emoji_order":"1190"},{"name":"peru","shortname":":flag_pe:","category":"flags","emoji_order":"1191"},{"name":"the philippines","shortname":":flag_ph:","category":"flags","emoji_order":"1192"},{"name":"poland","shortname":":flag_pl:","category":"flags","emoji_order":"1193"},{"name":"portugal","shortname":":flag_pt:","category":"flags","emoji_order":"1194"},{"name":"puerto rico","shortname":":flag_pr:","category":"flags","emoji_order":"1195"},{"name":"qatar","shortname":":flag_qa:","category":"flags","emoji_order":"1196"},{"name":"romania","shortname":":flag_ro:","category":"flags","emoji_order":"1197"},{"name":"russia","shortname":":flag_ru:","category":"flags","emoji_order":"1198"},{"name":"rwanda","shortname":":flag_rw:","category":"flags","emoji_order":"1199"},{"name":"saint helena","shortname":":flag_sh:","category":"flags","emoji_order":"1200"},{"name":"saint kitts and nevis","shortname":":flag_kn:","category":"flags","emoji_order":"1201"},{"name":"saint lucia","shortname":":flag_lc:","category":"flags","emoji_order":"1202"},{"name":"saint vincent and the grenadines","shortname":":flag_vc:","category":"flags","emoji_order":"1203"},{"name":"samoa","shortname":":flag_ws:","category":"flags","emoji_order":"1204"},{"name":"san marino","shortname":":flag_sm:","category":"flags","emoji_order":"1205"},{"name":"são tomé and príncipe","shortname":":flag_st:","category":"flags","emoji_order":"1206"},{"name":"saudi arabia","shortname":":flag_sa:","category":"flags","emoji_order":"1207"},{"name":"senegal","shortname":":flag_sn:","category":"flags","emoji_order":"1208"},{"name":"serbia","shortname":":flag_rs:","category":"flags","emoji_order":"1209"},{"name":"the seychelles","shortname":":flag_sc:","category":"flags","emoji_order":"1210"},{"name":"sierra leone","shortname":":flag_sl:","category":"flags","emoji_order":"1211"},{"name":"singapore","shortname":":flag_sg:","category":"flags","emoji_order":"1212"},{"name":"slovakia","shortname":":flag_sk:","category":"flags","emoji_order":"1213"},{"name":"slovenia","shortname":":flag_si:","category":"flags","emoji_order":"1214"},{"name":"the solomon islands","shortname":":flag_sb:","category":"flags","emoji_order":"1215"},{"name":"somalia","shortname":":flag_so:","category":"flags","emoji_order":"1216"},{"name":"south africa","shortname":":flag_za:","category":"flags","emoji_order":"1217"},{"name":"korea","shortname":":flag_kr:","category":"flags","emoji_order":"1218"},{"name":"spain","shortname":":flag_es:","category":"flags","emoji_order":"1219"},{"name":"sri lanka","shortname":":flag_lk:","category":"flags","emoji_order":"1220"},{"name":"sudan","shortname":":flag_sd:","category":"flags","emoji_order":"1221"},{"name":"suriname","shortname":":flag_sr:","category":"flags","emoji_order":"1222"},{"name":"swaziland","shortname":":flag_sz:","category":"flags","emoji_order":"1223"},{"name":"sweden","shortname":":flag_se:","category":"flags","emoji_order":"1224"},{"name":"switzerland","shortname":":flag_ch:","category":"flags","emoji_order":"1225"},{"name":"syria","shortname":":flag_sy:","category":"flags","emoji_order":"1226"},{"name":"the republic of china","shortname":":flag_tw:","category":"flags","emoji_order":"1227"},{"name":"tajikistan","shortname":":flag_tj:","category":"flags","emoji_order":"1228"},{"name":"tanzania","shortname":":flag_tz:","category":"flags","emoji_order":"1229"},{"name":"thailand","shortname":":flag_th:","category":"flags","emoji_order":"1230"},{"name":"timor-leste","shortname":":flag_tl:","category":"flags","emoji_order":"1231"},{"name":"togo","shortname":":flag_tg:","category":"flags","emoji_order":"1232"},{"name":"tonga","shortname":":flag_to:","category":"flags","emoji_order":"1233"},{"name":"trinidad and tobago","shortname":":flag_tt:","category":"flags","emoji_order":"1234"},{"name":"tunisia","shortname":":flag_tn:","category":"flags","emoji_order":"1235"},{"name":"turkey","shortname":":flag_tr:","category":"flags","emoji_order":"1236"},{"name":"turkmenistan","shortname":":flag_tm:","category":"flags","emoji_order":"1237"},{"name":"tuvalu","shortname":":flag_tv:","category":"flags","emoji_order":"1238"},{"name":"uganda","shortname":":flag_ug:","category":"flags","emoji_order":"1239"},{"name":"ukraine","shortname":":flag_ua:","category":"flags","emoji_order":"1240"},{"name":"the united arab emirates","shortname":":flag_ae:","category":"flags","emoji_order":"1241"},{"name":"great britain","shortname":":flag_gb:","category":"flags","emoji_order":"1242"},{"name":"united states","shortname":":flag_us:","category":"flags","emoji_order":"1243"},{"name":"u.s. virgin islands","shortname":":flag_vi:","category":"flags","emoji_order":"1244"},{"name":"uruguay","shortname":":flag_uy:","category":"flags","emoji_order":"1245"},{"name":"uzbekistan","shortname":":flag_uz:","category":"flags","emoji_order":"1246"},{"name":"vanuatu","shortname":":flag_vu:","category":"flags","emoji_order":"1247"},{"name":"the vatican city","shortname":":flag_va:","category":"flags","emoji_order":"1248"},{"name":"venezuela","shortname":":flag_ve:","category":"flags","emoji_order":"1249"},{"name":"vietnam","shortname":":flag_vn:","category":"flags","emoji_order":"1250"},{"name":"wallis and futuna","shortname":":flag_wf:","category":"flags","emoji_order":"1251"},{"name":"western sahara","shortname":":flag_eh:","category":"flags","emoji_order":"1252"},{"name":"yemen","shortname":":flag_ye:","category":"flags","emoji_order":"1253"},{"name":"zambia","shortname":":flag_zm:","category":"flags","emoji_order":"1254"},{"name":"zimbabwe","shortname":":flag_zw:","category":"flags","emoji_order":"1255"},{"name":"réunion","shortname":":flag_re:","category":"flags","emoji_order":"1256"},{"name":"åland islands","shortname":":flag_ax:","category":"flags","emoji_order":"1257"},{"name":"tristan da cunha","shortname":":flag_ta:","category":"flags","emoji_order":"1258"},{"name":"british indian ocean territory","shortname":":flag_io:","category":"flags","emoji_order":"1259"},{"name":"caribbean netherlands","shortname":":flag_bq:","category":"flags","emoji_order":"1260"},{"name":"christmas island","shortname":":flag_cx:","category":"flags","emoji_order":"1261"},{"name":"cocos (keeling) islands","shortname":":flag_cc:","category":"flags","emoji_order":"1262"},{"name":"guernsey","shortname":":flag_gg:","category":"flags","emoji_order":"1263"},{"name":"isle of man","shortname":":flag_im:","category":"flags","emoji_order":"1264"},{"name":"mayotte","shortname":":flag_yt:","category":"flags","emoji_order":"1265"},{"name":"norfolk island","shortname":":flag_nf:","category":"flags","emoji_order":"1266"},{"name":"pitcairn","shortname":":flag_pn:","category":"flags","emoji_order":"1267"},{"name":"saint barthélemy","shortname":":flag_bl:","category":"flags","emoji_order":"1268"},{"name":"saint pierre and miquelon","shortname":":flag_pm:","category":"flags","emoji_order":"1269"},{"name":"south georgia","shortname":":flag_gs:","category":"flags","emoji_order":"1270"},{"name":"tokelau","shortname":":flag_tk:","category":"flags","emoji_order":"1271"},{"name":"bouvet island","shortname":":flag_bv:","category":"flags","emoji_order":"1272"},{"name":"heard island and mcdonald islands","shortname":":flag_hm:","category":"flags","emoji_order":"1273"},{"name":"svalbard and jan mayen","shortname":":flag_sj:","category":"flags","emoji_order":"1274"},{"name":"united states minor outlying islands","shortname":":flag_um:","category":"flags","emoji_order":"1275"},{"name":"canary islands","shortname":":flag_ic:","category":"flags","emoji_order":"1276"},{"name":"ceuta, melilla","shortname":":flag_ea:","category":"flags","emoji_order":"1277"},{"name":"clipperton island","shortname":":flag_cp:","category":"flags","emoji_order":"1278"},{"name":"diego garcia","shortname":":flag_dg:","category":"flags","emoji_order":"1279"},{"name":"american samoa","shortname":":flag_as:","category":"flags","emoji_order":"1280"},{"name":"antarctica","shortname":":flag_aq:","category":"flags","emoji_order":"1281"},{"name":"british virgin islands","shortname":":flag_vg:","category":"flags","emoji_order":"1282"},{"name":"cook islands","shortname":":flag_ck:","category":"flags","emoji_order":"1283"},{"name":"curaçao","shortname":":flag_cw:","category":"flags","emoji_order":"1284"},{"name":"european union","shortname":":flag_eu:","category":"flags","emoji_order":"1285"},{"name":"french guiana","shortname":":flag_gf:","category":"flags","emoji_order":"1286"},{"name":"french southern territories","shortname":":flag_tf:","category":"flags","emoji_order":"1287"},{"name":"guadeloupe","shortname":":flag_gp:","category":"flags","emoji_order":"1288"},{"name":"martinique","shortname":":flag_mq:","category":"flags","emoji_order":"1289"},{"name":"northern mariana islands","shortname":":flag_mp:","category":"flags","emoji_order":"1290"},{"name":"sint maarten","shortname":":flag_sx:","category":"flags","emoji_order":"1291"},{"name":"south sudan","shortname":":flag_ss:","category":"flags","emoji_order":"1292"},{"name":"turks and caicos islands","shortname":":flag_tc:","category":"flags","emoji_order":"1293"},{"name":"saint martin","shortname":":flag_mf:","category":"flags","emoji_order":"1294"},{"name":"person raising both hands in celebration tone 1","shortname":":raised_hands_tone1:","category":"people","emoji_order":"1295"},{"name":"person raising both hands in celebration tone 2","shortname":":raised_hands_tone2:","category":"people","emoji_order":"1296"},{"name":"person raising both hands in celebration tone 3","shortname":":raised_hands_tone3:","category":"people","emoji_order":"1297"},{"name":"person raising both hands in celebration tone 4","shortname":":raised_hands_tone4:","category":"people","emoji_order":"1298"},{"name":"person raising both hands in celebration tone 5","shortname":":raised_hands_tone5:","category":"people","emoji_order":"1299"},{"name":"clapping hands sign tone 1","shortname":":clap_tone1:","category":"people","emoji_order":"1300"},{"name":"clapping hands sign tone 2","shortname":":clap_tone2:","category":"people","emoji_order":"1301"},{"name":"clapping hands sign tone 3","shortname":":clap_tone3:","category":"people","emoji_order":"1302"},{"name":"clapping hands sign tone 4","shortname":":clap_tone4:","category":"people","emoji_order":"1303"},{"name":"clapping hands sign tone 5","shortname":":clap_tone5:","category":"people","emoji_order":"1304"},{"name":"waving hand sign tone 1","shortname":":wave_tone1:","category":"people","emoji_order":"1305"},{"name":"waving hand sign tone 2","shortname":":wave_tone2:","category":"people","emoji_order":"1306"},{"name":"waving hand sign tone 3","shortname":":wave_tone3:","category":"people","emoji_order":"1307"},{"name":"waving hand sign tone 4","shortname":":wave_tone4:","category":"people","emoji_order":"1308"},{"name":"waving hand sign tone 5","shortname":":wave_tone5:","category":"people","emoji_order":"1309"},{"name":"thumbs up sign tone 1","shortname":":thumbsup_tone1:","category":"people","emoji_order":"1310"},{"name":"thumbs up sign tone 2","shortname":":thumbsup_tone2:","category":"people","emoji_order":"1311"},{"name":"thumbs up sign tone 3","shortname":":thumbsup_tone3:","category":"people","emoji_order":"1312"},{"name":"thumbs up sign tone 4","shortname":":thumbsup_tone4:","category":"people","emoji_order":"1313"},{"name":"thumbs up sign tone 5","shortname":":thumbsup_tone5:","category":"people","emoji_order":"1314"},{"name":"thumbs down sign tone 1","shortname":":thumbsdown_tone1:","category":"people","emoji_order":"1315"},{"name":"thumbs down sign tone 2","shortname":":thumbsdown_tone2:","category":"people","emoji_order":"1316"},{"name":"thumbs down sign tone 3","shortname":":thumbsdown_tone3:","category":"people","emoji_order":"1317"},{"name":"thumbs down sign tone 4","shortname":":thumbsdown_tone4:","category":"people","emoji_order":"1318"},{"name":"thumbs down sign tone 5","shortname":":thumbsdown_tone5:","category":"people","emoji_order":"1319"},{"name":"fisted hand sign tone 1","shortname":":punch_tone1:","category":"people","emoji_order":"1320"},{"name":"fisted hand sign tone 2","shortname":":punch_tone2:","category":"people","emoji_order":"1321"},{"name":"fisted hand sign tone 3","shortname":":punch_tone3:","category":"people","emoji_order":"1322"},{"name":"fisted hand sign tone 4","shortname":":punch_tone4:","category":"people","emoji_order":"1323"},{"name":"fisted hand sign tone 5","shortname":":punch_tone5:","category":"people","emoji_order":"1324"},{"name":"raised fist tone 1","shortname":":fist_tone1:","category":"people","emoji_order":"1325"},{"name":"raised fist tone 2","shortname":":fist_tone2:","category":"people","emoji_order":"1326"},{"name":"raised fist tone 3","shortname":":fist_tone3:","category":"people","emoji_order":"1327"},{"name":"raised fist tone 4","shortname":":fist_tone4:","category":"people","emoji_order":"1328"},{"name":"raised fist tone 5","shortname":":fist_tone5:","category":"people","emoji_order":"1329"},{"name":"victory hand tone 1","shortname":":v_tone1:","category":"people","emoji_order":"1330"},{"name":"victory hand tone 2","shortname":":v_tone2:","category":"people","emoji_order":"1331"},{"name":"victory hand tone 3","shortname":":v_tone3:","category":"people","emoji_order":"1332"},{"name":"victory hand tone 4","shortname":":v_tone4:","category":"people","emoji_order":"1333"},{"name":"victory hand tone 5","shortname":":v_tone5:","category":"people","emoji_order":"1334"},{"name":"ok hand sign tone 1","shortname":":ok_hand_tone1:","category":"people","emoji_order":"1335"},{"name":"ok hand sign tone 2","shortname":":ok_hand_tone2:","category":"people","emoji_order":"1336"},{"name":"ok hand sign tone 3","shortname":":ok_hand_tone3:","category":"people","emoji_order":"1337"},{"name":"ok hand sign tone 4","shortname":":ok_hand_tone4:","category":"people","emoji_order":"1338"},{"name":"ok hand sign tone 5","shortname":":ok_hand_tone5:","category":"people","emoji_order":"1339"},{"name":"raised hand tone 1","shortname":":raised_hand_tone1:","category":"people","emoji_order":"1340"},{"name":"raised hand tone 2","shortname":":raised_hand_tone2:","category":"people","emoji_order":"1341"},{"name":"raised hand tone 3","shortname":":raised_hand_tone3:","category":"people","emoji_order":"1342"},{"name":"raised hand tone 4","shortname":":raised_hand_tone4:","category":"people","emoji_order":"1343"},{"name":"raised hand tone 5","shortname":":raised_hand_tone5:","category":"people","emoji_order":"1344"},{"name":"open hands sign tone 1","shortname":":open_hands_tone1:","category":"people","emoji_order":"1345"},{"name":"open hands sign tone 2","shortname":":open_hands_tone2:","category":"people","emoji_order":"1346"},{"name":"open hands sign tone 3","shortname":":open_hands_tone3:","category":"people","emoji_order":"1347"},{"name":"open hands sign tone 4","shortname":":open_hands_tone4:","category":"people","emoji_order":"1348"},{"name":"open hands sign tone 5","shortname":":open_hands_tone5:","category":"people","emoji_order":"1349"},{"name":"flexed biceps tone 1","shortname":":muscle_tone1:","category":"people","emoji_order":"1350"},{"name":"flexed biceps tone 2","shortname":":muscle_tone2:","category":"people","emoji_order":"1351"},{"name":"flexed biceps tone 3","shortname":":muscle_tone3:","category":"people","emoji_order":"1352"},{"name":"flexed biceps tone 4","shortname":":muscle_tone4:","category":"people","emoji_order":"1353"},{"name":"flexed biceps tone 5","shortname":":muscle_tone5:","category":"people","emoji_order":"1354"},{"name":"person with folded hands tone 1","shortname":":pray_tone1:","category":"people","emoji_order":"1355"},{"name":"person with folded hands tone 2","shortname":":pray_tone2:","category":"people","emoji_order":"1356"},{"name":"person with folded hands tone 3","shortname":":pray_tone3:","category":"people","emoji_order":"1357"},{"name":"person with folded hands tone 4","shortname":":pray_tone4:","category":"people","emoji_order":"1358"},{"name":"person with folded hands tone 5","shortname":":pray_tone5:","category":"people","emoji_order":"1359"},{"name":"white up pointing index tone 1","shortname":":point_up_tone1:","category":"people","emoji_order":"1360"},{"name":"white up pointing index tone 2","shortname":":point_up_tone2:","category":"people","emoji_order":"1361"},{"name":"white up pointing index tone 3","shortname":":point_up_tone3:","category":"people","emoji_order":"1362"},{"name":"white up pointing index tone 4","shortname":":point_up_tone4:","category":"people","emoji_order":"1363"},{"name":"white up pointing index tone 5","shortname":":point_up_tone5:","category":"people","emoji_order":"1364"},{"name":"white up pointing backhand index tone 1","shortname":":point_up_2_tone1:","category":"people","emoji_order":"1365"},{"name":"white up pointing backhand index tone 2","shortname":":point_up_2_tone2:","category":"people","emoji_order":"1366"},{"name":"white up pointing backhand index tone 3","shortname":":point_up_2_tone3:","category":"people","emoji_order":"1367"},{"name":"white up pointing backhand index tone 4","shortname":":point_up_2_tone4:","category":"people","emoji_order":"1368"},{"name":"white up pointing backhand index tone 5","shortname":":point_up_2_tone5:","category":"people","emoji_order":"1369"},{"name":"white down pointing backhand index tone 1","shortname":":point_down_tone1:","category":"people","emoji_order":"1370"},{"name":"white down pointing backhand index tone 2","shortname":":point_down_tone2:","category":"people","emoji_order":"1371"},{"name":"white down pointing backhand index tone 3","shortname":":point_down_tone3:","category":"people","emoji_order":"1372"},{"name":"white down pointing backhand index tone 4","shortname":":point_down_tone4:","category":"people","emoji_order":"1373"},{"name":"white down pointing backhand index tone 5","shortname":":point_down_tone5:","category":"people","emoji_order":"1374"},{"name":"white left pointing backhand index tone 1","shortname":":point_left_tone1:","category":"people","emoji_order":"1375"},{"name":"white left pointing backhand index tone 2","shortname":":point_left_tone2:","category":"people","emoji_order":"1376"},{"name":"white left pointing backhand index tone 3","shortname":":point_left_tone3:","category":"people","emoji_order":"1377"},{"name":"white left pointing backhand index tone 4","shortname":":point_left_tone4:","category":"people","emoji_order":"1378"},{"name":"white left pointing backhand index tone 5","shortname":":point_left_tone5:","category":"people","emoji_order":"1379"},{"name":"white right pointing backhand index tone 1","shortname":":point_right_tone1:","category":"people","emoji_order":"1380"},{"name":"white right pointing backhand index tone 2","shortname":":point_right_tone2:","category":"people","emoji_order":"1381"},{"name":"white right pointing backhand index tone 3","shortname":":point_right_tone3:","category":"people","emoji_order":"1382"},{"name":"white right pointing backhand index tone 4","shortname":":point_right_tone4:","category":"people","emoji_order":"1383"},{"name":"white right pointing backhand index tone 5","shortname":":point_right_tone5:","category":"people","emoji_order":"1384"},{"name":"reversed hand with middle finger extended tone 1","shortname":":middle_finger_tone1:","category":"people","emoji_order":"1385"},{"name":"reversed hand with middle finger extended tone 2","shortname":":middle_finger_tone2:","category":"people","emoji_order":"1386"},{"name":"reversed hand with middle finger extended tone 3","shortname":":middle_finger_tone3:","category":"people","emoji_order":"1387"},{"name":"reversed hand with middle finger extended tone 4","shortname":":middle_finger_tone4:","category":"people","emoji_order":"1388"},{"name":"reversed hand with middle finger extended tone 5","shortname":":middle_finger_tone5:","category":"people","emoji_order":"1389"},{"name":"raised hand with fingers splayed tone 1","shortname":":hand_splayed_tone1:","category":"people","emoji_order":"1390"},{"name":"raised hand with fingers splayed tone 2","shortname":":hand_splayed_tone2:","category":"people","emoji_order":"1391"},{"name":"raised hand with fingers splayed tone 3","shortname":":hand_splayed_tone3:","category":"people","emoji_order":"1392"},{"name":"raised hand with fingers splayed tone 4","shortname":":hand_splayed_tone4:","category":"people","emoji_order":"1393"},{"name":"raised hand with fingers splayed tone 5","shortname":":hand_splayed_tone5:","category":"people","emoji_order":"1394"},{"name":"sign of the horns tone 1","shortname":":metal_tone1:","category":"people","emoji_order":"1395"},{"name":"sign of the horns tone 2","shortname":":metal_tone2:","category":"people","emoji_order":"1396"},{"name":"sign of the horns tone 3","shortname":":metal_tone3:","category":"people","emoji_order":"1397"},{"name":"sign of the horns tone 4","shortname":":metal_tone4:","category":"people","emoji_order":"1398"},{"name":"sign of the horns tone 5","shortname":":metal_tone5:","category":"people","emoji_order":"1399"},{"name":"raised hand with part between middle and ring fingers tone 1","shortname":":vulcan_tone1:","category":"people","emoji_order":"1400"},{"name":"raised hand with part between middle and ring fingers tone 2","shortname":":vulcan_tone2:","category":"people","emoji_order":"1401"},{"name":"raised hand with part between middle and ring fingers tone 3","shortname":":vulcan_tone3:","category":"people","emoji_order":"1402"},{"name":"raised hand with part between middle and ring fingers tone 4","shortname":":vulcan_tone4:","category":"people","emoji_order":"1403"},{"name":"raised hand with part between middle and ring fingers tone 5","shortname":":vulcan_tone5:","category":"people","emoji_order":"1404"},{"name":"writing hand tone 1","shortname":":writing_hand_tone1:","category":"people","emoji_order":"1405"},{"name":"writing hand tone 2","shortname":":writing_hand_tone2:","category":"people","emoji_order":"1406"},{"name":"writing hand tone 3","shortname":":writing_hand_tone3:","category":"people","emoji_order":"1407"},{"name":"writing hand tone 4","shortname":":writing_hand_tone4:","category":"people","emoji_order":"1408"},{"name":"writing hand tone 5","shortname":":writing_hand_tone5:","category":"people","emoji_order":"1409"},{"name":"nail polish tone 1","shortname":":nail_care_tone1:","category":"people","emoji_order":"1410"},{"name":"nail polish tone 2","shortname":":nail_care_tone2:","category":"people","emoji_order":"1411"},{"name":"nail polish tone 3","shortname":":nail_care_tone3:","category":"people","emoji_order":"1412"},{"name":"nail polish tone 4","shortname":":nail_care_tone4:","category":"people","emoji_order":"1413"},{"name":"nail polish tone 5","shortname":":nail_care_tone5:","category":"people","emoji_order":"1414"},{"name":"ear tone 1","shortname":":ear_tone1:","category":"people","emoji_order":"1415"},{"name":"ear tone 2","shortname":":ear_tone2:","category":"people","emoji_order":"1416"},{"name":"ear tone 3","shortname":":ear_tone3:","category":"people","emoji_order":"1417"},{"name":"ear tone 4","shortname":":ear_tone4:","category":"people","emoji_order":"1418"},{"name":"ear tone 5","shortname":":ear_tone5:","category":"people","emoji_order":"1419"},{"name":"nose tone 1","shortname":":nose_tone1:","category":"people","emoji_order":"1420"},{"name":"nose tone 2","shortname":":nose_tone2:","category":"people","emoji_order":"1421"},{"name":"nose tone 3","shortname":":nose_tone3:","category":"people","emoji_order":"1422"},{"name":"nose tone 4","shortname":":nose_tone4:","category":"people","emoji_order":"1423"},{"name":"nose tone 5","shortname":":nose_tone5:","category":"people","emoji_order":"1424"},{"name":"baby tone 1","shortname":":baby_tone1:","category":"people","emoji_order":"1425"},{"name":"baby tone 2","shortname":":baby_tone2:","category":"people","emoji_order":"1426"},{"name":"baby tone 3","shortname":":baby_tone3:","category":"people","emoji_order":"1427"},{"name":"baby tone 4","shortname":":baby_tone4:","category":"people","emoji_order":"1428"},{"name":"baby tone 5","shortname":":baby_tone5:","category":"people","emoji_order":"1429"},{"name":"boy tone 1","shortname":":boy_tone1:","category":"people","emoji_order":"1430"},{"name":"boy tone 2","shortname":":boy_tone2:","category":"people","emoji_order":"1431"},{"name":"boy tone 3","shortname":":boy_tone3:","category":"people","emoji_order":"1432"},{"name":"boy tone 4","shortname":":boy_tone4:","category":"people","emoji_order":"1433"},{"name":"boy tone 5","shortname":":boy_tone5:","category":"people","emoji_order":"1434"},{"name":"girl tone 1","shortname":":girl_tone1:","category":"people","emoji_order":"1435"},{"name":"girl tone 2","shortname":":girl_tone2:","category":"people","emoji_order":"1436"},{"name":"girl tone 3","shortname":":girl_tone3:","category":"people","emoji_order":"1437"},{"name":"girl tone 4","shortname":":girl_tone4:","category":"people","emoji_order":"1438"},{"name":"girl tone 5","shortname":":girl_tone5:","category":"people","emoji_order":"1439"},{"name":"man tone 1","shortname":":man_tone1:","category":"people","emoji_order":"1440"},{"name":"man tone 2","shortname":":man_tone2:","category":"people","emoji_order":"1441"},{"name":"man tone 3","shortname":":man_tone3:","category":"people","emoji_order":"1442"},{"name":"man tone 4","shortname":":man_tone4:","category":"people","emoji_order":"1443"},{"name":"man tone 5","shortname":":man_tone5:","category":"people","emoji_order":"1444"},{"name":"woman tone 1","shortname":":woman_tone1:","category":"people","emoji_order":"1445"},{"name":"woman tone 2","shortname":":woman_tone2:","category":"people","emoji_order":"1446"},{"name":"woman tone 3","shortname":":woman_tone3:","category":"people","emoji_order":"1447"},{"name":"woman tone 4","shortname":":woman_tone4:","category":"people","emoji_order":"1448"},{"name":"woman tone 5","shortname":":woman_tone5:","category":"people","emoji_order":"1449"},{"name":"person with blond hair tone 1","shortname":":person_with_blond_hair_tone1:","category":"people","emoji_order":"1450"},{"name":"person with blond hair tone 2","shortname":":person_with_blond_hair_tone2:","category":"people","emoji_order":"1451"},{"name":"person with blond hair tone 3","shortname":":person_with_blond_hair_tone3:","category":"people","emoji_order":"1452"},{"name":"person with blond hair tone 4","shortname":":person_with_blond_hair_tone4:","category":"people","emoji_order":"1453"},{"name":"person with blond hair tone 5","shortname":":person_with_blond_hair_tone5:","category":"people","emoji_order":"1454"},{"name":"older man tone 1","shortname":":older_man_tone1:","category":"people","emoji_order":"1455"},{"name":"older man tone 2","shortname":":older_man_tone2:","category":"people","emoji_order":"1456"},{"name":"older man tone 3","shortname":":older_man_tone3:","category":"people","emoji_order":"1457"},{"name":"older man tone 4","shortname":":older_man_tone4:","category":"people","emoji_order":"1458"},{"name":"older man tone 5","shortname":":older_man_tone5:","category":"people","emoji_order":"1459"},{"name":"older woman tone 1","shortname":":older_woman_tone1:","category":"people","emoji_order":"1460"},{"name":"older woman tone 2","shortname":":older_woman_tone2:","category":"people","emoji_order":"1461"},{"name":"older woman tone 3","shortname":":older_woman_tone3:","category":"people","emoji_order":"1462"},{"name":"older woman tone 4","shortname":":older_woman_tone4:","category":"people","emoji_order":"1463"},{"name":"older woman tone 5","shortname":":older_woman_tone5:","category":"people","emoji_order":"1464"},{"name":"man with gua pi mao tone 1","shortname":":man_with_gua_pi_mao_tone1:","category":"people","emoji_order":"1465"},{"name":"man with gua pi mao tone 2","shortname":":man_with_gua_pi_mao_tone2:","category":"people","emoji_order":"1466"},{"name":"man with gua pi mao tone 3","shortname":":man_with_gua_pi_mao_tone3:","category":"people","emoji_order":"1467"},{"name":"man with gua pi mao tone 4","shortname":":man_with_gua_pi_mao_tone4:","category":"people","emoji_order":"1468"},{"name":"man with gua pi mao tone 5","shortname":":man_with_gua_pi_mao_tone5:","category":"people","emoji_order":"1469"},{"name":"man with turban tone 1","shortname":":man_with_turban_tone1:","category":"people","emoji_order":"1470"},{"name":"man with turban tone 2","shortname":":man_with_turban_tone2:","category":"people","emoji_order":"1471"},{"name":"man with turban tone 3","shortname":":man_with_turban_tone3:","category":"people","emoji_order":"1472"},{"name":"man with turban tone 4","shortname":":man_with_turban_tone4:","category":"people","emoji_order":"1473"},{"name":"man with turban tone 5","shortname":":man_with_turban_tone5:","category":"people","emoji_order":"1474"},{"name":"police officer tone 1","shortname":":cop_tone1:","category":"people","emoji_order":"1475"},{"name":"police officer tone 2","shortname":":cop_tone2:","category":"people","emoji_order":"1476"},{"name":"police officer tone 3","shortname":":cop_tone3:","category":"people","emoji_order":"1477"},{"name":"police officer tone 4","shortname":":cop_tone4:","category":"people","emoji_order":"1478"},{"name":"police officer tone 5","shortname":":cop_tone5:","category":"people","emoji_order":"1479"},{"name":"construction worker tone 1","shortname":":construction_worker_tone1:","category":"people","emoji_order":"1480"},{"name":"construction worker tone 2","shortname":":construction_worker_tone2:","category":"people","emoji_order":"1481"},{"name":"construction worker tone 3","shortname":":construction_worker_tone3:","category":"people","emoji_order":"1482"},{"name":"construction worker tone 4","shortname":":construction_worker_tone4:","category":"people","emoji_order":"1483"},{"name":"construction worker tone 5","shortname":":construction_worker_tone5:","category":"people","emoji_order":"1484"},{"name":"guardsman tone 1","shortname":":guardsman_tone1:","category":"people","emoji_order":"1485"},{"name":"guardsman tone 2","shortname":":guardsman_tone2:","category":"people","emoji_order":"1486"},{"name":"guardsman tone 3","shortname":":guardsman_tone3:","category":"people","emoji_order":"1487"},{"name":"guardsman tone 4","shortname":":guardsman_tone4:","category":"people","emoji_order":"1488"},{"name":"guardsman tone 5","shortname":":guardsman_tone5:","category":"people","emoji_order":"1489"},{"name":"father christmas tone 1","shortname":":santa_tone1:","category":"people","emoji_order":"1490"},{"name":"father christmas tone 2","shortname":":santa_tone2:","category":"people","emoji_order":"1491"},{"name":"father christmas tone 3","shortname":":santa_tone3:","category":"people","emoji_order":"1492"},{"name":"father christmas tone 4","shortname":":santa_tone4:","category":"people","emoji_order":"1493"},{"name":"father christmas tone 5","shortname":":santa_tone5:","category":"people","emoji_order":"1494"},{"name":"baby angel tone 1","shortname":":angel_tone1:","category":"people","emoji_order":"1495"},{"name":"baby angel tone 2","shortname":":angel_tone2:","category":"people","emoji_order":"1496"},{"name":"baby angel tone 3","shortname":":angel_tone3:","category":"people","emoji_order":"1497"},{"name":"baby angel tone 4","shortname":":angel_tone4:","category":"people","emoji_order":"1498"},{"name":"baby angel tone 5","shortname":":angel_tone5:","category":"people","emoji_order":"1499"},{"name":"princess tone 1","shortname":":princess_tone1:","category":"people","emoji_order":"1500"},{"name":"princess tone 2","shortname":":princess_tone2:","category":"people","emoji_order":"1501"},{"name":"princess tone 3","shortname":":princess_tone3:","category":"people","emoji_order":"1502"},{"name":"princess tone 4","shortname":":princess_tone4:","category":"people","emoji_order":"1503"},{"name":"princess tone 5","shortname":":princess_tone5:","category":"people","emoji_order":"1504"},{"name":"bride with veil tone 1","shortname":":bride_with_veil_tone1:","category":"people","emoji_order":"1505"},{"name":"bride with veil tone 2","shortname":":bride_with_veil_tone2:","category":"people","emoji_order":"1506"},{"name":"bride with veil tone 3","shortname":":bride_with_veil_tone3:","category":"people","emoji_order":"1507"},{"name":"bride with veil tone 4","shortname":":bride_with_veil_tone4:","category":"people","emoji_order":"1508"},{"name":"bride with veil tone 5","shortname":":bride_with_veil_tone5:","category":"people","emoji_order":"1509"},{"name":"pedestrian tone 1","shortname":":walking_tone1:","category":"people","emoji_order":"1510"},{"name":"pedestrian tone 2","shortname":":walking_tone2:","category":"people","emoji_order":"1511"},{"name":"pedestrian tone 3","shortname":":walking_tone3:","category":"people","emoji_order":"1512"},{"name":"pedestrian tone 4","shortname":":walking_tone4:","category":"people","emoji_order":"1513"},{"name":"pedestrian tone 5","shortname":":walking_tone5:","category":"people","emoji_order":"1514"},{"name":"runner tone 1","shortname":":runner_tone1:","category":"people","emoji_order":"1515"},{"name":"runner tone 2","shortname":":runner_tone2:","category":"people","emoji_order":"1516"},{"name":"runner tone 3","shortname":":runner_tone3:","category":"people","emoji_order":"1517"},{"name":"runner tone 4","shortname":":runner_tone4:","category":"people","emoji_order":"1518"},{"name":"runner tone 5","shortname":":runner_tone5:","category":"people","emoji_order":"1519"},{"name":"dancer tone 1","shortname":":dancer_tone1:","category":"people","emoji_order":"1520"},{"name":"dancer tone 2","shortname":":dancer_tone2:","category":"people","emoji_order":"1521"},{"name":"dancer tone 3","shortname":":dancer_tone3:","category":"people","emoji_order":"1522"},{"name":"dancer tone 4","shortname":":dancer_tone4:","category":"people","emoji_order":"1523"},{"name":"dancer tone 5","shortname":":dancer_tone5:","category":"people","emoji_order":"1524"},{"name":"person bowing deeply tone 1","shortname":":bow_tone1:","category":"people","emoji_order":"1525"},{"name":"person bowing deeply tone 2","shortname":":bow_tone2:","category":"people","emoji_order":"1526"},{"name":"person bowing deeply tone 3","shortname":":bow_tone3:","category":"people","emoji_order":"1527"},{"name":"person bowing deeply tone 4","shortname":":bow_tone4:","category":"people","emoji_order":"1528"},{"name":"person bowing deeply tone 5","shortname":":bow_tone5:","category":"people","emoji_order":"1529"},{"name":"information desk person tone 1","shortname":":information_desk_person_tone1:","category":"people","emoji_order":"1530"},{"name":"information desk person tone 2","shortname":":information_desk_person_tone2:","category":"people","emoji_order":"1531"},{"name":"information desk person tone 3","shortname":":information_desk_person_tone3:","category":"people","emoji_order":"1532"},{"name":"information desk person tone 4","shortname":":information_desk_person_tone4:","category":"people","emoji_order":"1533"},{"name":"information desk person tone 5","shortname":":information_desk_person_tone5:","category":"people","emoji_order":"1534"},{"name":"face with no good gesture tone 1","shortname":":no_good_tone1:","category":"people","emoji_order":"1535"},{"name":"face with no good gesture tone 2","shortname":":no_good_tone2:","category":"people","emoji_order":"1536"},{"name":"face with no good gesture tone 3","shortname":":no_good_tone3:","category":"people","emoji_order":"1537"},{"name":"face with no good gesture tone 4","shortname":":no_good_tone4:","category":"people","emoji_order":"1538"},{"name":"face with no good gesture tone 5","shortname":":no_good_tone5:","category":"people","emoji_order":"1539"},{"name":"face with ok gesture tone1","shortname":":ok_woman_tone1:","category":"people","emoji_order":"1540"},{"name":"face with ok gesture tone2","shortname":":ok_woman_tone2:","category":"people","emoji_order":"1541"},{"name":"face with ok gesture tone3","shortname":":ok_woman_tone3:","category":"people","emoji_order":"1542"},{"name":"face with ok gesture tone4","shortname":":ok_woman_tone4:","category":"people","emoji_order":"1543"},{"name":"face with ok gesture tone5","shortname":":ok_woman_tone5:","category":"people","emoji_order":"1544"},{"name":"happy person raising one hand tone1","shortname":":raising_hand_tone1:","category":"people","emoji_order":"1545"},{"name":"happy person raising one hand tone2","shortname":":raising_hand_tone2:","category":"people","emoji_order":"1546"},{"name":"happy person raising one hand tone3","shortname":":raising_hand_tone3:","category":"people","emoji_order":"1547"},{"name":"happy person raising one hand tone4","shortname":":raising_hand_tone4:","category":"people","emoji_order":"1548"},{"name":"happy person raising one hand tone5","shortname":":raising_hand_tone5:","category":"people","emoji_order":"1549"},{"name":"person with pouting face tone1","shortname":":person_with_pouting_face_tone1:","category":"people","emoji_order":"1550"},{"name":"person with pouting face tone2","shortname":":person_with_pouting_face_tone2:","category":"people","emoji_order":"1551"},{"name":"person with pouting face tone3","shortname":":person_with_pouting_face_tone3:","category":"people","emoji_order":"1552"},{"name":"person with pouting face tone4","shortname":":person_with_pouting_face_tone4:","category":"people","emoji_order":"1553"},{"name":"person with pouting face tone5","shortname":":person_with_pouting_face_tone5:","category":"people","emoji_order":"1554"},{"name":"person frowning tone 1","shortname":":person_frowning_tone1:","category":"people","emoji_order":"1555"},{"name":"person frowning tone 2","shortname":":person_frowning_tone2:","category":"people","emoji_order":"1556"},{"name":"person frowning tone 3","shortname":":person_frowning_tone3:","category":"people","emoji_order":"1557"},{"name":"person frowning tone 4","shortname":":person_frowning_tone4:","category":"people","emoji_order":"1558"},{"name":"person frowning tone 5","shortname":":person_frowning_tone5:","category":"people","emoji_order":"1559"},{"name":"haircut tone 1","shortname":":haircut_tone1:","category":"people","emoji_order":"1560"},{"name":"haircut tone 2","shortname":":haircut_tone2:","category":"people","emoji_order":"1561"},{"name":"haircut tone 3","shortname":":haircut_tone3:","category":"people","emoji_order":"1562"},{"name":"haircut tone 4","shortname":":haircut_tone4:","category":"people","emoji_order":"1563"},{"name":"haircut tone 5","shortname":":haircut_tone5:","category":"people","emoji_order":"1564"},{"name":"face massage tone 1","shortname":":massage_tone1:","category":"people","emoji_order":"1565"},{"name":"face massage tone 2","shortname":":massage_tone2:","category":"people","emoji_order":"1566"},{"name":"face massage tone 3","shortname":":massage_tone3:","category":"people","emoji_order":"1567"},{"name":"face massage tone 4","shortname":":massage_tone4:","category":"people","emoji_order":"1568"},{"name":"face massage tone 5","shortname":":massage_tone5:","category":"people","emoji_order":"1569"},{"name":"rowboat tone 1","shortname":":rowboat_tone1:","category":"activity","emoji_order":"1570"},{"name":"rowboat tone 2","shortname":":rowboat_tone2:","category":"activity","emoji_order":"1571"},{"name":"rowboat tone 3","shortname":":rowboat_tone3:","category":"activity","emoji_order":"1572"},{"name":"rowboat tone 4","shortname":":rowboat_tone4:","category":"activity","emoji_order":"1573"},{"name":"rowboat tone 5","shortname":":rowboat_tone5:","category":"activity","emoji_order":"1574"},{"name":"swimmer tone 1","shortname":":swimmer_tone1:","category":"activity","emoji_order":"1575"},{"name":"swimmer tone 2","shortname":":swimmer_tone2:","category":"activity","emoji_order":"1576"},{"name":"swimmer tone 3","shortname":":swimmer_tone3:","category":"activity","emoji_order":"1577"},{"name":"swimmer tone 4","shortname":":swimmer_tone4:","category":"activity","emoji_order":"1578"},{"name":"swimmer tone 5","shortname":":swimmer_tone5:","category":"activity","emoji_order":"1579"},{"name":"surfer tone 1","shortname":":surfer_tone1:","category":"activity","emoji_order":"1580"},{"name":"surfer tone 2","shortname":":surfer_tone2:","category":"activity","emoji_order":"1581"},{"name":"surfer tone 3","shortname":":surfer_tone3:","category":"activity","emoji_order":"1582"},{"name":"surfer tone 4","shortname":":surfer_tone4:","category":"activity","emoji_order":"1583"},{"name":"surfer tone 5","shortname":":surfer_tone5:","category":"activity","emoji_order":"1584"},{"name":"bath tone 1","shortname":":bath_tone1:","category":"activity","emoji_order":"1585"},{"name":"bath tone 2","shortname":":bath_tone2:","category":"activity","emoji_order":"1586"},{"name":"bath tone 3","shortname":":bath_tone3:","category":"activity","emoji_order":"1587"},{"name":"bath tone 4","shortname":":bath_tone4:","category":"activity","emoji_order":"1588"},{"name":"bath tone 5","shortname":":bath_tone5:","category":"activity","emoji_order":"1589"},{"name":"person with ball tone 1","shortname":":basketball_player_tone1:","category":"activity","emoji_order":"1590"},{"name":"person with ball tone 2","shortname":":basketball_player_tone2:","category":"activity","emoji_order":"1591"},{"name":"person with ball tone 3","shortname":":basketball_player_tone3:","category":"activity","emoji_order":"1592"},{"name":"person with ball tone 4","shortname":":basketball_player_tone4:","category":"activity","emoji_order":"1593"},{"name":"person with ball tone 5","shortname":":basketball_player_tone5:","category":"activity","emoji_order":"1594"},{"name":"weight lifter tone 1","shortname":":lifter_tone1:","category":"activity","emoji_order":"1595"},{"name":"weight lifter tone 2","shortname":":lifter_tone2:","category":"activity","emoji_order":"1596"},{"name":"weight lifter tone 3","shortname":":lifter_tone3:","category":"activity","emoji_order":"1597"},{"name":"weight lifter tone 4","shortname":":lifter_tone4:","category":"activity","emoji_order":"1598"},{"name":"weight lifter tone 5","shortname":":lifter_tone5:","category":"activity","emoji_order":"1599"},{"name":"bicyclist tone 1","shortname":":bicyclist_tone1:","category":"activity","emoji_order":"1600"},{"name":"bicyclist tone 2","shortname":":bicyclist_tone2:","category":"activity","emoji_order":"1601"},{"name":"bicyclist tone 3","shortname":":bicyclist_tone3:","category":"activity","emoji_order":"1602"},{"name":"bicyclist tone 4","shortname":":bicyclist_tone4:","category":"activity","emoji_order":"1603"},{"name":"bicyclist tone 5","shortname":":bicyclist_tone5:","category":"activity","emoji_order":"1604"},{"name":"mountain bicyclist tone 1","shortname":":mountain_bicyclist_tone1:","category":"activity","emoji_order":"1605"},{"name":"mountain bicyclist tone 2","shortname":":mountain_bicyclist_tone2:","category":"activity","emoji_order":"1606"},{"name":"mountain bicyclist tone 3","shortname":":mountain_bicyclist_tone3:","category":"activity","emoji_order":"1607"},{"name":"mountain bicyclist tone 4","shortname":":mountain_bicyclist_tone4:","category":"activity","emoji_order":"1608"},{"name":"mountain bicyclist tone 5","shortname":":mountain_bicyclist_tone5:","category":"activity","emoji_order":"1609"},{"name":"horse racing tone 1","shortname":":horse_racing_tone1:","category":"activity","emoji_order":"1610"},{"name":"horse racing tone 2","shortname":":horse_racing_tone2:","category":"activity","emoji_order":"1611"},{"name":"horse racing tone 3","shortname":":horse_racing_tone3:","category":"activity","emoji_order":"1612"},{"name":"horse racing tone 4","shortname":":horse_racing_tone4:","category":"activity","emoji_order":"1613"},{"name":"horse racing tone 5","shortname":":horse_racing_tone5:","category":"activity","emoji_order":"1614"},{"name":"sleuth or spy tone 1","shortname":":spy_tone1:","category":"people","emoji_order":"1615"},{"name":"sleuth or spy tone 2","shortname":":spy_tone2:","category":"people","emoji_order":"1616"},{"name":"sleuth or spy tone 3","shortname":":spy_tone3:","category":"people","emoji_order":"1617"},{"name":"sleuth or spy tone 4","shortname":":spy_tone4:","category":"people","emoji_order":"1618"},{"name":"sleuth or spy tone 5","shortname":":spy_tone5:","category":"people","emoji_order":"1619"},{"name":"emoji modifier Fitzpatrick type-1-2","shortname":":tone1:","category":"modifier","emoji_order":"1620"},{"name":"emoji modifier Fitzpatrick type-3","shortname":":tone2:","category":"modifier","emoji_order":"1621"},{"name":"emoji modifier Fitzpatrick type-4","shortname":":tone3:","category":"modifier","emoji_order":"1622"},{"name":"emoji modifier Fitzpatrick type-5","shortname":":tone4:","category":"modifier","emoji_order":"1623"},{"name":"emoji modifier Fitzpatrick type-6","shortname":":tone5:","category":"modifier","emoji_order":"1624"},{"name":"face with cowboy hat","shortname":":cowboy:","category":"unicode9","emoji_order":"6"},{"name":"clown face","shortname":":clown:","category":"unicode9","emoji_order":"7"},{"name":"nauseated face","shortname":":nauseated_face:","category":"unicode9","emoji_order":"8"},{"name":"rolling on the floor laughing","shortname":":rofl:","category":"unicode9","emoji_order":"9"},{"name":"drooling face","shortname":":drooling_face:","category":"unicode9","emoji_order":"10"},{"name":"lying face","shortname":":lying_face:","category":"unicode9","emoji_order":"11"},{"name":"sneezing face","shortname":":sneezing_face:","category":"unicode9","emoji_order":"12"},{"name":"prince","shortname":":prince:","category":"unicode9","emoji_order":"13"},{"name":"man in tuxedo","shortname":":man_in_tuxedo:","category":"unicode9","emoji_order":"14"},{"name":"mother christmas","shortname":":mother_christmas:","category":"unicode9","emoji_order":"15"},{"name":"face palm","shortname":":face_palm:","category":"unicode9","emoji_order":"16"},{"name":"shrug","shortname":":shrug:","category":"unicode9","emoji_order":"17"},{"name":"pregnant woman","shortname":":pregnant_woman:","category":"unicode9","emoji_order":"18"},{"name":"selfie","shortname":":selfie:","category":"unicode9","emoji_order":"19"},{"name":"man dancing","shortname":":man_dancing:","category":"unicode9","emoji_order":"20"},{"name":"call me hand","shortname":":call_me:","category":"unicode9","emoji_order":"21"},{"name":"raised back of hand","shortname":":raised_back_of_hand:","category":"unicode9","emoji_order":"22"},{"name":"left-facing fist","shortname":":left_facing_fist:","category":"unicode9","emoji_order":"23"},{"name":"right-facing fist","shortname":":right_facing_fist:","category":"unicode9","emoji_order":"24"},{"name":"handshake","shortname":":handshake:","category":"unicode9","emoji_order":"25"},{"name":"hand with first and index finger crossed","shortname":":fingers_crossed:","category":"unicode9","emoji_order":"26"},{"name":"black heart","shortname":":black_heart:","category":"unicode9","emoji_order":"27"},{"name":"eagle","shortname":":eagle:","category":"unicode9","emoji_order":"28"},{"name":"duck","shortname":":duck:","category":"unicode9","emoji_order":"29"},{"name":"bat","shortname":":bat:","category":"unicode9","emoji_order":"30"},{"name":"shark","shortname":":shark:","category":"unicode9","emoji_order":"31"},{"name":"owl","shortname":":owl:","category":"unicode9","emoji_order":"32"},{"name":"fox face","shortname":":fox:","category":"unicode9","emoji_order":"33"},{"name":"butterfly","shortname":":butterfly:","category":"unicode9","emoji_order":"34"},{"name":"deer","shortname":":deer:","category":"unicode9","emoji_order":"35"},{"name":"gorilla","shortname":":gorilla:","category":"unicode9","emoji_order":"36"},{"name":"lizard","shortname":":lizard:","category":"unicode9","emoji_order":"37"},{"name":"rhinoceros","shortname":":rhino:","category":"unicode9","emoji_order":"38"},{"name":"wilted flower","shortname":":wilted_rose:","category":"unicode9","emoji_order":"39"},{"name":"croissant","shortname":":croissant:","category":"unicode9","emoji_order":"40"},{"name":"avocado","shortname":":avocado:","category":"unicode9","emoji_order":"41"},{"name":"cucumber","shortname":":cucumber:","category":"unicode9","emoji_order":"42"},{"name":"bacon","shortname":":bacon:","category":"unicode9","emoji_order":"43"},{"name":"potato","shortname":":potato:","category":"unicode9","emoji_order":"44"},{"name":"carrot","shortname":":carrot:","category":"unicode9","emoji_order":"45"},{"name":"baguette bread","shortname":":french_bread:","category":"unicode9","emoji_order":"46"},{"name":"green salad","shortname":":salad:","category":"unicode9","emoji_order":"47"},{"name":"shallow pan of food","shortname":":shallow_pan_of_food:","category":"unicode9","emoji_order":"48"},{"name":"stuffed flatbread","shortname":":stuffed_flatbread:","category":"unicode9","emoji_order":"49"},{"name":"clinking glasses","shortname":":champagne_glass:","category":"unicode9","emoji_order":"50"},{"name":"tumbler glass","shortname":":tumbler_glass:","category":"unicode9","emoji_order":"51"},{"name":"spoon","shortname":":spoon:","category":"unicode9","emoji_order":"52"},{"name":"octagonal sign","shortname":":octagonal_sign:","category":"unicode9","emoji_order":"53"},{"name":"shopping trolley","shortname":":shopping_cart:","category":"unicode9","emoji_order":"54"},{"name":"scooter","shortname":":scooter:","category":"unicode9","emoji_order":"55"},{"name":"motor scooter","shortname":":motor_scooter:","category":"unicode9","emoji_order":"56"},{"name":"canoe","shortname":":canoe:","category":"unicode9","emoji_order":"57"},{"name":"person doing cartwheel","shortname":":cartwheel:","category":"unicode9","emoji_order":"58"},{"name":"juggling","shortname":":juggling:","category":"unicode9","emoji_order":"59"},{"name":"wrestlers","shortname":":wrestlers:","category":"unicode9","emoji_order":"60"},{"name":"boxing glove","shortname":":boxing_glove:","category":"unicode9","emoji_order":"61"},{"name":"martial arts uniform","shortname":":martial_arts_uniform:","category":"unicode9","emoji_order":"62"},{"name":"water polo","shortname":":water_polo:","category":"unicode9","emoji_order":"63"},{"name":"handball","shortname":":handball:","category":"unicode9","emoji_order":"64"},{"name":"goal net","shortname":":goal:","category":"unicode9","emoji_order":"65"},{"name":"fencer","shortname":":fencer:","category":"unicode9","emoji_order":"68"},{"name":"first place medal","shortname":":first_place:","category":"unicode9","emoji_order":"69"},{"name":"second place medal","shortname":":second_place:","category":"unicode9","emoji_order":"70"},{"name":"third place medal","shortname":":third_place:","category":"unicode9","emoji_order":"71"},{"name":"drum with drumsticks","shortname":":drum:","category":"unicode9","emoji_order":"72"},{"name":"shrimp","shortname":":shrimp:","category":"unicode9","emoji_order":"73"},{"name":"squid","shortname":":squid:","category":"unicode9","emoji_order":"74"},{"name":"glass of milk","shortname":":milk:","category":"unicode9","emoji_order":"76"},{"name":"peanuts","shortname":":peanuts:","category":"unicode9","emoji_order":"77"},{"name":"kiwifruit","shortname":":kiwi:","category":"unicode9","emoji_order":"78"},{"name":"pancakes","shortname":":pancakes:","category":"unicode9","emoji_order":"79"},{"name":"gay_pride_flag","shortname":":gay_pride_flag:","category":"unicode9","emoji_order":"311"},{"name":"prince tone 1","shortname":":prince_tone1:","category":"unicode9","emoji_order":"10000"},{"name":"prince tone 2","shortname":":prince_tone2:","category":"unicode9","emoji_order":"10001"},{"name":"prince tone 3","shortname":":prince_tone3:","category":"unicode9","emoji_order":"10002"},{"name":"prince tone 4","shortname":":prince_tone4:","category":"unicode9","emoji_order":"10003"},{"name":"prince tone 5","shortname":":prince_tone5:","category":"unicode9","emoji_order":"10004"},{"name":"mother christmas tone 1","shortname":":mrs_clause_tone1:","category":"unicode9","emoji_order":"10005"},{"name":"mother christmas tone 2","shortname":":mrs_clause_tone2:","category":"unicode9","emoji_order":"10006"},{"name":"mother christmas tone 3","shortname":":mrs_clause_tone3:","category":"unicode9","emoji_order":"10007"},{"name":"mother christmas tone 4","shortname":":mrs_clause_tone4:","category":"unicode9","emoji_order":"10008"},{"name":"mother christmas tone 5","shortname":":mrs_clause_tone5:","category":"unicode9","emoji_order":"10009"},{"name":"man in tuxedo tone 1","shortname":":man_in_tuxedo_tone1:","category":"unicode9","emoji_order":"10010"},{"name":"man in tuxedo tone 2","shortname":":man_in_tuxedo_tone2:","category":"unicode9","emoji_order":"10011"},{"name":"man in tuxedo tone 3","shortname":":man_in_tuxedo_tone3:","category":"unicode9","emoji_order":"10012"},{"name":"man in tuxedo tone 4","shortname":":man_in_tuxedo_tone4:","category":"unicode9","emoji_order":"10013"},{"name":"man in tuxedo tone 5","shortname":":man_in_tuxedo_tone5:","category":"unicode9","emoji_order":"10014"},{"name":"shrug tone 1","shortname":":shrug_tone1:","category":"unicode9","emoji_order":"10015"},{"name":"shrug tone 2","shortname":":shrug_tone2:","category":"unicode9","emoji_order":"10016"},{"name":"shrug tone 3","shortname":":shrug_tone3:","category":"unicode9","emoji_order":"10017"},{"name":"shrug tone 4","shortname":":shrug_tone4:","category":"unicode9","emoji_order":"10018"},{"name":"shrug tone 5","shortname":":shrug_tone5:","category":"unicode9","emoji_order":"10019"},{"name":"face palm tone 1","shortname":":face_palm_tone1:","category":"unicode9","emoji_order":"10020"},{"name":"face palm tone 2","shortname":":face_palm_tone2:","category":"unicode9","emoji_order":"10021"},{"name":"face palm tone 3","shortname":":face_palm_tone3:","category":"unicode9","emoji_order":"10022"},{"name":"face palm tone 4","shortname":":face_palm_tone4:","category":"unicode9","emoji_order":"10023"},{"name":"face palm tone 5","shortname":":face_palm_tone5:","category":"unicode9","emoji_order":"10024"},{"name":"pregnant woman tone 1","shortname":":pregnant_woman_tone1:","category":"unicode9","emoji_order":"10025"},{"name":"pregnant woman tone 2","shortname":":pregnant_woman_tone2:","category":"unicode9","emoji_order":"10026"},{"name":"pregnant woman tone 3","shortname":":pregnant_woman_tone3:","category":"unicode9","emoji_order":"10027"},{"name":"pregnant woman tone 4","shortname":":pregnant_woman_tone4:","category":"unicode9","emoji_order":"10028"},{"name":"pregnant woman tone 5","shortname":":pregnant_woman_tone5:","category":"unicode9","emoji_order":"10029"},{"name":"man dancing tone 1","shortname":":man_dancing_tone1:","category":"unicode9","emoji_order":"10030"},{"name":"man dancing tone 2","shortname":":man_dancing_tone2:","category":"unicode9","emoji_order":"10031"},{"name":"man dancing tone 3","shortname":":man_dancing_tone3:","category":"unicode9","emoji_order":"10032"},{"name":"man dancing tone 4","shortname":":man_dancing_tone4:","category":"unicode9","emoji_order":"10033"},{"name":"man dancing tone 5","shortname":":man_dancing_tone5:","category":"unicode9","emoji_order":"10034"},{"name":"selfie tone 1","shortname":":selfie_tone1:","category":"unicode9","emoji_order":"10035"},{"name":"selfie tone 2","shortname":":selfie_tone2:","category":"unicode9","emoji_order":"10036"},{"name":"selfie tone 3","shortname":":selfie_tone3:","category":"unicode9","emoji_order":"10037"},{"name":"selfie tone 4","shortname":":selfie_tone4:","category":"unicode9","emoji_order":"10038"},{"name":"selfie tone 5","shortname":":selfie_tone5:","category":"unicode9","emoji_order":"10039"},{"name":"hand with index and middle fingers crossed tone 1","shortname":":fingers_crossed_tone1:","category":"unicode9","emoji_order":"10040"},{"name":"hand with index and middle fingers crossed tone 2","shortname":":fingers_crossed_tone2:","category":"unicode9","emoji_order":"10041"},{"name":"hand with index and middle fingers crossed tone 3","shortname":":fingers_crossed_tone3:","category":"unicode9","emoji_order":"10042"},{"name":"hand with index and middle fingers crossed tone 4","shortname":":fingers_crossed_tone4:","category":"unicode9","emoji_order":"10043"},{"name":"hand with index and middle fingers crossed tone 5","shortname":":fingers_crossed_tone5:","category":"unicode9","emoji_order":"10044"},{"name":"call me hand tone 1","shortname":":call_me_tone1:","category":"unicode9","emoji_order":"10045"},{"name":"call me hand tone 2","shortname":":call_me_tone2:","category":"unicode9","emoji_order":"10046"},{"name":"call me hand tone 3","shortname":":call_me_tone3:","category":"unicode9","emoji_order":"10047"},{"name":"call me hand tone 4","shortname":":call_me_tone4:","category":"unicode9","emoji_order":"10048"},{"name":"call me hand tone 5","shortname":":call_me_tone5:","category":"unicode9","emoji_order":"10049"},{"name":"left facing fist tone 1","shortname":":left_facing_fist_tone1:","category":"unicode9","emoji_order":"10050"},{"name":"left facing fist tone 2","shortname":":left_facing_fist_tone2:","category":"unicode9","emoji_order":"10051"},{"name":"left facing fist tone 3","shortname":":left_facing_fist_tone3:","category":"unicode9","emoji_order":"10052"},{"name":"left facing fist tone 4","shortname":":left_facing_fist_tone4:","category":"unicode9","emoji_order":"10053"},{"name":"left facing fist tone 5","shortname":":left_facing_fist_tone5:","category":"unicode9","emoji_order":"10054"},{"name":"right facing fist tone 1","shortname":":right_facing_fist_tone1:","category":"unicode9","emoji_order":"10055"},{"name":"right facing fist tone 2","shortname":":right_facing_fist_tone2:","category":"unicode9","emoji_order":"10056"},{"name":"right facing fist tone 3","shortname":":right_facing_fist_tone3:","category":"unicode9","emoji_order":"10057"},{"name":"right facing fist tone 4","shortname":":right_facing_fist_tone4:","category":"unicode9","emoji_order":"10058"},{"name":"right facing fist tone 5","shortname":":right_facing_fist_tone5:","category":"unicode9","emoji_order":"10059"},{"name":"raised back of hand tone 1","shortname":":raised_back_of_hand_tone1:","category":"unicode9","emoji_order":"10060"},{"name":"raised back of hand tone 2","shortname":":raised_back_of_hand_tone2:","category":"unicode9","emoji_order":"10061"},{"name":"raised back of hand tone 3","shortname":":raised_back_of_hand_tone3:","category":"unicode9","emoji_order":"10062"},{"name":"raised back of hand tone 4","shortname":":raised_back_of_hand_tone4:","category":"unicode9","emoji_order":"10063"},{"name":"raised back of hand tone 5","shortname":":raised_back_of_hand_tone5:","category":"unicode9","emoji_order":"10064"},{"name":"handshake tone 1","shortname":":handshake_tone1:","category":"unicode9","emoji_order":"10065"},{"name":"handshake tone 2","shortname":":handshake_tone2:","category":"unicode9","emoji_order":"10066"},{"name":"handshake tone 3","shortname":":handshake_tone3:","category":"unicode9","emoji_order":"10067"},{"name":"handshake tone 4","shortname":":handshake_tone4:","category":"unicode9","emoji_order":"10068"},{"name":"handshake tone 5","shortname":":handshake_tone5:","category":"unicode9","emoji_order":"10069"},{"name":"person doing cartwheel tone 1","shortname":":cartwheel_tone1:","category":"unicode9","emoji_order":"10070"},{"name":"person doing cartwheel tone 2","shortname":":cartwheel_tone2:","category":"unicode9","emoji_order":"10071"},{"name":"person doing cartwheel tone 3","shortname":":cartwheel_tone3:","category":"unicode9","emoji_order":"10072"},{"name":"person doing cartwheel tone 4","shortname":":cartwheel_tone4:","category":"unicode9","emoji_order":"10073"},{"name":"person doing cartwheel tone 5","shortname":":cartwheel_tone5:","category":"unicode9","emoji_order":"10074"},{"name":"wrestlers tone 1","shortname":":wrestlers_tone1:","category":"unicode9","emoji_order":"10080"},{"name":"wrestlers tone 2","shortname":":wrestlers_tone2:","category":"unicode9","emoji_order":"10081"},{"name":"wrestlers tone 3","shortname":":wrestlers_tone3:","category":"unicode9","emoji_order":"10082"},{"name":"wrestlers tone 4","shortname":":wrestlers_tone4:","category":"unicode9","emoji_order":"10083"},{"name":"wrestlers tone 5","shortname":":wrestlers_tone5:","category":"unicode9","emoji_order":"10084"},{"name":"water polo tone 1","shortname":":water_polo_tone1:","category":"unicode9","emoji_order":"10085"},{"name":"water polo tone 2","shortname":":water_polo_tone2:","category":"unicode9","emoji_order":"10086"},{"name":"water polo tone 3","shortname":":water_polo_tone3:","category":"unicode9","emoji_order":"10087"},{"name":"water polo tone 4","shortname":":water_polo_tone4:","category":"unicode9","emoji_order":"10088"},{"name":"water polo tone 5","shortname":":water_polo_tone5:","category":"unicode9","emoji_order":"10089"},{"name":"handball tone 1","shortname":":handball_tone1:","category":"unicode9","emoji_order":"10090"},{"name":"handball tone 2","shortname":":handball_tone2:","category":"unicode9","emoji_order":"10091"},{"name":"handball tone 3","shortname":":handball_tone3:","category":"unicode9","emoji_order":"10092"},{"name":"handball tone 4","shortname":":handball_tone4:","category":"unicode9","emoji_order":"10093"},{"name":"handball tone 5","shortname":":handball_tone5:","category":"unicode9","emoji_order":"10094"},{"name":"juggling tone 1","shortname":":juggling_tone1:","category":"unicode9","emoji_order":"10095"},{"name":"juggling tone 2","shortname":":juggling_tone2:","category":"unicode9","emoji_order":"10096"},{"name":"juggling tone 3","shortname":":juggling_tone3:","category":"unicode9","emoji_order":"10097"},{"name":"juggling tone 4","shortname":":juggling_tone4:","category":"unicode9","emoji_order":"10098"},{"name":"juggling tone 5","shortname":":juggling_tone5:","category":"unicode9","emoji_order":"10099"}] \ No newline at end of file +[{"name":"hundred points symbol","shortname":":100:","category":"symbols","emoji_order":"856"},{"name":"input symbol for numbers","shortname":":1234:","category":"symbols","emoji_order":"913"},{"name":"grinning face","shortname":":grinning:","category":"people","emoji_order":"1"},{"name":"grimacing face","shortname":":grimacing:","category":"people","emoji_order":"2"},{"name":"grinning face with smiling eyes","shortname":":grin:","category":"people","emoji_order":"3"},{"name":"face with tears of joy","shortname":":joy:","category":"people","emoji_order":"4","aliases_ascii":[":')",":'-)"]},{"name":"smiling face with open mouth","shortname":":smiley:","category":"people","emoji_order":"5","aliases_ascii":[":D",":-D","=D"]},{"name":"smiling face with open mouth and smiling eyes","shortname":":smile:","category":"people","emoji_order":"6"},{"name":"smiling face with open mouth and cold sweat","shortname":":sweat_smile:","category":"people","emoji_order":"7","aliases_ascii":["':)","':-)","'=)","':D","':-D","'=D"]},{"name":"smiling face with open mouth and tightly-closed eyes","shortname":":laughing:","category":"people","emoji_order":"8","aliases_ascii":[">:)",">;)",">:-)",">=)"]},{"name":"smiling face with halo","shortname":":innocent:","category":"people","emoji_order":"9","aliases_ascii":["O:-)","0:-3","0:3","0:-)","0:)","0;^)","O:)","O;-)","O=)","0;-)","O:-3","O:3"]},{"name":"winking face","shortname":":wink:","category":"people","emoji_order":"10","aliases_ascii":[";)",";-)","*-)","*)",";-]",";]",";D",";^)"]},{"name":"smiling face with smiling eyes","shortname":":blush:","category":"people","emoji_order":"11"},{"name":"slightly smiling face","shortname":":slight_smile:","category":"people","emoji_order":"12","aliases_ascii":[":)",":-)","=]","=)",":]"]},{"name":"upside-down face","shortname":":upside_down:","category":"people","emoji_order":"13"},{"name":"white smiling face","shortname":":relaxed:","category":"people","emoji_order":"14"},{"name":"face savouring delicious food","shortname":":yum:","category":"people","emoji_order":"15"},{"name":"relieved face","shortname":":relieved:","category":"people","emoji_order":"16"},{"name":"smiling face with heart-shaped eyes","shortname":":heart_eyes:","category":"people","emoji_order":"17"},{"name":"face throwing a kiss","shortname":":kissing_heart:","category":"people","emoji_order":"18","aliases_ascii":[":*",":-*","=*",":^*"]},{"name":"kissing face","shortname":":kissing:","category":"people","emoji_order":"19"},{"name":"kissing face with smiling eyes","shortname":":kissing_smiling_eyes:","category":"people","emoji_order":"20"},{"name":"kissing face with closed eyes","shortname":":kissing_closed_eyes:","category":"people","emoji_order":"21"},{"name":"face with stuck-out tongue and winking eye","shortname":":stuck_out_tongue_winking_eye:","category":"people","emoji_order":"22","aliases_ascii":[">:P","X-P","x-p"]},{"name":"face with stuck-out tongue and tightly-closed eyes","shortname":":stuck_out_tongue_closed_eyes:","category":"people","emoji_order":"23"},{"name":"face with stuck-out tongue","shortname":":stuck_out_tongue:","category":"people","emoji_order":"24","aliases_ascii":[":P",":-P","=P",":-p",":p","=p",":-Þ",":Þ",":þ",":-þ",":-b",":b","d:"]},{"name":"money-mouth face","shortname":":money_mouth:","category":"people","emoji_order":"25"},{"name":"nerd face","shortname":":nerd:","category":"people","emoji_order":"26"},{"name":"smiling face with sunglasses","shortname":":sunglasses:","category":"people","emoji_order":"27","aliases_ascii":["B-)","B)","8)","8-)","B-D","8-D"]},{"name":"hugging face","shortname":":hugging:","category":"people","emoji_order":"28"},{"name":"smirking face","shortname":":smirk:","category":"people","emoji_order":"29"},{"name":"face without mouth","shortname":":no_mouth:","category":"people","emoji_order":"30","aliases_ascii":[":-X",":X",":-#",":#","=X","=x",":x",":-x","=#"]},{"name":"neutral face","shortname":":neutral_face:","category":"people","emoji_order":"31"},{"name":"expressionless face","shortname":":expressionless:","category":"people","emoji_order":"32","aliases_ascii":["-_-","-__-","-___-"]},{"name":"unamused face","shortname":":unamused:","category":"people","emoji_order":"33"},{"name":"face with rolling eyes","shortname":":rolling_eyes:","category":"people","emoji_order":"34"},{"name":"thinking face","shortname":":thinking:","category":"people","emoji_order":"35"},{"name":"flushed face","shortname":":flushed:","category":"people","emoji_order":"36","aliases_ascii":[":$","=$"]},{"name":"disappointed face","shortname":":disappointed:","category":"people","emoji_order":"37","aliases_ascii":[">:[",":-(",":(",":-[",":[","=("]},{"name":"worried face","shortname":":worried:","category":"people","emoji_order":"38"},{"name":"angry face","shortname":":angry:","category":"people","emoji_order":"39","aliases_ascii":[">:(",">:-(",":@"]},{"name":"pouting face","shortname":":rage:","category":"people","emoji_order":"40"},{"name":"pensive face","shortname":":pensive:","category":"people","emoji_order":"41"},{"name":"confused face","shortname":":confused:","category":"people","emoji_order":"42","aliases_ascii":[">:\\",">:/",":-/",":-.",":/",":\\","=/","=\\",":L","=L"]},{"name":"slightly frowning face","shortname":":slight_frown:","category":"people","emoji_order":"43"},{"name":"white frowning face","shortname":":frowning2:","category":"people","emoji_order":"44"},{"name":"persevering face","shortname":":persevere:","category":"people","emoji_order":"45","aliases_ascii":[">.<"]},{"name":"confounded face","shortname":":confounded:","category":"people","emoji_order":"46"},{"name":"tired face","shortname":":tired_face:","category":"people","emoji_order":"47"},{"name":"weary face","shortname":":weary:","category":"people","emoji_order":"48"},{"name":"face with look of triumph","shortname":":triumph:","category":"people","emoji_order":"49"},{"name":"face with open mouth","shortname":":open_mouth:","category":"people","emoji_order":"50","aliases_ascii":[":-O",":O",":-o",":o","O_O",">:O"]},{"name":"face screaming in fear","shortname":":scream:","category":"people","emoji_order":"51"},{"name":"fearful face","shortname":":fearful:","category":"people","emoji_order":"52","aliases_ascii":["D:"]},{"name":"face with open mouth and cold sweat","shortname":":cold_sweat:","category":"people","emoji_order":"53"},{"name":"hushed face","shortname":":hushed:","category":"people","emoji_order":"54"},{"name":"frowning face with open mouth","shortname":":frowning:","category":"people","emoji_order":"55"},{"name":"anguished face","shortname":":anguished:","category":"people","emoji_order":"56"},{"name":"crying face","shortname":":cry:","category":"people","emoji_order":"57","aliases_ascii":[":'(",":'-(",";(",";-("]},{"name":"disappointed but relieved face","shortname":":disappointed_relieved:","category":"people","emoji_order":"58"},{"name":"sleepy face","shortname":":sleepy:","category":"people","emoji_order":"59"},{"name":"face with cold sweat","shortname":":sweat:","category":"people","emoji_order":"60","aliases_ascii":["':(","':-(","'=("]},{"name":"loudly crying face","shortname":":sob:","category":"people","emoji_order":"61"},{"name":"dizzy face","shortname":":dizzy_face:","category":"people","emoji_order":"62","aliases_ascii":["#-)","#)","%-)","%)","X)","X-)"]},{"name":"astonished face","shortname":":astonished:","category":"people","emoji_order":"63"},{"name":"zipper-mouth face","shortname":":zipper_mouth:","category":"people","emoji_order":"64"},{"name":"face with medical mask","shortname":":mask:","category":"people","emoji_order":"65"},{"name":"face with thermometer","shortname":":thermometer_face:","category":"people","emoji_order":"66"},{"name":"face with head-bandage","shortname":":head_bandage:","category":"people","emoji_order":"67"},{"name":"sleeping face","shortname":":sleeping:","category":"people","emoji_order":"68"},{"name":"sleeping symbol","shortname":":zzz:","category":"people","emoji_order":"69"},{"name":"pile of poo","shortname":":poop:","category":"people","emoji_order":"70"},{"name":"smiling face with horns","shortname":":smiling_imp:","category":"people","emoji_order":"71"},{"name":"imp","shortname":":imp:","category":"people","emoji_order":"72"},{"name":"japanese ogre","shortname":":japanese_ogre:","category":"people","emoji_order":"73"},{"name":"japanese goblin","shortname":":japanese_goblin:","category":"people","emoji_order":"74"},{"name":"skull","shortname":":skull:","category":"people","emoji_order":"75"},{"name":"ghost","shortname":":ghost:","category":"people","emoji_order":"76"},{"name":"extraterrestrial alien","shortname":":alien:","category":"people","emoji_order":"77"},{"name":"robot face","shortname":":robot:","category":"people","emoji_order":"78"},{"name":"smiling cat face with open mouth","shortname":":smiley_cat:","category":"people","emoji_order":"79"},{"name":"grinning cat face with smiling eyes","shortname":":smile_cat:","category":"people","emoji_order":"80"},{"name":"cat face with tears of joy","shortname":":joy_cat:","category":"people","emoji_order":"81"},{"name":"smiling cat face with heart-shaped eyes","shortname":":heart_eyes_cat:","category":"people","emoji_order":"82"},{"name":"cat face with wry smile","shortname":":smirk_cat:","category":"people","emoji_order":"83"},{"name":"kissing cat face with closed eyes","shortname":":kissing_cat:","category":"people","emoji_order":"84"},{"name":"weary cat face","shortname":":scream_cat:","category":"people","emoji_order":"85"},{"name":"crying cat face","shortname":":crying_cat_face:","category":"people","emoji_order":"86"},{"name":"pouting cat face","shortname":":pouting_cat:","category":"people","emoji_order":"87"},{"name":"person raising both hands in celebration","shortname":":raised_hands:","category":"people","emoji_order":"88"},{"name":"clapping hands sign","shortname":":clap:","category":"people","emoji_order":"89"},{"name":"waving hand sign","shortname":":wave:","category":"people","emoji_order":"90"},{"name":"thumbs up sign","shortname":":thumbsup:","category":"people","emoji_order":"91"},{"name":"thumbs down sign","shortname":":thumbsdown:","category":"people","emoji_order":"92"},{"name":"fisted hand sign","shortname":":punch:","category":"people","emoji_order":"93"},{"name":"raised fist","shortname":":fist:","category":"people","emoji_order":"94"},{"name":"victory hand","shortname":":v:","category":"people","emoji_order":"95"},{"name":"ok hand sign","shortname":":ok_hand:","category":"people","emoji_order":"96"},{"name":"raised hand","shortname":":raised_hand:","category":"people","emoji_order":"97"},{"name":"open hands sign","shortname":":open_hands:","category":"people","emoji_order":"98"},{"name":"flexed biceps","shortname":":muscle:","category":"people","emoji_order":"99"},{"name":"person with folded hands","shortname":":pray:","category":"people","emoji_order":"100"},{"name":"white up pointing index","shortname":":point_up:","category":"people","emoji_order":"101"},{"name":"white up pointing backhand index","shortname":":point_up_2:","category":"people","emoji_order":"102"},{"name":"white down pointing backhand index","shortname":":point_down:","category":"people","emoji_order":"103"},{"name":"white left pointing backhand index","shortname":":point_left:","category":"people","emoji_order":"104"},{"name":"white right pointing backhand index","shortname":":point_right:","category":"people","emoji_order":"105"},{"name":"reversed hand with middle finger extended","shortname":":middle_finger:","category":"people","emoji_order":"106"},{"name":"raised hand with fingers splayed","shortname":":hand_splayed:","category":"people","emoji_order":"107"},{"name":"sign of the horns","shortname":":metal:","category":"people","emoji_order":"108"},{"name":"raised hand with part between middle and ring fingers","shortname":":vulcan:","category":"people","emoji_order":"109"},{"name":"writing hand","shortname":":writing_hand:","category":"people","emoji_order":"110"},{"name":"nail polish","shortname":":nail_care:","category":"people","emoji_order":"111"},{"name":"mouth","shortname":":lips:","category":"people","emoji_order":"112"},{"name":"tongue","shortname":":tongue:","category":"people","emoji_order":"113"},{"name":"ear","shortname":":ear:","category":"people","emoji_order":"114"},{"name":"nose","shortname":":nose:","category":"people","emoji_order":"115"},{"name":"eye","shortname":":eye:","category":"people","emoji_order":"116"},{"name":"eyes","shortname":":eyes:","category":"people","emoji_order":"117"},{"name":"bust in silhouette","shortname":":bust_in_silhouette:","category":"people","emoji_order":"118"},{"name":"busts in silhouette","shortname":":busts_in_silhouette:","category":"people","emoji_order":"119"},{"name":"speaking head in silhouette","shortname":":speaking_head:","category":"people","emoji_order":"120"},{"name":"baby","shortname":":baby:","category":"people","emoji_order":"121"},{"name":"boy","shortname":":boy:","category":"people","emoji_order":"122"},{"name":"girl","shortname":":girl:","category":"people","emoji_order":"123"},{"name":"man","shortname":":man:","category":"people","emoji_order":"124"},{"name":"woman","shortname":":woman:","category":"people","emoji_order":"125"},{"name":"person with blond hair","shortname":":person_with_blond_hair:","category":"people","emoji_order":"126"},{"name":"older man","shortname":":older_man:","category":"people","emoji_order":"127"},{"name":"older woman","shortname":":older_woman:","category":"people","emoji_order":"128"},{"name":"man with gua pi mao","shortname":":man_with_gua_pi_mao:","category":"people","emoji_order":"129"},{"name":"man with turban","shortname":":man_with_turban:","category":"people","emoji_order":"130"},{"name":"police officer","shortname":":cop:","category":"people","emoji_order":"131"},{"name":"construction worker","shortname":":construction_worker:","category":"people","emoji_order":"132"},{"name":"guardsman","shortname":":guardsman:","category":"people","emoji_order":"133"},{"name":"sleuth or spy","shortname":":spy:","category":"people","emoji_order":"134"},{"name":"father christmas","shortname":":santa:","category":"people","emoji_order":"135"},{"name":"baby angel","shortname":":angel:","category":"people","emoji_order":"136"},{"name":"princess","shortname":":princess:","category":"people","emoji_order":"137"},{"name":"bride with veil","shortname":":bride_with_veil:","category":"people","emoji_order":"138"},{"name":"pedestrian","shortname":":walking:","category":"people","emoji_order":"139"},{"name":"runner","shortname":":runner:","category":"people","emoji_order":"140"},{"name":"dancer","shortname":":dancer:","category":"people","emoji_order":"141"},{"name":"woman with bunny ears","shortname":":dancers:","category":"people","emoji_order":"142"},{"name":"man and woman holding hands","shortname":":couple:","category":"people","emoji_order":"143"},{"name":"two men holding hands","shortname":":two_men_holding_hands:","category":"people","emoji_order":"144"},{"name":"two women holding hands","shortname":":two_women_holding_hands:","category":"people","emoji_order":"145"},{"name":"person bowing deeply","shortname":":bow:","category":"people","emoji_order":"146"},{"name":"information desk person","shortname":":information_desk_person:","category":"people","emoji_order":"147"},{"name":"face with no good gesture","shortname":":no_good:","category":"people","emoji_order":"148"},{"name":"face with ok gesture","shortname":":ok_woman:","category":"people","emoji_order":"149","aliases_ascii":["*\\0/*","\\0/","*\\O/*","\\O/"]},{"name":"happy person raising one hand","shortname":":raising_hand:","category":"people","emoji_order":"150"},{"name":"person with pouting face","shortname":":person_with_pouting_face:","category":"people","emoji_order":"151"},{"name":"person frowning","shortname":":person_frowning:","category":"people","emoji_order":"152"},{"name":"haircut","shortname":":haircut:","category":"people","emoji_order":"153"},{"name":"face massage","shortname":":massage:","category":"people","emoji_order":"154"},{"name":"couple with heart","shortname":":couple_with_heart:","category":"people","emoji_order":"155"},{"name":"couple (woman,woman)","shortname":":couple_ww:","category":"people","emoji_order":"156"},{"name":"couple (man,man)","shortname":":couple_mm:","category":"people","emoji_order":"157"},{"name":"kiss","shortname":":couplekiss:","category":"people","emoji_order":"158"},{"name":"kiss (woman,woman)","shortname":":kiss_ww:","category":"people","emoji_order":"159"},{"name":"kiss (man,man)","shortname":":kiss_mm:","category":"people","emoji_order":"160"},{"name":"family","shortname":":family:","category":"people","emoji_order":"161"},{"name":"family (man,woman,girl)","shortname":":family_mwg:","category":"people","emoji_order":"162"},{"name":"family (man,woman,girl,boy)","shortname":":family_mwgb:","category":"people","emoji_order":"163"},{"name":"family (man,woman,boy,boy)","shortname":":family_mwbb:","category":"people","emoji_order":"164"},{"name":"family (man,woman,girl,girl)","shortname":":family_mwgg:","category":"people","emoji_order":"165"},{"name":"family (woman,woman,boy)","shortname":":family_wwb:","category":"people","emoji_order":"166"},{"name":"family (woman,woman,girl)","shortname":":family_wwg:","category":"people","emoji_order":"167"},{"name":"family (woman,woman,girl,boy)","shortname":":family_wwgb:","category":"people","emoji_order":"168"},{"name":"family (woman,woman,boy,boy)","shortname":":family_wwbb:","category":"people","emoji_order":"169"},{"name":"family (woman,woman,girl,girl)","shortname":":family_wwgg:","category":"people","emoji_order":"170"},{"name":"family (man,man,boy)","shortname":":family_mmb:","category":"people","emoji_order":"171"},{"name":"family (man,man,girl)","shortname":":family_mmg:","category":"people","emoji_order":"172"},{"name":"family (man,man,girl,boy)","shortname":":family_mmgb:","category":"people","emoji_order":"173"},{"name":"family (man,man,boy,boy)","shortname":":family_mmbb:","category":"people","emoji_order":"174"},{"name":"family (man,man,girl,girl)","shortname":":family_mmgg:","category":"people","emoji_order":"175"},{"name":"womans clothes","shortname":":womans_clothes:","category":"people","emoji_order":"176"},{"name":"t-shirt","shortname":":shirt:","category":"people","emoji_order":"177"},{"name":"jeans","shortname":":jeans:","category":"people","emoji_order":"178"},{"name":"necktie","shortname":":necktie:","category":"people","emoji_order":"179"},{"name":"dress","shortname":":dress:","category":"people","emoji_order":"180"},{"name":"bikini","shortname":":bikini:","category":"people","emoji_order":"181"},{"name":"kimono","shortname":":kimono:","category":"people","emoji_order":"182"},{"name":"lipstick","shortname":":lipstick:","category":"people","emoji_order":"183"},{"name":"kiss mark","shortname":":kiss:","category":"people","emoji_order":"184"},{"name":"footprints","shortname":":footprints:","category":"people","emoji_order":"185"},{"name":"high-heeled shoe","shortname":":high_heel:","category":"people","emoji_order":"186"},{"name":"womans sandal","shortname":":sandal:","category":"people","emoji_order":"187"},{"name":"womans boots","shortname":":boot:","category":"people","emoji_order":"188"},{"name":"mans shoe","shortname":":mans_shoe:","category":"people","emoji_order":"189"},{"name":"athletic shoe","shortname":":athletic_shoe:","category":"people","emoji_order":"190"},{"name":"womans hat","shortname":":womans_hat:","category":"people","emoji_order":"191"},{"name":"top hat","shortname":":tophat:","category":"people","emoji_order":"192"},{"name":"helmet with white cross","shortname":":helmet_with_cross:","category":"people","emoji_order":"193"},{"name":"graduation cap","shortname":":mortar_board:","category":"people","emoji_order":"194"},{"name":"crown","shortname":":crown:","category":"people","emoji_order":"195"},{"name":"school satchel","shortname":":school_satchel:","category":"people","emoji_order":"196"},{"name":"pouch","shortname":":pouch:","category":"people","emoji_order":"197"},{"name":"purse","shortname":":purse:","category":"people","emoji_order":"198"},{"name":"handbag","shortname":":handbag:","category":"people","emoji_order":"199"},{"name":"briefcase","shortname":":briefcase:","category":"people","emoji_order":"200"},{"name":"eyeglasses","shortname":":eyeglasses:","category":"people","emoji_order":"201"},{"name":"dark sunglasses","shortname":":dark_sunglasses:","category":"people","emoji_order":"202"},{"name":"ring","shortname":":ring:","category":"people","emoji_order":"203"},{"name":"closed umbrella","shortname":":closed_umbrella:","category":"people","emoji_order":"204"},{"name":"dog face","shortname":":dog:","category":"nature","emoji_order":"205"},{"name":"cat face","shortname":":cat:","category":"nature","emoji_order":"206"},{"name":"mouse face","shortname":":mouse:","category":"nature","emoji_order":"207"},{"name":"hamster face","shortname":":hamster:","category":"nature","emoji_order":"208"},{"name":"rabbit face","shortname":":rabbit:","category":"nature","emoji_order":"209"},{"name":"bear face","shortname":":bear:","category":"nature","emoji_order":"210"},{"name":"panda face","shortname":":panda_face:","category":"nature","emoji_order":"211"},{"name":"koala","shortname":":koala:","category":"nature","emoji_order":"212"},{"name":"tiger face","shortname":":tiger:","category":"nature","emoji_order":"213"},{"name":"lion face","shortname":":lion_face:","category":"nature","emoji_order":"214"},{"name":"cow face","shortname":":cow:","category":"nature","emoji_order":"215"},{"name":"pig face","shortname":":pig:","category":"nature","emoji_order":"216"},{"name":"pig nose","shortname":":pig_nose:","category":"nature","emoji_order":"217"},{"name":"frog face","shortname":":frog:","category":"nature","emoji_order":"218"},{"name":"octopus","shortname":":octopus:","category":"nature","emoji_order":"219"},{"name":"monkey face","shortname":":monkey_face:","category":"nature","emoji_order":"220"},{"name":"see-no-evil monkey","shortname":":see_no_evil:","category":"nature","emoji_order":"221"},{"name":"hear-no-evil monkey","shortname":":hear_no_evil:","category":"nature","emoji_order":"222"},{"name":"speak-no-evil monkey","shortname":":speak_no_evil:","category":"nature","emoji_order":"223"},{"name":"monkey","shortname":":monkey:","category":"nature","emoji_order":"224"},{"name":"chicken","shortname":":chicken:","category":"nature","emoji_order":"225"},{"name":"penguin","shortname":":penguin:","category":"nature","emoji_order":"226"},{"name":"bird","shortname":":bird:","category":"nature","emoji_order":"227"},{"name":"baby chick","shortname":":baby_chick:","category":"nature","emoji_order":"228"},{"name":"hatching chick","shortname":":hatching_chick:","category":"nature","emoji_order":"229"},{"name":"front-facing baby chick","shortname":":hatched_chick:","category":"nature","emoji_order":"230"},{"name":"wolf face","shortname":":wolf:","category":"nature","emoji_order":"231"},{"name":"boar","shortname":":boar:","category":"nature","emoji_order":"232"},{"name":"horse face","shortname":":horse:","category":"nature","emoji_order":"233"},{"name":"unicorn face","shortname":":unicorn:","category":"nature","emoji_order":"234"},{"name":"honeybee","shortname":":bee:","category":"nature","emoji_order":"235"},{"name":"bug","shortname":":bug:","category":"nature","emoji_order":"236"},{"name":"snail","shortname":":snail:","category":"nature","emoji_order":"237"},{"name":"lady beetle","shortname":":beetle:","category":"nature","emoji_order":"238"},{"name":"ant","shortname":":ant:","category":"nature","emoji_order":"239"},{"name":"spider","shortname":":spider:","category":"nature","emoji_order":"240"},{"name":"scorpion","shortname":":scorpion:","category":"nature","emoji_order":"241"},{"name":"crab","shortname":":crab:","category":"nature","emoji_order":"242"},{"name":"snake","shortname":":snake:","category":"nature","emoji_order":"243"},{"name":"turtle","shortname":":turtle:","category":"nature","emoji_order":"244"},{"name":"tropical fish","shortname":":tropical_fish:","category":"nature","emoji_order":"245"},{"name":"fish","shortname":":fish:","category":"nature","emoji_order":"246"},{"name":"blowfish","shortname":":blowfish:","category":"nature","emoji_order":"247"},{"name":"dolphin","shortname":":dolphin:","category":"nature","emoji_order":"248"},{"name":"spouting whale","shortname":":whale:","category":"nature","emoji_order":"249"},{"name":"whale","shortname":":whale2:","category":"nature","emoji_order":"250"},{"name":"crocodile","shortname":":crocodile:","category":"nature","emoji_order":"251"},{"name":"leopard","shortname":":leopard:","category":"nature","emoji_order":"252"},{"name":"tiger","shortname":":tiger2:","category":"nature","emoji_order":"253"},{"name":"water buffalo","shortname":":water_buffalo:","category":"nature","emoji_order":"254"},{"name":"ox","shortname":":ox:","category":"nature","emoji_order":"255"},{"name":"cow","shortname":":cow2:","category":"nature","emoji_order":"256"},{"name":"dromedary camel","shortname":":dromedary_camel:","category":"nature","emoji_order":"257"},{"name":"bactrian camel","shortname":":camel:","category":"nature","emoji_order":"258"},{"name":"elephant","shortname":":elephant:","category":"nature","emoji_order":"259"},{"name":"goat","shortname":":goat:","category":"nature","emoji_order":"260"},{"name":"ram","shortname":":ram:","category":"nature","emoji_order":"261"},{"name":"sheep","shortname":":sheep:","category":"nature","emoji_order":"262"},{"name":"horse","shortname":":racehorse:","category":"nature","emoji_order":"263"},{"name":"pig","shortname":":pig2:","category":"nature","emoji_order":"264"},{"name":"rat","shortname":":rat:","category":"nature","emoji_order":"265"},{"name":"mouse","shortname":":mouse2:","category":"nature","emoji_order":"266"},{"name":"rooster","shortname":":rooster:","category":"nature","emoji_order":"267"},{"name":"turkey","shortname":":turkey:","category":"nature","emoji_order":"268"},{"name":"dove of peace","shortname":":dove:","category":"nature","emoji_order":"269"},{"name":"dog","shortname":":dog2:","category":"nature","emoji_order":"270"},{"name":"poodle","shortname":":poodle:","category":"nature","emoji_order":"271"},{"name":"cat","shortname":":cat2:","category":"nature","emoji_order":"272"},{"name":"rabbit","shortname":":rabbit2:","category":"nature","emoji_order":"273"},{"name":"chipmunk","shortname":":chipmunk:","category":"nature","emoji_order":"274"},{"name":"paw prints","shortname":":feet:","category":"nature","emoji_order":"275"},{"name":"dragon","shortname":":dragon:","category":"nature","emoji_order":"276"},{"name":"dragon face","shortname":":dragon_face:","category":"nature","emoji_order":"277"},{"name":"cactus","shortname":":cactus:","category":"nature","emoji_order":"278"},{"name":"christmas tree","shortname":":christmas_tree:","category":"nature","emoji_order":"279"},{"name":"evergreen tree","shortname":":evergreen_tree:","category":"nature","emoji_order":"280"},{"name":"deciduous tree","shortname":":deciduous_tree:","category":"nature","emoji_order":"281"},{"name":"palm tree","shortname":":palm_tree:","category":"nature","emoji_order":"282"},{"name":"seedling","shortname":":seedling:","category":"nature","emoji_order":"283"},{"name":"herb","shortname":":herb:","category":"nature","emoji_order":"284"},{"name":"shamrock","shortname":":shamrock:","category":"nature","emoji_order":"285"},{"name":"four leaf clover","shortname":":four_leaf_clover:","category":"nature","emoji_order":"286"},{"name":"pine decoration","shortname":":bamboo:","category":"nature","emoji_order":"287"},{"name":"tanabata tree","shortname":":tanabata_tree:","category":"nature","emoji_order":"288"},{"name":"leaf fluttering in wind","shortname":":leaves:","category":"nature","emoji_order":"289"},{"name":"fallen leaf","shortname":":fallen_leaf:","category":"nature","emoji_order":"290"},{"name":"maple leaf","shortname":":maple_leaf:","category":"nature","emoji_order":"291"},{"name":"ear of rice","shortname":":ear_of_rice:","category":"nature","emoji_order":"292"},{"name":"hibiscus","shortname":":hibiscus:","category":"nature","emoji_order":"293"},{"name":"sunflower","shortname":":sunflower:","category":"nature","emoji_order":"294"},{"name":"rose","shortname":":rose:","category":"nature","emoji_order":"295"},{"name":"tulip","shortname":":tulip:","category":"nature","emoji_order":"296"},{"name":"blossom","shortname":":blossom:","category":"nature","emoji_order":"297"},{"name":"cherry blossom","shortname":":cherry_blossom:","category":"nature","emoji_order":"298"},{"name":"bouquet","shortname":":bouquet:","category":"nature","emoji_order":"299"},{"name":"mushroom","shortname":":mushroom:","category":"nature","emoji_order":"300"},{"name":"chestnut","shortname":":chestnut:","category":"nature","emoji_order":"301"},{"name":"jack-o-lantern","shortname":":jack_o_lantern:","category":"nature","emoji_order":"302"},{"name":"spiral shell","shortname":":shell:","category":"nature","emoji_order":"303"},{"name":"spider web","shortname":":spider_web:","category":"nature","emoji_order":"304"},{"name":"earth globe americas","shortname":":earth_americas:","category":"nature","emoji_order":"305"},{"name":"earth globe europe-africa","shortname":":earth_africa:","category":"nature","emoji_order":"306"},{"name":"earth globe asia-australia","shortname":":earth_asia:","category":"nature","emoji_order":"307"},{"name":"full moon symbol","shortname":":full_moon:","category":"nature","emoji_order":"308"},{"name":"waning gibbous moon symbol","shortname":":waning_gibbous_moon:","category":"nature","emoji_order":"309"},{"name":"last quarter moon symbol","shortname":":last_quarter_moon:","category":"nature","emoji_order":"310"},{"name":"waning crescent moon symbol","shortname":":waning_crescent_moon:","category":"nature","emoji_order":"311"},{"name":"new moon symbol","shortname":":new_moon:","category":"nature","emoji_order":"312"},{"name":"waxing crescent moon symbol","shortname":":waxing_crescent_moon:","category":"nature","emoji_order":"313"},{"name":"first quarter moon symbol","shortname":":first_quarter_moon:","category":"nature","emoji_order":"314"},{"name":"waxing gibbous moon symbol","shortname":":waxing_gibbous_moon:","category":"nature","emoji_order":"315"},{"name":"new moon with face","shortname":":new_moon_with_face:","category":"nature","emoji_order":"316"},{"name":"full moon with face","shortname":":full_moon_with_face:","category":"nature","emoji_order":"317"},{"name":"first quarter moon with face","shortname":":first_quarter_moon_with_face:","category":"nature","emoji_order":"318"},{"name":"last quarter moon with face","shortname":":last_quarter_moon_with_face:","category":"nature","emoji_order":"319"},{"name":"sun with face","shortname":":sun_with_face:","category":"nature","emoji_order":"320"},{"name":"crescent moon","shortname":":crescent_moon:","category":"nature","emoji_order":"321"},{"name":"white medium star","shortname":":star:","category":"nature","emoji_order":"322"},{"name":"glowing star","shortname":":star2:","category":"nature","emoji_order":"323"},{"name":"dizzy symbol","shortname":":dizzy:","category":"nature","emoji_order":"324"},{"name":"sparkles","shortname":":sparkles:","category":"nature","emoji_order":"325"},{"name":"comet","shortname":":comet:","category":"nature","emoji_order":"326"},{"name":"black sun with rays","shortname":":sunny:","category":"nature","emoji_order":"327"},{"name":"white sun with small cloud","shortname":":white_sun_small_cloud:","category":"nature","emoji_order":"328"},{"name":"sun behind cloud","shortname":":partly_sunny:","category":"nature","emoji_order":"329"},{"name":"white sun behind cloud","shortname":":white_sun_cloud:","category":"nature","emoji_order":"330"},{"name":"white sun behind cloud with rain","shortname":":white_sun_rain_cloud:","category":"nature","emoji_order":"331"},{"name":"cloud","shortname":":cloud:","category":"nature","emoji_order":"332"},{"name":"cloud with rain","shortname":":cloud_rain:","category":"nature","emoji_order":"333"},{"name":"thunder cloud and rain","shortname":":thunder_cloud_rain:","category":"nature","emoji_order":"334"},{"name":"cloud with lightning","shortname":":cloud_lightning:","category":"nature","emoji_order":"335"},{"name":"high voltage sign","shortname":":zap:","category":"nature","emoji_order":"336"},{"name":"fire","shortname":":fire:","category":"nature","emoji_order":"337"},{"name":"collision symbol","shortname":":boom:","category":"nature","emoji_order":"338"},{"name":"snowflake","shortname":":snowflake:","category":"nature","emoji_order":"339"},{"name":"cloud with snow","shortname":":cloud_snow:","category":"nature","emoji_order":"340"},{"name":"snowman","shortname":":snowman2:","category":"nature","emoji_order":"341"},{"name":"snowman without snow","shortname":":snowman:","category":"nature","emoji_order":"342"},{"name":"wind blowing face","shortname":":wind_blowing_face:","category":"nature","emoji_order":"343"},{"name":"dash symbol","shortname":":dash:","category":"nature","emoji_order":"344"},{"name":"cloud with tornado","shortname":":cloud_tornado:","category":"nature","emoji_order":"345"},{"name":"fog","shortname":":fog:","category":"nature","emoji_order":"346"},{"name":"umbrella","shortname":":umbrella2:","category":"nature","emoji_order":"347"},{"name":"umbrella with rain drops","shortname":":umbrella:","category":"nature","emoji_order":"348"},{"name":"droplet","shortname":":droplet:","category":"nature","emoji_order":"349"},{"name":"splashing sweat symbol","shortname":":sweat_drops:","category":"nature","emoji_order":"350"},{"name":"water wave","shortname":":ocean:","category":"nature","emoji_order":"351"},{"name":"green apple","shortname":":green_apple:","category":"food","emoji_order":"352"},{"name":"red apple","shortname":":apple:","category":"food","emoji_order":"353"},{"name":"pear","shortname":":pear:","category":"food","emoji_order":"354"},{"name":"tangerine","shortname":":tangerine:","category":"food","emoji_order":"355"},{"name":"lemon","shortname":":lemon:","category":"food","emoji_order":"356"},{"name":"banana","shortname":":banana:","category":"food","emoji_order":"357"},{"name":"watermelon","shortname":":watermelon:","category":"food","emoji_order":"358"},{"name":"grapes","shortname":":grapes:","category":"food","emoji_order":"359"},{"name":"strawberry","shortname":":strawberry:","category":"food","emoji_order":"360"},{"name":"melon","shortname":":melon:","category":"food","emoji_order":"361"},{"name":"cherries","shortname":":cherries:","category":"food","emoji_order":"362"},{"name":"peach","shortname":":peach:","category":"food","emoji_order":"363"},{"name":"pineapple","shortname":":pineapple:","category":"food","emoji_order":"364"},{"name":"tomato","shortname":":tomato:","category":"food","emoji_order":"365"},{"name":"aubergine","shortname":":eggplant:","category":"food","emoji_order":"366"},{"name":"hot pepper","shortname":":hot_pepper:","category":"food","emoji_order":"367"},{"name":"ear of maize","shortname":":corn:","category":"food","emoji_order":"368"},{"name":"roasted sweet potato","shortname":":sweet_potato:","category":"food","emoji_order":"369"},{"name":"honey pot","shortname":":honey_pot:","category":"food","emoji_order":"370"},{"name":"bread","shortname":":bread:","category":"food","emoji_order":"371"},{"name":"cheese wedge","shortname":":cheese:","category":"food","emoji_order":"372"},{"name":"poultry leg","shortname":":poultry_leg:","category":"food","emoji_order":"373"},{"name":"meat on bone","shortname":":meat_on_bone:","category":"food","emoji_order":"374"},{"name":"fried shrimp","shortname":":fried_shrimp:","category":"food","emoji_order":"375"},{"name":"egg","shortname":":egg:","category":"unicode9","emoji_order":"75"},{"name":"hamburger","shortname":":hamburger:","category":"food","emoji_order":"377"},{"name":"french fries","shortname":":fries:","category":"food","emoji_order":"378"},{"name":"hot dog","shortname":":hotdog:","category":"food","emoji_order":"379"},{"name":"slice of pizza","shortname":":pizza:","category":"food","emoji_order":"380"},{"name":"spaghetti","shortname":":spaghetti:","category":"food","emoji_order":"381"},{"name":"taco","shortname":":taco:","category":"food","emoji_order":"382"},{"name":"burrito","shortname":":burrito:","category":"food","emoji_order":"383"},{"name":"steaming bowl","shortname":":ramen:","category":"food","emoji_order":"384"},{"name":"pot of food","shortname":":stew:","category":"food","emoji_order":"385"},{"name":"fish cake with swirl design","shortname":":fish_cake:","category":"food","emoji_order":"386"},{"name":"sushi","shortname":":sushi:","category":"food","emoji_order":"387"},{"name":"bento box","shortname":":bento:","category":"food","emoji_order":"388"},{"name":"curry and rice","shortname":":curry:","category":"food","emoji_order":"389"},{"name":"rice ball","shortname":":rice_ball:","category":"food","emoji_order":"390"},{"name":"cooked rice","shortname":":rice:","category":"food","emoji_order":"391"},{"name":"rice cracker","shortname":":rice_cracker:","category":"food","emoji_order":"392"},{"name":"oden","shortname":":oden:","category":"food","emoji_order":"393"},{"name":"dango","shortname":":dango:","category":"food","emoji_order":"394"},{"name":"shaved ice","shortname":":shaved_ice:","category":"food","emoji_order":"395"},{"name":"ice cream","shortname":":ice_cream:","category":"food","emoji_order":"396"},{"name":"soft ice cream","shortname":":icecream:","category":"food","emoji_order":"397"},{"name":"shortcake","shortname":":cake:","category":"food","emoji_order":"398"},{"name":"birthday cake","shortname":":birthday:","category":"food","emoji_order":"399"},{"name":"custard","shortname":":custard:","category":"food","emoji_order":"400"},{"name":"candy","shortname":":candy:","category":"food","emoji_order":"401"},{"name":"lollipop","shortname":":lollipop:","category":"food","emoji_order":"402"},{"name":"chocolate bar","shortname":":chocolate_bar:","category":"food","emoji_order":"403"},{"name":"popcorn","shortname":":popcorn:","category":"food","emoji_order":"404"},{"name":"doughnut","shortname":":doughnut:","category":"food","emoji_order":"405"},{"name":"cookie","shortname":":cookie:","category":"food","emoji_order":"406"},{"name":"beer mug","shortname":":beer:","category":"food","emoji_order":"407"},{"name":"clinking beer mugs","shortname":":beers:","category":"food","emoji_order":"408"},{"name":"wine glass","shortname":":wine_glass:","category":"food","emoji_order":"409"},{"name":"cocktail glass","shortname":":cocktail:","category":"food","emoji_order":"410"},{"name":"tropical drink","shortname":":tropical_drink:","category":"food","emoji_order":"411"},{"name":"bottle with popping cork","shortname":":champagne:","category":"food","emoji_order":"412"},{"name":"sake bottle and cup","shortname":":sake:","category":"food","emoji_order":"413"},{"name":"teacup without handle","shortname":":tea:","category":"food","emoji_order":"414"},{"name":"hot beverage","shortname":":coffee:","category":"food","emoji_order":"415"},{"name":"baby bottle","shortname":":baby_bottle:","category":"food","emoji_order":"416"},{"name":"fork and knife","shortname":":fork_and_knife:","category":"food","emoji_order":"417"},{"name":"fork and knife with plate","shortname":":fork_knife_plate:","category":"food","emoji_order":"418"},{"name":"soccer ball","shortname":":soccer:","category":"activity","emoji_order":"419"},{"name":"basketball and hoop","shortname":":basketball:","category":"activity","emoji_order":"420"},{"name":"american football","shortname":":football:","category":"activity","emoji_order":"421"},{"name":"baseball","shortname":":baseball:","category":"activity","emoji_order":"422"},{"name":"tennis racquet and ball","shortname":":tennis:","category":"activity","emoji_order":"423"},{"name":"volleyball","shortname":":volleyball:","category":"activity","emoji_order":"424"},{"name":"rugby football","shortname":":rugby_football:","category":"activity","emoji_order":"425"},{"name":"billiards","shortname":":8ball:","category":"activity","emoji_order":"426"},{"name":"flag in hole","shortname":":golf:","category":"activity","emoji_order":"427"},{"name":"golfer","shortname":":golfer:","category":"activity","emoji_order":"428"},{"name":"table tennis paddle and ball","shortname":":ping_pong:","category":"activity","emoji_order":"429"},{"name":"badminton racquet","shortname":":badminton:","category":"activity","emoji_order":"430"},{"name":"ice hockey stick and puck","shortname":":hockey:","category":"activity","emoji_order":"431"},{"name":"field hockey stick and ball","shortname":":field_hockey:","category":"activity","emoji_order":"432"},{"name":"cricket bat and ball","shortname":":cricket:","category":"activity","emoji_order":"433"},{"name":"ski and ski boot","shortname":":ski:","category":"activity","emoji_order":"434"},{"name":"skier","shortname":":skier:","category":"activity","emoji_order":"435"},{"name":"snowboarder","shortname":":snowboarder:","category":"activity","emoji_order":"436"},{"name":"ice skate","shortname":":ice_skate:","category":"activity","emoji_order":"437"},{"name":"bow and arrow","shortname":":bow_and_arrow:","category":"activity","emoji_order":"438"},{"name":"fishing pole and fish","shortname":":fishing_pole_and_fish:","category":"activity","emoji_order":"439"},{"name":"rowboat","shortname":":rowboat:","category":"activity","emoji_order":"440"},{"name":"swimmer","shortname":":swimmer:","category":"activity","emoji_order":"441"},{"name":"surfer","shortname":":surfer:","category":"activity","emoji_order":"442"},{"name":"bath","shortname":":bath:","category":"activity","emoji_order":"443"},{"name":"person with ball","shortname":":basketball_player:","category":"activity","emoji_order":"444"},{"name":"weight lifter","shortname":":lifter:","category":"activity","emoji_order":"445"},{"name":"bicyclist","shortname":":bicyclist:","category":"activity","emoji_order":"446"},{"name":"mountain bicyclist","shortname":":mountain_bicyclist:","category":"activity","emoji_order":"447"},{"name":"horse racing","shortname":":horse_racing:","category":"activity","emoji_order":"448"},{"name":"man in business suit levitating","shortname":":levitate:","category":"activity","emoji_order":"449"},{"name":"trophy","shortname":":trophy:","category":"activity","emoji_order":"450"},{"name":"running shirt with sash","shortname":":running_shirt_with_sash:","category":"activity","emoji_order":"451"},{"name":"sports medal","shortname":":medal:","category":"activity","emoji_order":"452"},{"name":"military medal","shortname":":military_medal:","category":"activity","emoji_order":"453"},{"name":"reminder ribbon","shortname":":reminder_ribbon:","category":"activity","emoji_order":"454"},{"name":"rosette","shortname":":rosette:","category":"activity","emoji_order":"455"},{"name":"ticket","shortname":":ticket:","category":"activity","emoji_order":"456"},{"name":"admission tickets","shortname":":tickets:","category":"activity","emoji_order":"457"},{"name":"performing arts","shortname":":performing_arts:","category":"activity","emoji_order":"458"},{"name":"artist palette","shortname":":art:","category":"activity","emoji_order":"459"},{"name":"circus tent","shortname":":circus_tent:","category":"activity","emoji_order":"460"},{"name":"microphone","shortname":":microphone:","category":"activity","emoji_order":"461"},{"name":"headphone","shortname":":headphones:","category":"activity","emoji_order":"462"},{"name":"musical score","shortname":":musical_score:","category":"activity","emoji_order":"463"},{"name":"musical keyboard","shortname":":musical_keyboard:","category":"activity","emoji_order":"464"},{"name":"saxophone","shortname":":saxophone:","category":"activity","emoji_order":"465"},{"name":"trumpet","shortname":":trumpet:","category":"activity","emoji_order":"466"},{"name":"guitar","shortname":":guitar:","category":"activity","emoji_order":"467"},{"name":"violin","shortname":":violin:","category":"activity","emoji_order":"468"},{"name":"clapper board","shortname":":clapper:","category":"activity","emoji_order":"469"},{"name":"video game","shortname":":video_game:","category":"activity","emoji_order":"470"},{"name":"alien monster","shortname":":space_invader:","category":"activity","emoji_order":"471"},{"name":"direct hit","shortname":":dart:","category":"activity","emoji_order":"472"},{"name":"game die","shortname":":game_die:","category":"activity","emoji_order":"473"},{"name":"slot machine","shortname":":slot_machine:","category":"activity","emoji_order":"474"},{"name":"bowling","shortname":":bowling:","category":"activity","emoji_order":"475"},{"name":"automobile","shortname":":red_car:","category":"travel","emoji_order":"476"},{"name":"taxi","shortname":":taxi:","category":"travel","emoji_order":"477"},{"name":"recreational vehicle","shortname":":blue_car:","category":"travel","emoji_order":"478"},{"name":"bus","shortname":":bus:","category":"travel","emoji_order":"479"},{"name":"trolleybus","shortname":":trolleybus:","category":"travel","emoji_order":"480"},{"name":"racing car","shortname":":race_car:","category":"travel","emoji_order":"481"},{"name":"police car","shortname":":police_car:","category":"travel","emoji_order":"482"},{"name":"ambulance","shortname":":ambulance:","category":"travel","emoji_order":"483"},{"name":"fire engine","shortname":":fire_engine:","category":"travel","emoji_order":"484"},{"name":"minibus","shortname":":minibus:","category":"travel","emoji_order":"485"},{"name":"delivery truck","shortname":":truck:","category":"travel","emoji_order":"486"},{"name":"articulated lorry","shortname":":articulated_lorry:","category":"travel","emoji_order":"487"},{"name":"tractor","shortname":":tractor:","category":"travel","emoji_order":"488"},{"name":"racing motorcycle","shortname":":motorcycle:","category":"travel","emoji_order":"489"},{"name":"bicycle","shortname":":bike:","category":"travel","emoji_order":"490"},{"name":"police cars revolving light","shortname":":rotating_light:","category":"travel","emoji_order":"491"},{"name":"oncoming police car","shortname":":oncoming_police_car:","category":"travel","emoji_order":"492"},{"name":"oncoming bus","shortname":":oncoming_bus:","category":"travel","emoji_order":"493"},{"name":"oncoming automobile","shortname":":oncoming_automobile:","category":"travel","emoji_order":"494"},{"name":"oncoming taxi","shortname":":oncoming_taxi:","category":"travel","emoji_order":"495"},{"name":"aerial tramway","shortname":":aerial_tramway:","category":"travel","emoji_order":"496"},{"name":"mountain cableway","shortname":":mountain_cableway:","category":"travel","emoji_order":"497"},{"name":"suspension railway","shortname":":suspension_railway:","category":"travel","emoji_order":"498"},{"name":"railway car","shortname":":railway_car:","category":"travel","emoji_order":"499"},{"name":"tram car","shortname":":train:","category":"travel","emoji_order":"500"},{"name":"monorail","shortname":":monorail:","category":"travel","emoji_order":"501"},{"name":"high-speed train","shortname":":bullettrain_side:","category":"travel","emoji_order":"502"},{"name":"high-speed train with bullet nose","shortname":":bullettrain_front:","category":"travel","emoji_order":"503"},{"name":"light rail","shortname":":light_rail:","category":"travel","emoji_order":"504"},{"name":"mountain railway","shortname":":mountain_railway:","category":"travel","emoji_order":"505"},{"name":"steam locomotive","shortname":":steam_locomotive:","category":"travel","emoji_order":"506"},{"name":"train","shortname":":train2:","category":"travel","emoji_order":"507"},{"name":"metro","shortname":":metro:","category":"travel","emoji_order":"508"},{"name":"tram","shortname":":tram:","category":"travel","emoji_order":"509"},{"name":"station","shortname":":station:","category":"travel","emoji_order":"510"},{"name":"helicopter","shortname":":helicopter:","category":"travel","emoji_order":"511"},{"name":"small airplane","shortname":":airplane_small:","category":"travel","emoji_order":"512"},{"name":"airplane","shortname":":airplane:","category":"travel","emoji_order":"513"},{"name":"airplane departure","shortname":":airplane_departure:","category":"travel","emoji_order":"514"},{"name":"airplane arriving","shortname":":airplane_arriving:","category":"travel","emoji_order":"515"},{"name":"sailboat","shortname":":sailboat:","category":"travel","emoji_order":"516"},{"name":"motorboat","shortname":":motorboat:","category":"travel","emoji_order":"517"},{"name":"speedboat","shortname":":speedboat:","category":"travel","emoji_order":"518"},{"name":"ferry","shortname":":ferry:","category":"travel","emoji_order":"519"},{"name":"passenger ship","shortname":":cruise_ship:","category":"travel","emoji_order":"520"},{"name":"rocket","shortname":":rocket:","category":"travel","emoji_order":"521"},{"name":"satellite","shortname":":satellite_orbital:","category":"travel","emoji_order":"522"},{"name":"seat","shortname":":seat:","category":"travel","emoji_order":"523"},{"name":"anchor","shortname":":anchor:","category":"travel","emoji_order":"524"},{"name":"construction sign","shortname":":construction:","category":"travel","emoji_order":"525"},{"name":"fuel pump","shortname":":fuelpump:","category":"travel","emoji_order":"526"},{"name":"bus stop","shortname":":busstop:","category":"travel","emoji_order":"527"},{"name":"vertical traffic light","shortname":":vertical_traffic_light:","category":"travel","emoji_order":"528"},{"name":"horizontal traffic light","shortname":":traffic_light:","category":"travel","emoji_order":"529"},{"name":"chequered flag","shortname":":checkered_flag:","category":"travel","emoji_order":"530"},{"name":"ship","shortname":":ship:","category":"travel","emoji_order":"531"},{"name":"ferris wheel","shortname":":ferris_wheel:","category":"travel","emoji_order":"532"},{"name":"roller coaster","shortname":":roller_coaster:","category":"travel","emoji_order":"533"},{"name":"carousel horse","shortname":":carousel_horse:","category":"travel","emoji_order":"534"},{"name":"building construction","shortname":":construction_site:","category":"travel","emoji_order":"535"},{"name":"foggy","shortname":":foggy:","category":"travel","emoji_order":"536"},{"name":"tokyo tower","shortname":":tokyo_tower:","category":"travel","emoji_order":"537"},{"name":"factory","shortname":":factory:","category":"travel","emoji_order":"538"},{"name":"fountain","shortname":":fountain:","category":"travel","emoji_order":"539"},{"name":"moon viewing ceremony","shortname":":rice_scene:","category":"travel","emoji_order":"540"},{"name":"mountain","shortname":":mountain:","category":"travel","emoji_order":"541"},{"name":"snow capped mountain","shortname":":mountain_snow:","category":"travel","emoji_order":"542"},{"name":"mount fuji","shortname":":mount_fuji:","category":"travel","emoji_order":"543"},{"name":"volcano","shortname":":volcano:","category":"travel","emoji_order":"544"},{"name":"silhouette of japan","shortname":":japan:","category":"travel","emoji_order":"545"},{"name":"camping","shortname":":camping:","category":"travel","emoji_order":"546"},{"name":"tent","shortname":":tent:","category":"travel","emoji_order":"547"},{"name":"national park","shortname":":park:","category":"travel","emoji_order":"548"},{"name":"motorway","shortname":":motorway:","category":"travel","emoji_order":"549"},{"name":"railway track","shortname":":railway_track:","category":"travel","emoji_order":"550"},{"name":"sunrise","shortname":":sunrise:","category":"travel","emoji_order":"551"},{"name":"sunrise over mountains","shortname":":sunrise_over_mountains:","category":"travel","emoji_order":"552"},{"name":"desert","shortname":":desert:","category":"travel","emoji_order":"553"},{"name":"beach with umbrella","shortname":":beach:","category":"travel","emoji_order":"554"},{"name":"desert island","shortname":":island:","category":"travel","emoji_order":"555"},{"name":"sunset over buildings","shortname":":city_sunset:","category":"travel","emoji_order":"556"},{"name":"cityscape at dusk","shortname":":city_dusk:","category":"travel","emoji_order":"557"},{"name":"cityscape","shortname":":cityscape:","category":"travel","emoji_order":"558"},{"name":"night with stars","shortname":":night_with_stars:","category":"travel","emoji_order":"559"},{"name":"bridge at night","shortname":":bridge_at_night:","category":"travel","emoji_order":"560"},{"name":"milky way","shortname":":milky_way:","category":"travel","emoji_order":"561"},{"name":"shooting star","shortname":":stars:","category":"travel","emoji_order":"562"},{"name":"firework sparkler","shortname":":sparkler:","category":"travel","emoji_order":"563"},{"name":"fireworks","shortname":":fireworks:","category":"travel","emoji_order":"564"},{"name":"rainbow","shortname":":rainbow:","category":"travel","emoji_order":"565"},{"name":"house buildings","shortname":":homes:","category":"travel","emoji_order":"566"},{"name":"european castle","shortname":":european_castle:","category":"travel","emoji_order":"567"},{"name":"japanese castle","shortname":":japanese_castle:","category":"travel","emoji_order":"568"},{"name":"stadium","shortname":":stadium:","category":"travel","emoji_order":"569"},{"name":"statue of liberty","shortname":":statue_of_liberty:","category":"travel","emoji_order":"570"},{"name":"house building","shortname":":house:","category":"travel","emoji_order":"571"},{"name":"house with garden","shortname":":house_with_garden:","category":"travel","emoji_order":"572"},{"name":"derelict house building","shortname":":house_abandoned:","category":"travel","emoji_order":"573"},{"name":"office building","shortname":":office:","category":"travel","emoji_order":"574"},{"name":"department store","shortname":":department_store:","category":"travel","emoji_order":"575"},{"name":"japanese post office","shortname":":post_office:","category":"travel","emoji_order":"576"},{"name":"european post office","shortname":":european_post_office:","category":"travel","emoji_order":"577"},{"name":"hospital","shortname":":hospital:","category":"travel","emoji_order":"578"},{"name":"bank","shortname":":bank:","category":"travel","emoji_order":"579"},{"name":"hotel","shortname":":hotel:","category":"travel","emoji_order":"580"},{"name":"convenience store","shortname":":convenience_store:","category":"travel","emoji_order":"581"},{"name":"school","shortname":":school:","category":"travel","emoji_order":"582"},{"name":"love hotel","shortname":":love_hotel:","category":"travel","emoji_order":"583"},{"name":"wedding","shortname":":wedding:","category":"travel","emoji_order":"584"},{"name":"classical building","shortname":":classical_building:","category":"travel","emoji_order":"585"},{"name":"church","shortname":":church:","category":"travel","emoji_order":"586"},{"name":"mosque","shortname":":mosque:","category":"travel","emoji_order":"587"},{"name":"synagogue","shortname":":synagogue:","category":"travel","emoji_order":"588"},{"name":"kaaba","shortname":":kaaba:","category":"travel","emoji_order":"589"},{"name":"shinto shrine","shortname":":shinto_shrine:","category":"travel","emoji_order":"590"},{"name":"watch","shortname":":watch:","category":"objects","emoji_order":"591"},{"name":"mobile phone","shortname":":iphone:","category":"objects","emoji_order":"592"},{"name":"mobile phone with rightwards arrow at left","shortname":":calling:","category":"objects","emoji_order":"593"},{"name":"personal computer","shortname":":computer:","category":"objects","emoji_order":"594"},{"name":"keyboard","shortname":":keyboard:","category":"objects","emoji_order":"595"},{"name":"desktop computer","shortname":":desktop:","category":"objects","emoji_order":"596"},{"name":"printer","shortname":":printer:","category":"objects","emoji_order":"597"},{"name":"three button mouse","shortname":":mouse_three_button:","category":"objects","emoji_order":"598"},{"name":"trackball","shortname":":trackball:","category":"objects","emoji_order":"599"},{"name":"joystick","shortname":":joystick:","category":"objects","emoji_order":"600"},{"name":"compression","shortname":":compression:","category":"objects","emoji_order":"601"},{"name":"minidisc","shortname":":minidisc:","category":"objects","emoji_order":"602"},{"name":"floppy disk","shortname":":floppy_disk:","category":"objects","emoji_order":"603"},{"name":"optical disc","shortname":":cd:","category":"objects","emoji_order":"604"},{"name":"dvd","shortname":":dvd:","category":"objects","emoji_order":"605"},{"name":"videocassette","shortname":":vhs:","category":"objects","emoji_order":"606"},{"name":"camera","shortname":":camera:","category":"objects","emoji_order":"607"},{"name":"camera with flash","shortname":":camera_with_flash:","category":"objects","emoji_order":"608"},{"name":"video camera","shortname":":video_camera:","category":"objects","emoji_order":"609"},{"name":"movie camera","shortname":":movie_camera:","category":"objects","emoji_order":"610"},{"name":"film projector","shortname":":projector:","category":"objects","emoji_order":"611"},{"name":"film frames","shortname":":film_frames:","category":"objects","emoji_order":"612"},{"name":"telephone receiver","shortname":":telephone_receiver:","category":"objects","emoji_order":"613"},{"name":"black telephone","shortname":":telephone:","category":"objects","emoji_order":"614"},{"name":"pager","shortname":":pager:","category":"objects","emoji_order":"615"},{"name":"fax machine","shortname":":fax:","category":"objects","emoji_order":"616"},{"name":"television","shortname":":tv:","category":"objects","emoji_order":"617"},{"name":"radio","shortname":":radio:","category":"objects","emoji_order":"618"},{"name":"studio microphone","shortname":":microphone2:","category":"objects","emoji_order":"619"},{"name":"level slider","shortname":":level_slider:","category":"objects","emoji_order":"620"},{"name":"control knobs","shortname":":control_knobs:","category":"objects","emoji_order":"621"},{"name":"stopwatch","shortname":":stopwatch:","category":"objects","emoji_order":"622"},{"name":"timer clock","shortname":":timer:","category":"objects","emoji_order":"623"},{"name":"alarm clock","shortname":":alarm_clock:","category":"objects","emoji_order":"624"},{"name":"mantlepiece clock","shortname":":clock:","category":"objects","emoji_order":"625"},{"name":"hourglass with flowing sand","shortname":":hourglass_flowing_sand:","category":"objects","emoji_order":"626"},{"name":"hourglass","shortname":":hourglass:","category":"objects","emoji_order":"627"},{"name":"satellite antenna","shortname":":satellite:","category":"objects","emoji_order":"628"},{"name":"battery","shortname":":battery:","category":"objects","emoji_order":"629"},{"name":"electric plug","shortname":":electric_plug:","category":"objects","emoji_order":"630"},{"name":"electric light bulb","shortname":":bulb:","category":"objects","emoji_order":"631"},{"name":"electric torch","shortname":":flashlight:","category":"objects","emoji_order":"632"},{"name":"candle","shortname":":candle:","category":"objects","emoji_order":"633"},{"name":"wastebasket","shortname":":wastebasket:","category":"objects","emoji_order":"634"},{"name":"oil drum","shortname":":oil:","category":"objects","emoji_order":"635"},{"name":"money with wings","shortname":":money_with_wings:","category":"objects","emoji_order":"636"},{"name":"banknote with dollar sign","shortname":":dollar:","category":"objects","emoji_order":"637"},{"name":"banknote with yen sign","shortname":":yen:","category":"objects","emoji_order":"638"},{"name":"banknote with euro sign","shortname":":euro:","category":"objects","emoji_order":"639"},{"name":"banknote with pound sign","shortname":":pound:","category":"objects","emoji_order":"640"},{"name":"money bag","shortname":":moneybag:","category":"objects","emoji_order":"641"},{"name":"credit card","shortname":":credit_card:","category":"objects","emoji_order":"642"},{"name":"gem stone","shortname":":gem:","category":"objects","emoji_order":"643"},{"name":"scales","shortname":":scales:","category":"objects","emoji_order":"644"},{"name":"wrench","shortname":":wrench:","category":"objects","emoji_order":"645"},{"name":"hammer","shortname":":hammer:","category":"objects","emoji_order":"646"},{"name":"hammer and pick","shortname":":hammer_pick:","category":"objects","emoji_order":"647"},{"name":"hammer and wrench","shortname":":tools:","category":"objects","emoji_order":"648"},{"name":"pick","shortname":":pick:","category":"objects","emoji_order":"649"},{"name":"nut and bolt","shortname":":nut_and_bolt:","category":"objects","emoji_order":"650"},{"name":"gear","shortname":":gear:","category":"objects","emoji_order":"651"},{"name":"chains","shortname":":chains:","category":"objects","emoji_order":"652"},{"name":"pistol","shortname":":gun:","category":"objects","emoji_order":"653"},{"name":"bomb","shortname":":bomb:","category":"objects","emoji_order":"654"},{"name":"hocho","shortname":":knife:","category":"objects","emoji_order":"655"},{"name":"dagger knife","shortname":":dagger:","category":"objects","emoji_order":"656"},{"name":"crossed swords","shortname":":crossed_swords:","category":"objects","emoji_order":"657"},{"name":"shield","shortname":":shield:","category":"objects","emoji_order":"658"},{"name":"smoking symbol","shortname":":smoking:","category":"objects","emoji_order":"659"},{"name":"skull and crossbones","shortname":":skull_crossbones:","category":"objects","emoji_order":"660"},{"name":"coffin","shortname":":coffin:","category":"objects","emoji_order":"661"},{"name":"funeral urn","shortname":":urn:","category":"objects","emoji_order":"662"},{"name":"amphora","shortname":":amphora:","category":"objects","emoji_order":"663"},{"name":"crystal ball","shortname":":crystal_ball:","category":"objects","emoji_order":"664"},{"name":"prayer beads","shortname":":prayer_beads:","category":"objects","emoji_order":"665"},{"name":"barber pole","shortname":":barber:","category":"objects","emoji_order":"666"},{"name":"alembic","shortname":":alembic:","category":"objects","emoji_order":"667"},{"name":"telescope","shortname":":telescope:","category":"objects","emoji_order":"668"},{"name":"microscope","shortname":":microscope:","category":"objects","emoji_order":"669"},{"name":"hole","shortname":":hole:","category":"objects","emoji_order":"670"},{"name":"pill","shortname":":pill:","category":"objects","emoji_order":"671"},{"name":"syringe","shortname":":syringe:","category":"objects","emoji_order":"672"},{"name":"thermometer","shortname":":thermometer:","category":"objects","emoji_order":"673"},{"name":"label","shortname":":label:","category":"objects","emoji_order":"674"},{"name":"bookmark","shortname":":bookmark:","category":"objects","emoji_order":"675"},{"name":"toilet","shortname":":toilet:","category":"objects","emoji_order":"676"},{"name":"shower","shortname":":shower:","category":"objects","emoji_order":"677"},{"name":"bathtub","shortname":":bathtub:","category":"objects","emoji_order":"678"},{"name":"key","shortname":":key:","category":"objects","emoji_order":"679"},{"name":"old key","shortname":":key2:","category":"objects","emoji_order":"680"},{"name":"couch and lamp","shortname":":couch:","category":"objects","emoji_order":"681"},{"name":"sleeping accommodation","shortname":":sleeping_accommodation:","category":"objects","emoji_order":"682"},{"name":"bed","shortname":":bed:","category":"objects","emoji_order":"683"},{"name":"door","shortname":":door:","category":"objects","emoji_order":"684"},{"name":"bellhop bell","shortname":":bellhop:","category":"objects","emoji_order":"685"},{"name":"frame with picture","shortname":":frame_photo:","category":"objects","emoji_order":"686"},{"name":"world map","shortname":":map:","category":"objects","emoji_order":"687"},{"name":"umbrella on ground","shortname":":beach_umbrella:","category":"objects","emoji_order":"688"},{"name":"moyai","shortname":":moyai:","category":"objects","emoji_order":"689"},{"name":"shopping bags","shortname":":shopping_bags:","category":"objects","emoji_order":"690"},{"name":"balloon","shortname":":balloon:","category":"objects","emoji_order":"691"},{"name":"carp streamer","shortname":":flags:","category":"objects","emoji_order":"692"},{"name":"ribbon","shortname":":ribbon:","category":"objects","emoji_order":"693"},{"name":"wrapped present","shortname":":gift:","category":"objects","emoji_order":"694"},{"name":"confetti ball","shortname":":confetti_ball:","category":"objects","emoji_order":"695"},{"name":"party popper","shortname":":tada:","category":"objects","emoji_order":"696"},{"name":"japanese dolls","shortname":":dolls:","category":"objects","emoji_order":"697"},{"name":"wind chime","shortname":":wind_chime:","category":"objects","emoji_order":"698"},{"name":"crossed flags","shortname":":crossed_flags:","category":"objects","emoji_order":"699"},{"name":"izakaya lantern","shortname":":izakaya_lantern:","category":"objects","emoji_order":"700"},{"name":"envelope","shortname":":envelope:","category":"objects","emoji_order":"701"},{"name":"envelope with downwards arrow above","shortname":":envelope_with_arrow:","category":"objects","emoji_order":"702"},{"name":"incoming envelope","shortname":":incoming_envelope:","category":"objects","emoji_order":"703"},{"name":"e-mail symbol","shortname":":e-mail:","category":"objects","emoji_order":"704"},{"name":"love letter","shortname":":love_letter:","category":"objects","emoji_order":"705"},{"name":"postbox","shortname":":postbox:","category":"objects","emoji_order":"706"},{"name":"closed mailbox with lowered flag","shortname":":mailbox_closed:","category":"objects","emoji_order":"707"},{"name":"closed mailbox with raised flag","shortname":":mailbox:","category":"objects","emoji_order":"708"},{"name":"open mailbox with raised flag","shortname":":mailbox_with_mail:","category":"objects","emoji_order":"709"},{"name":"open mailbox with lowered flag","shortname":":mailbox_with_no_mail:","category":"objects","emoji_order":"710"},{"name":"package","shortname":":package:","category":"objects","emoji_order":"711"},{"name":"postal horn","shortname":":postal_horn:","category":"objects","emoji_order":"712"},{"name":"inbox tray","shortname":":inbox_tray:","category":"objects","emoji_order":"713"},{"name":"outbox tray","shortname":":outbox_tray:","category":"objects","emoji_order":"714"},{"name":"scroll","shortname":":scroll:","category":"objects","emoji_order":"715"},{"name":"page with curl","shortname":":page_with_curl:","category":"objects","emoji_order":"716"},{"name":"bookmark tabs","shortname":":bookmark_tabs:","category":"objects","emoji_order":"717"},{"name":"bar chart","shortname":":bar_chart:","category":"objects","emoji_order":"718"},{"name":"chart with upwards trend","shortname":":chart_with_upwards_trend:","category":"objects","emoji_order":"719"},{"name":"chart with downwards trend","shortname":":chart_with_downwards_trend:","category":"objects","emoji_order":"720"},{"name":"page facing up","shortname":":page_facing_up:","category":"objects","emoji_order":"721"},{"name":"calendar","shortname":":date:","category":"objects","emoji_order":"722"},{"name":"tear-off calendar","shortname":":calendar:","category":"objects","emoji_order":"723"},{"name":"spiral calendar pad","shortname":":calendar_spiral:","category":"objects","emoji_order":"724"},{"name":"card index","shortname":":card_index:","category":"objects","emoji_order":"725"},{"name":"card file box","shortname":":card_box:","category":"objects","emoji_order":"726"},{"name":"ballot box with ballot","shortname":":ballot_box:","category":"objects","emoji_order":"727"},{"name":"file cabinet","shortname":":file_cabinet:","category":"objects","emoji_order":"728"},{"name":"clipboard","shortname":":clipboard:","category":"objects","emoji_order":"729"},{"name":"spiral note pad","shortname":":notepad_spiral:","category":"objects","emoji_order":"730"},{"name":"file folder","shortname":":file_folder:","category":"objects","emoji_order":"731"},{"name":"open file folder","shortname":":open_file_folder:","category":"objects","emoji_order":"732"},{"name":"card index dividers","shortname":":dividers:","category":"objects","emoji_order":"733"},{"name":"rolled-up newspaper","shortname":":newspaper2:","category":"objects","emoji_order":"734"},{"name":"newspaper","shortname":":newspaper:","category":"objects","emoji_order":"735"},{"name":"notebook","shortname":":notebook:","category":"objects","emoji_order":"736"},{"name":"closed book","shortname":":closed_book:","category":"objects","emoji_order":"737"},{"name":"green book","shortname":":green_book:","category":"objects","emoji_order":"738"},{"name":"blue book","shortname":":blue_book:","category":"objects","emoji_order":"739"},{"name":"orange book","shortname":":orange_book:","category":"objects","emoji_order":"740"},{"name":"notebook with decorative cover","shortname":":notebook_with_decorative_cover:","category":"objects","emoji_order":"741"},{"name":"ledger","shortname":":ledger:","category":"objects","emoji_order":"742"},{"name":"books","shortname":":books:","category":"objects","emoji_order":"743"},{"name":"open book","shortname":":book:","category":"objects","emoji_order":"744"},{"name":"link symbol","shortname":":link:","category":"objects","emoji_order":"745"},{"name":"paperclip","shortname":":paperclip:","category":"objects","emoji_order":"746"},{"name":"linked paperclips","shortname":":paperclips:","category":"objects","emoji_order":"747"},{"name":"black scissors","shortname":":scissors:","category":"objects","emoji_order":"748"},{"name":"triangular ruler","shortname":":triangular_ruler:","category":"objects","emoji_order":"749"},{"name":"straight ruler","shortname":":straight_ruler:","category":"objects","emoji_order":"750"},{"name":"pushpin","shortname":":pushpin:","category":"objects","emoji_order":"751"},{"name":"round pushpin","shortname":":round_pushpin:","category":"objects","emoji_order":"752"},{"name":"triangular flag on post","shortname":":triangular_flag_on_post:","category":"objects","emoji_order":"753"},{"name":"waving white flag","shortname":":flag_white:","category":"objects","emoji_order":"754"},{"name":"waving black flag","shortname":":flag_black:","category":"objects","emoji_order":"755"},{"name":"closed lock with key","shortname":":closed_lock_with_key:","category":"objects","emoji_order":"756"},{"name":"lock","shortname":":lock:","category":"objects","emoji_order":"757"},{"name":"open lock","shortname":":unlock:","category":"objects","emoji_order":"758"},{"name":"lock with ink pen","shortname":":lock_with_ink_pen:","category":"objects","emoji_order":"759"},{"name":"lower left ballpoint pen","shortname":":pen_ballpoint:","category":"objects","emoji_order":"760"},{"name":"lower left fountain pen","shortname":":pen_fountain:","category":"objects","emoji_order":"761"},{"name":"black nib","shortname":":black_nib:","category":"objects","emoji_order":"762"},{"name":"memo","shortname":":pencil:","category":"objects","emoji_order":"763"},{"name":"pencil","shortname":":pencil2:","category":"objects","emoji_order":"764"},{"name":"lower left crayon","shortname":":crayon:","category":"objects","emoji_order":"765"},{"name":"lower left paintbrush","shortname":":paintbrush:","category":"objects","emoji_order":"766"},{"name":"left-pointing magnifying glass","shortname":":mag:","category":"objects","emoji_order":"767"},{"name":"right-pointing magnifying glass","shortname":":mag_right:","category":"objects","emoji_order":"768"},{"name":"heavy black heart","shortname":":heart:","category":"symbols","emoji_order":"769","aliases_ascii":["<3"]},{"name":"yellow heart","shortname":":yellow_heart:","category":"symbols","emoji_order":"770"},{"name":"green heart","shortname":":green_heart:","category":"symbols","emoji_order":"771"},{"name":"blue heart","shortname":":blue_heart:","category":"symbols","emoji_order":"772"},{"name":"purple heart","shortname":":purple_heart:","category":"symbols","emoji_order":"773"},{"name":"broken heart","shortname":":broken_heart:","category":"symbols","emoji_order":"774","aliases_ascii":["</3"]},{"name":"heavy heart exclamation mark ornament","shortname":":heart_exclamation:","category":"symbols","emoji_order":"775"},{"name":"two hearts","shortname":":two_hearts:","category":"symbols","emoji_order":"776"},{"name":"revolving hearts","shortname":":revolving_hearts:","category":"symbols","emoji_order":"777"},{"name":"beating heart","shortname":":heartbeat:","category":"symbols","emoji_order":"778"},{"name":"growing heart","shortname":":heartpulse:","category":"symbols","emoji_order":"779"},{"name":"sparkling heart","shortname":":sparkling_heart:","category":"symbols","emoji_order":"780"},{"name":"heart with arrow","shortname":":cupid:","category":"symbols","emoji_order":"781"},{"name":"heart with ribbon","shortname":":gift_heart:","category":"symbols","emoji_order":"782"},{"name":"heart decoration","shortname":":heart_decoration:","category":"symbols","emoji_order":"783"},{"name":"peace symbol","shortname":":peace:","category":"symbols","emoji_order":"784"},{"name":"latin cross","shortname":":cross:","category":"symbols","emoji_order":"785"},{"name":"star and crescent","shortname":":star_and_crescent:","category":"symbols","emoji_order":"786"},{"name":"om symbol","shortname":":om_symbol:","category":"symbols","emoji_order":"787"},{"name":"wheel of dharma","shortname":":wheel_of_dharma:","category":"symbols","emoji_order":"788"},{"name":"star of david","shortname":":star_of_david:","category":"symbols","emoji_order":"789"},{"name":"six pointed star with middle dot","shortname":":six_pointed_star:","category":"symbols","emoji_order":"790"},{"name":"menorah with nine branches","shortname":":menorah:","category":"symbols","emoji_order":"791"},{"name":"yin yang","shortname":":yin_yang:","category":"symbols","emoji_order":"792"},{"name":"orthodox cross","shortname":":orthodox_cross:","category":"symbols","emoji_order":"793"},{"name":"place of worship","shortname":":place_of_worship:","category":"symbols","emoji_order":"794"},{"name":"ophiuchus","shortname":":ophiuchus:","category":"symbols","emoji_order":"795"},{"name":"aries","shortname":":aries:","category":"symbols","emoji_order":"796"},{"name":"taurus","shortname":":taurus:","category":"symbols","emoji_order":"797"},{"name":"gemini","shortname":":gemini:","category":"symbols","emoji_order":"798"},{"name":"cancer","shortname":":cancer:","category":"symbols","emoji_order":"799"},{"name":"leo","shortname":":leo:","category":"symbols","emoji_order":"800"},{"name":"virgo","shortname":":virgo:","category":"symbols","emoji_order":"801"},{"name":"libra","shortname":":libra:","category":"symbols","emoji_order":"802"},{"name":"scorpius","shortname":":scorpius:","category":"symbols","emoji_order":"803"},{"name":"sagittarius","shortname":":sagittarius:","category":"symbols","emoji_order":"804"},{"name":"capricorn","shortname":":capricorn:","category":"symbols","emoji_order":"805"},{"name":"aquarius","shortname":":aquarius:","category":"symbols","emoji_order":"806"},{"name":"pisces","shortname":":pisces:","category":"symbols","emoji_order":"807"},{"name":"squared id","shortname":":id:","category":"symbols","emoji_order":"808"},{"name":"atom symbol","shortname":":atom:","category":"symbols","emoji_order":"809"},{"name":"squared cjk unified ideograph-7a7a","shortname":":u7a7a:","category":"symbols","emoji_order":"810"},{"name":"squared cjk unified ideograph-5272","shortname":":u5272:","category":"symbols","emoji_order":"811"},{"name":"radioactive sign","shortname":":radioactive:","category":"symbols","emoji_order":"812"},{"name":"biohazard sign","shortname":":biohazard:","category":"symbols","emoji_order":"813"},{"name":"mobile phone off","shortname":":mobile_phone_off:","category":"symbols","emoji_order":"814"},{"name":"vibration mode","shortname":":vibration_mode:","category":"symbols","emoji_order":"815"},{"name":"squared cjk unified ideograph-6709","shortname":":u6709:","category":"symbols","emoji_order":"816"},{"name":"squared cjk unified ideograph-7121","shortname":":u7121:","category":"symbols","emoji_order":"817"},{"name":"squared cjk unified ideograph-7533","shortname":":u7533:","category":"symbols","emoji_order":"818"},{"name":"squared cjk unified ideograph-55b6","shortname":":u55b6:","category":"symbols","emoji_order":"819"},{"name":"squared cjk unified ideograph-6708","shortname":":u6708:","category":"symbols","emoji_order":"820"},{"name":"eight pointed black star","shortname":":eight_pointed_black_star:","category":"symbols","emoji_order":"821"},{"name":"squared vs","shortname":":vs:","category":"symbols","emoji_order":"822"},{"name":"circled ideograph accept","shortname":":accept:","category":"symbols","emoji_order":"823"},{"name":"white flower","shortname":":white_flower:","category":"symbols","emoji_order":"824"},{"name":"circled ideograph advantage","shortname":":ideograph_advantage:","category":"symbols","emoji_order":"825"},{"name":"circled ideograph secret","shortname":":secret:","category":"symbols","emoji_order":"826"},{"name":"circled ideograph congratulation","shortname":":congratulations:","category":"symbols","emoji_order":"827"},{"name":"squared cjk unified ideograph-5408","shortname":":u5408:","category":"symbols","emoji_order":"828"},{"name":"squared cjk unified ideograph-6e80","shortname":":u6e80:","category":"symbols","emoji_order":"829"},{"name":"squared cjk unified ideograph-7981","shortname":":u7981:","category":"symbols","emoji_order":"830"},{"name":"negative squared latin capital letter a","shortname":":a:","category":"symbols","emoji_order":"831"},{"name":"negative squared latin capital letter b","shortname":":b:","category":"symbols","emoji_order":"832"},{"name":"negative squared ab","shortname":":ab:","category":"symbols","emoji_order":"833"},{"name":"squared cl","shortname":":cl:","category":"symbols","emoji_order":"834"},{"name":"negative squared latin capital letter o","shortname":":o2:","category":"symbols","emoji_order":"835"},{"name":"squared sos","shortname":":sos:","category":"symbols","emoji_order":"836"},{"name":"no entry","shortname":":no_entry:","category":"symbols","emoji_order":"837"},{"name":"name badge","shortname":":name_badge:","category":"symbols","emoji_order":"838"},{"name":"no entry sign","shortname":":no_entry_sign:","category":"symbols","emoji_order":"839"},{"name":"cross mark","shortname":":x:","category":"symbols","emoji_order":"840"},{"name":"heavy large circle","shortname":":o:","category":"symbols","emoji_order":"841"},{"name":"anger symbol","shortname":":anger:","category":"symbols","emoji_order":"842"},{"name":"hot springs","shortname":":hotsprings:","category":"symbols","emoji_order":"843"},{"name":"no pedestrians","shortname":":no_pedestrians:","category":"symbols","emoji_order":"844"},{"name":"do not litter symbol","shortname":":do_not_litter:","category":"symbols","emoji_order":"845"},{"name":"no bicycles","shortname":":no_bicycles:","category":"symbols","emoji_order":"846"},{"name":"non-potable water symbol","shortname":":non-potable_water:","category":"symbols","emoji_order":"847"},{"name":"no one under eighteen symbol","shortname":":underage:","category":"symbols","emoji_order":"848"},{"name":"no mobile phones","shortname":":no_mobile_phones:","category":"symbols","emoji_order":"849"},{"name":"heavy exclamation mark symbol","shortname":":exclamation:","category":"symbols","emoji_order":"850"},{"name":"white exclamation mark ornament","shortname":":grey_exclamation:","category":"symbols","emoji_order":"851"},{"name":"black question mark ornament","shortname":":question:","category":"symbols","emoji_order":"852"},{"name":"white question mark ornament","shortname":":grey_question:","category":"symbols","emoji_order":"853"},{"name":"double exclamation mark","shortname":":bangbang:","category":"symbols","emoji_order":"854"},{"name":"exclamation question mark","shortname":":interrobang:","category":"symbols","emoji_order":"855"},{"name":"low brightness symbol","shortname":":low_brightness:","category":"symbols","emoji_order":"857"},{"name":"high brightness symbol","shortname":":high_brightness:","category":"symbols","emoji_order":"858"},{"name":"trident emblem","shortname":":trident:","category":"symbols","emoji_order":"859"},{"name":"fleur-de-lis","shortname":":fleur-de-lis:","category":"symbols","emoji_order":"860"},{"name":"part alternation mark","shortname":":part_alternation_mark:","category":"symbols","emoji_order":"861"},{"name":"warning sign","shortname":":warning:","category":"symbols","emoji_order":"862"},{"name":"children crossing","shortname":":children_crossing:","category":"symbols","emoji_order":"863"},{"name":"japanese symbol for beginner","shortname":":beginner:","category":"symbols","emoji_order":"864"},{"name":"black universal recycling symbol","shortname":":recycle:","category":"symbols","emoji_order":"865"},{"name":"squared cjk unified ideograph-6307","shortname":":u6307:","category":"symbols","emoji_order":"866"},{"name":"chart with upwards trend and yen sign","shortname":":chart:","category":"symbols","emoji_order":"867"},{"name":"sparkle","shortname":":sparkle:","category":"symbols","emoji_order":"868"},{"name":"eight spoked asterisk","shortname":":eight_spoked_asterisk:","category":"symbols","emoji_order":"869"},{"name":"negative squared cross mark","shortname":":negative_squared_cross_mark:","category":"symbols","emoji_order":"870"},{"name":"white heavy check mark","shortname":":white_check_mark:","category":"symbols","emoji_order":"871"},{"name":"diamond shape with a dot inside","shortname":":diamond_shape_with_a_dot_inside:","category":"symbols","emoji_order":"872"},{"name":"cyclone","shortname":":cyclone:","category":"symbols","emoji_order":"873"},{"name":"double curly loop","shortname":":loop:","category":"symbols","emoji_order":"874"},{"name":"globe with meridians","shortname":":globe_with_meridians:","category":"symbols","emoji_order":"875"},{"name":"circled latin capital letter m","shortname":":m:","category":"symbols","emoji_order":"876"},{"name":"automated teller machine","shortname":":atm:","category":"symbols","emoji_order":"877"},{"name":"squared katakana sa","shortname":":sa:","category":"symbols","emoji_order":"878"},{"name":"passport control","shortname":":passport_control:","category":"symbols","emoji_order":"879"},{"name":"customs","shortname":":customs:","category":"symbols","emoji_order":"880"},{"name":"baggage claim","shortname":":baggage_claim:","category":"symbols","emoji_order":"881"},{"name":"left luggage","shortname":":left_luggage:","category":"symbols","emoji_order":"882"},{"name":"wheelchair symbol","shortname":":wheelchair:","category":"symbols","emoji_order":"883"},{"name":"no smoking symbol","shortname":":no_smoking:","category":"symbols","emoji_order":"884"},{"name":"water closet","shortname":":wc:","category":"symbols","emoji_order":"885"},{"name":"negative squared latin capital letter p","shortname":":parking:","category":"symbols","emoji_order":"886"},{"name":"potable water symbol","shortname":":potable_water:","category":"symbols","emoji_order":"887"},{"name":"mens symbol","shortname":":mens:","category":"symbols","emoji_order":"888"},{"name":"womens symbol","shortname":":womens:","category":"symbols","emoji_order":"889"},{"name":"baby symbol","shortname":":baby_symbol:","category":"symbols","emoji_order":"890"},{"name":"restroom","shortname":":restroom:","category":"symbols","emoji_order":"891"},{"name":"put litter in its place symbol","shortname":":put_litter_in_its_place:","category":"symbols","emoji_order":"892"},{"name":"cinema","shortname":":cinema:","category":"symbols","emoji_order":"893"},{"name":"antenna with bars","shortname":":signal_strength:","category":"symbols","emoji_order":"894"},{"name":"squared katakana koko","shortname":":koko:","category":"symbols","emoji_order":"895"},{"name":"squared ng","shortname":":ng:","category":"symbols","emoji_order":"896"},{"name":"squared ok","shortname":":ok:","category":"symbols","emoji_order":"897"},{"name":"squared up with exclamation mark","shortname":":up:","category":"symbols","emoji_order":"898"},{"name":"squared cool","shortname":":cool:","category":"symbols","emoji_order":"899"},{"name":"squared new","shortname":":new:","category":"symbols","emoji_order":"900"},{"name":"squared free","shortname":":free:","category":"symbols","emoji_order":"901"},{"name":"keycap digit zero","shortname":":zero:","category":"symbols","emoji_order":"902"},{"name":"keycap digit one","shortname":":one:","category":"symbols","emoji_order":"903"},{"name":"keycap digit two","shortname":":two:","category":"symbols","emoji_order":"904"},{"name":"keycap digit three","shortname":":three:","category":"symbols","emoji_order":"905"},{"name":"keycap digit four","shortname":":four:","category":"symbols","emoji_order":"906"},{"name":"keycap digit five","shortname":":five:","category":"symbols","emoji_order":"907"},{"name":"keycap digit six","shortname":":six:","category":"symbols","emoji_order":"908"},{"name":"keycap digit seven","shortname":":seven:","category":"symbols","emoji_order":"909"},{"name":"keycap digit eight","shortname":":eight:","category":"symbols","emoji_order":"910"},{"name":"keycap digit nine","shortname":":nine:","category":"symbols","emoji_order":"911"},{"name":"keycap ten","shortname":":ten:","category":"symbols","emoji_order":"912"},{"name":"black right-pointing triangle","shortname":":arrow_forward:","category":"symbols","emoji_order":"914"},{"name":"double vertical bar","shortname":":pause_button:","category":"symbols","emoji_order":"915"},{"name":"black right-pointing double triangle with double vertical bar","shortname":":play_pause:","category":"symbols","emoji_order":"916"},{"name":"black square for stop","shortname":":stop_button:","category":"symbols","emoji_order":"917"},{"name":"black circle for record","shortname":":record_button:","category":"symbols","emoji_order":"918"},{"name":"black right-pointing double triangle with vertical bar","shortname":":track_next:","category":"symbols","emoji_order":"919"},{"name":"black left-pointing double triangle with vertical bar","shortname":":track_previous:","category":"symbols","emoji_order":"920"},{"name":"black right-pointing double triangle","shortname":":fast_forward:","category":"symbols","emoji_order":"921"},{"name":"black left-pointing double triangle","shortname":":rewind:","category":"symbols","emoji_order":"922"},{"name":"twisted rightwards arrows","shortname":":twisted_rightwards_arrows:","category":"symbols","emoji_order":"923"},{"name":"clockwise rightwards and leftwards open circle arrows","shortname":":repeat:","category":"symbols","emoji_order":"924"},{"name":"clockwise rightwards and leftwards open circle arrows with circled one overlay","shortname":":repeat_one:","category":"symbols","emoji_order":"925"},{"name":"black left-pointing triangle","shortname":":arrow_backward:","category":"symbols","emoji_order":"926"},{"name":"up-pointing small red triangle","shortname":":arrow_up_small:","category":"symbols","emoji_order":"927"},{"name":"down-pointing small red triangle","shortname":":arrow_down_small:","category":"symbols","emoji_order":"928"},{"name":"black up-pointing double triangle","shortname":":arrow_double_up:","category":"symbols","emoji_order":"929"},{"name":"black down-pointing double triangle","shortname":":arrow_double_down:","category":"symbols","emoji_order":"930"},{"name":"black rightwards arrow","shortname":":arrow_right:","category":"symbols","emoji_order":"931"},{"name":"leftwards black arrow","shortname":":arrow_left:","category":"symbols","emoji_order":"932"},{"name":"upwards black arrow","shortname":":arrow_up:","category":"symbols","emoji_order":"933"},{"name":"downwards black arrow","shortname":":arrow_down:","category":"symbols","emoji_order":"934"},{"name":"north east arrow","shortname":":arrow_upper_right:","category":"symbols","emoji_order":"935"},{"name":"south east arrow","shortname":":arrow_lower_right:","category":"symbols","emoji_order":"936"},{"name":"south west arrow","shortname":":arrow_lower_left:","category":"symbols","emoji_order":"937"},{"name":"north west arrow","shortname":":arrow_upper_left:","category":"symbols","emoji_order":"938"},{"name":"up down arrow","shortname":":arrow_up_down:","category":"symbols","emoji_order":"939"},{"name":"left right arrow","shortname":":left_right_arrow:","category":"symbols","emoji_order":"940"},{"name":"anticlockwise downwards and upwards open circle arrows","shortname":":arrows_counterclockwise:","category":"symbols","emoji_order":"941"},{"name":"rightwards arrow with hook","shortname":":arrow_right_hook:","category":"symbols","emoji_order":"942"},{"name":"leftwards arrow with hook","shortname":":leftwards_arrow_with_hook:","category":"symbols","emoji_order":"943"},{"name":"arrow pointing rightwards then curving upwards","shortname":":arrow_heading_up:","category":"symbols","emoji_order":"944"},{"name":"arrow pointing rightwards then curving downwards","shortname":":arrow_heading_down:","category":"symbols","emoji_order":"945"},{"name":"keycap number sign","shortname":":hash:","category":"symbols","emoji_order":"946"},{"name":"keycap asterisk","shortname":":asterisk:","category":"symbols","emoji_order":"947"},{"name":"information source","shortname":":information_source:","category":"symbols","emoji_order":"948"},{"name":"input symbol for latin letters","shortname":":abc:","category":"symbols","emoji_order":"949"},{"name":"input symbol for latin small letters","shortname":":abcd:","category":"symbols","emoji_order":"950"},{"name":"input symbol for latin capital letters","shortname":":capital_abcd:","category":"symbols","emoji_order":"951"},{"name":"input symbol for symbols","shortname":":symbols:","category":"symbols","emoji_order":"952"},{"name":"musical note","shortname":":musical_note:","category":"symbols","emoji_order":"953"},{"name":"multiple musical notes","shortname":":notes:","category":"symbols","emoji_order":"954"},{"name":"wavy dash","shortname":":wavy_dash:","category":"symbols","emoji_order":"955"},{"name":"curly loop","shortname":":curly_loop:","category":"symbols","emoji_order":"956"},{"name":"heavy check mark","shortname":":heavy_check_mark:","category":"symbols","emoji_order":"957"},{"name":"clockwise downwards and upwards open circle arrows","shortname":":arrows_clockwise:","category":"symbols","emoji_order":"958"},{"name":"heavy plus sign","shortname":":heavy_plus_sign:","category":"symbols","emoji_order":"959"},{"name":"heavy minus sign","shortname":":heavy_minus_sign:","category":"symbols","emoji_order":"960"},{"name":"heavy division sign","shortname":":heavy_division_sign:","category":"symbols","emoji_order":"961"},{"name":"heavy multiplication x","shortname":":heavy_multiplication_x:","category":"symbols","emoji_order":"962"},{"name":"heavy dollar sign","shortname":":heavy_dollar_sign:","category":"symbols","emoji_order":"963"},{"name":"currency exchange","shortname":":currency_exchange:","category":"symbols","emoji_order":"964"},{"name":"copyright sign","shortname":":copyright:","category":"symbols","emoji_order":"965"},{"name":"registered sign","shortname":":registered:","category":"symbols","emoji_order":"966"},{"name":"trade mark sign","shortname":":tm:","category":"symbols","emoji_order":"967"},{"name":"end with leftwards arrow above","shortname":":end:","category":"symbols","emoji_order":"968"},{"name":"back with leftwards arrow above","shortname":":back:","category":"symbols","emoji_order":"969"},{"name":"on with exclamation mark with left right arrow abo","shortname":":on:","category":"symbols","emoji_order":"970"},{"name":"top with upwards arrow above","shortname":":top:","category":"symbols","emoji_order":"971"},{"name":"soon with rightwards arrow above","shortname":":soon:","category":"symbols","emoji_order":"972"},{"name":"ballot box with check","shortname":":ballot_box_with_check:","category":"symbols","emoji_order":"973"},{"name":"radio button","shortname":":radio_button:","category":"symbols","emoji_order":"974"},{"name":"medium white circle","shortname":":white_circle:","category":"symbols","emoji_order":"975"},{"name":"medium black circle","shortname":":black_circle:","category":"symbols","emoji_order":"976"},{"name":"large red circle","shortname":":red_circle:","category":"symbols","emoji_order":"977"},{"name":"large blue circle","shortname":":large_blue_circle:","category":"symbols","emoji_order":"978"},{"name":"small orange diamond","shortname":":small_orange_diamond:","category":"symbols","emoji_order":"979"},{"name":"small blue diamond","shortname":":small_blue_diamond:","category":"symbols","emoji_order":"980"},{"name":"large orange diamond","shortname":":large_orange_diamond:","category":"symbols","emoji_order":"981"},{"name":"large blue diamond","shortname":":large_blue_diamond:","category":"symbols","emoji_order":"982"},{"name":"up-pointing red triangle","shortname":":small_red_triangle:","category":"symbols","emoji_order":"983"},{"name":"black small square","shortname":":black_small_square:","category":"symbols","emoji_order":"984"},{"name":"white small square","shortname":":white_small_square:","category":"symbols","emoji_order":"985"},{"name":"black large square","shortname":":black_large_square:","category":"symbols","emoji_order":"986"},{"name":"white large square","shortname":":white_large_square:","category":"symbols","emoji_order":"987"},{"name":"down-pointing red triangle","shortname":":small_red_triangle_down:","category":"symbols","emoji_order":"988"},{"name":"black medium square","shortname":":black_medium_square:","category":"symbols","emoji_order":"989"},{"name":"white medium square","shortname":":white_medium_square:","category":"symbols","emoji_order":"990"},{"name":"black medium small square","shortname":":black_medium_small_square:","category":"symbols","emoji_order":"991"},{"name":"white medium small square","shortname":":white_medium_small_square:","category":"symbols","emoji_order":"992"},{"name":"black square button","shortname":":black_square_button:","category":"symbols","emoji_order":"993"},{"name":"white square button","shortname":":white_square_button:","category":"symbols","emoji_order":"994"},{"name":"speaker","shortname":":speaker:","category":"symbols","emoji_order":"995"},{"name":"speaker with one sound wave","shortname":":sound:","category":"symbols","emoji_order":"996"},{"name":"speaker with three sound waves","shortname":":loud_sound:","category":"symbols","emoji_order":"997"},{"name":"speaker with cancellation stroke","shortname":":mute:","category":"symbols","emoji_order":"998"},{"name":"cheering megaphone","shortname":":mega:","category":"symbols","emoji_order":"999"},{"name":"public address loudspeaker","shortname":":loudspeaker:","category":"symbols","emoji_order":"1000"},{"name":"bell","shortname":":bell:","category":"symbols","emoji_order":"1001"},{"name":"bell with cancellation stroke","shortname":":no_bell:","category":"symbols","emoji_order":"1002"},{"name":"playing card black joker","shortname":":black_joker:","category":"symbols","emoji_order":"1003"},{"name":"mahjong tile red dragon","shortname":":mahjong:","category":"symbols","emoji_order":"1004"},{"name":"black spade suit","shortname":":spades:","category":"symbols","emoji_order":"1005"},{"name":"black club suit","shortname":":clubs:","category":"symbols","emoji_order":"1006"},{"name":"black heart suit","shortname":":hearts:","category":"symbols","emoji_order":"1007"},{"name":"black diamond suit","shortname":":diamonds:","category":"symbols","emoji_order":"1008"},{"name":"flower playing cards","shortname":":flower_playing_cards:","category":"symbols","emoji_order":"1009"},{"name":"thought balloon","shortname":":thought_balloon:","category":"symbols","emoji_order":"1010"},{"name":"right anger bubble","shortname":":anger_right:","category":"symbols","emoji_order":"1011"},{"name":"speech balloon","shortname":":speech_balloon:","category":"symbols","emoji_order":"1012"},{"name":"clock face one oclock","shortname":":clock1:","category":"symbols","emoji_order":"1013"},{"name":"clock face two oclock","shortname":":clock2:","category":"symbols","emoji_order":"1014"},{"name":"clock face three oclock","shortname":":clock3:","category":"symbols","emoji_order":"1015"},{"name":"clock face four oclock","shortname":":clock4:","category":"symbols","emoji_order":"1016"},{"name":"clock face five oclock","shortname":":clock5:","category":"symbols","emoji_order":"1017"},{"name":"clock face six oclock","shortname":":clock6:","category":"symbols","emoji_order":"1018"},{"name":"clock face seven oclock","shortname":":clock7:","category":"symbols","emoji_order":"1019"},{"name":"clock face eight oclock","shortname":":clock8:","category":"symbols","emoji_order":"1020"},{"name":"clock face nine oclock","shortname":":clock9:","category":"symbols","emoji_order":"1021"},{"name":"clock face ten oclock","shortname":":clock10:","category":"symbols","emoji_order":"1022"},{"name":"clock face eleven oclock","shortname":":clock11:","category":"symbols","emoji_order":"1023"},{"name":"clock face twelve oclock","shortname":":clock12:","category":"symbols","emoji_order":"1024"},{"name":"clock face one-thirty","shortname":":clock130:","category":"symbols","emoji_order":"1025"},{"name":"clock face two-thirty","shortname":":clock230:","category":"symbols","emoji_order":"1026"},{"name":"clock face three-thirty","shortname":":clock330:","category":"symbols","emoji_order":"1027"},{"name":"clock face four-thirty","shortname":":clock430:","category":"symbols","emoji_order":"1028"},{"name":"clock face five-thirty","shortname":":clock530:","category":"symbols","emoji_order":"1029"},{"name":"clock face six-thirty","shortname":":clock630:","category":"symbols","emoji_order":"1030"},{"name":"clock face seven-thirty","shortname":":clock730:","category":"symbols","emoji_order":"1031"},{"name":"clock face eight-thirty","shortname":":clock830:","category":"symbols","emoji_order":"1032"},{"name":"clock face nine-thirty","shortname":":clock930:","category":"symbols","emoji_order":"1033"},{"name":"clock face ten-thirty","shortname":":clock1030:","category":"symbols","emoji_order":"1034"},{"name":"clock face eleven-thirty","shortname":":clock1130:","category":"symbols","emoji_order":"1035"},{"name":"clock face twelve-thirty","shortname":":clock1230:","category":"symbols","emoji_order":"1036"},{"name":"eye in speech bubble","shortname":":eye_in_speech_bubble:","category":"symbols","emoji_order":"1037"},{"name":"ascension","shortname":":flag_ac:","category":"flags","emoji_order":"1038"},{"name":"afghanistan","shortname":":flag_af:","category":"flags","emoji_order":"1039"},{"name":"albania","shortname":":flag_al:","category":"flags","emoji_order":"1040"},{"name":"algeria","shortname":":flag_dz:","category":"flags","emoji_order":"1041"},{"name":"andorra","shortname":":flag_ad:","category":"flags","emoji_order":"1042"},{"name":"angola","shortname":":flag_ao:","category":"flags","emoji_order":"1043"},{"name":"anguilla","shortname":":flag_ai:","category":"flags","emoji_order":"1044"},{"name":"antigua and barbuda","shortname":":flag_ag:","category":"flags","emoji_order":"1045"},{"name":"argentina","shortname":":flag_ar:","category":"flags","emoji_order":"1046"},{"name":"armenia","shortname":":flag_am:","category":"flags","emoji_order":"1047"},{"name":"aruba","shortname":":flag_aw:","category":"flags","emoji_order":"1048"},{"name":"australia","shortname":":flag_au:","category":"flags","emoji_order":"1049"},{"name":"austria","shortname":":flag_at:","category":"flags","emoji_order":"1050"},{"name":"azerbaijan","shortname":":flag_az:","category":"flags","emoji_order":"1051"},{"name":"the bahamas","shortname":":flag_bs:","category":"flags","emoji_order":"1052"},{"name":"bahrain","shortname":":flag_bh:","category":"flags","emoji_order":"1053"},{"name":"bangladesh","shortname":":flag_bd:","category":"flags","emoji_order":"1054"},{"name":"barbados","shortname":":flag_bb:","category":"flags","emoji_order":"1055"},{"name":"belarus","shortname":":flag_by:","category":"flags","emoji_order":"1056"},{"name":"belgium","shortname":":flag_be:","category":"flags","emoji_order":"1057"},{"name":"belize","shortname":":flag_bz:","category":"flags","emoji_order":"1058"},{"name":"benin","shortname":":flag_bj:","category":"flags","emoji_order":"1059"},{"name":"bermuda","shortname":":flag_bm:","category":"flags","emoji_order":"1060"},{"name":"bhutan","shortname":":flag_bt:","category":"flags","emoji_order":"1061"},{"name":"bolivia","shortname":":flag_bo:","category":"flags","emoji_order":"1062"},{"name":"bosnia and herzegovina","shortname":":flag_ba:","category":"flags","emoji_order":"1063"},{"name":"botswana","shortname":":flag_bw:","category":"flags","emoji_order":"1064"},{"name":"brazil","shortname":":flag_br:","category":"flags","emoji_order":"1065"},{"name":"brunei","shortname":":flag_bn:","category":"flags","emoji_order":"1066"},{"name":"bulgaria","shortname":":flag_bg:","category":"flags","emoji_order":"1067"},{"name":"burkina faso","shortname":":flag_bf:","category":"flags","emoji_order":"1068"},{"name":"burundi","shortname":":flag_bi:","category":"flags","emoji_order":"1069"},{"name":"cape verde","shortname":":flag_cv:","category":"flags","emoji_order":"1070"},{"name":"cambodia","shortname":":flag_kh:","category":"flags","emoji_order":"1071"},{"name":"cameroon","shortname":":flag_cm:","category":"flags","emoji_order":"1072"},{"name":"canada","shortname":":flag_ca:","category":"flags","emoji_order":"1073"},{"name":"cayman islands","shortname":":flag_ky:","category":"flags","emoji_order":"1074"},{"name":"central african republic","shortname":":flag_cf:","category":"flags","emoji_order":"1075"},{"name":"chad","shortname":":flag_td:","category":"flags","emoji_order":"1076"},{"name":"chile","shortname":":flag_cl:","category":"flags","emoji_order":"1077"},{"name":"china","shortname":":flag_cn:","category":"flags","emoji_order":"1078"},{"name":"colombia","shortname":":flag_co:","category":"flags","emoji_order":"1079"},{"name":"the comoros","shortname":":flag_km:","category":"flags","emoji_order":"1080"},{"name":"the republic of the congo","shortname":":flag_cg:","category":"flags","emoji_order":"1081"},{"name":"the democratic republic of the congo","shortname":":flag_cd:","category":"flags","emoji_order":"1082"},{"name":"costa rica","shortname":":flag_cr:","category":"flags","emoji_order":"1083"},{"name":"croatia","shortname":":flag_hr:","category":"flags","emoji_order":"1084"},{"name":"cuba","shortname":":flag_cu:","category":"flags","emoji_order":"1085"},{"name":"cyprus","shortname":":flag_cy:","category":"flags","emoji_order":"1086"},{"name":"the czech republic","shortname":":flag_cz:","category":"flags","emoji_order":"1087"},{"name":"denmark","shortname":":flag_dk:","category":"flags","emoji_order":"1088"},{"name":"djibouti","shortname":":flag_dj:","category":"flags","emoji_order":"1089"},{"name":"dominica","shortname":":flag_dm:","category":"flags","emoji_order":"1090"},{"name":"the dominican republic","shortname":":flag_do:","category":"flags","emoji_order":"1091"},{"name":"ecuador","shortname":":flag_ec:","category":"flags","emoji_order":"1092"},{"name":"egypt","shortname":":flag_eg:","category":"flags","emoji_order":"1093"},{"name":"el salvador","shortname":":flag_sv:","category":"flags","emoji_order":"1094"},{"name":"equatorial guinea","shortname":":flag_gq:","category":"flags","emoji_order":"1095"},{"name":"eritrea","shortname":":flag_er:","category":"flags","emoji_order":"1096"},{"name":"estonia","shortname":":flag_ee:","category":"flags","emoji_order":"1097"},{"name":"ethiopia","shortname":":flag_et:","category":"flags","emoji_order":"1098"},{"name":"falkland islands","shortname":":flag_fk:","category":"flags","emoji_order":"1099"},{"name":"faroe islands","shortname":":flag_fo:","category":"flags","emoji_order":"1100"},{"name":"fiji","shortname":":flag_fj:","category":"flags","emoji_order":"1101"},{"name":"finland","shortname":":flag_fi:","category":"flags","emoji_order":"1102"},{"name":"france","shortname":":flag_fr:","category":"flags","emoji_order":"1103"},{"name":"french polynesia","shortname":":flag_pf:","category":"flags","emoji_order":"1104"},{"name":"gabon","shortname":":flag_ga:","category":"flags","emoji_order":"1105"},{"name":"the gambia","shortname":":flag_gm:","category":"flags","emoji_order":"1106"},{"name":"georgia","shortname":":flag_ge:","category":"flags","emoji_order":"1107"},{"name":"germany","shortname":":flag_de:","category":"flags","emoji_order":"1108"},{"name":"ghana","shortname":":flag_gh:","category":"flags","emoji_order":"1109"},{"name":"gibraltar","shortname":":flag_gi:","category":"flags","emoji_order":"1110"},{"name":"greece","shortname":":flag_gr:","category":"flags","emoji_order":"1111"},{"name":"greenland","shortname":":flag_gl:","category":"flags","emoji_order":"1112"},{"name":"grenada","shortname":":flag_gd:","category":"flags","emoji_order":"1113"},{"name":"guam","shortname":":flag_gu:","category":"flags","emoji_order":"1114"},{"name":"guatemala","shortname":":flag_gt:","category":"flags","emoji_order":"1115"},{"name":"guinea","shortname":":flag_gn:","category":"flags","emoji_order":"1116"},{"name":"guinea-bissau","shortname":":flag_gw:","category":"flags","emoji_order":"1117"},{"name":"guyana","shortname":":flag_gy:","category":"flags","emoji_order":"1118"},{"name":"haiti","shortname":":flag_ht:","category":"flags","emoji_order":"1119"},{"name":"honduras","shortname":":flag_hn:","category":"flags","emoji_order":"1120"},{"name":"hong kong","shortname":":flag_hk:","category":"flags","emoji_order":"1121"},{"name":"hungary","shortname":":flag_hu:","category":"flags","emoji_order":"1122"},{"name":"iceland","shortname":":flag_is:","category":"flags","emoji_order":"1123"},{"name":"india","shortname":":flag_in:","category":"flags","emoji_order":"1124"},{"name":"indonesia","shortname":":flag_id:","category":"flags","emoji_order":"1125"},{"name":"iran","shortname":":flag_ir:","category":"flags","emoji_order":"1126"},{"name":"iraq","shortname":":flag_iq:","category":"flags","emoji_order":"1127"},{"name":"ireland","shortname":":flag_ie:","category":"flags","emoji_order":"1128"},{"name":"israel","shortname":":flag_il:","category":"flags","emoji_order":"1129"},{"name":"italy","shortname":":flag_it:","category":"flags","emoji_order":"1130"},{"name":"côte d’ivoire","shortname":":flag_ci:","category":"flags","emoji_order":"1131"},{"name":"jamaica","shortname":":flag_jm:","category":"flags","emoji_order":"1132"},{"name":"japan","shortname":":flag_jp:","category":"flags","emoji_order":"1133"},{"name":"jersey","shortname":":flag_je:","category":"flags","emoji_order":"1134"},{"name":"jordan","shortname":":flag_jo:","category":"flags","emoji_order":"1135"},{"name":"kazakhstan","shortname":":flag_kz:","category":"flags","emoji_order":"1136"},{"name":"kenya","shortname":":flag_ke:","category":"flags","emoji_order":"1137"},{"name":"kiribati","shortname":":flag_ki:","category":"flags","emoji_order":"1138"},{"name":"kosovo","shortname":":flag_xk:","category":"flags","emoji_order":"1139"},{"name":"kuwait","shortname":":flag_kw:","category":"flags","emoji_order":"1140"},{"name":"kyrgyzstan","shortname":":flag_kg:","category":"flags","emoji_order":"1141"},{"name":"laos","shortname":":flag_la:","category":"flags","emoji_order":"1142"},{"name":"latvia","shortname":":flag_lv:","category":"flags","emoji_order":"1143"},{"name":"lebanon","shortname":":flag_lb:","category":"flags","emoji_order":"1144"},{"name":"lesotho","shortname":":flag_ls:","category":"flags","emoji_order":"1145"},{"name":"liberia","shortname":":flag_lr:","category":"flags","emoji_order":"1146"},{"name":"libya","shortname":":flag_ly:","category":"flags","emoji_order":"1147"},{"name":"liechtenstein","shortname":":flag_li:","category":"flags","emoji_order":"1148"},{"name":"lithuania","shortname":":flag_lt:","category":"flags","emoji_order":"1149"},{"name":"luxembourg","shortname":":flag_lu:","category":"flags","emoji_order":"1150"},{"name":"macau","shortname":":flag_mo:","category":"flags","emoji_order":"1151"},{"name":"macedonia","shortname":":flag_mk:","category":"flags","emoji_order":"1152"},{"name":"madagascar","shortname":":flag_mg:","category":"flags","emoji_order":"1153"},{"name":"malawi","shortname":":flag_mw:","category":"flags","emoji_order":"1154"},{"name":"malaysia","shortname":":flag_my:","category":"flags","emoji_order":"1155"},{"name":"maldives","shortname":":flag_mv:","category":"flags","emoji_order":"1156"},{"name":"mali","shortname":":flag_ml:","category":"flags","emoji_order":"1157"},{"name":"malta","shortname":":flag_mt:","category":"flags","emoji_order":"1158"},{"name":"the marshall islands","shortname":":flag_mh:","category":"flags","emoji_order":"1159"},{"name":"mauritania","shortname":":flag_mr:","category":"flags","emoji_order":"1160"},{"name":"mauritius","shortname":":flag_mu:","category":"flags","emoji_order":"1161"},{"name":"mexico","shortname":":flag_mx:","category":"flags","emoji_order":"1162"},{"name":"micronesia","shortname":":flag_fm:","category":"flags","emoji_order":"1163"},{"name":"moldova","shortname":":flag_md:","category":"flags","emoji_order":"1164"},{"name":"monaco","shortname":":flag_mc:","category":"flags","emoji_order":"1165"},{"name":"mongolia","shortname":":flag_mn:","category":"flags","emoji_order":"1166"},{"name":"montenegro","shortname":":flag_me:","category":"flags","emoji_order":"1167"},{"name":"montserrat","shortname":":flag_ms:","category":"flags","emoji_order":"1168"},{"name":"morocco","shortname":":flag_ma:","category":"flags","emoji_order":"1169"},{"name":"mozambique","shortname":":flag_mz:","category":"flags","emoji_order":"1170"},{"name":"myanmar","shortname":":flag_mm:","category":"flags","emoji_order":"1171"},{"name":"namibia","shortname":":flag_na:","category":"flags","emoji_order":"1172"},{"name":"nauru","shortname":":flag_nr:","category":"flags","emoji_order":"1173"},{"name":"nepal","shortname":":flag_np:","category":"flags","emoji_order":"1174"},{"name":"the netherlands","shortname":":flag_nl:","category":"flags","emoji_order":"1175"},{"name":"new caledonia","shortname":":flag_nc:","category":"flags","emoji_order":"1176"},{"name":"new zealand","shortname":":flag_nz:","category":"flags","emoji_order":"1177"},{"name":"nicaragua","shortname":":flag_ni:","category":"flags","emoji_order":"1178"},{"name":"niger","shortname":":flag_ne:","category":"flags","emoji_order":"1179"},{"name":"nigeria","shortname":":flag_ng:","category":"flags","emoji_order":"1180"},{"name":"niue","shortname":":flag_nu:","category":"flags","emoji_order":"1181"},{"name":"north korea","shortname":":flag_kp:","category":"flags","emoji_order":"1182"},{"name":"norway","shortname":":flag_no:","category":"flags","emoji_order":"1183"},{"name":"oman","shortname":":flag_om:","category":"flags","emoji_order":"1184"},{"name":"pakistan","shortname":":flag_pk:","category":"flags","emoji_order":"1185"},{"name":"palau","shortname":":flag_pw:","category":"flags","emoji_order":"1186"},{"name":"palestinian authority","shortname":":flag_ps:","category":"flags","emoji_order":"1187"},{"name":"panama","shortname":":flag_pa:","category":"flags","emoji_order":"1188"},{"name":"papua new guinea","shortname":":flag_pg:","category":"flags","emoji_order":"1189"},{"name":"paraguay","shortname":":flag_py:","category":"flags","emoji_order":"1190"},{"name":"peru","shortname":":flag_pe:","category":"flags","emoji_order":"1191"},{"name":"the philippines","shortname":":flag_ph:","category":"flags","emoji_order":"1192"},{"name":"poland","shortname":":flag_pl:","category":"flags","emoji_order":"1193"},{"name":"portugal","shortname":":flag_pt:","category":"flags","emoji_order":"1194"},{"name":"puerto rico","shortname":":flag_pr:","category":"flags","emoji_order":"1195"},{"name":"qatar","shortname":":flag_qa:","category":"flags","emoji_order":"1196"},{"name":"romania","shortname":":flag_ro:","category":"flags","emoji_order":"1197"},{"name":"russia","shortname":":flag_ru:","category":"flags","emoji_order":"1198"},{"name":"rwanda","shortname":":flag_rw:","category":"flags","emoji_order":"1199"},{"name":"saint helena","shortname":":flag_sh:","category":"flags","emoji_order":"1200"},{"name":"saint kitts and nevis","shortname":":flag_kn:","category":"flags","emoji_order":"1201"},{"name":"saint lucia","shortname":":flag_lc:","category":"flags","emoji_order":"1202"},{"name":"saint vincent and the grenadines","shortname":":flag_vc:","category":"flags","emoji_order":"1203"},{"name":"samoa","shortname":":flag_ws:","category":"flags","emoji_order":"1204"},{"name":"san marino","shortname":":flag_sm:","category":"flags","emoji_order":"1205"},{"name":"são tomé and príncipe","shortname":":flag_st:","category":"flags","emoji_order":"1206"},{"name":"saudi arabia","shortname":":flag_sa:","category":"flags","emoji_order":"1207"},{"name":"senegal","shortname":":flag_sn:","category":"flags","emoji_order":"1208"},{"name":"serbia","shortname":":flag_rs:","category":"flags","emoji_order":"1209"},{"name":"the seychelles","shortname":":flag_sc:","category":"flags","emoji_order":"1210"},{"name":"sierra leone","shortname":":flag_sl:","category":"flags","emoji_order":"1211"},{"name":"singapore","shortname":":flag_sg:","category":"flags","emoji_order":"1212"},{"name":"slovakia","shortname":":flag_sk:","category":"flags","emoji_order":"1213"},{"name":"slovenia","shortname":":flag_si:","category":"flags","emoji_order":"1214"},{"name":"the solomon islands","shortname":":flag_sb:","category":"flags","emoji_order":"1215"},{"name":"somalia","shortname":":flag_so:","category":"flags","emoji_order":"1216"},{"name":"south africa","shortname":":flag_za:","category":"flags","emoji_order":"1217"},{"name":"korea","shortname":":flag_kr:","category":"flags","emoji_order":"1218"},{"name":"spain","shortname":":flag_es:","category":"flags","emoji_order":"1219"},{"name":"sri lanka","shortname":":flag_lk:","category":"flags","emoji_order":"1220"},{"name":"sudan","shortname":":flag_sd:","category":"flags","emoji_order":"1221"},{"name":"suriname","shortname":":flag_sr:","category":"flags","emoji_order":"1222"},{"name":"swaziland","shortname":":flag_sz:","category":"flags","emoji_order":"1223"},{"name":"sweden","shortname":":flag_se:","category":"flags","emoji_order":"1224"},{"name":"switzerland","shortname":":flag_ch:","category":"flags","emoji_order":"1225"},{"name":"syria","shortname":":flag_sy:","category":"flags","emoji_order":"1226"},{"name":"the republic of china","shortname":":flag_tw:","category":"flags","emoji_order":"1227"},{"name":"tajikistan","shortname":":flag_tj:","category":"flags","emoji_order":"1228"},{"name":"tanzania","shortname":":flag_tz:","category":"flags","emoji_order":"1229"},{"name":"thailand","shortname":":flag_th:","category":"flags","emoji_order":"1230"},{"name":"timor-leste","shortname":":flag_tl:","category":"flags","emoji_order":"1231"},{"name":"togo","shortname":":flag_tg:","category":"flags","emoji_order":"1232"},{"name":"tonga","shortname":":flag_to:","category":"flags","emoji_order":"1233"},{"name":"trinidad and tobago","shortname":":flag_tt:","category":"flags","emoji_order":"1234"},{"name":"tunisia","shortname":":flag_tn:","category":"flags","emoji_order":"1235"},{"name":"turkey","shortname":":flag_tr:","category":"flags","emoji_order":"1236"},{"name":"turkmenistan","shortname":":flag_tm:","category":"flags","emoji_order":"1237"},{"name":"tuvalu","shortname":":flag_tv:","category":"flags","emoji_order":"1238"},{"name":"uganda","shortname":":flag_ug:","category":"flags","emoji_order":"1239"},{"name":"ukraine","shortname":":flag_ua:","category":"flags","emoji_order":"1240"},{"name":"the united arab emirates","shortname":":flag_ae:","category":"flags","emoji_order":"1241"},{"name":"great britain","shortname":":flag_gb:","category":"flags","emoji_order":"1242"},{"name":"united states","shortname":":flag_us:","category":"flags","emoji_order":"1243"},{"name":"u.s. virgin islands","shortname":":flag_vi:","category":"flags","emoji_order":"1244"},{"name":"uruguay","shortname":":flag_uy:","category":"flags","emoji_order":"1245"},{"name":"uzbekistan","shortname":":flag_uz:","category":"flags","emoji_order":"1246"},{"name":"vanuatu","shortname":":flag_vu:","category":"flags","emoji_order":"1247"},{"name":"the vatican city","shortname":":flag_va:","category":"flags","emoji_order":"1248"},{"name":"venezuela","shortname":":flag_ve:","category":"flags","emoji_order":"1249"},{"name":"vietnam","shortname":":flag_vn:","category":"flags","emoji_order":"1250"},{"name":"wallis and futuna","shortname":":flag_wf:","category":"flags","emoji_order":"1251"},{"name":"western sahara","shortname":":flag_eh:","category":"flags","emoji_order":"1252"},{"name":"yemen","shortname":":flag_ye:","category":"flags","emoji_order":"1253"},{"name":"zambia","shortname":":flag_zm:","category":"flags","emoji_order":"1254"},{"name":"zimbabwe","shortname":":flag_zw:","category":"flags","emoji_order":"1255"},{"name":"réunion","shortname":":flag_re:","category":"flags","emoji_order":"1256"},{"name":"åland islands","shortname":":flag_ax:","category":"flags","emoji_order":"1257"},{"name":"tristan da cunha","shortname":":flag_ta:","category":"flags","emoji_order":"1258"},{"name":"british indian ocean territory","shortname":":flag_io:","category":"flags","emoji_order":"1259"},{"name":"caribbean netherlands","shortname":":flag_bq:","category":"flags","emoji_order":"1260"},{"name":"christmas island","shortname":":flag_cx:","category":"flags","emoji_order":"1261"},{"name":"cocos (keeling) islands","shortname":":flag_cc:","category":"flags","emoji_order":"1262"},{"name":"guernsey","shortname":":flag_gg:","category":"flags","emoji_order":"1263"},{"name":"isle of man","shortname":":flag_im:","category":"flags","emoji_order":"1264"},{"name":"mayotte","shortname":":flag_yt:","category":"flags","emoji_order":"1265"},{"name":"norfolk island","shortname":":flag_nf:","category":"flags","emoji_order":"1266"},{"name":"pitcairn","shortname":":flag_pn:","category":"flags","emoji_order":"1267"},{"name":"saint barthélemy","shortname":":flag_bl:","category":"flags","emoji_order":"1268"},{"name":"saint pierre and miquelon","shortname":":flag_pm:","category":"flags","emoji_order":"1269"},{"name":"south georgia","shortname":":flag_gs:","category":"flags","emoji_order":"1270"},{"name":"tokelau","shortname":":flag_tk:","category":"flags","emoji_order":"1271"},{"name":"bouvet island","shortname":":flag_bv:","category":"flags","emoji_order":"1272"},{"name":"heard island and mcdonald islands","shortname":":flag_hm:","category":"flags","emoji_order":"1273"},{"name":"svalbard and jan mayen","shortname":":flag_sj:","category":"flags","emoji_order":"1274"},{"name":"united states minor outlying islands","shortname":":flag_um:","category":"flags","emoji_order":"1275"},{"name":"canary islands","shortname":":flag_ic:","category":"flags","emoji_order":"1276"},{"name":"ceuta, melilla","shortname":":flag_ea:","category":"flags","emoji_order":"1277"},{"name":"clipperton island","shortname":":flag_cp:","category":"flags","emoji_order":"1278"},{"name":"diego garcia","shortname":":flag_dg:","category":"flags","emoji_order":"1279"},{"name":"american samoa","shortname":":flag_as:","category":"flags","emoji_order":"1280"},{"name":"antarctica","shortname":":flag_aq:","category":"flags","emoji_order":"1281"},{"name":"british virgin islands","shortname":":flag_vg:","category":"flags","emoji_order":"1282"},{"name":"cook islands","shortname":":flag_ck:","category":"flags","emoji_order":"1283"},{"name":"curaçao","shortname":":flag_cw:","category":"flags","emoji_order":"1284"},{"name":"european union","shortname":":flag_eu:","category":"flags","emoji_order":"1285"},{"name":"french guiana","shortname":":flag_gf:","category":"flags","emoji_order":"1286"},{"name":"french southern territories","shortname":":flag_tf:","category":"flags","emoji_order":"1287"},{"name":"guadeloupe","shortname":":flag_gp:","category":"flags","emoji_order":"1288"},{"name":"martinique","shortname":":flag_mq:","category":"flags","emoji_order":"1289"},{"name":"northern mariana islands","shortname":":flag_mp:","category":"flags","emoji_order":"1290"},{"name":"sint maarten","shortname":":flag_sx:","category":"flags","emoji_order":"1291"},{"name":"south sudan","shortname":":flag_ss:","category":"flags","emoji_order":"1292"},{"name":"turks and caicos islands","shortname":":flag_tc:","category":"flags","emoji_order":"1293"},{"name":"saint martin","shortname":":flag_mf:","category":"flags","emoji_order":"1294"},{"name":"person raising both hands in celebration tone 1","shortname":":raised_hands_tone1:","category":"people","emoji_order":"1295"},{"name":"person raising both hands in celebration tone 2","shortname":":raised_hands_tone2:","category":"people","emoji_order":"1296"},{"name":"person raising both hands in celebration tone 3","shortname":":raised_hands_tone3:","category":"people","emoji_order":"1297"},{"name":"person raising both hands in celebration tone 4","shortname":":raised_hands_tone4:","category":"people","emoji_order":"1298"},{"name":"person raising both hands in celebration tone 5","shortname":":raised_hands_tone5:","category":"people","emoji_order":"1299"},{"name":"clapping hands sign tone 1","shortname":":clap_tone1:","category":"people","emoji_order":"1300"},{"name":"clapping hands sign tone 2","shortname":":clap_tone2:","category":"people","emoji_order":"1301"},{"name":"clapping hands sign tone 3","shortname":":clap_tone3:","category":"people","emoji_order":"1302"},{"name":"clapping hands sign tone 4","shortname":":clap_tone4:","category":"people","emoji_order":"1303"},{"name":"clapping hands sign tone 5","shortname":":clap_tone5:","category":"people","emoji_order":"1304"},{"name":"waving hand sign tone 1","shortname":":wave_tone1:","category":"people","emoji_order":"1305"},{"name":"waving hand sign tone 2","shortname":":wave_tone2:","category":"people","emoji_order":"1306"},{"name":"waving hand sign tone 3","shortname":":wave_tone3:","category":"people","emoji_order":"1307"},{"name":"waving hand sign tone 4","shortname":":wave_tone4:","category":"people","emoji_order":"1308"},{"name":"waving hand sign tone 5","shortname":":wave_tone5:","category":"people","emoji_order":"1309"},{"name":"thumbs up sign tone 1","shortname":":thumbsup_tone1:","category":"people","emoji_order":"1310"},{"name":"thumbs up sign tone 2","shortname":":thumbsup_tone2:","category":"people","emoji_order":"1311"},{"name":"thumbs up sign tone 3","shortname":":thumbsup_tone3:","category":"people","emoji_order":"1312"},{"name":"thumbs up sign tone 4","shortname":":thumbsup_tone4:","category":"people","emoji_order":"1313"},{"name":"thumbs up sign tone 5","shortname":":thumbsup_tone5:","category":"people","emoji_order":"1314"},{"name":"thumbs down sign tone 1","shortname":":thumbsdown_tone1:","category":"people","emoji_order":"1315"},{"name":"thumbs down sign tone 2","shortname":":thumbsdown_tone2:","category":"people","emoji_order":"1316"},{"name":"thumbs down sign tone 3","shortname":":thumbsdown_tone3:","category":"people","emoji_order":"1317"},{"name":"thumbs down sign tone 4","shortname":":thumbsdown_tone4:","category":"people","emoji_order":"1318"},{"name":"thumbs down sign tone 5","shortname":":thumbsdown_tone5:","category":"people","emoji_order":"1319"},{"name":"fisted hand sign tone 1","shortname":":punch_tone1:","category":"people","emoji_order":"1320"},{"name":"fisted hand sign tone 2","shortname":":punch_tone2:","category":"people","emoji_order":"1321"},{"name":"fisted hand sign tone 3","shortname":":punch_tone3:","category":"people","emoji_order":"1322"},{"name":"fisted hand sign tone 4","shortname":":punch_tone4:","category":"people","emoji_order":"1323"},{"name":"fisted hand sign tone 5","shortname":":punch_tone5:","category":"people","emoji_order":"1324"},{"name":"raised fist tone 1","shortname":":fist_tone1:","category":"people","emoji_order":"1325"},{"name":"raised fist tone 2","shortname":":fist_tone2:","category":"people","emoji_order":"1326"},{"name":"raised fist tone 3","shortname":":fist_tone3:","category":"people","emoji_order":"1327"},{"name":"raised fist tone 4","shortname":":fist_tone4:","category":"people","emoji_order":"1328"},{"name":"raised fist tone 5","shortname":":fist_tone5:","category":"people","emoji_order":"1329"},{"name":"victory hand tone 1","shortname":":v_tone1:","category":"people","emoji_order":"1330"},{"name":"victory hand tone 2","shortname":":v_tone2:","category":"people","emoji_order":"1331"},{"name":"victory hand tone 3","shortname":":v_tone3:","category":"people","emoji_order":"1332"},{"name":"victory hand tone 4","shortname":":v_tone4:","category":"people","emoji_order":"1333"},{"name":"victory hand tone 5","shortname":":v_tone5:","category":"people","emoji_order":"1334"},{"name":"ok hand sign tone 1","shortname":":ok_hand_tone1:","category":"people","emoji_order":"1335"},{"name":"ok hand sign tone 2","shortname":":ok_hand_tone2:","category":"people","emoji_order":"1336"},{"name":"ok hand sign tone 3","shortname":":ok_hand_tone3:","category":"people","emoji_order":"1337"},{"name":"ok hand sign tone 4","shortname":":ok_hand_tone4:","category":"people","emoji_order":"1338"},{"name":"ok hand sign tone 5","shortname":":ok_hand_tone5:","category":"people","emoji_order":"1339"},{"name":"raised hand tone 1","shortname":":raised_hand_tone1:","category":"people","emoji_order":"1340"},{"name":"raised hand tone 2","shortname":":raised_hand_tone2:","category":"people","emoji_order":"1341"},{"name":"raised hand tone 3","shortname":":raised_hand_tone3:","category":"people","emoji_order":"1342"},{"name":"raised hand tone 4","shortname":":raised_hand_tone4:","category":"people","emoji_order":"1343"},{"name":"raised hand tone 5","shortname":":raised_hand_tone5:","category":"people","emoji_order":"1344"},{"name":"open hands sign tone 1","shortname":":open_hands_tone1:","category":"people","emoji_order":"1345"},{"name":"open hands sign tone 2","shortname":":open_hands_tone2:","category":"people","emoji_order":"1346"},{"name":"open hands sign tone 3","shortname":":open_hands_tone3:","category":"people","emoji_order":"1347"},{"name":"open hands sign tone 4","shortname":":open_hands_tone4:","category":"people","emoji_order":"1348"},{"name":"open hands sign tone 5","shortname":":open_hands_tone5:","category":"people","emoji_order":"1349"},{"name":"flexed biceps tone 1","shortname":":muscle_tone1:","category":"people","emoji_order":"1350"},{"name":"flexed biceps tone 2","shortname":":muscle_tone2:","category":"people","emoji_order":"1351"},{"name":"flexed biceps tone 3","shortname":":muscle_tone3:","category":"people","emoji_order":"1352"},{"name":"flexed biceps tone 4","shortname":":muscle_tone4:","category":"people","emoji_order":"1353"},{"name":"flexed biceps tone 5","shortname":":muscle_tone5:","category":"people","emoji_order":"1354"},{"name":"person with folded hands tone 1","shortname":":pray_tone1:","category":"people","emoji_order":"1355"},{"name":"person with folded hands tone 2","shortname":":pray_tone2:","category":"people","emoji_order":"1356"},{"name":"person with folded hands tone 3","shortname":":pray_tone3:","category":"people","emoji_order":"1357"},{"name":"person with folded hands tone 4","shortname":":pray_tone4:","category":"people","emoji_order":"1358"},{"name":"person with folded hands tone 5","shortname":":pray_tone5:","category":"people","emoji_order":"1359"},{"name":"white up pointing index tone 1","shortname":":point_up_tone1:","category":"people","emoji_order":"1360"},{"name":"white up pointing index tone 2","shortname":":point_up_tone2:","category":"people","emoji_order":"1361"},{"name":"white up pointing index tone 3","shortname":":point_up_tone3:","category":"people","emoji_order":"1362"},{"name":"white up pointing index tone 4","shortname":":point_up_tone4:","category":"people","emoji_order":"1363"},{"name":"white up pointing index tone 5","shortname":":point_up_tone5:","category":"people","emoji_order":"1364"},{"name":"white up pointing backhand index tone 1","shortname":":point_up_2_tone1:","category":"people","emoji_order":"1365"},{"name":"white up pointing backhand index tone 2","shortname":":point_up_2_tone2:","category":"people","emoji_order":"1366"},{"name":"white up pointing backhand index tone 3","shortname":":point_up_2_tone3:","category":"people","emoji_order":"1367"},{"name":"white up pointing backhand index tone 4","shortname":":point_up_2_tone4:","category":"people","emoji_order":"1368"},{"name":"white up pointing backhand index tone 5","shortname":":point_up_2_tone5:","category":"people","emoji_order":"1369"},{"name":"white down pointing backhand index tone 1","shortname":":point_down_tone1:","category":"people","emoji_order":"1370"},{"name":"white down pointing backhand index tone 2","shortname":":point_down_tone2:","category":"people","emoji_order":"1371"},{"name":"white down pointing backhand index tone 3","shortname":":point_down_tone3:","category":"people","emoji_order":"1372"},{"name":"white down pointing backhand index tone 4","shortname":":point_down_tone4:","category":"people","emoji_order":"1373"},{"name":"white down pointing backhand index tone 5","shortname":":point_down_tone5:","category":"people","emoji_order":"1374"},{"name":"white left pointing backhand index tone 1","shortname":":point_left_tone1:","category":"people","emoji_order":"1375"},{"name":"white left pointing backhand index tone 2","shortname":":point_left_tone2:","category":"people","emoji_order":"1376"},{"name":"white left pointing backhand index tone 3","shortname":":point_left_tone3:","category":"people","emoji_order":"1377"},{"name":"white left pointing backhand index tone 4","shortname":":point_left_tone4:","category":"people","emoji_order":"1378"},{"name":"white left pointing backhand index tone 5","shortname":":point_left_tone5:","category":"people","emoji_order":"1379"},{"name":"white right pointing backhand index tone 1","shortname":":point_right_tone1:","category":"people","emoji_order":"1380"},{"name":"white right pointing backhand index tone 2","shortname":":point_right_tone2:","category":"people","emoji_order":"1381"},{"name":"white right pointing backhand index tone 3","shortname":":point_right_tone3:","category":"people","emoji_order":"1382"},{"name":"white right pointing backhand index tone 4","shortname":":point_right_tone4:","category":"people","emoji_order":"1383"},{"name":"white right pointing backhand index tone 5","shortname":":point_right_tone5:","category":"people","emoji_order":"1384"},{"name":"reversed hand with middle finger extended tone 1","shortname":":middle_finger_tone1:","category":"people","emoji_order":"1385"},{"name":"reversed hand with middle finger extended tone 2","shortname":":middle_finger_tone2:","category":"people","emoji_order":"1386"},{"name":"reversed hand with middle finger extended tone 3","shortname":":middle_finger_tone3:","category":"people","emoji_order":"1387"},{"name":"reversed hand with middle finger extended tone 4","shortname":":middle_finger_tone4:","category":"people","emoji_order":"1388"},{"name":"reversed hand with middle finger extended tone 5","shortname":":middle_finger_tone5:","category":"people","emoji_order":"1389"},{"name":"raised hand with fingers splayed tone 1","shortname":":hand_splayed_tone1:","category":"people","emoji_order":"1390"},{"name":"raised hand with fingers splayed tone 2","shortname":":hand_splayed_tone2:","category":"people","emoji_order":"1391"},{"name":"raised hand with fingers splayed tone 3","shortname":":hand_splayed_tone3:","category":"people","emoji_order":"1392"},{"name":"raised hand with fingers splayed tone 4","shortname":":hand_splayed_tone4:","category":"people","emoji_order":"1393"},{"name":"raised hand with fingers splayed tone 5","shortname":":hand_splayed_tone5:","category":"people","emoji_order":"1394"},{"name":"sign of the horns tone 1","shortname":":metal_tone1:","category":"people","emoji_order":"1395"},{"name":"sign of the horns tone 2","shortname":":metal_tone2:","category":"people","emoji_order":"1396"},{"name":"sign of the horns tone 3","shortname":":metal_tone3:","category":"people","emoji_order":"1397"},{"name":"sign of the horns tone 4","shortname":":metal_tone4:","category":"people","emoji_order":"1398"},{"name":"sign of the horns tone 5","shortname":":metal_tone5:","category":"people","emoji_order":"1399"},{"name":"raised hand with part between middle and ring fingers tone 1","shortname":":vulcan_tone1:","category":"people","emoji_order":"1400"},{"name":"raised hand with part between middle and ring fingers tone 2","shortname":":vulcan_tone2:","category":"people","emoji_order":"1401"},{"name":"raised hand with part between middle and ring fingers tone 3","shortname":":vulcan_tone3:","category":"people","emoji_order":"1402"},{"name":"raised hand with part between middle and ring fingers tone 4","shortname":":vulcan_tone4:","category":"people","emoji_order":"1403"},{"name":"raised hand with part between middle and ring fingers tone 5","shortname":":vulcan_tone5:","category":"people","emoji_order":"1404"},{"name":"writing hand tone 1","shortname":":writing_hand_tone1:","category":"people","emoji_order":"1405"},{"name":"writing hand tone 2","shortname":":writing_hand_tone2:","category":"people","emoji_order":"1406"},{"name":"writing hand tone 3","shortname":":writing_hand_tone3:","category":"people","emoji_order":"1407"},{"name":"writing hand tone 4","shortname":":writing_hand_tone4:","category":"people","emoji_order":"1408"},{"name":"writing hand tone 5","shortname":":writing_hand_tone5:","category":"people","emoji_order":"1409"},{"name":"nail polish tone 1","shortname":":nail_care_tone1:","category":"people","emoji_order":"1410"},{"name":"nail polish tone 2","shortname":":nail_care_tone2:","category":"people","emoji_order":"1411"},{"name":"nail polish tone 3","shortname":":nail_care_tone3:","category":"people","emoji_order":"1412"},{"name":"nail polish tone 4","shortname":":nail_care_tone4:","category":"people","emoji_order":"1413"},{"name":"nail polish tone 5","shortname":":nail_care_tone5:","category":"people","emoji_order":"1414"},{"name":"ear tone 1","shortname":":ear_tone1:","category":"people","emoji_order":"1415"},{"name":"ear tone 2","shortname":":ear_tone2:","category":"people","emoji_order":"1416"},{"name":"ear tone 3","shortname":":ear_tone3:","category":"people","emoji_order":"1417"},{"name":"ear tone 4","shortname":":ear_tone4:","category":"people","emoji_order":"1418"},{"name":"ear tone 5","shortname":":ear_tone5:","category":"people","emoji_order":"1419"},{"name":"nose tone 1","shortname":":nose_tone1:","category":"people","emoji_order":"1420"},{"name":"nose tone 2","shortname":":nose_tone2:","category":"people","emoji_order":"1421"},{"name":"nose tone 3","shortname":":nose_tone3:","category":"people","emoji_order":"1422"},{"name":"nose tone 4","shortname":":nose_tone4:","category":"people","emoji_order":"1423"},{"name":"nose tone 5","shortname":":nose_tone5:","category":"people","emoji_order":"1424"},{"name":"baby tone 1","shortname":":baby_tone1:","category":"people","emoji_order":"1425"},{"name":"baby tone 2","shortname":":baby_tone2:","category":"people","emoji_order":"1426"},{"name":"baby tone 3","shortname":":baby_tone3:","category":"people","emoji_order":"1427"},{"name":"baby tone 4","shortname":":baby_tone4:","category":"people","emoji_order":"1428"},{"name":"baby tone 5","shortname":":baby_tone5:","category":"people","emoji_order":"1429"},{"name":"boy tone 1","shortname":":boy_tone1:","category":"people","emoji_order":"1430"},{"name":"boy tone 2","shortname":":boy_tone2:","category":"people","emoji_order":"1431"},{"name":"boy tone 3","shortname":":boy_tone3:","category":"people","emoji_order":"1432"},{"name":"boy tone 4","shortname":":boy_tone4:","category":"people","emoji_order":"1433"},{"name":"boy tone 5","shortname":":boy_tone5:","category":"people","emoji_order":"1434"},{"name":"girl tone 1","shortname":":girl_tone1:","category":"people","emoji_order":"1435"},{"name":"girl tone 2","shortname":":girl_tone2:","category":"people","emoji_order":"1436"},{"name":"girl tone 3","shortname":":girl_tone3:","category":"people","emoji_order":"1437"},{"name":"girl tone 4","shortname":":girl_tone4:","category":"people","emoji_order":"1438"},{"name":"girl tone 5","shortname":":girl_tone5:","category":"people","emoji_order":"1439"},{"name":"man tone 1","shortname":":man_tone1:","category":"people","emoji_order":"1440"},{"name":"man tone 2","shortname":":man_tone2:","category":"people","emoji_order":"1441"},{"name":"man tone 3","shortname":":man_tone3:","category":"people","emoji_order":"1442"},{"name":"man tone 4","shortname":":man_tone4:","category":"people","emoji_order":"1443"},{"name":"man tone 5","shortname":":man_tone5:","category":"people","emoji_order":"1444"},{"name":"woman tone 1","shortname":":woman_tone1:","category":"people","emoji_order":"1445"},{"name":"woman tone 2","shortname":":woman_tone2:","category":"people","emoji_order":"1446"},{"name":"woman tone 3","shortname":":woman_tone3:","category":"people","emoji_order":"1447"},{"name":"woman tone 4","shortname":":woman_tone4:","category":"people","emoji_order":"1448"},{"name":"woman tone 5","shortname":":woman_tone5:","category":"people","emoji_order":"1449"},{"name":"person with blond hair tone 1","shortname":":person_with_blond_hair_tone1:","category":"people","emoji_order":"1450"},{"name":"person with blond hair tone 2","shortname":":person_with_blond_hair_tone2:","category":"people","emoji_order":"1451"},{"name":"person with blond hair tone 3","shortname":":person_with_blond_hair_tone3:","category":"people","emoji_order":"1452"},{"name":"person with blond hair tone 4","shortname":":person_with_blond_hair_tone4:","category":"people","emoji_order":"1453"},{"name":"person with blond hair tone 5","shortname":":person_with_blond_hair_tone5:","category":"people","emoji_order":"1454"},{"name":"older man tone 1","shortname":":older_man_tone1:","category":"people","emoji_order":"1455"},{"name":"older man tone 2","shortname":":older_man_tone2:","category":"people","emoji_order":"1456"},{"name":"older man tone 3","shortname":":older_man_tone3:","category":"people","emoji_order":"1457"},{"name":"older man tone 4","shortname":":older_man_tone4:","category":"people","emoji_order":"1458"},{"name":"older man tone 5","shortname":":older_man_tone5:","category":"people","emoji_order":"1459"},{"name":"older woman tone 1","shortname":":older_woman_tone1:","category":"people","emoji_order":"1460"},{"name":"older woman tone 2","shortname":":older_woman_tone2:","category":"people","emoji_order":"1461"},{"name":"older woman tone 3","shortname":":older_woman_tone3:","category":"people","emoji_order":"1462"},{"name":"older woman tone 4","shortname":":older_woman_tone4:","category":"people","emoji_order":"1463"},{"name":"older woman tone 5","shortname":":older_woman_tone5:","category":"people","emoji_order":"1464"},{"name":"man with gua pi mao tone 1","shortname":":man_with_gua_pi_mao_tone1:","category":"people","emoji_order":"1465"},{"name":"man with gua pi mao tone 2","shortname":":man_with_gua_pi_mao_tone2:","category":"people","emoji_order":"1466"},{"name":"man with gua pi mao tone 3","shortname":":man_with_gua_pi_mao_tone3:","category":"people","emoji_order":"1467"},{"name":"man with gua pi mao tone 4","shortname":":man_with_gua_pi_mao_tone4:","category":"people","emoji_order":"1468"},{"name":"man with gua pi mao tone 5","shortname":":man_with_gua_pi_mao_tone5:","category":"people","emoji_order":"1469"},{"name":"man with turban tone 1","shortname":":man_with_turban_tone1:","category":"people","emoji_order":"1470"},{"name":"man with turban tone 2","shortname":":man_with_turban_tone2:","category":"people","emoji_order":"1471"},{"name":"man with turban tone 3","shortname":":man_with_turban_tone3:","category":"people","emoji_order":"1472"},{"name":"man with turban tone 4","shortname":":man_with_turban_tone4:","category":"people","emoji_order":"1473"},{"name":"man with turban tone 5","shortname":":man_with_turban_tone5:","category":"people","emoji_order":"1474"},{"name":"police officer tone 1","shortname":":cop_tone1:","category":"people","emoji_order":"1475"},{"name":"police officer tone 2","shortname":":cop_tone2:","category":"people","emoji_order":"1476"},{"name":"police officer tone 3","shortname":":cop_tone3:","category":"people","emoji_order":"1477"},{"name":"police officer tone 4","shortname":":cop_tone4:","category":"people","emoji_order":"1478"},{"name":"police officer tone 5","shortname":":cop_tone5:","category":"people","emoji_order":"1479"},{"name":"construction worker tone 1","shortname":":construction_worker_tone1:","category":"people","emoji_order":"1480"},{"name":"construction worker tone 2","shortname":":construction_worker_tone2:","category":"people","emoji_order":"1481"},{"name":"construction worker tone 3","shortname":":construction_worker_tone3:","category":"people","emoji_order":"1482"},{"name":"construction worker tone 4","shortname":":construction_worker_tone4:","category":"people","emoji_order":"1483"},{"name":"construction worker tone 5","shortname":":construction_worker_tone5:","category":"people","emoji_order":"1484"},{"name":"guardsman tone 1","shortname":":guardsman_tone1:","category":"people","emoji_order":"1485"},{"name":"guardsman tone 2","shortname":":guardsman_tone2:","category":"people","emoji_order":"1486"},{"name":"guardsman tone 3","shortname":":guardsman_tone3:","category":"people","emoji_order":"1487"},{"name":"guardsman tone 4","shortname":":guardsman_tone4:","category":"people","emoji_order":"1488"},{"name":"guardsman tone 5","shortname":":guardsman_tone5:","category":"people","emoji_order":"1489"},{"name":"father christmas tone 1","shortname":":santa_tone1:","category":"people","emoji_order":"1490"},{"name":"father christmas tone 2","shortname":":santa_tone2:","category":"people","emoji_order":"1491"},{"name":"father christmas tone 3","shortname":":santa_tone3:","category":"people","emoji_order":"1492"},{"name":"father christmas tone 4","shortname":":santa_tone4:","category":"people","emoji_order":"1493"},{"name":"father christmas tone 5","shortname":":santa_tone5:","category":"people","emoji_order":"1494"},{"name":"baby angel tone 1","shortname":":angel_tone1:","category":"people","emoji_order":"1495"},{"name":"baby angel tone 2","shortname":":angel_tone2:","category":"people","emoji_order":"1496"},{"name":"baby angel tone 3","shortname":":angel_tone3:","category":"people","emoji_order":"1497"},{"name":"baby angel tone 4","shortname":":angel_tone4:","category":"people","emoji_order":"1498"},{"name":"baby angel tone 5","shortname":":angel_tone5:","category":"people","emoji_order":"1499"},{"name":"princess tone 1","shortname":":princess_tone1:","category":"people","emoji_order":"1500"},{"name":"princess tone 2","shortname":":princess_tone2:","category":"people","emoji_order":"1501"},{"name":"princess tone 3","shortname":":princess_tone3:","category":"people","emoji_order":"1502"},{"name":"princess tone 4","shortname":":princess_tone4:","category":"people","emoji_order":"1503"},{"name":"princess tone 5","shortname":":princess_tone5:","category":"people","emoji_order":"1504"},{"name":"bride with veil tone 1","shortname":":bride_with_veil_tone1:","category":"people","emoji_order":"1505"},{"name":"bride with veil tone 2","shortname":":bride_with_veil_tone2:","category":"people","emoji_order":"1506"},{"name":"bride with veil tone 3","shortname":":bride_with_veil_tone3:","category":"people","emoji_order":"1507"},{"name":"bride with veil tone 4","shortname":":bride_with_veil_tone4:","category":"people","emoji_order":"1508"},{"name":"bride with veil tone 5","shortname":":bride_with_veil_tone5:","category":"people","emoji_order":"1509"},{"name":"pedestrian tone 1","shortname":":walking_tone1:","category":"people","emoji_order":"1510"},{"name":"pedestrian tone 2","shortname":":walking_tone2:","category":"people","emoji_order":"1511"},{"name":"pedestrian tone 3","shortname":":walking_tone3:","category":"people","emoji_order":"1512"},{"name":"pedestrian tone 4","shortname":":walking_tone4:","category":"people","emoji_order":"1513"},{"name":"pedestrian tone 5","shortname":":walking_tone5:","category":"people","emoji_order":"1514"},{"name":"runner tone 1","shortname":":runner_tone1:","category":"people","emoji_order":"1515"},{"name":"runner tone 2","shortname":":runner_tone2:","category":"people","emoji_order":"1516"},{"name":"runner tone 3","shortname":":runner_tone3:","category":"people","emoji_order":"1517"},{"name":"runner tone 4","shortname":":runner_tone4:","category":"people","emoji_order":"1518"},{"name":"runner tone 5","shortname":":runner_tone5:","category":"people","emoji_order":"1519"},{"name":"dancer tone 1","shortname":":dancer_tone1:","category":"people","emoji_order":"1520"},{"name":"dancer tone 2","shortname":":dancer_tone2:","category":"people","emoji_order":"1521"},{"name":"dancer tone 3","shortname":":dancer_tone3:","category":"people","emoji_order":"1522"},{"name":"dancer tone 4","shortname":":dancer_tone4:","category":"people","emoji_order":"1523"},{"name":"dancer tone 5","shortname":":dancer_tone5:","category":"people","emoji_order":"1524"},{"name":"person bowing deeply tone 1","shortname":":bow_tone1:","category":"people","emoji_order":"1525"},{"name":"person bowing deeply tone 2","shortname":":bow_tone2:","category":"people","emoji_order":"1526"},{"name":"person bowing deeply tone 3","shortname":":bow_tone3:","category":"people","emoji_order":"1527"},{"name":"person bowing deeply tone 4","shortname":":bow_tone4:","category":"people","emoji_order":"1528"},{"name":"person bowing deeply tone 5","shortname":":bow_tone5:","category":"people","emoji_order":"1529"},{"name":"information desk person tone 1","shortname":":information_desk_person_tone1:","category":"people","emoji_order":"1530"},{"name":"information desk person tone 2","shortname":":information_desk_person_tone2:","category":"people","emoji_order":"1531"},{"name":"information desk person tone 3","shortname":":information_desk_person_tone3:","category":"people","emoji_order":"1532"},{"name":"information desk person tone 4","shortname":":information_desk_person_tone4:","category":"people","emoji_order":"1533"},{"name":"information desk person tone 5","shortname":":information_desk_person_tone5:","category":"people","emoji_order":"1534"},{"name":"face with no good gesture tone 1","shortname":":no_good_tone1:","category":"people","emoji_order":"1535"},{"name":"face with no good gesture tone 2","shortname":":no_good_tone2:","category":"people","emoji_order":"1536"},{"name":"face with no good gesture tone 3","shortname":":no_good_tone3:","category":"people","emoji_order":"1537"},{"name":"face with no good gesture tone 4","shortname":":no_good_tone4:","category":"people","emoji_order":"1538"},{"name":"face with no good gesture tone 5","shortname":":no_good_tone5:","category":"people","emoji_order":"1539"},{"name":"face with ok gesture tone1","shortname":":ok_woman_tone1:","category":"people","emoji_order":"1540"},{"name":"face with ok gesture tone2","shortname":":ok_woman_tone2:","category":"people","emoji_order":"1541"},{"name":"face with ok gesture tone3","shortname":":ok_woman_tone3:","category":"people","emoji_order":"1542"},{"name":"face with ok gesture tone4","shortname":":ok_woman_tone4:","category":"people","emoji_order":"1543"},{"name":"face with ok gesture tone5","shortname":":ok_woman_tone5:","category":"people","emoji_order":"1544"},{"name":"happy person raising one hand tone1","shortname":":raising_hand_tone1:","category":"people","emoji_order":"1545"},{"name":"happy person raising one hand tone2","shortname":":raising_hand_tone2:","category":"people","emoji_order":"1546"},{"name":"happy person raising one hand tone3","shortname":":raising_hand_tone3:","category":"people","emoji_order":"1547"},{"name":"happy person raising one hand tone4","shortname":":raising_hand_tone4:","category":"people","emoji_order":"1548"},{"name":"happy person raising one hand tone5","shortname":":raising_hand_tone5:","category":"people","emoji_order":"1549"},{"name":"person with pouting face tone1","shortname":":person_with_pouting_face_tone1:","category":"people","emoji_order":"1550"},{"name":"person with pouting face tone2","shortname":":person_with_pouting_face_tone2:","category":"people","emoji_order":"1551"},{"name":"person with pouting face tone3","shortname":":person_with_pouting_face_tone3:","category":"people","emoji_order":"1552"},{"name":"person with pouting face tone4","shortname":":person_with_pouting_face_tone4:","category":"people","emoji_order":"1553"},{"name":"person with pouting face tone5","shortname":":person_with_pouting_face_tone5:","category":"people","emoji_order":"1554"},{"name":"person frowning tone 1","shortname":":person_frowning_tone1:","category":"people","emoji_order":"1555"},{"name":"person frowning tone 2","shortname":":person_frowning_tone2:","category":"people","emoji_order":"1556"},{"name":"person frowning tone 3","shortname":":person_frowning_tone3:","category":"people","emoji_order":"1557"},{"name":"person frowning tone 4","shortname":":person_frowning_tone4:","category":"people","emoji_order":"1558"},{"name":"person frowning tone 5","shortname":":person_frowning_tone5:","category":"people","emoji_order":"1559"},{"name":"haircut tone 1","shortname":":haircut_tone1:","category":"people","emoji_order":"1560"},{"name":"haircut tone 2","shortname":":haircut_tone2:","category":"people","emoji_order":"1561"},{"name":"haircut tone 3","shortname":":haircut_tone3:","category":"people","emoji_order":"1562"},{"name":"haircut tone 4","shortname":":haircut_tone4:","category":"people","emoji_order":"1563"},{"name":"haircut tone 5","shortname":":haircut_tone5:","category":"people","emoji_order":"1564"},{"name":"face massage tone 1","shortname":":massage_tone1:","category":"people","emoji_order":"1565"},{"name":"face massage tone 2","shortname":":massage_tone2:","category":"people","emoji_order":"1566"},{"name":"face massage tone 3","shortname":":massage_tone3:","category":"people","emoji_order":"1567"},{"name":"face massage tone 4","shortname":":massage_tone4:","category":"people","emoji_order":"1568"},{"name":"face massage tone 5","shortname":":massage_tone5:","category":"people","emoji_order":"1569"},{"name":"rowboat tone 1","shortname":":rowboat_tone1:","category":"activity","emoji_order":"1570"},{"name":"rowboat tone 2","shortname":":rowboat_tone2:","category":"activity","emoji_order":"1571"},{"name":"rowboat tone 3","shortname":":rowboat_tone3:","category":"activity","emoji_order":"1572"},{"name":"rowboat tone 4","shortname":":rowboat_tone4:","category":"activity","emoji_order":"1573"},{"name":"rowboat tone 5","shortname":":rowboat_tone5:","category":"activity","emoji_order":"1574"},{"name":"swimmer tone 1","shortname":":swimmer_tone1:","category":"activity","emoji_order":"1575"},{"name":"swimmer tone 2","shortname":":swimmer_tone2:","category":"activity","emoji_order":"1576"},{"name":"swimmer tone 3","shortname":":swimmer_tone3:","category":"activity","emoji_order":"1577"},{"name":"swimmer tone 4","shortname":":swimmer_tone4:","category":"activity","emoji_order":"1578"},{"name":"swimmer tone 5","shortname":":swimmer_tone5:","category":"activity","emoji_order":"1579"},{"name":"surfer tone 1","shortname":":surfer_tone1:","category":"activity","emoji_order":"1580"},{"name":"surfer tone 2","shortname":":surfer_tone2:","category":"activity","emoji_order":"1581"},{"name":"surfer tone 3","shortname":":surfer_tone3:","category":"activity","emoji_order":"1582"},{"name":"surfer tone 4","shortname":":surfer_tone4:","category":"activity","emoji_order":"1583"},{"name":"surfer tone 5","shortname":":surfer_tone5:","category":"activity","emoji_order":"1584"},{"name":"bath tone 1","shortname":":bath_tone1:","category":"activity","emoji_order":"1585"},{"name":"bath tone 2","shortname":":bath_tone2:","category":"activity","emoji_order":"1586"},{"name":"bath tone 3","shortname":":bath_tone3:","category":"activity","emoji_order":"1587"},{"name":"bath tone 4","shortname":":bath_tone4:","category":"activity","emoji_order":"1588"},{"name":"bath tone 5","shortname":":bath_tone5:","category":"activity","emoji_order":"1589"},{"name":"person with ball tone 1","shortname":":basketball_player_tone1:","category":"activity","emoji_order":"1590"},{"name":"person with ball tone 2","shortname":":basketball_player_tone2:","category":"activity","emoji_order":"1591"},{"name":"person with ball tone 3","shortname":":basketball_player_tone3:","category":"activity","emoji_order":"1592"},{"name":"person with ball tone 4","shortname":":basketball_player_tone4:","category":"activity","emoji_order":"1593"},{"name":"person with ball tone 5","shortname":":basketball_player_tone5:","category":"activity","emoji_order":"1594"},{"name":"weight lifter tone 1","shortname":":lifter_tone1:","category":"activity","emoji_order":"1595"},{"name":"weight lifter tone 2","shortname":":lifter_tone2:","category":"activity","emoji_order":"1596"},{"name":"weight lifter tone 3","shortname":":lifter_tone3:","category":"activity","emoji_order":"1597"},{"name":"weight lifter tone 4","shortname":":lifter_tone4:","category":"activity","emoji_order":"1598"},{"name":"weight lifter tone 5","shortname":":lifter_tone5:","category":"activity","emoji_order":"1599"},{"name":"bicyclist tone 1","shortname":":bicyclist_tone1:","category":"activity","emoji_order":"1600"},{"name":"bicyclist tone 2","shortname":":bicyclist_tone2:","category":"activity","emoji_order":"1601"},{"name":"bicyclist tone 3","shortname":":bicyclist_tone3:","category":"activity","emoji_order":"1602"},{"name":"bicyclist tone 4","shortname":":bicyclist_tone4:","category":"activity","emoji_order":"1603"},{"name":"bicyclist tone 5","shortname":":bicyclist_tone5:","category":"activity","emoji_order":"1604"},{"name":"mountain bicyclist tone 1","shortname":":mountain_bicyclist_tone1:","category":"activity","emoji_order":"1605"},{"name":"mountain bicyclist tone 2","shortname":":mountain_bicyclist_tone2:","category":"activity","emoji_order":"1606"},{"name":"mountain bicyclist tone 3","shortname":":mountain_bicyclist_tone3:","category":"activity","emoji_order":"1607"},{"name":"mountain bicyclist tone 4","shortname":":mountain_bicyclist_tone4:","category":"activity","emoji_order":"1608"},{"name":"mountain bicyclist tone 5","shortname":":mountain_bicyclist_tone5:","category":"activity","emoji_order":"1609"},{"name":"horse racing tone 1","shortname":":horse_racing_tone1:","category":"activity","emoji_order":"1610"},{"name":"horse racing tone 2","shortname":":horse_racing_tone2:","category":"activity","emoji_order":"1611"},{"name":"horse racing tone 3","shortname":":horse_racing_tone3:","category":"activity","emoji_order":"1612"},{"name":"horse racing tone 4","shortname":":horse_racing_tone4:","category":"activity","emoji_order":"1613"},{"name":"horse racing tone 5","shortname":":horse_racing_tone5:","category":"activity","emoji_order":"1614"},{"name":"sleuth or spy tone 1","shortname":":spy_tone1:","category":"people","emoji_order":"1615"},{"name":"sleuth or spy tone 2","shortname":":spy_tone2:","category":"people","emoji_order":"1616"},{"name":"sleuth or spy tone 3","shortname":":spy_tone3:","category":"people","emoji_order":"1617"},{"name":"sleuth or spy tone 4","shortname":":spy_tone4:","category":"people","emoji_order":"1618"},{"name":"sleuth or spy tone 5","shortname":":spy_tone5:","category":"people","emoji_order":"1619"},{"name":"emoji modifier Fitzpatrick type-1-2","shortname":":tone1:","category":"modifier","emoji_order":"1620"},{"name":"emoji modifier Fitzpatrick type-3","shortname":":tone2:","category":"modifier","emoji_order":"1621"},{"name":"emoji modifier Fitzpatrick type-4","shortname":":tone3:","category":"modifier","emoji_order":"1622"},{"name":"emoji modifier Fitzpatrick type-5","shortname":":tone4:","category":"modifier","emoji_order":"1623"},{"name":"emoji modifier Fitzpatrick type-6","shortname":":tone5:","category":"modifier","emoji_order":"1624"}] \ No newline at end of file diff --git a/test/components/structures/ScrollPanel-test.js b/test/components/structures/ScrollPanel-test.js index 7ecb74be6f..a783f424e7 100644 --- a/test/components/structures/ScrollPanel-test.js +++ b/test/components/structures/ScrollPanel-test.js @@ -192,52 +192,37 @@ describe('ScrollPanel', function() { } }); - it('should handle scrollEvent strangeness', function(done) { - var events = []; + it('should handle scrollEvent strangeness', function() { + const events = []; - q().then(() => { - // initialise with a few events - for (var i = 0; i < 10; i++) { - events.push(i+90); + return q().then(() => { + // initialise with a load of events + for (let i = 0; i < 20; i++) { + events.push(i+80); } tester.setTileKeys(events); - expect(tester.fillCounts.b).toEqual(1); - expect(tester.fillCounts.f).toEqual(2); - expect(scrollingDiv.scrollHeight).toEqual(1550) // 10*150 + 50 - expect(scrollingDiv.scrollTop).toEqual(1550 - 600); + expect(scrollingDiv.scrollHeight).toEqual(3050); // 20*150 + 50 + expect(scrollingDiv.scrollTop).toEqual(3050 - 600); return tester.awaitScroll(); }).then(() => { - expect(tester.lastScrollEvent).toBe(950); + expect(tester.lastScrollEvent).toBe(3050 - 600); - // we want to simulate back-filling as we scroll up - tester.addFillHandler('b', function() { - var newEvents = []; - for (var i = 0; i < 10; i++) { - newEvents.push(i+80); - } - events.unshift.apply(events, newEvents); - tester.setTileKeys(events); - return q(true); - }); - - // simulate scrolling up; this should trigger the backfill - scrollingDiv.scrollTop = 200; - - return tester.awaitFill('b'); - }).then(() => { - console.log('filled'); + tester.scrollPanel().scrollToToken("92", 0); // at this point, ScrollPanel will have updated scrollTop, but - // the event hasn't fired. Stamp over the scrollTop. - expect(tester.lastScrollEvent).toEqual(200); - expect(scrollingDiv.scrollTop).toEqual(10*150 + 200); + // the event hasn't fired. + expect(tester.lastScrollEvent).toEqual(3050 - 600); + expect(scrollingDiv.scrollTop).toEqual(1950); + + // now stamp over the scrollTop. + console.log('faking #528'); scrollingDiv.scrollTop = 500; return tester.awaitScroll(); }).then(() => { - expect(tester.lastScrollEvent).toBe(10*150 + 200); - expect(scrollingDiv.scrollTop).toEqual(10*150 + 200); - }).done(done); + expect(tester.lastScrollEvent).toBe(1950); + expect(scrollingDiv.scrollTop).toEqual(1950); + }); }); it('should not get stuck in #528 workaround', function(done) { @@ -250,7 +235,7 @@ describe('ScrollPanel', function() { tester.setTileKeys(events); expect(tester.fillCounts.b).toEqual(1); expect(tester.fillCounts.f).toEqual(2); - expect(scrollingDiv.scrollHeight).toEqual(6050) // 40*150 + 50 + expect(scrollingDiv.scrollHeight).toEqual(6050); // 40*150 + 50 expect(scrollingDiv.scrollTop).toEqual(6050 - 600); // try to scroll up, to a non-integer offset.