From 2db53c228493311ad2fd044936af6f930f570270 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Sun, 19 Feb 2017 03:04:42 +0200 Subject: [PATCH 001/481] whitelist data & mxc URIs on img tags: readds PR #333 now that punkave/sanitize-html#137 has landed --- package.json | 2 +- src/HtmlUtils.js | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index a07e2236aa..9b260e341a 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "react-addons-css-transition-group": "15.3.2", "react-dom": "^15.4.0", "react-gemini-scrollbar": "matrix-org/react-gemini-scrollbar#5e97aef", - "sanitize-html": "^1.11.1", + "sanitize-html": "^1.14.1", "text-encoding-utf-8": "^1.0.1", "velocity-vector": "vector-im/velocity#059e3b2", "whatwg-fetch": "^1.0.0" diff --git a/src/HtmlUtils.js b/src/HtmlUtils.js index b9d0ce67e8..8ae2c0a4a8 100644 --- a/src/HtmlUtils.js +++ b/src/HtmlUtils.js @@ -87,7 +87,7 @@ var sanitizeHtmlParams = { // deliberately no h1/h2 to stop people shouting. 'h3', 'h4', 'h5', 'h6', 'blockquote', 'p', 'a', 'ul', 'ol', 'nl', 'li', 'b', 'i', 'u', 'strong', 'em', 'strike', 'code', 'hr', 'br', 'div', - 'table', 'thead', 'caption', 'tbody', 'tr', 'th', 'td', 'pre' + 'table', 'thead', 'caption', 'tbody', 'tr', 'th', 'td', 'pre', 'img', ], allowedAttributes: { // custom ones first: @@ -102,10 +102,10 @@ var sanitizeHtmlParams = { // URL schemes we permit allowedSchemes: ['http', 'https', 'ftp', 'mailto'], - // DO NOT USE. sanitize-html allows all URL starting with '//' - // so this will always allow links to whatever scheme the - // host page is served over. - allowedSchemesByTag: {}, + allowedSchemesByTag: { + img: [ 'data', 'mxc' ], + }, + allowProtocolRelative: false, transformTags: { // custom to matrix // add blank targets to all hyperlinks except vector URLs From ab3b6497f99ccd35e1be8db9e8867efdb164a79e Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Tue, 11 Oct 2016 19:16:35 +0530 Subject: [PATCH 002/481] Disable "syntax highlighting" in MD mode (RTE) --- src/RichText.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/RichText.js b/src/RichText.js index b1793d0ddf..e662c22d6a 100644 --- a/src/RichText.js +++ b/src/RichText.js @@ -146,9 +146,9 @@ export function getScopedMDDecorators(scope: any): CompositeDecorator { ) }); - markdownDecorators.push(emojiDecorator); - - return markdownDecorators; + // markdownDecorators.push(emojiDecorator); + // TODO Consider renabling "syntax highlighting" when we can do it properly + return [emojiDecorator]; } /** From f2ad4bee8b5243766616cab150ea86e18660035f Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Tue, 11 Oct 2016 19:17:57 +0530 Subject: [PATCH 003/481] Disable force completion for RoomProvider (RTE) --- src/autocomplete/RoomProvider.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/autocomplete/RoomProvider.js b/src/autocomplete/RoomProvider.js index 8d1e555e56..b589425b20 100644 --- a/src/autocomplete/RoomProvider.js +++ b/src/autocomplete/RoomProvider.js @@ -66,8 +66,4 @@ export default class RoomProvider extends AutocompleteProvider { {completions} ; } - - shouldForceComplete(): boolean { - return true; - } } From f4c0baaa2f02b5650597eddbe2f2b75344b9e8e3 Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Wed, 30 Nov 2016 22:46:33 +0530 Subject: [PATCH 004/481] refactor MessageComposerInput: bind -> class props --- package.json | 2 +- .../views/rooms/MessageComposerInput.js | 156 ++++++++---------- 2 files changed, 73 insertions(+), 85 deletions(-) diff --git a/package.json b/package.json index a07e2236aa..1e5ee29d2d 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "browser-request": "^0.3.3", "classnames": "^2.1.2", "commonmark": "^0.27.0", - "draft-js": "^0.8.1", + "draft-js": "^0.9.1", "draft-js-export-html": "^0.5.0", "draft-js-export-markdown": "^0.2.0", "emojione": "2.2.3", diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 61dd1e1b1c..9ae420fde4 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -59,6 +59,29 @@ function stateToMarkdown(state) { * The textInput part of the MessageComposer */ export default class MessageComposerInput extends React.Component { + static propTypes = { + tabComplete: React.PropTypes.any, + + // a callback which is called when the height of the composer is + // changed due to a change in content. + onResize: React.PropTypes.func, + + // js-sdk Room object + room: React.PropTypes.object.isRequired, + + // called with current plaintext content (as a string) whenever it changes + onContentChanged: React.PropTypes.func, + + onUpArrow: React.PropTypes.func, + + onDownArrow: React.PropTypes.func, + + // attempts to confirm currently selected completion, returns whether actually confirmed + tryComplete: React.PropTypes.func, + + onInputStateChanged: React.PropTypes.func, + }; + static getKeyBinding(e: SyntheticKeyboardEvent): string { // C-m => Toggles between rich text and markdown modes if (e.keyCode === KEY_M && KeyBindingUtil.isCtrlKeyCommand(e)) { @@ -81,17 +104,6 @@ export default class MessageComposerInput extends React.Component { constructor(props, context) { super(props, context); - this.onAction = this.onAction.bind(this); - this.handleReturn = this.handleReturn.bind(this); - this.handleKeyCommand = this.handleKeyCommand.bind(this); - this.onEditorContentChanged = this.onEditorContentChanged.bind(this); - this.setEditorState = this.setEditorState.bind(this); - this.onUpArrow = this.onUpArrow.bind(this); - this.onDownArrow = this.onDownArrow.bind(this); - this.onTab = this.onTab.bind(this); - this.onEscape = this.onEscape.bind(this); - this.setDisplayedCompletion = this.setDisplayedCompletion.bind(this); - this.onMarkdownToggleClicked = this.onMarkdownToggleClicked.bind(this); const isRichtextEnabled = UserSettingsStore.getSyncedSetting('MessageComposerInput.isRichTextEnabled', true); @@ -120,7 +132,7 @@ export default class MessageComposerInput extends React.Component { */ createEditorState(richText: boolean, contentState: ?ContentState): EditorState { let decorators = richText ? RichText.getScopedRTDecorators(this.props) : - RichText.getScopedMDDecorators(this.props), + RichText.getScopedMDDecorators(this.props), compositeDecorator = new CompositeDecorator(decorators); let editorState = null; @@ -147,7 +159,7 @@ export default class MessageComposerInput extends React.Component { // The textarea element to set text to. element: null, - init: function(element, roomId) { + init: function (element, roomId) { this.roomId = roomId; this.element = element; this.position = -1; @@ -162,7 +174,7 @@ export default class MessageComposerInput extends React.Component { } }, - push: function(text) { + push: function (text) { // store a message in the sent history this.data.unshift(text); window.sessionStorage.setItem( @@ -175,7 +187,7 @@ export default class MessageComposerInput extends React.Component { }, // move in the history. Returns true if we managed to move. - next: function(offset) { + next: function (offset) { if (this.position === -1) { // user is going into the history, save the current line. this.originalText = this.element.value; @@ -208,7 +220,7 @@ export default class MessageComposerInput extends React.Component { return true; }, - saveLastTextEntry: function() { + saveLastTextEntry: function () { // save the currently entered text in order to restore it later. // NB: This isn't 'originalText' because we want to restore // sent history items too! @@ -216,7 +228,7 @@ export default class MessageComposerInput extends React.Component { window.sessionStorage.setItem("mx_messagecomposer_input_" + this.roomId, contentJSON); }, - setLastTextEntry: function() { + setLastTextEntry: function () { let contentJSON = window.sessionStorage.getItem("mx_messagecomposer_input_" + this.roomId); if (contentJSON) { let content = convertFromRaw(JSON.parse(contentJSON)); @@ -248,7 +260,7 @@ export default class MessageComposerInput extends React.Component { } } - onAction(payload) { + onAction = payload => { let editor = this.refs.editor; let contentState = this.state.editorState.getCurrentContent(); @@ -270,7 +282,7 @@ export default class MessageComposerInput extends React.Component { this.onEditorContentChanged(editorState); editor.focus(); } - break; + break; case 'quote': { let {body, formatted_body} = payload.event.getContent(); @@ -297,9 +309,9 @@ export default class MessageComposerInput extends React.Component { editor.focus(); } } - break; + break; } - } + }; onTypingActivity() { this.isTyping = true; @@ -320,7 +332,7 @@ export default class MessageComposerInput extends React.Component { startUserTypingTimer() { this.stopUserTypingTimer(); var self = this; - this.userTypingTimer = setTimeout(function() { + this.userTypingTimer = setTimeout(function () { self.isTyping = false; self.sendTyping(self.isTyping); self.userTypingTimer = null; @@ -337,7 +349,7 @@ export default class MessageComposerInput extends React.Component { startServerTypingTimer() { if (!this.serverTypingTimer) { var self = this; - this.serverTypingTimer = setTimeout(function() { + this.serverTypingTimer = setTimeout(function () { if (self.isTyping) { self.sendTyping(self.isTyping); self.startServerTypingTimer(); @@ -368,7 +380,7 @@ export default class MessageComposerInput extends React.Component { } // Called by Draft to change editor contents, and by setEditorState - onEditorContentChanged(editorState: EditorState, didRespondToUserInput: boolean = true) { + onEditorContentChanged = (editorState: EditorState, didRespondToUserInput: boolean = true) => { editorState = RichText.attachImmutableEntitiesToEmoji(editorState); const contentChanged = Q.defer(); @@ -392,11 +404,11 @@ export default class MessageComposerInput extends React.Component { this.props.onContentChanged(textContent, selection); } return contentChanged.promise; - } + }; - setEditorState(editorState: EditorState) { + setEditorState = (editorState: EditorState) => { return this.onEditorContentChanged(editorState, false); - } + }; enableRichtext(enabled: boolean) { let contentState = null; @@ -420,7 +432,7 @@ export default class MessageComposerInput extends React.Component { }); } - handleKeyCommand(command: string): boolean { + handleKeyCommand = (command: string): boolean => { if (command === 'toggle-mode') { this.enableRichtext(!this.state.isRichtextEnabled); return true; @@ -451,7 +463,7 @@ export default class MessageComposerInput extends React.Component { 'code': text => `\`${text}\``, 'blockquote': text => text.split('\n').map(line => `> ${line}\n`).join(''), 'unordered-list-item': text => text.split('\n').map(line => `- ${line}\n`).join(''), - 'ordered-list-item': text => text.split('\n').map((line, i) => `${i+1}. ${line}\n`).join(''), + 'ordered-list-item': text => text.split('\n').map((line, i) => `${i + 1}. ${line}\n`).join(''), }[command]; if (modifyFn) { @@ -473,9 +485,9 @@ export default class MessageComposerInput extends React.Component { } return false; - } + }; - handleReturn(ev) { + handleReturn = ev => { if (ev.shiftKey) { this.onEditorContentChanged(RichUtils.insertSoftNewline(this.state.editorState)); return true; @@ -497,9 +509,9 @@ export default class MessageComposerInput extends React.Component { }); } if (cmd.promise) { - cmd.promise.then(function() { + cmd.promise.then(function () { console.log("Command success."); - }, function(err) { + }, function (err) { console.error("Command failure: %s", err); var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createDialog(ErrorDialog, { @@ -567,45 +579,44 @@ export default class MessageComposerInput extends React.Component { this.autocomplete.hide(); return true; - } + }; - async onUpArrow(e) { + onUpArrow = async e => { const completion = this.autocomplete.onUpArrow(); if (completion != null) { e.preventDefault(); } return await this.setDisplayedCompletion(completion); - } + }; - async onDownArrow(e) { + onDownArrow = async e => { const completion = this.autocomplete.onDownArrow(); e.preventDefault(); return await this.setDisplayedCompletion(completion); - } + }; // tab and shift-tab are mapped to down and up arrow respectively - async onTab(e) { + onTab = async e => { e.preventDefault(); // we *never* want tab's default to happen, but we do want up/down sometimes const didTab = await (e.shiftKey ? this.onUpArrow : this.onDownArrow)(e); if (!didTab && this.autocomplete) { - this.autocomplete.forceComplete().then(() => { - this.onDownArrow(e); - }); + await this.autocomplete.forceComplete(); + this.onDownArrow(e); } - } + }; - onEscape(e) { + onEscape = e => { e.preventDefault(); if (this.autocomplete) { this.autocomplete.onEscape(e); } this.setDisplayedCompletion(null); // restore originalEditorState - } + }; /* If passed null, restores the original editor content from state.originalEditorState. * If passed a non-null displayedCompletion, modifies state.originalEditorState to compute new state.editorState. */ - async setDisplayedCompletion(displayedCompletion: ?Completion): boolean { + setDisplayedCompletion = async (displayedCompletion: ?Completion): boolean => { const activeEditorState = this.state.originalEditorState || this.state.editorState; if (displayedCompletion == null) { @@ -633,21 +644,21 @@ export default class MessageComposerInput extends React.Component { // for some reason, doing this right away does not update the editor :( setTimeout(() => this.refs.editor.focus(), 50); return true; - } + }; onFormatButtonClicked(name: "bold" | "italic" | "strike" | "code" | "underline" | "quote" | "bullet" | "numbullet", e) { e.preventDefault(); // don't steal focus from the editor! const command = { - code: 'code-block', - quote: 'blockquote', - bullet: 'unordered-list-item', - numbullet: 'ordered-list-item', - }[name] || name; + code: 'code-block', + quote: 'blockquote', + bullet: 'unordered-list-item', + numbullet: 'ordered-list-item', + }[name] || name; this.handleKeyCommand(command); } /* returns inline style and block type of current SelectionState so MessageComposer can render formatting - buttons. */ + buttons. */ getSelectionInfo(editorState: EditorState) { const styleName = { BOLD: 'bold', @@ -658,8 +669,8 @@ export default class MessageComposerInput extends React.Component { const originalStyle = editorState.getCurrentInlineStyle().toArray(); const style = originalStyle - .map(style => styleName[style] || null) - .filter(styleName => !!styleName); + .map(style => styleName[style] || null) + .filter(styleName => !!styleName); const blockName = { 'code-block': 'code', @@ -678,10 +689,10 @@ export default class MessageComposerInput extends React.Component { }; } - onMarkdownToggleClicked(e) { + onMarkdownToggleClicked = e => { e.preventDefault(); // don't steal focus from the editor! this.handleKeyCommand('toggle-mode'); - } + }; render() { const activeEditorState = this.state.originalEditorState || this.state.editorState; @@ -698,7 +709,7 @@ export default class MessageComposerInput extends React.Component { } const className = classNames('mx_MessageComposer_input', { - mx_MessageComposer_input_empty: hidePlaceholder, + mx_MessageComposer_input_empty: hidePlaceholder, }); const content = activeEditorState.getCurrentContent(); @@ -713,13 +724,13 @@ export default class MessageComposerInput extends React.Component { ref={(e) => this.autocomplete = e} onConfirm={this.setDisplayedCompletion} query={contentText} - selection={selection} /> + selection={selection}/>
+ src={`img/button-md-${!this.state.isRichtextEnabled}.png`}/> + spellCheck={true}/>
); } } - -MessageComposerInput.propTypes = { - tabComplete: React.PropTypes.any, - - // a callback which is called when the height of the composer is - // changed due to a change in content. - onResize: React.PropTypes.func, - - // js-sdk Room object - room: React.PropTypes.object.isRequired, - - // called with current plaintext content (as a string) whenever it changes - onContentChanged: React.PropTypes.func, - - onUpArrow: React.PropTypes.func, - - onDownArrow: React.PropTypes.func, - - // attempts to confirm currently selected completion, returns whether actually confirmed - tryComplete: React.PropTypes.func, - - onInputStateChanged: React.PropTypes.func, -}; From edd5903ed7e6bd6522eea588e752e59f45623d7e Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Wed, 30 Nov 2016 23:12:03 +0530 Subject: [PATCH 005/481] autocomplete: add space after completing room name --- src/autocomplete/RoomProvider.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/autocomplete/RoomProvider.js b/src/autocomplete/RoomProvider.js index b589425b20..85f94926d9 100644 --- a/src/autocomplete/RoomProvider.js +++ b/src/autocomplete/RoomProvider.js @@ -38,7 +38,7 @@ export default class RoomProvider extends AutocompleteProvider { completions = this.fuse.search(command[0]).map(room => { let displayAlias = getDisplayAliasForRoom(room.room) || room.roomId; return { - completion: displayAlias, + completion: displayAlias + ' ', component: ( } title={room.name} description={displayAlias} /> ), From 78641a80ddf7a6fa2cb951fa526249406a814495 Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Thu, 1 Dec 2016 12:06:57 +0530 Subject: [PATCH 006/481] autocomplete: replace Fuse.js with liblevenshtein --- package.json | 2 +- src/autocomplete/AutocompleteProvider.js | 2 +- src/autocomplete/CommandProvider.js | 6 +- src/autocomplete/EmojiProvider.js | 6 +- src/autocomplete/FuzzyMatcher.js | 74 ++++++++++++++++++++++++ src/autocomplete/RoomProvider.js | 14 ++--- src/autocomplete/UserProvider.js | 8 +-- 7 files changed, 92 insertions(+), 20 deletions(-) create mode 100644 src/autocomplete/FuzzyMatcher.js diff --git a/package.json b/package.json index 1e5ee29d2d..1015eb3fe9 100644 --- a/package.json +++ b/package.json @@ -55,10 +55,10 @@ "file-saver": "^1.3.3", "filesize": "^3.1.2", "flux": "^2.0.3", - "fuse.js": "^2.2.0", "glob": "^5.0.14", "highlight.js": "^8.9.1", "isomorphic-fetch": "^2.2.1", + "liblevenshtein": "^2.0.4", "linkifyjs": "^2.1.3", "lodash": "^4.13.1", "matrix-js-sdk": "matrix-org/matrix-js-sdk#develop", diff --git a/src/autocomplete/AutocompleteProvider.js b/src/autocomplete/AutocompleteProvider.js index 5c90990295..c361dd295b 100644 --- a/src/autocomplete/AutocompleteProvider.js +++ b/src/autocomplete/AutocompleteProvider.js @@ -2,7 +2,7 @@ import React from 'react'; import type {Completion, SelectionRange} from './Autocompleter'; export default class AutocompleteProvider { - constructor(commandRegex?: RegExp, fuseOpts?: any) { + constructor(commandRegex?: RegExp) { if (commandRegex) { if (!commandRegex.global) { throw new Error('commandRegex must have global flag set'); diff --git a/src/autocomplete/CommandProvider.js b/src/autocomplete/CommandProvider.js index 60171bc72f..8f98bf1aa5 100644 --- a/src/autocomplete/CommandProvider.js +++ b/src/autocomplete/CommandProvider.js @@ -1,6 +1,6 @@ import React from 'react'; import AutocompleteProvider from './AutocompleteProvider'; -import Fuse from 'fuse.js'; +import FuzzyMatcher from './FuzzyMatcher'; import {TextualCompletion} from './Components'; const COMMANDS = [ @@ -53,7 +53,7 @@ let instance = null; export default class CommandProvider extends AutocompleteProvider { constructor() { super(COMMAND_RE); - this.fuse = new Fuse(COMMANDS, { + this.matcher = new FuzzyMatcher(COMMANDS, { keys: ['command', 'args', 'description'], }); } @@ -62,7 +62,7 @@ export default class CommandProvider extends AutocompleteProvider { let completions = []; let {command, range} = this.getCurrentCommand(query, selection); if (command) { - completions = this.fuse.search(command[0]).map(result => { + completions = this.matcher.match(command[0]).map(result => { return { completion: result.command + ' ', component: ( { + completions = this.matcher.match(command[0]).map(result => { const shortname = EMOJI_SHORTNAMES[result]; const unicode = shortnameToUnicode(shortname); return { diff --git a/src/autocomplete/FuzzyMatcher.js b/src/autocomplete/FuzzyMatcher.js new file mode 100644 index 0000000000..c02ee9bbc0 --- /dev/null +++ b/src/autocomplete/FuzzyMatcher.js @@ -0,0 +1,74 @@ +import Levenshtein from 'liblevenshtein'; +import _at from 'lodash/at'; +import _flatMap from 'lodash/flatMap'; +import _sortBy from 'lodash/sortBy'; +import _sortedUniq from 'lodash/sortedUniq'; +import _keys from 'lodash/keys'; + +class KeyMap { + keys: Array; + objectMap: {[String]: Array}; + priorityMap: {[String]: number} +} + +const DEFAULT_RESULT_COUNT = 10; +const DEFAULT_DISTANCE = 5; + +export default class FuzzyMatcher { + /** + * Given an array of objects and keys, returns a KeyMap + * Keys can refer to object properties by name and as in JavaScript (for nested properties) + * + * To use, simply presort objects by required criteria, run through this function and create a FuzzyMatcher with the + * resulting KeyMap. + * + * TODO: Handle arrays and objects (Fuse did this, RoomProvider uses it) + */ + static valuesToKeyMap(objects: Array, keys: Array): KeyMap { + const keyMap = new KeyMap(); + const map = {}; + const priorities = {}; + + objects.forEach((object, i) => { + const keyValues = _at(object, keys); + console.log(object, keyValues, keys); + for (const keyValue of keyValues) { + if (!map.hasOwnProperty(keyValue)) { + map[keyValue] = []; + } + map[keyValue].push(object); + } + priorities[object] = i; + }); + + keyMap.objectMap = map; + keyMap.priorityMap = priorities; + keyMap.keys = _sortBy(_keys(map), [value => priorities[value]]); + return keyMap; + } + + constructor(objects: Array, options: {[Object]: Object} = {}) { + this.options = options; + this.keys = options.keys; + this.setObjects(objects); + } + + setObjects(objects: Array) { + this.keyMap = FuzzyMatcher.valuesToKeyMap(objects, this.keys); + console.log(this.keyMap.keys); + this.matcher = new Levenshtein.Builder() + .dictionary(this.keyMap.keys, true) + .algorithm('transposition') + .sort_candidates(false) + .case_insensitive_sort(true) + .include_distance(false) + .maximum_candidates(this.options.resultCount || DEFAULT_RESULT_COUNT) // result count 0 doesn't make much sense + .build(); + } + + match(query: String): Array { + const candidates = this.matcher.transduce(query, this.options.distance || DEFAULT_DISTANCE); + return _sortedUniq(_sortBy(_flatMap(candidates, candidate => this.keyMap.objectMap[candidate]), + candidate => this.keyMap.priorityMap[candidate])); + } +} diff --git a/src/autocomplete/RoomProvider.js b/src/autocomplete/RoomProvider.js index 85f94926d9..8659b8501f 100644 --- a/src/autocomplete/RoomProvider.js +++ b/src/autocomplete/RoomProvider.js @@ -1,7 +1,7 @@ import React from 'react'; import AutocompleteProvider from './AutocompleteProvider'; import MatrixClientPeg from '../MatrixClientPeg'; -import Fuse from 'fuse.js'; +import FuzzyMatcher from './FuzzyMatcher'; import {PillCompletion} from './Components'; import {getDisplayAliasForRoom} from '../Rooms'; import sdk from '../index'; @@ -12,11 +12,9 @@ let instance = null; export default class RoomProvider extends AutocompleteProvider { constructor() { - super(ROOM_REGEX, { - keys: ['displayName', 'userId'], - }); - this.fuse = new Fuse([], { - keys: ['name', 'roomId', 'aliases'], + super(ROOM_REGEX); + this.matcher = new FuzzyMatcher([], { + keys: ['name', 'aliases'], }); } @@ -28,14 +26,14 @@ export default class RoomProvider extends AutocompleteProvider { const {command, range} = this.getCurrentCommand(query, selection, force); if (command) { // the only reason we need to do this is because Fuse only matches on properties - this.fuse.set(client.getRooms().filter(room => !!room).map(room => { + this.matcher.setObjects(client.getRooms().filter(room => !!room).map(room => { return { room: room, name: room.name, aliases: room.getAliases(), }; })); - completions = this.fuse.search(command[0]).map(room => { + completions = this.matcher.match(command[0]).map(room => { let displayAlias = getDisplayAliasForRoom(room.room) || room.roomId; return { completion: displayAlias + ' ', diff --git a/src/autocomplete/UserProvider.js b/src/autocomplete/UserProvider.js index 4d40fbdf94..b65439181c 100644 --- a/src/autocomplete/UserProvider.js +++ b/src/autocomplete/UserProvider.js @@ -1,9 +1,9 @@ import React from 'react'; import AutocompleteProvider from './AutocompleteProvider'; import Q from 'q'; -import Fuse from 'fuse.js'; import {PillCompletion} from './Components'; import sdk from '../index'; +import FuzzyMatcher from './FuzzyMatcher'; const USER_REGEX = /@\S*/g; @@ -15,7 +15,7 @@ export default class UserProvider extends AutocompleteProvider { keys: ['name', 'userId'], }); this.users = []; - this.fuse = new Fuse([], { + this.matcher = new FuzzyMatcher([], { keys: ['name', 'userId'], }); } @@ -26,8 +26,7 @@ export default class UserProvider extends AutocompleteProvider { let completions = []; let {command, range} = this.getCurrentCommand(query, selection, force); if (command) { - this.fuse.set(this.users); - completions = this.fuse.search(command[0]).map(user => { + completions = this.matcher.match(command[0]).map(user => { let displayName = (user.name || user.userId || '').replace(' (IRC)', ''); // FIXME when groups are done let completion = displayName; if (range.start === 0) { @@ -56,6 +55,7 @@ export default class UserProvider extends AutocompleteProvider { setUserList(users) { this.users = users; + this.matcher.setObjects(this.users); } static getInstance(): UserProvider { From 48376a32c251d463d525541c1edc0a4370300e04 Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Fri, 30 Dec 2016 19:42:36 +0530 Subject: [PATCH 007/481] refactor: MessageComposer.setEditorState to overridden setState The old approach led to a confusing proliferation of repeated setState calls. --- .../views/rooms/MessageComposerInput.js | 97 +++++++++++-------- 1 file changed, 58 insertions(+), 39 deletions(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 9ae420fde4..b830d52239 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -232,7 +232,9 @@ export default class MessageComposerInput extends React.Component { let contentJSON = window.sessionStorage.getItem("mx_messagecomposer_input_" + this.roomId); if (contentJSON) { let content = convertFromRaw(JSON.parse(contentJSON)); - component.setEditorState(component.createEditorState(component.state.isRichtextEnabled, content)); + component.setState({ + editorState: component.createEditorState(component.state.isRichtextEnabled, content) + }); } }, }; @@ -379,36 +381,54 @@ export default class MessageComposerInput extends React.Component { } } - // Called by Draft to change editor contents, and by setEditorState - onEditorContentChanged = (editorState: EditorState, didRespondToUserInput: boolean = true) => { + // Called by Draft to change editor contents + onEditorContentChanged = (editorState: EditorState) => { editorState = RichText.attachImmutableEntitiesToEmoji(editorState); - const contentChanged = Q.defer(); - /* If a modification was made, set originalEditorState to null, since newState is now our original */ + /* Since a modification was made, set originalEditorState to null, since newState is now our original */ this.setState({ editorState, - originalEditorState: didRespondToUserInput ? null : this.state.originalEditorState, - }, () => contentChanged.resolve()); - - if (editorState.getCurrentContent().hasText()) { - this.onTypingActivity(); - } else { - this.onFinishedTyping(); - } - - if (this.props.onContentChanged) { - const textContent = editorState.getCurrentContent().getPlainText(); - const selection = RichText.selectionStateToTextOffsets(editorState.getSelection(), - editorState.getCurrentContent().getBlocksAsArray()); - - this.props.onContentChanged(textContent, selection); - } - return contentChanged.promise; + originalEditorState: null, + }); }; - setEditorState = (editorState: EditorState) => { - return this.onEditorContentChanged(editorState, false); - }; + /** + * We're overriding setState here because it's the most convenient way to monitor changes to the editorState. + * Doing it using a separate function that calls setState is a possibility (and was the old approach), but that + * approach requires a callback and an extra setState whenever trying to set multiple state properties. + * + * @param state + * @param callback + */ + setState(state, callback) { + if (state.editorState != null) { + state.editorState = RichText.attachImmutableEntitiesToEmoji(state.editorState); + + if (state.editorState.getCurrentContent().hasText()) { + this.onTypingActivity(); + } else { + this.onFinishedTyping(); + } + + if (!state.hasOwnProperty('originalEditorState')) { + state.originalEditorState = null; + } + } + + super.setState(state, (state, props, context) => { + if (callback != null) { + callback(state, props, context); + } + + if (this.props.onContentChanged) { + const textContent = state.editorState.getCurrentContent().getPlainText(); + const selection = RichText.selectionStateToTextOffsets(state.editorState.getSelection(), + state.editorState.getCurrentContent().getBlocksAsArray()); + + this.props.onContentChanged(textContent, selection); + } + }); + } enableRichtext(enabled: boolean) { let contentState = null; @@ -423,13 +443,11 @@ export default class MessageComposerInput extends React.Component { contentState = ContentState.createFromText(markdown); } - this.setEditorState(this.createEditorState(enabled, contentState)).then(() => { - this.setState({ - isRichtextEnabled: enabled, - }); - - UserSettingsStore.setSyncedSetting('MessageComposerInput.isRichTextEnabled', enabled); + this.setState({ + editorState: this.createEditorState(enabled, contentState), + isRichtextEnabled: enabled, }); + UserSettingsStore.setSyncedSetting('MessageComposerInput.isRichTextEnabled', enabled); } handleKeyCommand = (command: string): boolean => { @@ -446,10 +464,14 @@ export default class MessageComposerInput extends React.Component { const blockCommands = ['code-block', 'blockquote', 'unordered-list-item', 'ordered-list-item']; if (blockCommands.includes(command)) { - this.setEditorState(RichUtils.toggleBlockType(this.state.editorState, command)); + this.setState({ + editorState: RichUtils.toggleBlockType(this.state.editorState, command) + }); } else if (command === 'strike') { // this is the only inline style not handled by Draft by default - this.setEditorState(RichUtils.toggleInlineStyle(this.state.editorState, 'STRIKETHROUGH')); + this.setState({ + editorState: RichUtils.toggleInlineStyle(this.state.editorState, 'STRIKETHROUGH') + }); } } else { let contentState = this.state.editorState.getCurrentContent(), @@ -480,7 +502,7 @@ export default class MessageComposerInput extends React.Component { } if (newState != null) { - this.setEditorState(newState); + this.setState({editorState: newState}); return true; } @@ -621,7 +643,7 @@ export default class MessageComposerInput extends React.Component { if (displayedCompletion == null) { if (this.state.originalEditorState) { - this.setEditorState(this.state.originalEditorState); + this.setState({editorState: this.state.originalEditorState}); } return false; } @@ -636,10 +658,7 @@ export default class MessageComposerInput extends React.Component { let editorState = EditorState.push(activeEditorState, contentState, 'insert-characters'); editorState = EditorState.forceSelection(editorState, contentState.getSelectionAfter()); - const originalEditorState = activeEditorState; - - await this.setEditorState(editorState); - this.setState({originalEditorState}); + this.setState({editorState, originalEditorState: activeEditorState}); // for some reason, doing this right away does not update the editor :( setTimeout(() => this.refs.editor.focus(), 50); From aaac06c6d3f98473a58ab9a839b754e0787ce30b Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Fri, 10 Feb 2017 01:33:06 +0530 Subject: [PATCH 008/481] run eslint --fix over MessageComposerInput --- .../views/rooms/MessageComposerInput.js | 119 +++++++++--------- 1 file changed, 58 insertions(+), 61 deletions(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index b830d52239..b83e5d8dbf 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -159,12 +159,12 @@ export default class MessageComposerInput extends React.Component { // The textarea element to set text to. element: null, - init: function (element, roomId) { + init: function(element, roomId) { this.roomId = roomId; this.element = element; this.position = -1; - var storedData = window.sessionStorage.getItem( - "mx_messagecomposer_history_" + roomId + const storedData = window.sessionStorage.getItem( + "mx_messagecomposer_history_" + roomId, ); if (storedData) { this.data = JSON.parse(storedData); @@ -174,12 +174,12 @@ export default class MessageComposerInput extends React.Component { } }, - push: function (text) { + push: function(text) { // store a message in the sent history this.data.unshift(text); window.sessionStorage.setItem( "mx_messagecomposer_history_" + this.roomId, - JSON.stringify(this.data) + JSON.stringify(this.data), ); // reset history position this.position = -1; @@ -187,12 +187,11 @@ export default class MessageComposerInput extends React.Component { }, // move in the history. Returns true if we managed to move. - next: function (offset) { + next: function(offset) { if (this.position === -1) { // user is going into the history, save the current line. this.originalText = this.element.value; - } - else { + } else { // user may have modified this line in the history; remember it. this.data[this.position] = this.element.value; } @@ -203,7 +202,7 @@ export default class MessageComposerInput extends React.Component { } // retrieve the next item (bounded). - var newPosition = this.position + offset; + let newPosition = this.position + offset; newPosition = Math.max(-1, newPosition); newPosition = Math.min(newPosition, this.data.length - 1); this.position = newPosition; @@ -211,8 +210,7 @@ export default class MessageComposerInput extends React.Component { if (this.position !== -1) { // show the message this.element.value = this.data[this.position]; - } - else if (this.originalText !== undefined) { + } else if (this.originalText !== undefined) { // restore the original text the user was typing. this.element.value = this.originalText; } @@ -220,20 +218,20 @@ export default class MessageComposerInput extends React.Component { return true; }, - saveLastTextEntry: function () { + saveLastTextEntry: function() { // save the currently entered text in order to restore it later. // NB: This isn't 'originalText' because we want to restore // sent history items too! - let contentJSON = JSON.stringify(convertToRaw(component.state.editorState.getCurrentContent())); + const contentJSON = JSON.stringify(convertToRaw(component.state.editorState.getCurrentContent())); window.sessionStorage.setItem("mx_messagecomposer_input_" + this.roomId, contentJSON); }, - setLastTextEntry: function () { - let contentJSON = window.sessionStorage.getItem("mx_messagecomposer_input_" + this.roomId); + setLastTextEntry: function() { + const contentJSON = window.sessionStorage.getItem("mx_messagecomposer_input_" + this.roomId); if (contentJSON) { - let content = convertFromRaw(JSON.parse(contentJSON)); + const content = convertFromRaw(JSON.parse(contentJSON)); component.setState({ - editorState: component.createEditorState(component.state.isRichtextEnabled, content) + editorState: component.createEditorState(component.state.isRichtextEnabled, content), }); } }, @@ -244,7 +242,7 @@ export default class MessageComposerInput extends React.Component { this.dispatcherRef = dis.register(this.onAction); this.sentHistory.init( this.refs.editor, - this.props.room.roomId + this.props.room.roomId, ); } @@ -262,8 +260,8 @@ export default class MessageComposerInput extends React.Component { } } - onAction = payload => { - let editor = this.refs.editor; + onAction = (payload) => { + const editor = this.refs.editor; let contentState = this.state.editorState.getCurrentContent(); switch (payload.action) { @@ -277,7 +275,7 @@ export default class MessageComposerInput extends React.Component { contentState = Modifier.replaceText( contentState, this.state.editorState.getSelection(), - `${payload.displayname}: ` + `${payload.displayname}: `, ); let editorState = EditorState.push(this.state.editorState, contentState, 'insert-characters'); editorState = EditorState.forceSelection(editorState, contentState.getSelectionAfter()); @@ -306,7 +304,7 @@ export default class MessageComposerInput extends React.Component { if (this.state.isRichtextEnabled) { contentState = Modifier.setBlockType(contentState, startSelection, 'blockquote'); } - let editorState = EditorState.push(this.state.editorState, contentState, 'insert-characters'); + const editorState = EditorState.push(this.state.editorState, contentState, 'insert-characters'); this.onEditorContentChanged(editorState); editor.focus(); } @@ -333,8 +331,8 @@ export default class MessageComposerInput extends React.Component { startUserTypingTimer() { this.stopUserTypingTimer(); - var self = this; - this.userTypingTimer = setTimeout(function () { + const self = this; + this.userTypingTimer = setTimeout(function() { self.isTyping = false; self.sendTyping(self.isTyping); self.userTypingTimer = null; @@ -350,8 +348,8 @@ export default class MessageComposerInput extends React.Component { startServerTypingTimer() { if (!this.serverTypingTimer) { - var self = this; - this.serverTypingTimer = setTimeout(function () { + const self = this; + this.serverTypingTimer = setTimeout(function() { if (self.isTyping) { self.sendTyping(self.isTyping); self.startServerTypingTimer(); @@ -370,7 +368,7 @@ export default class MessageComposerInput extends React.Component { sendTyping(isTyping) { MatrixClientPeg.get().sendTyping( this.props.room.roomId, - this.isTyping, TYPING_SERVER_TIMEOUT + this.isTyping, TYPING_SERVER_TIMEOUT, ).done(); } @@ -465,34 +463,34 @@ export default class MessageComposerInput extends React.Component { if (blockCommands.includes(command)) { this.setState({ - editorState: RichUtils.toggleBlockType(this.state.editorState, command) + editorState: RichUtils.toggleBlockType(this.state.editorState, command), }); } else if (command === 'strike') { // this is the only inline style not handled by Draft by default this.setState({ - editorState: RichUtils.toggleInlineStyle(this.state.editorState, 'STRIKETHROUGH') + editorState: RichUtils.toggleInlineStyle(this.state.editorState, 'STRIKETHROUGH'), }); } } else { let contentState = this.state.editorState.getCurrentContent(), selection = this.state.editorState.getSelection(); - let modifyFn = { - 'bold': text => `**${text}**`, - 'italic': text => `*${text}*`, - 'underline': text => `_${text}_`, // there's actually no valid underline in Markdown, but *shrug* - 'strike': text => `~~${text}~~`, - 'code': text => `\`${text}\``, - 'blockquote': text => text.split('\n').map(line => `> ${line}\n`).join(''), - 'unordered-list-item': text => text.split('\n').map(line => `- ${line}\n`).join(''), - 'ordered-list-item': text => text.split('\n').map((line, i) => `${i + 1}. ${line}\n`).join(''), + const modifyFn = { + 'bold': (text) => `**${text}**`, + 'italic': (text) => `*${text}*`, + 'underline': (text) => `_${text}_`, // there's actually no valid underline in Markdown, but *shrug* + 'strike': (text) => `~~${text}~~`, + 'code': (text) => `\`${text}\``, + 'blockquote': (text) => text.split('\n').map((line) => `> ${line}\n`).join(''), + 'unordered-list-item': (text) => text.split('\n').map((line) => `- ${line}\n`).join(''), + 'ordered-list-item': (text) => text.split('\n').map((line, i) => `${i + 1}. ${line}\n`).join(''), }[command]; if (modifyFn) { newState = EditorState.push( this.state.editorState, RichText.modifyText(contentState, selection, modifyFn), - 'insert-characters' + 'insert-characters', ); } } @@ -509,7 +507,7 @@ export default class MessageComposerInput extends React.Component { return false; }; - handleReturn = ev => { + handleReturn = (ev) => { if (ev.shiftKey) { this.onEditorContentChanged(RichUtils.insertSoftNewline(this.state.editorState)); return true; @@ -523,31 +521,30 @@ export default class MessageComposerInput extends React.Component { let contentText = contentState.getPlainText(), contentHTML; - var cmd = SlashCommands.processInput(this.props.room.roomId, contentText); + const cmd = SlashCommands.processInput(this.props.room.roomId, contentText); if (cmd) { if (!cmd.error) { this.setState({ - editorState: this.createEditorState() + editorState: this.createEditorState(), }); } if (cmd.promise) { - cmd.promise.then(function () { + cmd.promise.then(function() { console.log("Command success."); - }, function (err) { + }, function(err) { console.error("Command failure: %s", err); - var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); + const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createDialog(ErrorDialog, { title: "Server error", - description: err.message + description: err.message, }); }); - } - else if (cmd.error) { + } else if (cmd.error) { console.error(cmd.error); - var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); + const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createDialog(ErrorDialog, { title: "Command error", - description: cmd.error + description: cmd.error, }); } return true; @@ -555,7 +552,7 @@ export default class MessageComposerInput extends React.Component { if (this.state.isRichtextEnabled) { contentHTML = HtmlUtils.stripParagraphs( - RichText.contentStateToHTML(contentState) + RichText.contentStateToHTML(contentState), ); } else { const md = new Markdown(contentText); @@ -582,7 +579,7 @@ export default class MessageComposerInput extends React.Component { let sendMessagePromise; if (contentHTML) { sendMessagePromise = sendHtmlFn.call( - this.client, this.props.room.roomId, contentText, contentHTML + this.client, this.props.room.roomId, contentText, contentHTML, ); } else { sendMessagePromise = sendTextFn.call(this.client, this.props.room.roomId, contentText); @@ -603,7 +600,7 @@ export default class MessageComposerInput extends React.Component { return true; }; - onUpArrow = async e => { + onUpArrow = async (e) => { const completion = this.autocomplete.onUpArrow(); if (completion != null) { e.preventDefault(); @@ -611,14 +608,14 @@ export default class MessageComposerInput extends React.Component { return await this.setDisplayedCompletion(completion); }; - onDownArrow = async e => { + onDownArrow = async (e) => { const completion = this.autocomplete.onDownArrow(); e.preventDefault(); return await this.setDisplayedCompletion(completion); }; // tab and shift-tab are mapped to down and up arrow respectively - onTab = async e => { + onTab = async (e) => { e.preventDefault(); // we *never* want tab's default to happen, but we do want up/down sometimes const didTab = await (e.shiftKey ? this.onUpArrow : this.onDownArrow)(e); if (!didTab && this.autocomplete) { @@ -627,7 +624,7 @@ export default class MessageComposerInput extends React.Component { } }; - onEscape = e => { + onEscape = (e) => { e.preventDefault(); if (this.autocomplete) { this.autocomplete.onEscape(e); @@ -650,10 +647,10 @@ export default class MessageComposerInput extends React.Component { const {range = {}, completion = ''} = displayedCompletion; - let contentState = Modifier.replaceText( + const contentState = Modifier.replaceText( activeEditorState.getCurrentContent(), RichText.textOffsetsToSelectionState(range, activeEditorState.getCurrentContent().getBlocksAsArray()), - completion + completion, ); let editorState = EditorState.push(activeEditorState, contentState, 'insert-characters'); @@ -688,8 +685,8 @@ export default class MessageComposerInput extends React.Component { const originalStyle = editorState.getCurrentInlineStyle().toArray(); const style = originalStyle - .map(style => styleName[style] || null) - .filter(styleName => !!styleName); + .map((style) => styleName[style] || null) + .filter((styleName) => !!styleName); const blockName = { 'code-block': 'code', @@ -708,7 +705,7 @@ export default class MessageComposerInput extends React.Component { }; } - onMarkdownToggleClicked = e => { + onMarkdownToggleClicked = (e) => { e.preventDefault(); // don't steal focus from the editor! this.handleKeyCommand('toggle-mode'); }; From 46d30c378d647cce7187ae128562170ea9e28726 Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Fri, 10 Feb 2017 02:06:06 +0530 Subject: [PATCH 009/481] fix tab focus issue in MessageComposerInput onTab was incorrectly implemented causing forceComplete instead of focusing the editor --- src/components/views/rooms/Autocomplete.js | 6 ++++++ .../views/rooms/MessageComposerInput.js | 21 ++++++++++++------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/components/views/rooms/Autocomplete.js b/src/components/views/rooms/Autocomplete.js index 9be91e068a..9a3a04376d 100644 --- a/src/components/views/rooms/Autocomplete.js +++ b/src/components/views/rooms/Autocomplete.js @@ -149,6 +149,7 @@ export default class Autocomplete extends React.Component { const done = Q.defer(); this.setState({ forceComplete: true, + hide: false, }, () => { this.complete(this.props.query, this.props.selection).then(() => { done.resolve(); @@ -185,6 +186,11 @@ export default class Autocomplete extends React.Component { } } + setState(state, func) { + super.setState(state, func); + console.log(state); + } + render() { const EmojiText = sdk.getComponent('views.elements.EmojiText'); diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index b83e5d8dbf..c0d19987c7 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -400,7 +400,8 @@ export default class MessageComposerInput extends React.Component { */ setState(state, callback) { if (state.editorState != null) { - state.editorState = RichText.attachImmutableEntitiesToEmoji(state.editorState); + state.editorState = RichText.attachImmutableEntitiesToEmoji( + state.editorState); if (state.editorState.getCurrentContent().hasText()) { this.onTypingActivity(); @@ -413,15 +414,17 @@ export default class MessageComposerInput extends React.Component { } } - super.setState(state, (state, props, context) => { + super.setState(state, () => { if (callback != null) { - callback(state, props, context); + callback(); } if (this.props.onContentChanged) { - const textContent = state.editorState.getCurrentContent().getPlainText(); - const selection = RichText.selectionStateToTextOffsets(state.editorState.getSelection(), - state.editorState.getCurrentContent().getBlocksAsArray()); + const textContent = this.state.editorState + .getCurrentContent().getPlainText(); + const selection = RichText.selectionStateToTextOffsets( + this.state.editorState.getSelection(), + this.state.editorState.getCurrentContent().getBlocksAsArray()); this.props.onContentChanged(textContent, selection); } @@ -616,11 +619,13 @@ export default class MessageComposerInput extends React.Component { // tab and shift-tab are mapped to down and up arrow respectively onTab = async (e) => { + console.log('onTab'); e.preventDefault(); // we *never* want tab's default to happen, but we do want up/down sometimes - const didTab = await (e.shiftKey ? this.onUpArrow : this.onDownArrow)(e); - if (!didTab && this.autocomplete) { + if (this.autocomplete.state.completionList.length === 0) { await this.autocomplete.forceComplete(); this.onDownArrow(e); + } else { + await (e.shiftKey ? this.onUpArrow : this.onDownArrow)(e); } }; From 5fbe06ed91497eeff46e395f1e38164d99475d6d Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Fri, 10 Feb 2017 03:40:57 +0530 Subject: [PATCH 010/481] force editor rerender when we swap editorStates --- src/components/views/rooms/Autocomplete.js | 23 +++++++++---------- .../views/rooms/MessageComposerInput.js | 19 +++++++++++---- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/components/views/rooms/Autocomplete.js b/src/components/views/rooms/Autocomplete.js index 9a3a04376d..c06786a80c 100644 --- a/src/components/views/rooms/Autocomplete.js +++ b/src/components/views/rooms/Autocomplete.js @@ -58,7 +58,7 @@ export default class Autocomplete extends React.Component { return; } - const completionList = flatMap(completions, provider => provider.completions); + const completionList = flatMap(completions, (provider) => provider.completions); // Reset selection when completion list becomes empty. let selectionOffset = COMPOSER_SELECTED; @@ -69,7 +69,7 @@ export default class Autocomplete extends React.Component { const currentSelection = this.state.selectionOffset === 0 ? null : this.state.completionList[this.state.selectionOffset - 1].completion; selectionOffset = completionList.findIndex( - completion => completion.completion === currentSelection); + (completion) => completion.completion === currentSelection); if (selectionOffset === -1) { selectionOffset = COMPOSER_SELECTED; } else { @@ -82,8 +82,8 @@ export default class Autocomplete extends React.Component { let hide = this.state.hide; // These are lists of booleans that indicate whether whether the corresponding provider had a matching pattern - const oldMatches = this.state.completions.map(completion => !!completion.command.command), - newMatches = completions.map(completion => !!completion.command.command); + const oldMatches = this.state.completions.map((completion) => !!completion.command.command), + newMatches = completions.map((completion) => !!completion.command.command); // So, essentially, we re-show autocomplete if any provider finds a new pattern or stops finding an old one if (!isEqual(oldMatches, newMatches)) { @@ -170,7 +170,7 @@ export default class Autocomplete extends React.Component { } setSelection(selectionOffset: number) { - this.setState({selectionOffset}); + this.setState({selectionOffset, hide: false}); } componentDidUpdate() { @@ -195,17 +195,16 @@ export default class Autocomplete extends React.Component { const EmojiText = sdk.getComponent('views.elements.EmojiText'); let position = 1; - let renderedCompletions = this.state.completions.map((completionResult, i) => { - let completions = completionResult.completions.map((completion, i) => { - + const renderedCompletions = this.state.completions.map((completionResult, i) => { + const completions = completionResult.completions.map((completion, i) => { const className = classNames('mx_Autocomplete_Completion', { 'selected': position === this.state.selectionOffset, }); - let componentPosition = position; + const componentPosition = position; position++; - let onMouseOver = () => this.setSelection(componentPosition); - let onClick = () => { + const onMouseOver = () => this.setSelection(componentPosition); + const onClick = () => { this.setSelection(componentPosition); this.onCompletionClicked(); }; @@ -226,7 +225,7 @@ export default class Autocomplete extends React.Component { {completionResult.provider.renderCompletions(completions)} ) : null; - }).filter(completion => !!completion); + }).filter((completion) => !!completion); return !this.state.hide && renderedCompletions.length > 0 ? (
this.container = e}> diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index c0d19987c7..7908d7f375 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -414,6 +414,8 @@ export default class MessageComposerInput extends React.Component { } } + console.log(state); + super.setState(state, () => { if (callback != null) { callback(); @@ -425,7 +427,7 @@ export default class MessageComposerInput extends React.Component { const selection = RichText.selectionStateToTextOffsets( this.state.editorState.getSelection(), this.state.editorState.getCurrentContent().getBlocksAsArray()); - + console.log(textContent); this.props.onContentChanged(textContent, selection); } }); @@ -629,12 +631,12 @@ export default class MessageComposerInput extends React.Component { } }; - onEscape = (e) => { + onEscape = async (e) => { e.preventDefault(); if (this.autocomplete) { this.autocomplete.onEscape(e); } - this.setDisplayedCompletion(null); // restore originalEditorState + await this.setDisplayedCompletion(null); // restore originalEditorState }; /* If passed null, restores the original editor content from state.originalEditorState. @@ -645,7 +647,14 @@ export default class MessageComposerInput extends React.Component { if (displayedCompletion == null) { if (this.state.originalEditorState) { - this.setState({editorState: this.state.originalEditorState}); + console.log('setting editorState to originalEditorState'); + let editorState = this.state.originalEditorState; + // This is a workaround from https://github.com/facebook/draft-js/issues/458 + // Due to the way we swap editorStates, Draft does not rerender at times + editorState = EditorState.forceSelection(editorState, + editorState.getSelection()); + this.setState({editorState}); + } return false; } @@ -663,7 +672,7 @@ export default class MessageComposerInput extends React.Component { this.setState({editorState, originalEditorState: activeEditorState}); // for some reason, doing this right away does not update the editor :( - setTimeout(() => this.refs.editor.focus(), 50); + // setTimeout(() => this.refs.editor.focus(), 50); return true; }; From c7d065276222cb5cb6506adccfae9ce249256201 Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Fri, 10 Feb 2017 04:26:36 +0530 Subject: [PATCH 011/481] actually sort autocomplete results by distance --- src/autocomplete/FuzzyMatcher.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/autocomplete/FuzzyMatcher.js b/src/autocomplete/FuzzyMatcher.js index c02ee9bbc0..bd19fc53e8 100644 --- a/src/autocomplete/FuzzyMatcher.js +++ b/src/autocomplete/FuzzyMatcher.js @@ -61,14 +61,24 @@ export default class FuzzyMatcher { .algorithm('transposition') .sort_candidates(false) .case_insensitive_sort(true) - .include_distance(false) + .include_distance(true) .maximum_candidates(this.options.resultCount || DEFAULT_RESULT_COUNT) // result count 0 doesn't make much sense .build(); } match(query: String): Array { const candidates = this.matcher.transduce(query, this.options.distance || DEFAULT_DISTANCE); - return _sortedUniq(_sortBy(_flatMap(candidates, candidate => this.keyMap.objectMap[candidate]), - candidate => this.keyMap.priorityMap[candidate])); + // TODO FIXME This is hideous. Clean up when possible. + const val = _sortedUniq(_sortBy(_flatMap(candidates, candidate => { + return this.keyMap.objectMap[candidate[0]].map(value => { + return { + distance: candidate[1], + ...value, + }; + }); + }), + [candidate => candidate.distance, candidate => this.keyMap.priorityMap[candidate]])); + console.log(val); + return val; } } From 0653343319f72f3e4dff3d0f5fc6f11ad29ee991 Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Fri, 10 Feb 2017 22:34:52 +0530 Subject: [PATCH 012/481] order User completions by last spoken --- .flowconfig | 6 +++ src/autocomplete/FuzzyMatcher.js | 7 ++- src/autocomplete/QueryMatcher.js | 62 +++++++++++++++++++++++++++ src/autocomplete/UserProvider.js | 35 +++++++++++++-- src/components/structures/RoomView.js | 15 ++----- 5 files changed, 109 insertions(+), 16 deletions(-) create mode 100644 .flowconfig create mode 100644 src/autocomplete/QueryMatcher.js diff --git a/.flowconfig b/.flowconfig new file mode 100644 index 0000000000..81770c6585 --- /dev/null +++ b/.flowconfig @@ -0,0 +1,6 @@ +[include] +src/**/*.js +test/**/*.js + +[ignore] +node_modules/ diff --git a/src/autocomplete/FuzzyMatcher.js b/src/autocomplete/FuzzyMatcher.js index bd19fc53e8..c22e2a1101 100644 --- a/src/autocomplete/FuzzyMatcher.js +++ b/src/autocomplete/FuzzyMatcher.js @@ -14,7 +14,12 @@ class KeyMap { const DEFAULT_RESULT_COUNT = 10; const DEFAULT_DISTANCE = 5; -export default class FuzzyMatcher { +// FIXME Until Fuzzy matching works better, we use prefix matching. + +import PrefixMatcher from './QueryMatcher'; +export default PrefixMatcher; + +class FuzzyMatcher { /** * Given an array of objects and keys, returns a KeyMap * Keys can refer to object properties by name and as in JavaScript (for nested properties) diff --git a/src/autocomplete/QueryMatcher.js b/src/autocomplete/QueryMatcher.js new file mode 100644 index 0000000000..b4c27a7179 --- /dev/null +++ b/src/autocomplete/QueryMatcher.js @@ -0,0 +1,62 @@ +//@flow + +import _at from 'lodash/at'; +import _flatMap from 'lodash/flatMap'; +import _sortBy from 'lodash/sortBy'; +import _sortedUniq from 'lodash/sortedUniq'; +import _keys from 'lodash/keys'; + +class KeyMap { + keys: Array; + objectMap: {[String]: Array}; + priorityMap = new Map(); +} + +export default class QueryMatcher { + /** + * Given an array of objects and keys, returns a KeyMap + * Keys can refer to object properties by name and as in JavaScript (for nested properties) + * + * To use, simply presort objects by required criteria, run through this function and create a QueryMatcher with the + * resulting KeyMap. + * + * TODO: Handle arrays and objects (Fuse did this, RoomProvider uses it) + */ + static valuesToKeyMap(objects: Array, keys: Array): KeyMap { + const keyMap = new KeyMap(); + const map = {}; + + objects.forEach((object, i) => { + const keyValues = _at(object, keys); + for (const keyValue of keyValues) { + if (!map.hasOwnProperty(keyValue)) { + map[keyValue] = []; + } + map[keyValue].push(object); + } + keyMap.priorityMap.set(object, i); + }); + + keyMap.objectMap = map; + keyMap.keys = _keys(map); + return keyMap; + } + + constructor(objects: Array, options: {[Object]: Object} = {}) { + this.options = options; + this.keys = options.keys; + this.setObjects(objects); + } + + setObjects(objects: Array) { + this.keyMap = QueryMatcher.valuesToKeyMap(objects, this.keys); + } + + match(query: String): Array { + query = query.toLowerCase().replace(/[^\w]/g, ''); + const results = _sortedUniq(_sortBy(_flatMap(this.keyMap.keys, (key) => { + return key.toLowerCase().replace(/[^\w]/g, '').indexOf(query) >= 0 ? this.keyMap.objectMap[key] : []; + }), (candidate) => this.keyMap.priorityMap.get(candidate))); + return results; + } +} diff --git a/src/autocomplete/UserProvider.js b/src/autocomplete/UserProvider.js index b65439181c..589dfec9fa 100644 --- a/src/autocomplete/UserProvider.js +++ b/src/autocomplete/UserProvider.js @@ -1,20 +1,27 @@ +//@flow import React from 'react'; import AutocompleteProvider from './AutocompleteProvider'; import Q from 'q'; import {PillCompletion} from './Components'; import sdk from '../index'; import FuzzyMatcher from './FuzzyMatcher'; +import _pull from 'lodash/pull'; +import _sortBy from 'lodash/sortBy'; +import MatrixClientPeg from '../MatrixClientPeg'; + +import type {Room, RoomMember} from 'matrix-js-sdk'; const USER_REGEX = /@\S*/g; let instance = null; export default class UserProvider extends AutocompleteProvider { + users: Array = []; + constructor() { super(USER_REGEX, { keys: ['name', 'userId'], }); - this.users = []; this.matcher = new FuzzyMatcher([], { keys: ['name', 'userId'], }); @@ -53,8 +60,30 @@ export default class UserProvider extends AutocompleteProvider { return '👥 Users'; } - setUserList(users) { - this.users = users; + setUserListFromRoom(room: Room) { + const events = room.getLiveTimeline().getEvents(); + const lastSpoken = {}; + + for(const event of events) { + lastSpoken[event.getSender()] = event.getTs(); + } + + const currentUserId = MatrixClientPeg.get().credentials.userId; + this.users = room.getJoinedMembers().filter((member) => { + if (member.userId !== currentUserId) return true; + }); + + this.users = _sortBy(this.users, (user) => 1E20 - lastSpoken[user.userId] || 1E20); + + this.matcher.setObjects(this.users); + } + + 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.matcher.setObjects(this.users); } diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index 696d15f84a..936d88c0ee 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -225,7 +225,7 @@ module.exports = React.createClass({ MatrixClientPeg.get().credentials.userId, 'join' ); - this._updateAutoComplete(); + UserProvider.getInstance().setUserListFromRoom(this.state.room); this.tabComplete.loadEntries(this.state.room); } @@ -479,8 +479,7 @@ module.exports = React.createClass({ // and that has probably just changed if (ev.sender) { this.tabComplete.onMemberSpoke(ev.sender); - // nb. we don't need to update the new autocomplete here since - // its results are currently ordered purely by search score. + UserProvider.getInstance().onUserSpoke(ev.sender); } }, @@ -658,7 +657,7 @@ module.exports = React.createClass({ // refresh the tab complete list this.tabComplete.loadEntries(this.state.room); - this._updateAutoComplete(); + UserProvider.getInstance().setUserListFromRoom(this.state.room); // if we are now a member of the room, where we were not before, that // means we have finished joining a room we were previously peeking @@ -1437,14 +1436,6 @@ module.exports = React.createClass({ } }, - _updateAutoComplete: function() { - const myUserId = MatrixClientPeg.get().credentials.userId; - const members = this.state.room.getJoinedMembers().filter(function(member) { - if (member.userId !== myUserId) return true; - }); - UserProvider.getInstance().setUserList(members); - }, - render: function() { var RoomHeader = sdk.getComponent('rooms.RoomHeader'); var MessageComposer = sdk.getComponent('rooms.MessageComposer'); From e65744abdce812b649302f887779c1866f3746c6 Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Fri, 10 Feb 2017 23:35:13 +0530 Subject: [PATCH 013/481] fix EmojiProvider for new QueryMatcher --- src/autocomplete/EmojiProvider.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/autocomplete/EmojiProvider.js b/src/autocomplete/EmojiProvider.js index 52bc47e7b6..e613f41c52 100644 --- a/src/autocomplete/EmojiProvider.js +++ b/src/autocomplete/EmojiProvider.js @@ -7,14 +7,20 @@ import {PillCompletion} from './Components'; import type {SelectionRange, Completion} from './Autocompleter'; const EMOJI_REGEX = /:\w*:?/g; -const EMOJI_SHORTNAMES = Object.keys(emojioneList); +const EMOJI_SHORTNAMES = Object.keys(emojioneList).map(shortname => { + return { + shortname, + }; +}); let instance = null; export default class EmojiProvider extends AutocompleteProvider { constructor() { super(EMOJI_REGEX); - this.matcher = new FuzzyMatcher(EMOJI_SHORTNAMES); + this.matcher = new FuzzyMatcher(EMOJI_SHORTNAMES, { + keys: 'shortname', + }); } async getCompletions(query: string, selection: SelectionRange) { @@ -24,7 +30,7 @@ export default class EmojiProvider extends AutocompleteProvider { let {command, range} = this.getCurrentCommand(query, selection); if (command) { completions = this.matcher.match(command[0]).map(result => { - const shortname = EMOJI_SHORTNAMES[result]; + const {shortname} = result; const unicode = shortnameToUnicode(shortname); return { completion: unicode, From 2d39b2533487a266ddce7bf2a3e8c80681afc146 Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Fri, 10 Feb 2017 23:44:04 +0530 Subject: [PATCH 014/481] turn off force complete when editor content changes --- src/components/views/rooms/Autocomplete.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/views/rooms/Autocomplete.js b/src/components/views/rooms/Autocomplete.js index c06786a80c..bd43b3a85e 100644 --- a/src/components/views/rooms/Autocomplete.js +++ b/src/components/views/rooms/Autocomplete.js @@ -75,11 +75,11 @@ export default class Autocomplete extends React.Component { } else { selectionOffset++; // selectionOffset is 1-indexed! } - } else { - // If no completions were returned, we should turn off force completion. - forceComplete = false; } + // If no completions were returned, we should turn off force completion. + forceComplete = false; + let hide = this.state.hide; // These are lists of booleans that indicate whether whether the corresponding provider had a matching pattern const oldMatches = this.state.completions.map((completion) => !!completion.command.command), From 32dd89774e78a907215ef3e317faac9e0400206c Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Mon, 20 Feb 2017 19:26:40 +0530 Subject: [PATCH 015/481] add support for autocomplete delay --- src/UserSettingsStore.js | 4 ++-- src/autocomplete/Autocompleter.js | 2 +- src/components/structures/UserSettings.js | 9 +++++++++ src/components/views/rooms/Autocomplete.js | 15 ++++++++++++--- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/UserSettingsStore.js b/src/UserSettingsStore.js index 66a872958c..0ee78b4f2e 100644 --- a/src/UserSettingsStore.js +++ b/src/UserSettingsStore.js @@ -139,7 +139,7 @@ module.exports = { getSyncedSetting: function(type, defaultValue = null) { var settings = this.getSyncedSettings(); - return settings.hasOwnProperty(type) ? settings[type] : null; + return settings.hasOwnProperty(type) ? settings[type] : defaultValue; }, setSyncedSetting: function(type, value) { @@ -156,7 +156,7 @@ module.exports = { getLocalSetting: function(type, defaultValue = null) { var settings = this.getLocalSettings(); - return settings.hasOwnProperty(type) ? settings[type] : null; + return settings.hasOwnProperty(type) ? settings[type] : defaultValue; }, setLocalSetting: function(type, value) { diff --git a/src/autocomplete/Autocompleter.js b/src/autocomplete/Autocompleter.js index 1bf1b1dc14..2906a5a0f7 100644 --- a/src/autocomplete/Autocompleter.js +++ b/src/autocomplete/Autocompleter.js @@ -43,7 +43,7 @@ export async function getCompletions(query: string, selection: SelectionRange, f PROVIDERS.map(provider => { return Q(provider.getCompletions(query, selection, force)) .timeout(PROVIDER_COMPLETION_TIMEOUT); - }) + }), ); return completionsList diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index 10ffbca0d3..5ab69e1a15 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -508,6 +508,15 @@ module.exports = React.createClass({ { this._renderUrlPreviewSelector() } { SETTINGS_LABELS.map( this._renderSyncedSetting ) } { THEMES.map( this._renderThemeSelector ) } + + + + + + + +
Autocomplete Delay (ms): UserSettingsStore.setLocalSetting('autocompleteDelay', +e.target.value)} />
); diff --git a/src/components/views/rooms/Autocomplete.js b/src/components/views/rooms/Autocomplete.js index bd43b3a85e..09b13e8076 100644 --- a/src/components/views/rooms/Autocomplete.js +++ b/src/components/views/rooms/Autocomplete.js @@ -6,6 +6,7 @@ import isEqual from 'lodash/isEqual'; import sdk from '../../../index'; import type {Completion, SelectionRange} from '../../../autocomplete/Autocompleter'; import Q from 'q'; +import UserSettingsStore from '../../../UserSettingsStore'; import {getCompletions} from '../../../autocomplete/Autocompleter'; @@ -77,9 +78,6 @@ export default class Autocomplete extends React.Component { } } - // If no completions were returned, we should turn off force completion. - forceComplete = false; - let hide = this.state.hide; // These are lists of booleans that indicate whether whether the corresponding provider had a matching pattern const oldMatches = this.state.completions.map((completion) => !!completion.command.command), @@ -90,6 +88,17 @@ export default class Autocomplete extends React.Component { hide = false; } + const autocompleteDelay = UserSettingsStore.getSyncedSetting('autocompleteDelay', 200); + + // We had no completions before, but do now, so we should apply our display delay here + if (this.state.completionList.length === 0 && completionList.length > 0 && + !forceComplete && autocompleteDelay > 0) { + await Q.delay(autocompleteDelay); + } + + // Force complete is turned off each time since we can't edit the query in that case + forceComplete = false; + this.setState({ completions, completionList, From 3a07fc1601ae8b6e35cc45632403650b4e8ece17 Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Wed, 22 Feb 2017 02:51:57 +0530 Subject: [PATCH 016/481] fix code-block for markdown mode --- src/components/views/rooms/MessageComposerInput.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 7908d7f375..af5627273c 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -485,7 +485,7 @@ export default class MessageComposerInput extends React.Component { 'italic': (text) => `*${text}*`, 'underline': (text) => `_${text}_`, // there's actually no valid underline in Markdown, but *shrug* 'strike': (text) => `~~${text}~~`, - 'code': (text) => `\`${text}\``, + 'code-block': (text) => `\`\`\`\n${text}\n\`\`\``, 'blockquote': (text) => text.split('\n').map((line) => `> ${line}\n`).join(''), 'unordered-list-item': (text) => text.split('\n').map((line) => `- ${line}\n`).join(''), 'ordered-list-item': (text) => text.split('\n').map((line, i) => `${i + 1}. ${line}\n`).join(''), From feac919c0a527f440d23bfaf25099659eb31e675 Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Wed, 22 Feb 2017 03:10:15 +0530 Subject: [PATCH 017/481] fix rendering of UNDERLINE inline style in RTE --- src/RichText.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/RichText.js b/src/RichText.js index e662c22d6a..219af472e8 100644 --- a/src/RichText.js +++ b/src/RichText.js @@ -30,7 +30,15 @@ const USERNAME_REGEX = /@\S+:\S+/g; const ROOM_REGEX = /#\S+:\S+/g; const EMOJI_REGEX = new RegExp(emojione.unicodeRegexp, 'g'); -export const contentStateToHTML = stateToHTML; +export const contentStateToHTML = (contentState: ContentState) => { + return stateToHTML(contentState, { + inlineStyles: { + UNDERLINE: { + element: 'u' + } + } + }); +}; export function HTMLtoContentState(html: string): ContentState { return ContentState.createFromBlockArray(convertFromHTML(html)); From 9946cadc2d3fe62c71959ceb89ed915961cdebb9 Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Tue, 7 Mar 2017 04:08:06 +0530 Subject: [PATCH 018/481] autocomplete: fix RoomProvider regression --- src/autocomplete/RoomProvider.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/autocomplete/RoomProvider.js b/src/autocomplete/RoomProvider.js index 8659b8501f..726d28db88 100644 --- a/src/autocomplete/RoomProvider.js +++ b/src/autocomplete/RoomProvider.js @@ -14,7 +14,7 @@ export default class RoomProvider extends AutocompleteProvider { constructor() { super(ROOM_REGEX); this.matcher = new FuzzyMatcher([], { - keys: ['name', 'aliases'], + keys: ['name', 'roomId', 'aliases'], }); } @@ -26,7 +26,7 @@ export default class RoomProvider extends AutocompleteProvider { const {command, range} = this.getCurrentCommand(query, selection, force); if (command) { // the only reason we need to do this is because Fuse only matches on properties - this.matcher.setObjects(client.getRooms().filter(room => !!room).map(room => { + this.matcher.setObjects(client.getRooms().filter(room => !!room && !!getDisplayAliasForRoom(room)).map(room => { return { room: room, name: room.name, From f5b52fb48844c22d61dff3475b3519bd5dd4acd6 Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Tue, 7 Mar 2017 04:15:28 +0530 Subject: [PATCH 019/481] rte: change list behaviour in markdown mode --- src/components/views/rooms/MessageComposerInput.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index af5627273c..5d9496e78d 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -487,8 +487,8 @@ export default class MessageComposerInput extends React.Component { 'strike': (text) => `~~${text}~~`, 'code-block': (text) => `\`\`\`\n${text}\n\`\`\``, 'blockquote': (text) => text.split('\n').map((line) => `> ${line}\n`).join(''), - 'unordered-list-item': (text) => text.split('\n').map((line) => `- ${line}\n`).join(''), - 'ordered-list-item': (text) => text.split('\n').map((line, i) => `${i + 1}. ${line}\n`).join(''), + 'unordered-list-item': (text) => text.split('\n').map((line) => `\n- ${line}`).join(''), + 'ordered-list-item': (text) => text.split('\n').map((line, i) => `\n${i + 1}. ${line}`).join(''), }[command]; if (modifyFn) { From 79f481f81e8b9d1d11535f91f5b8da5d19006d7e Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Tue, 7 Mar 2017 04:39:38 +0530 Subject: [PATCH 020/481] rte: special return handling for some block types --- src/components/views/rooms/MessageComposerInput.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 5d9496e78d..e3063babb1 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -513,9 +513,16 @@ export default class MessageComposerInput extends React.Component { }; handleReturn = (ev) => { - if (ev.shiftKey) { - this.onEditorContentChanged(RichUtils.insertSoftNewline(this.state.editorState)); - return true; + const currentBlockType = RichUtils.getCurrentBlockType(this.state.editorState); + // If we're in any of these three types of blocks, shift enter should insert soft newlines + // And just enter should end the block + if(['blockquote', 'unordered-list-item', 'ordered-list-item'].includes(currentBlockType)) { + if(ev.shiftKey) { + this.onEditorContentChanged(RichUtils.insertSoftNewline(this.state.editorState)); + return true; + } + + return false; } const contentState = this.state.editorState.getCurrentContent(); From b977b559de6e369adbb55fd3de5a929c01c394c6 Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Tue, 7 Mar 2017 04:46:55 +0530 Subject: [PATCH 021/481] autocomplete: add missing commands to CommandProvider --- src/autocomplete/CommandProvider.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/autocomplete/CommandProvider.js b/src/autocomplete/CommandProvider.js index 8f98bf1aa5..a30af5674d 100644 --- a/src/autocomplete/CommandProvider.js +++ b/src/autocomplete/CommandProvider.js @@ -9,11 +9,21 @@ const COMMANDS = [ args: '', description: 'Displays action', }, + { + command: '/part', + args: '[#alias:domain]', + description: 'Leave room', + }, { command: '/ban', args: ' [reason]', description: 'Bans user with given id', }, + { + command: '/unban', + args: '', + description: 'Unbans user with given id', + }, { command: '/deop', args: '', @@ -43,6 +53,11 @@ const COMMANDS = [ command: '/ddg', args: '', description: 'Searches DuckDuckGo for results', + }, + { + command: '/op', + args: ' []', + description: 'Define the power level of a user', } ]; From 6004f6d6107dbdafcd70295715040cef6c4a3109 Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Fri, 10 Mar 2017 20:34:31 +0530 Subject: [PATCH 022/481] rte: fix history --- .eslintrc.js | 2 +- src/ComposerHistoryManager.js | 63 +++++++ src/RichText.js | 10 ++ .../views/rooms/MessageComposerInput.js | 155 ++++-------------- 4 files changed, 108 insertions(+), 122 deletions(-) create mode 100644 src/ComposerHistoryManager.js diff --git a/.eslintrc.js b/.eslintrc.js index 6cd0e1015e..74790a2964 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -64,7 +64,7 @@ module.exports = { // to JSX. ignorePattern: '^\\s*<', ignoreComments: true, - code: 90, + code: 120, }], "valid-jsdoc": ["warn"], "new-cap": ["warn"], diff --git a/src/ComposerHistoryManager.js b/src/ComposerHistoryManager.js new file mode 100644 index 0000000000..5f9cf04e6f --- /dev/null +++ b/src/ComposerHistoryManager.js @@ -0,0 +1,63 @@ +//@flow + +import {ContentState} from 'draft-js'; +import * as RichText from './RichText'; +import Markdown from './Markdown'; +import _flow from 'lodash/flow'; +import _clamp from 'lodash/clamp'; + +type MessageFormat = 'html' | 'markdown'; + +class HistoryItem { + message: string = ''; + format: MessageFormat = 'html'; + + constructor(message: string, format: MessageFormat) { + this.message = message; + this.format = format; + } + + toContentState(format: MessageFormat): ContentState { + let {message} = this; + if (format === 'markdown') { + if (this.format === 'html') { + message = _flow([RichText.HTMLtoContentState, RichText.stateToMarkdown])(message); + } + return ContentState.createFromText(message); + } else { + if (this.format === 'markdown') { + message = new Markdown(message).toHTML(); + } + return RichText.HTMLtoContentState(message); + } + } +} + +export default class ComposerHistoryManager { + history: Array = []; + prefix: string; + lastIndex: number = 0; + currentIndex: number = -1; + + constructor(roomId: string, prefix: string = 'mx_composer_history_') { + this.prefix = prefix + roomId; + + // TODO: Performance issues? + for(; sessionStorage.getItem(`${this.prefix}[${this.lastIndex}]`); this.lastIndex++, this.currentIndex++) { + history.push(JSON.parse(sessionStorage.getItem(`${this.prefix}[${this.lastIndex}]`))); + } + } + + addItem(message: string, format: MessageFormat) { + const item = new HistoryItem(message, format); + this.history.push(item); + this.currentIndex = this.lastIndex; + sessionStorage.setItem(`${this.prefix}[${this.lastIndex++}]`, JSON.stringify(item)); + } + + getItem(offset: number, format: MessageFormat): ?ContentState { + this.currentIndex = _clamp(this.currentIndex + offset, 0, this.lastIndex - 1); + const item = this.history[this.currentIndex]; + return item ? item.toContentState(format) : null; + } +} diff --git a/src/RichText.js b/src/RichText.js index 219af472e8..6edde23129 100644 --- a/src/RichText.js +++ b/src/RichText.js @@ -16,6 +16,7 @@ import * as sdk from './index'; import * as emojione from 'emojione'; import {stateToHTML} from 'draft-js-export-html'; import {SelectionRange} from "./autocomplete/Autocompleter"; +import {stateToMarkdown as __stateToMarkdown} from 'draft-js-export-markdown'; const MARKDOWN_REGEX = { LINK: /(?:\[([^\]]+)\]\(([^\)]+)\))|\<(\w+:\/\/[^\>]+)\>/g, @@ -30,6 +31,15 @@ const USERNAME_REGEX = /@\S+:\S+/g; const ROOM_REGEX = /#\S+:\S+/g; const EMOJI_REGEX = new RegExp(emojione.unicodeRegexp, 'g'); +const ZWS_CODE = 8203; +const ZWS = String.fromCharCode(ZWS_CODE); // zero width space +export function stateToMarkdown(state) { + return __stateToMarkdown(state) + .replace( + ZWS, // draft-js-export-markdown adds these + ''); // this is *not* a zero width space, trust me :) +} + export const contentStateToHTML = (contentState: ContentState) => { return stateToHTML(contentState, { inlineStyles: { diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index e3063babb1..33f184c446 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -20,7 +20,6 @@ import {Editor, EditorState, RichUtils, CompositeDecorator, convertFromRaw, convertToRaw, Modifier, EditorChangeType, getDefaultKeyBinding, KeyBindingUtil, ContentState, ContentBlock, SelectionState} from 'draft-js'; -import {stateToMarkdown as __stateToMarkdown} from 'draft-js-export-markdown'; import classNames from 'classnames'; import escape from 'lodash/escape'; import Q from 'q'; @@ -40,21 +39,13 @@ import * as HtmlUtils from '../../../HtmlUtils'; import Autocomplete from './Autocomplete'; import {Completion} from "../../../autocomplete/Autocompleter"; import Markdown from '../../../Markdown'; +import ComposerHistoryManager from '../../../ComposerHistoryManager'; import {onSendMessageFailed} from './MessageComposerInputOld'; const TYPING_USER_TIMEOUT = 10000, TYPING_SERVER_TIMEOUT = 30000; const KEY_M = 77; -const ZWS_CODE = 8203; -const ZWS = String.fromCharCode(ZWS_CODE); // zero width space -function stateToMarkdown(state) { - return __stateToMarkdown(state) - .replace( - ZWS, // draft-js-export-markdown adds these - ''); // this is *not* a zero width space, trust me :) -} - /* * The textInput part of the MessageComposer */ @@ -101,6 +92,7 @@ export default class MessageComposerInput extends React.Component { client: MatrixClient; autocomplete: Autocomplete; + historyManager: ComposerHistoryManager; constructor(props, context) { super(props, context); @@ -145,110 +137,13 @@ export default class MessageComposerInput extends React.Component { return EditorState.moveFocusToEnd(editorState); } - componentWillMount() { - const component = this; - this.sentHistory = { - // The list of typed messages. Index 0 is more recent - data: [], - // The position in data currently displayed - position: -1, - // The room the history is for. - roomId: null, - // The original text before they hit UP - originalText: null, - // The textarea element to set text to. - element: null, - - init: function(element, roomId) { - this.roomId = roomId; - this.element = element; - this.position = -1; - const storedData = window.sessionStorage.getItem( - "mx_messagecomposer_history_" + roomId, - ); - if (storedData) { - this.data = JSON.parse(storedData); - } - if (this.roomId) { - this.setLastTextEntry(); - } - }, - - push: function(text) { - // store a message in the sent history - this.data.unshift(text); - window.sessionStorage.setItem( - "mx_messagecomposer_history_" + this.roomId, - JSON.stringify(this.data), - ); - // reset history position - this.position = -1; - this.originalText = null; - }, - - // move in the history. Returns true if we managed to move. - next: function(offset) { - if (this.position === -1) { - // user is going into the history, save the current line. - this.originalText = this.element.value; - } else { - // user may have modified this line in the history; remember it. - this.data[this.position] = this.element.value; - } - - if (offset > 0 && this.position === (this.data.length - 1)) { - // we've run out of history - return false; - } - - // retrieve the next item (bounded). - let newPosition = this.position + offset; - newPosition = Math.max(-1, newPosition); - newPosition = Math.min(newPosition, this.data.length - 1); - this.position = newPosition; - - if (this.position !== -1) { - // show the message - this.element.value = this.data[this.position]; - } else if (this.originalText !== undefined) { - // restore the original text the user was typing. - this.element.value = this.originalText; - } - - return true; - }, - - saveLastTextEntry: function() { - // save the currently entered text in order to restore it later. - // NB: This isn't 'originalText' because we want to restore - // sent history items too! - const contentJSON = JSON.stringify(convertToRaw(component.state.editorState.getCurrentContent())); - window.sessionStorage.setItem("mx_messagecomposer_input_" + this.roomId, contentJSON); - }, - - setLastTextEntry: function() { - const contentJSON = window.sessionStorage.getItem("mx_messagecomposer_input_" + this.roomId); - if (contentJSON) { - const content = convertFromRaw(JSON.parse(contentJSON)); - component.setState({ - editorState: component.createEditorState(component.state.isRichtextEnabled, content), - }); - } - }, - }; - } - componentDidMount() { this.dispatcherRef = dis.register(this.onAction); - this.sentHistory.init( - this.refs.editor, - this.props.room.roomId, - ); + this.historyManager = new ComposerHistoryManager(this.props.room.roomId); } componentWillUnmount() { dis.unregister(this.dispatcherRef); - this.sentHistory.saveLastTextEntry(); } componentWillUpdate(nextProps, nextState) { @@ -290,7 +185,7 @@ export default class MessageComposerInput extends React.Component { if (formatted_body) { let content = RichText.HTMLtoContentState(`
${formatted_body}
`); if (!this.state.isRichtextEnabled) { - content = ContentState.createFromText(stateToMarkdown(content)); + content = ContentState.createFromText(RichText.stateToMarkdown(content)); } const blockMap = content.getBlockMap(); @@ -414,8 +309,6 @@ export default class MessageComposerInput extends React.Component { } } - console.log(state); - super.setState(state, () => { if (callback != null) { callback(); @@ -434,12 +327,14 @@ export default class MessageComposerInput extends React.Component { } enableRichtext(enabled: boolean) { + if (enabled === this.state.isRichtextEnabled) return; + let contentState = null; if (enabled) { const md = new Markdown(this.state.editorState.getCurrentContent().getPlainText()); contentState = RichText.HTMLtoContentState(md.toHTML()); } else { - let markdown = stateToMarkdown(this.state.editorState.getCurrentContent()); + let markdown = RichText.stateToMarkdown(this.state.editorState.getCurrentContent()); if (markdown[markdown.length - 1] === '\n') { markdown = markdown.substring(0, markdown.length - 1); // stateToMarkdown tacks on an extra newline (?!?) } @@ -513,15 +408,15 @@ export default class MessageComposerInput extends React.Component { }; handleReturn = (ev) => { + if(ev.shiftKey) { + this.onEditorContentChanged(RichUtils.insertSoftNewline(this.state.editorState)); + return true; + } + const currentBlockType = RichUtils.getCurrentBlockType(this.state.editorState); // If we're in any of these three types of blocks, shift enter should insert soft newlines // And just enter should end the block if(['blockquote', 'unordered-list-item', 'ordered-list-item'].includes(currentBlockType)) { - if(ev.shiftKey) { - this.onEditorContentChanged(RichUtils.insertSoftNewline(this.state.editorState)); - return true; - } - return false; } @@ -586,8 +481,10 @@ export default class MessageComposerInput extends React.Component { sendTextFn = this.client.sendEmoteMessage; } - // XXX: We don't actually seem to use this history? - this.sentHistory.push(contentHTML || contentText); + this.historyManager.addItem( + this.state.isRichtextEnabled ? contentHTML : contentState.getPlainText(), + this.state.isRichtextEnabled ? 'html' : 'markdown'); + let sendMessagePromise; if (contentHTML) { sendMessagePromise = sendHtmlFn.call( @@ -614,14 +511,30 @@ export default class MessageComposerInput extends React.Component { onUpArrow = async (e) => { const completion = this.autocomplete.onUpArrow(); - if (completion != null) { - e.preventDefault(); + if (completion == null) { + const newContent = this.historyManager.getItem(-1, this.state.isRichtextEnabled ? 'html' : 'markdown'); + if (!newContent) return false; + const editorState = EditorState.push(this.state.editorState, + newContent, + 'insert-characters'); + this.setState({editorState}); + return true; } + e.preventDefault(); return await this.setDisplayedCompletion(completion); }; onDownArrow = async (e) => { const completion = this.autocomplete.onDownArrow(); + if (completion == null) { + const newContent = this.historyManager.getItem(+1, this.state.isRichtextEnabled ? 'html' : 'markdown'); + if (!newContent) return false; + const editorState = EditorState.push(this.state.editorState, + newContent, + 'insert-characters'); + this.setState({editorState}); + return true; + } e.preventDefault(); return await this.setDisplayedCompletion(completion); }; From 8dc7f8efe29c2bd796f17c21c41c89a4d6fd858f Mon Sep 17 00:00:00 2001 From: Aviral Dasgupta Date: Fri, 10 Mar 2017 21:10:27 +0530 Subject: [PATCH 023/481] rte: remove logging and fix new history --- src/ComposerHistoryManager.js | 10 ++++++++-- src/components/views/rooms/Autocomplete.js | 1 - src/components/views/rooms/MessageComposerInput.js | 3 --- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/ComposerHistoryManager.js b/src/ComposerHistoryManager.js index 5f9cf04e6f..face75ea8a 100644 --- a/src/ComposerHistoryManager.js +++ b/src/ComposerHistoryManager.js @@ -44,14 +44,20 @@ export default class ComposerHistoryManager { // TODO: Performance issues? for(; sessionStorage.getItem(`${this.prefix}[${this.lastIndex}]`); this.lastIndex++, this.currentIndex++) { - history.push(JSON.parse(sessionStorage.getItem(`${this.prefix}[${this.lastIndex}]`))); + this.history.push( + Object.assign( + new HistoryItem(), + JSON.parse(sessionStorage.getItem(`${this.prefix}[${this.lastIndex}]`)), + ), + ); } + this.currentIndex--; } addItem(message: string, format: MessageFormat) { const item = new HistoryItem(message, format); this.history.push(item); - this.currentIndex = this.lastIndex; + this.currentIndex = this.lastIndex + 1; sessionStorage.setItem(`${this.prefix}[${this.lastIndex++}]`, JSON.stringify(item)); } diff --git a/src/components/views/rooms/Autocomplete.js b/src/components/views/rooms/Autocomplete.js index 09b13e8076..5329cde8f2 100644 --- a/src/components/views/rooms/Autocomplete.js +++ b/src/components/views/rooms/Autocomplete.js @@ -197,7 +197,6 @@ export default class Autocomplete extends React.Component { setState(state, func) { super.setState(state, func); - console.log(state); } render() { diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 33f184c446..2a0a62ebf7 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -320,7 +320,6 @@ export default class MessageComposerInput extends React.Component { const selection = RichText.selectionStateToTextOffsets( this.state.editorState.getSelection(), this.state.editorState.getCurrentContent().getBlocksAsArray()); - console.log(textContent); this.props.onContentChanged(textContent, selection); } }); @@ -541,7 +540,6 @@ export default class MessageComposerInput extends React.Component { // tab and shift-tab are mapped to down and up arrow respectively onTab = async (e) => { - console.log('onTab'); e.preventDefault(); // we *never* want tab's default to happen, but we do want up/down sometimes if (this.autocomplete.state.completionList.length === 0) { await this.autocomplete.forceComplete(); @@ -567,7 +565,6 @@ export default class MessageComposerInput extends React.Component { if (displayedCompletion == null) { if (this.state.originalEditorState) { - console.log('setting editorState to originalEditorState'); let editorState = this.state.originalEditorState; // This is a workaround from https://github.com/facebook/draft-js/issues/458 // Due to the way we swap editorStates, Draft does not rerender at times From f5a23c14df83c8c8bc91c0daa7ded05c73fbb71c Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 8 May 2017 17:32:26 +0100 Subject: [PATCH 024/481] Remove redundant bind --- src/components/views/rooms/MessageComposerInput.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 2d16b202d1..7d52d87dbf 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -101,7 +101,6 @@ export default class MessageComposerInput extends React.Component { this.handleKeyCommand = this.handleKeyCommand.bind(this); this.handlePastedFiles = this.handlePastedFiles.bind(this); this.onEditorContentChanged = this.onEditorContentChanged.bind(this); - this.setEditorState = this.setEditorState.bind(this); this.onUpArrow = this.onUpArrow.bind(this); this.onDownArrow = this.onDownArrow.bind(this); this.onTab = this.onTab.bind(this); From e22712514eec3c8037a0a77449b1494bccc160f3 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 17 May 2017 10:58:59 +0100 Subject: [PATCH 025/481] Add show / hide apps button --- src/components/views/rooms/MessageComposer.js | 41 +++++++++++++++++-- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index 8a3b128908..90b738f343 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -32,6 +32,8 @@ export default class MessageComposer extends React.Component { this.onCallClick = this.onCallClick.bind(this); this.onHangupClick = this.onHangupClick.bind(this); this.onUploadClick = this.onUploadClick.bind(this); + this.onShowAppsClick = this.onShowAppsClick.bind(this); + this.onHideAppsClick = this.onHideAppsClick.bind(this); this.onUploadFileSelected = this.onUploadFileSelected.bind(this); this.onVoiceCallClick = this.onVoiceCallClick.bind(this); this.onInputContentChanged = this.onInputContentChanged.bind(this); @@ -145,6 +147,7 @@ export default class MessageComposer extends React.Component { } onCallClick(ev) { + console.warn("Call but clicked!"); dis.dispatch({ action: 'place_call', type: ev.shiftKey ? "screensharing" : "video", @@ -160,6 +163,22 @@ export default class MessageComposer extends React.Component { }); } + onShowAppsClick(ev) { + console.warn("Showing apps"); + dis.dispatch({ + action: 'showApps', + room_id: this.props.room.roomId, + }); + } + + onHideAppsClick(ev) { + dis.dispatch({ + action: 'hideApps', + room_id: this.props.room.roomId, + }); + console.warn("Hiding apps"); + } + onInputContentChanged(content: string, selection: {start: number, end: number}) { this.setState({ autocompleteQuery: content, @@ -241,14 +260,13 @@ export default class MessageComposer extends React.Component { alt={e2eTitle} title={e2eTitle} /> ); - var callButton, videoCallButton, hangupButton; + var callButton, videoCallButton, hangupButton, showAppsButton, hideAppsButton; if (this.props.callState && this.props.callState !== 'ended') { hangupButton =
Hangup
; - } - else { + } else { callButton =
@@ -259,6 +277,19 @@ export default class MessageComposer extends React.Component {
; } + // Apps + if (this.props.showAppsState && this.props.showAppsState == 'visible') { + hideAppsButton = +
+ +
; + } else { + showAppsButton = +
+ +
; + } + var canSendMessages = this.props.room.currentState.maySendMessage( MatrixClientPeg.get().credentials.userId); @@ -308,7 +339,9 @@ export default class MessageComposer extends React.Component { uploadButton, hangupButton, callButton, - videoCallButton + videoCallButton, + showAppsButton, + hideAppsButton, ); } else { controls.push( From 9dd0b9bdd1eb648207fa78fadd2f5d84eec0da68 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 17 May 2017 11:31:01 +0100 Subject: [PATCH 026/481] Fix lint errrors / warnings --- src/components/views/rooms/MessageComposer.js | 101 +++++++++--------- 1 file changed, 53 insertions(+), 48 deletions(-) diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index 90b738f343..7aab5f1d50 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -13,14 +13,14 @@ 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'); +const React = require('react'); -var CallHandler = require('../../../CallHandler'); -var MatrixClientPeg = require('../../../MatrixClientPeg'); -var Modal = require('../../../Modal'); -var sdk = require('../../../index'); -var dis = require('../../../dispatcher'); -import Autocomplete from './Autocomplete'; +const CallHandler = require('../../../CallHandler'); +const MatrixClientPeg = require('../../../MatrixClientPeg'); +const Modal = require('../../../Modal'); +const sdk = require('../../../index'); +const dis = require('../../../dispatcher'); +// import Autocomplete from './Autocomplete'; import classNames from 'classnames'; import UserSettingsStore from '../../../UserSettingsStore'; @@ -57,7 +57,6 @@ export default class MessageComposer extends React.Component { }, showFormatting: UserSettingsStore.getSyncedSetting('MessageComposer.showFormatting', false), }; - } componentDidMount() { @@ -82,7 +81,7 @@ export default class MessageComposer extends React.Component { onUploadClick(ev) { if (MatrixClientPeg.get().isGuest()) { - let NeedToRegisterDialog = sdk.getComponent("dialogs.NeedToRegisterDialog"); + const NeedToRegisterDialog = sdk.getComponent("dialogs.NeedToRegisterDialog"); Modal.createDialog(NeedToRegisterDialog, { title: "Please Register", description: "Guest users can't upload files. Please register to upload.", @@ -94,13 +93,14 @@ export default class MessageComposer extends React.Component { } onUploadFileSelected(files, isPasted) { - if (!isPasted) + if (!isPasted) { files = files.target.files; + } - let QuestionDialog = sdk.getComponent("dialogs.QuestionDialog"); - let TintableSvg = sdk.getComponent("elements.TintableSvg"); + const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog"); + const TintableSvg = sdk.getComponent("elements.TintableSvg"); - let fileList = []; + const fileList = []; for (let i=0; i {files[i].name || 'Attachment'} @@ -121,7 +121,7 @@ export default class MessageComposer extends React.Component { if(shouldUpload) { // MessageComposer shouldn't have to rely on its parent passing in a callback to upload a file if (files) { - for(var i=0; i - + , ); let e2eImg, e2eTitle, e2eClass; @@ -258,9 +260,9 @@ export default class MessageComposer extends React.Component { controls.push( {e2eTitle} + />, ); - var callButton, videoCallButton, hangupButton, showAppsButton, hideAppsButton; + let callButton, videoCallButton, hangupButton, showAppsButton, hideAppsButton; if (this.props.callState && this.props.callState !== 'ended') { hangupButton =
@@ -290,14 +292,14 @@ export default class MessageComposer extends React.Component {
; } - var canSendMessages = this.props.room.currentState.maySendMessage( + const canSendMessages = this.props.room.currentState.maySendMessage( MatrixClientPeg.get().credentials.userId); if (canSendMessages) { // This also currently includes the call buttons. Really we should // check separately for whether we can call, but this is slightly // complex because of conference calls. - var uploadButton = ( + const uploadButton = (
@@ -323,7 +325,7 @@ export default class MessageComposer extends React.Component { controls.push( this.messageComposerInput = c} + ref={(c) => this.messageComposerInput = c} key="controls_input" onResize={this.props.onResize} room={this.props.room} @@ -347,25 +349,25 @@ export default class MessageComposer extends React.Component { controls.push(
You do not have permission to post to this room -
+
, ); } - let autoComplete; - if (UserSettingsStore.isFeatureEnabled('rich_text_editor')) { - autoComplete =
- -
; - } + // let autoComplete; + // if (UserSettingsStore.isFeatureEnabled('rich_text_editor')) { + // autoComplete =
+ // + //
; + // } const {style, blockType} = this.state.inputState; const formatButtons = ["bold", "italic", "strike", "underline", "code", "quote", "bullet", "numbullet"].map( - name => { + (name) => { const active = style.includes(name) || blockType === name; const suffix = active ? '-o-n' : ''; const onFormatButtonClicked = this.onFormatButtonClicked.bind(this, name); @@ -428,5 +430,8 @@ MessageComposer.propTypes = { uploadFile: React.PropTypes.func.isRequired, // opacity for dynamic UI fading effects - opacity: React.PropTypes.number + opacity: React.PropTypes.number, + + // string representing the current room app drawer state + showAppsState: React.PropTypes.string, }; From 95988bd5ecbabc58c3ed80f1d35b17255ec0a9e6 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 17 May 2017 12:35:25 +0100 Subject: [PATCH 027/481] Dispatch show hide app drawer events --- src/components/views/rooms/MessageComposer.js | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index 7aab5f1d50..22b84b73cb 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -164,21 +164,19 @@ export default class MessageComposer extends React.Component { } onShowAppsClick(ev) { - alert("Showing apps"); console.warn("Showing apps"); - // dis.dispatch({ - // action: 'showApps', - // room_id: this.props.room.roomId, - // }); + dis.dispatch({ + action: 'showApps', + room_id: this.props.room.roomId, + }); } onHideAppsClick(ev) { - alert("Hiding apps"); console.warn("Hiding apps"); - // dis.dispatch({ - // action: 'hideApps', - // room_id: this.props.room.roomId, - // }); + dis.dispatch({ + action: 'hideApps', + room_id: this.props.room.roomId, + }); } onInputContentChanged(content: string, selection: {start: number, end: number}) { @@ -282,12 +280,12 @@ export default class MessageComposer extends React.Component { // Apps if (this.props.showAppsState && this.props.showAppsState == 'visible') { hideAppsButton = -
+
; } else { showAppsButton = -
+
; } From 7e1de2ac350e7f2ea5eab9eb11e1f7caf2db63e2 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 17 May 2017 21:15:57 +0100 Subject: [PATCH 028/481] Show/hide apps panel and misc formatting and lint fixes --- src/components/structures/RoomView.js | 25 ++++++++++---- src/components/views/rooms/AuxPanel.js | 34 +++++++++++-------- src/components/views/rooms/MessageComposer.js | 14 ++++---- 3 files changed, 45 insertions(+), 28 deletions(-) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index b22d867acf..49aa3a0af5 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -43,7 +43,7 @@ import KeyCode from '../../KeyCode'; import UserProvider from '../../autocomplete/UserProvider'; -var DEBUG = false; +const DEBUG = false; if (DEBUG) { // using bind means that we get to keep useful line numbers in the console @@ -133,6 +133,7 @@ module.exports = React.createClass({ callState: null, guestsCanJoin: false, canPeek: false, + showApps: false, // error object, as from the matrix client/server API // If we failed to load information about the room, @@ -168,7 +169,7 @@ module.exports = React.createClass({ onClickCompletes: true, onStateChange: (isCompleting) => { this.forceUpdate(); - } + }, }); if (this.props.roomAddress[0] == '#') { @@ -434,9 +435,14 @@ module.exports = React.createClass({ this._updateConfCallNotification(); this.setState({ - callState: callState + callState: callState, }); + break; + case 'appsDrawer': + this.setState({ + showApps: payload.show ? true : false, + }); break; } }, @@ -1638,7 +1644,8 @@ module.exports = React.createClass({ draggingFile={this.state.draggingFile} displayConfCallNotification={this.state.displayConfCallNotification} maxHeight={this.state.auxPanelMaxHeight} - onResize={this.onChildResize} > + onResize={this.onChildResize} + showApps={this.state.showApps} > { aux } ); @@ -1651,8 +1658,14 @@ module.exports = React.createClass({ if (canSpeak) { messageComposer = ; + room={this.state.room} + onResize={this.onChildResize} + uploadFile={this.uploadFile} + callState={this.state.callState} + tabComplete={this.tabComplete} + opacity={ this.props.opacity } + showApps={ this.state.showApps } + />; } // TODO: Why aren't we storing the term/scope/count in this format diff --git a/src/components/views/rooms/AuxPanel.js b/src/components/views/rooms/AuxPanel.js index 365cc18f99..31739a890f 100644 --- a/src/components/views/rooms/AuxPanel.js +++ b/src/components/views/rooms/AuxPanel.js @@ -14,11 +14,12 @@ See the License for the specific language governing permissions and limitations under the License. */ -var React = require('react'); -var MatrixClientPeg = require("../../../MatrixClientPeg"); -var sdk = require('../../../index'); -var dis = require("../../../dispatcher"); -var ObjectUtils = require('../../../ObjectUtils'); +const React = require('react'); +const MatrixClientPeg = require("../../../MatrixClientPeg"); +const sdk = require('../../../index'); +const dis = require("../../../dispatcher"); +const ObjectUtils = require('../../../ObjectUtils'); +const AppsDrawer = require('./AppsDrawer'); module.exports = React.createClass({ displayName: 'AuxPanel', @@ -68,10 +69,10 @@ module.exports = React.createClass({ }, render: function() { - var CallView = sdk.getComponent("voip.CallView"); - var TintableSvg = sdk.getComponent("elements.TintableSvg"); + const CallView = sdk.getComponent("voip.CallView"); + const TintableSvg = sdk.getComponent("elements.TintableSvg"); - var fileDropTarget = null; + let fileDropTarget = null; if (this.props.draggingFile) { fileDropTarget = (
@@ -85,19 +86,18 @@ module.exports = React.createClass({ ); } - var conferenceCallNotification = null; + let conferenceCallNotification = null; if (this.props.displayConfCallNotification) { - var supportedText, joinText; + let supportedText; + let joinText; if (!MatrixClientPeg.get().supportsVoip()) { supportedText = " (unsupported)"; - } - else { + } else { joinText = ( Join as { this.onConferenceNotificationClick(event, 'voice');}} href="#">voice or { this.onConferenceNotificationClick(event, 'video'); }} href="#">video. ); - } conferenceCallNotification = (
@@ -106,7 +106,7 @@ module.exports = React.createClass({ ); } - var callView = ( + const callView = ( ); + let appsDrawer = null; + if(this.props.showApps) { + appsDrawer = ; + } + return (
+ { appsDrawer } { fileDropTarget } { callView } { conferenceCallNotification } diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index 22b84b73cb..a90de8cb5c 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -164,18 +164,16 @@ export default class MessageComposer extends React.Component { } onShowAppsClick(ev) { - console.warn("Showing apps"); dis.dispatch({ - action: 'showApps', - room_id: this.props.room.roomId, + action: 'appsDrawer', + show: true, }); } onHideAppsClick(ev) { - console.warn("Hiding apps"); dis.dispatch({ - action: 'hideApps', - room_id: this.props.room.roomId, + action: 'appsDrawer', + show: false, }); } @@ -278,7 +276,7 @@ export default class MessageComposer extends React.Component { } // Apps - if (this.props.showAppsState && this.props.showAppsState == 'visible') { + if (this.props.showApps) { hideAppsButton =
@@ -431,5 +429,5 @@ MessageComposer.propTypes = { opacity: React.PropTypes.number, // string representing the current room app drawer state - showAppsState: React.PropTypes.string, + showApps: React.PropTypes.bool, }; From 0e5657333fe17df739f5736efd834ea0e7f926d5 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 17 May 2017 23:21:02 +0100 Subject: [PATCH 029/481] Add app drawer and app dialog --- src/components/views/dialogs/AddAppDialog.js | 74 ++++++++++++++++++++ src/components/views/rooms/AppsDrawer.js | 52 ++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 src/components/views/dialogs/AddAppDialog.js create mode 100644 src/components/views/rooms/AppsDrawer.js diff --git a/src/components/views/dialogs/AddAppDialog.js b/src/components/views/dialogs/AddAppDialog.js new file mode 100644 index 0000000000..4a3c1dfb5b --- /dev/null +++ b/src/components/views/dialogs/AddAppDialog.js @@ -0,0 +1,74 @@ +/* +Copyright 2016 OpenMarket 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 React from 'react'; +import sdk from '../../../index'; + +/** + * Prompt the user for address of iframe widget + * + * On success, `onFinished(true, newAppWidget)` is called. + */ +export default React.createClass({ + displayName: 'AddAppDialog', + propTypes: { + onFinished: React.PropTypes.func.isRequired, + }, + + getInitialState: function() { + }, + + componentDidMount: function() { + this.refs.input_value.select(); + }, + + onValueChange: function(ev) { + this.setState({ + value: ev.target.value, + }); + }, + + onFormSubmit: function(ev) { + ev.preventDefault(); + this.props.onFinished(true, this.state.value); + return false; + }, + + render: function() { + const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); + return ( + +
+ Please enter the URL of the app / widget to add. +
+
+
+ +
+
+ +
+
+
+ ); + }, +}); diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js new file mode 100644 index 0000000000..82abb07e5c --- /dev/null +++ b/src/components/views/rooms/AppsDrawer.js @@ -0,0 +1,52 @@ +/* +Copyright 2015, 2016 OpenMarket 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. +*/ + +'use strict'; + +const React = require('react'); +const AddAppDialog = require('../dialogs/AddAppDialog'); + +module.exports = React.createClass({ + displayName: 'AppsDrawer', + + propTypes: { + }, + + componentDidMount: function() { + }, + + getInitialState: function() { + // this.onClickAddWidget = this.onClickAddWidget.bind(this); + return { + addAppWidget: false, + }; + }, + + onClickAddWidget: function() { + this.setState({ + addAppWidget: true, + }); + }, + + render: function() { + return ( +
+
[+] Add a widget
+ {this.state.addAppWidget && AddAppDialog} +
+ ); + }, +}); From e8837d28ef7b8a37756b16e5c411a5ff7c3becf6 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Mon, 22 May 2017 12:34:27 +0100 Subject: [PATCH 030/481] App tile and app dialog styling --- src/components/views/dialogs/AddAppDialog.js | 9 +- src/components/views/elements/AppTile.js | 53 +++++++++++ src/components/views/elements/MemberTile.js | 97 ++++++++++++++++++++ src/components/views/rooms/AppsDrawer.js | 39 ++++++-- 4 files changed, 188 insertions(+), 10 deletions(-) create mode 100644 src/components/views/elements/AppTile.js create mode 100644 src/components/views/elements/MemberTile.js diff --git a/src/components/views/dialogs/AddAppDialog.js b/src/components/views/dialogs/AddAppDialog.js index 4a3c1dfb5b..b72a3809b4 100644 --- a/src/components/views/dialogs/AddAppDialog.js +++ b/src/components/views/dialogs/AddAppDialog.js @@ -29,6 +29,9 @@ export default React.createClass({ }, getInitialState: function() { + return { + value: "", + }; }, componentDidMount: function() { @@ -36,9 +39,7 @@ export default React.createClass({ }, onValueChange: function(ev) { - this.setState({ - value: ev.target.value, - }); + this.setState({ value: ev.target.value}); }, onFormSubmit: function(ev) { @@ -61,7 +62,7 @@ export default React.createClass({
diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js new file mode 100644 index 0000000000..66c32a16a1 --- /dev/null +++ b/src/components/views/elements/AppTile.js @@ -0,0 +1,53 @@ +/* +Copyright 2015, 2016 OpenMarket 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. +*/ + +'use strict'; + +const React = require('react'); + +export default React.createClass({ + displayName: 'AppTile', + + propTypes: { + id: React.PropTypes.string.isRequired, + url: React.PropTypes.string.isRequired, + name: React.PropTypes.string.isRequired, + }, + + getDefaultProps: function() { + return { + url: "", + }; + }, + + render: function() { + return ( +
+
+ {this.props.name} + + Edit + Cancel + {/* x */} + +
+
+ +
+
+ ); + }, +}); diff --git a/src/components/views/elements/MemberTile.js b/src/components/views/elements/MemberTile.js new file mode 100644 index 0000000000..5becef9ede --- /dev/null +++ b/src/components/views/elements/MemberTile.js @@ -0,0 +1,97 @@ +/* +Copyright 2015, 2016 OpenMarket 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. +*/ + +'use strict'; + +var React = require('react'); + +var MatrixClientPeg = require('../../../MatrixClientPeg'); +var sdk = require('../../../index'); +var dis = require('../../../dispatcher'); +var Modal = require("../../../Modal"); + +module.exports = React.createClass({ + displayName: 'MemberTile', + + propTypes: { + member: React.PropTypes.any.isRequired, // RoomMember + }, + + getInitialState: function() { + return {}; + }, + + shouldComponentUpdate: function(nextProps, nextState) { + if ( + this.member_last_modified_time === undefined || + this.member_last_modified_time < nextProps.member.getLastModifiedTime() + ) { + return true; + } + if ( + nextProps.member.user && + (this.user_last_modified_time === undefined || + this.user_last_modified_time < nextProps.member.user.getLastModifiedTime()) + ) { + return true; + } + return false; + }, + + onClick: function(e) { + dis.dispatch({ + action: 'view_user', + member: this.props.member, + }); + }, + + _getDisplayName: function() { + return this.props.member.name; + }, + + getPowerLabel: function() { + return this.props.member.userId + " (power " + this.props.member.powerLevel + ")"; + }, + + render: function() { + var MemberAvatar = sdk.getComponent('avatars.MemberAvatar'); + var BaseAvatar = sdk.getComponent('avatars.BaseAvatar'); + var EntityTile = sdk.getComponent('rooms.EntityTile'); + + var member = this.props.member; + var name = this._getDisplayName(); + var active = -1; + var presenceState = member.user ? member.user.presence : null; + + var av = ( + + ); + + if (member.user) { + this.user_last_modified_time = member.user.getLastModifiedTime(); + } + this.member_last_modified_time = member.getLastModifiedTime(); + + return ( + + ); + } +}); diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 82abb07e5c..ef0cbcf2b9 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -18,6 +18,8 @@ limitations under the License. const React = require('react'); const AddAppDialog = require('../dialogs/AddAppDialog'); +const AppTile = require('../elements/AppTile'); +const Modal = require("../../../Modal"); module.exports = React.createClass({ displayName: 'AppsDrawer', @@ -26,26 +28,51 @@ module.exports = React.createClass({ }, componentDidMount: function() { + const as = this.state.apps; + as.push({ + id: "bbcApp", + url: "http://news.bbc.co.uk", + name: "BBC News", + }); + this.setState({apps: as}); }, getInitialState: function() { - // this.onClickAddWidget = this.onClickAddWidget.bind(this); return { - addAppWidget: false, + apps: [{ + id: "googleApp", + url: "http://matrix.org/grafana/dashboard/db/golang-metrics?panelId=2&fullscreen&edit&var-bucket_size=1m&var-job=riot-bot&var-handler=All&from=1495188444653&to=1495210044654", + name: "Google", + }], }; }, onClickAddWidget: function() { - this.setState({ - addAppWidget: true, + Modal.createDialog(AddAppDialog, { + onFinished: (proceed, reason) => { + if (!proceed) return; + + this.state.apps.push(); + }, }); }, render: function() { + const apps = this.state.apps.map( + (app) => ); + return (
-
[+] Add a widget
- {this.state.addAppWidget && AddAppDialog} +
+ {apps} +
+
+ [+] Add a widget +
); }, From b111579aed578dae1089c7c349a72c2a0977c551 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Mon, 22 May 2017 18:00:17 +0100 Subject: [PATCH 031/481] App tile events --- src/components/views/elements/AppTile.js | 27 ++++++++++++++++++++---- src/components/views/rooms/AppsDrawer.js | 6 +++--- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 66c32a16a1..72d59d0ecd 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -33,19 +33,38 @@ export default React.createClass({ }; }, + _onEditClick: function() { + console.log("Edit widget %s", this.props.id); + }, + + _onDeleteClick: function() { + console.log("Delete widget %s", this.props.id); + }, + render: function() { return (
{this.props.name} - Edit - Cancel - {/* x */} + {/* Edit widget */} + Edit + + {/* Delete widget */} + Cancel
- +
); diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index ef0cbcf2b9..1318d07d8b 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -40,9 +40,9 @@ module.exports = React.createClass({ getInitialState: function() { return { apps: [{ - id: "googleApp", - url: "http://matrix.org/grafana/dashboard/db/golang-metrics?panelId=2&fullscreen&edit&var-bucket_size=1m&var-job=riot-bot&var-handler=All&from=1495188444653&to=1495210044654", - name: "Google", + id: "riot-bot", + url: "https://matrix.org/_matrix/media/v1/thumbnail/matrix.org/LvHiqFMHWxAjFUMVCvaPbRYs?width=150&height=150", + name: "Riot-bot", }], }; }, From ec03cf4de39ec9a815af6a8b2d6d098c712146b4 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 30 May 2017 10:46:51 +0100 Subject: [PATCH 032/481] disable iframe sandboxing. Remove BBC news iframe --- src/components/views/elements/AppTile.js | 3 +- src/components/views/rooms/AppsDrawer.js | 36 ++++++++++++++++-------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 72d59d0ecd..18b2148829 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -64,7 +64,8 @@ export default React.createClass({
- + {/* */} +
); diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 1318d07d8b..041e0f0943 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -28,22 +28,34 @@ module.exports = React.createClass({ }, componentDidMount: function() { - const as = this.state.apps; - as.push({ - id: "bbcApp", - url: "http://news.bbc.co.uk", - name: "BBC News", - }); - this.setState({apps: as}); + // const as = this.state.apps; + // as.push({ + // id: "bbcApp", + // url: "http://news.bbc.co.uk", + // name: "BBC News", + // }); + // this.setState({apps: as}); }, getInitialState: function() { return { - apps: [{ - id: "riot-bot", - url: "https://matrix.org/_matrix/media/v1/thumbnail/matrix.org/LvHiqFMHWxAjFUMVCvaPbRYs?width=150&height=150", - name: "Riot-bot", - }], + apps: [ + // { + // id: "riot-bot", + // url: "https://matrix.org/_matrix/media/v1/thumbnail/matrix.org/LvHiqFMHWxAjFUMVCvaPbRYs?width=150&height=150", + // name: "Riot-bot", + // }, + { + id: "youtube", + url: "https://www.youtube.com/embed/ZJy1ajvMU1k?controls=0&enablejsapi=1&iv_load_policy=3&modestbranding=1&playsinline=1", + name: "Live stream - Boeuf Bourguignon", + }, + { + id: "recipie", + url: "https://www.bbcgoodfood.com/recipes/5032/beef-bourguignon", + name: "Ingredients - Boeuf Bourguignon", + }, + ], }; }, From 143f68ec56242b7eea84a9e3255bd5eb1b9c6af8 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 30 May 2017 11:40:29 +0100 Subject: [PATCH 033/481] Add locally hosted recepie widget --- src/components/views/rooms/AppsDrawer.js | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 041e0f0943..3e71d46feb 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -28,23 +28,11 @@ module.exports = React.createClass({ }, componentDidMount: function() { - // const as = this.state.apps; - // as.push({ - // id: "bbcApp", - // url: "http://news.bbc.co.uk", - // name: "BBC News", - // }); - // this.setState({apps: as}); }, getInitialState: function() { return { apps: [ - // { - // id: "riot-bot", - // url: "https://matrix.org/_matrix/media/v1/thumbnail/matrix.org/LvHiqFMHWxAjFUMVCvaPbRYs?width=150&height=150", - // name: "Riot-bot", - // }, { id: "youtube", url: "https://www.youtube.com/embed/ZJy1ajvMU1k?controls=0&enablejsapi=1&iv_load_policy=3&modestbranding=1&playsinline=1", @@ -52,7 +40,7 @@ module.exports = React.createClass({ }, { id: "recipie", - url: "https://www.bbcgoodfood.com/recipes/5032/beef-bourguignon", + url: "http://localhost:8000/recepie.html", name: "Ingredients - Boeuf Bourguignon", }, ], From 0e7bb6791f5448cbd93efbc8bdeebfc2a92260d4 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 30 May 2017 13:47:17 +0100 Subject: [PATCH 034/481] Static widget config per room --- src/components/views/rooms/AppsDrawer.js | 36 ++++++++++++++++-------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 3e71d46feb..a571cc8047 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -21,6 +21,22 @@ const AddAppDialog = require('../dialogs/AddAppDialog'); const AppTile = require('../elements/AppTile'); const Modal = require("../../../Modal"); +// FIXME -- Hard coded widget config +const roomWidgetConfig = { + '!IAkkwswSrOSzPRWksX:matrix.org': [ + { + id: "youtube", + url: "https://www.youtube.com/embed/ZJy1ajvMU1k?controls=0&enablejsapi=1&iv_load_policy=3&modestbranding=1&playsinline=1", + name: "Live stream - Boeuf Bourguignon", + }, + { + id: "recipie", + url: "http://localhost:8000/recepie.html", + name: "Ingredients - Boeuf Bourguignon", + }, + ], +}; + module.exports = React.createClass({ displayName: 'AppsDrawer', @@ -31,19 +47,15 @@ module.exports = React.createClass({ }, getInitialState: function() { + for (const key in roomWidgetConfig) { + if(key == this.props.room.roomId) { + return { + apps: roomWidgetConfig[key], + }; + } + } return { - apps: [ - { - id: "youtube", - url: "https://www.youtube.com/embed/ZJy1ajvMU1k?controls=0&enablejsapi=1&iv_load_policy=3&modestbranding=1&playsinline=1", - name: "Live stream - Boeuf Bourguignon", - }, - { - id: "recipie", - url: "http://localhost:8000/recepie.html", - name: "Ingredients - Boeuf Bourguignon", - }, - ], + apps: [], }; }, From 0d7e3a15f7f2600507ed89a568777dad4779edd3 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 30 May 2017 15:32:53 +0100 Subject: [PATCH 035/481] Add room config --- src/components/views/rooms/AppsDrawer.js | 34 ++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index a571cc8047..86c20544d9 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -23,10 +23,11 @@ const Modal = require("../../../Modal"); // FIXME -- Hard coded widget config const roomWidgetConfig = { + // Cooking room '!IAkkwswSrOSzPRWksX:matrix.org': [ { id: "youtube", - url: "https://www.youtube.com/embed/ZJy1ajvMU1k?controls=0&enablejsapi=1&iv_load_policy=3&modestbranding=1&playsinline=1", + url: "https://www.youtube.com/embed/ZJy1ajvMU1k?controls=0&enablejsapi=1&iv_load_policy=3&modestbranding=1&playsinline=1&autoplay=1", name: "Live stream - Boeuf Bourguignon", }, { @@ -35,6 +36,35 @@ const roomWidgetConfig = { name: "Ingredients - Boeuf Bourguignon", }, ], + // Grafana room + '!JWeMRscvtWqfNuzmSf:matrix.org': [ + { + id: "grafana", + url: "http://localhost:8000/grafana.html", + name: "Monitoring our Single-Point-Of-Failure DB", + }, + { + id: "recipie", + url: "http://localhost:8000/recepie.html", + name: "Ingredients - Boeuf Bourguignon", + }, + ], + // Chat room - https://www.youtube.com/watch?v=ZfkwW4GgAiU + '!wQqrqwOipOOWALxJNe:matrix.org': [ + { + id: "youtube", + url: "https://www.youtube.com/embed/ZfkwW4GgAiU?controls=0&enablejsapi=1&iv_load_policy=3&modestbranding=1&playsinline=1&autoplay=1", + name: "Live stream - ChatGirl86", + }, + ], + // Game room - https://www.youtube.com/watch?v=Dm2Ma1dOFO4 + '!dYSCwtVljhTdBlgNxq:matrix.org': [ + { + id: "youtube", + url: "https://www.youtube.com/embed/Dm2Ma1dOFO4?controls=0&enablejsapi=1&iv_load_policy=3&modestbranding=1&playsinline=1&autoplay=1", + name: "Live stream - Overwatch Balle Royale", + }, + ], }; module.exports = React.createClass({ @@ -71,7 +101,7 @@ module.exports = React.createClass({ render: function() { const apps = this.state.apps.map( - (app) => ); + (app) => ); return (
From ae1753bce6710cdf2e70f27c597d1c66f4d8cb44 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 30 May 2017 18:39:51 +0100 Subject: [PATCH 036/481] Add tipping widgets --- src/components/views/rooms/AppsDrawer.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 86c20544d9..7fcf26e69d 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -43,11 +43,6 @@ const roomWidgetConfig = { url: "http://localhost:8000/grafana.html", name: "Monitoring our Single-Point-Of-Failure DB", }, - { - id: "recipie", - url: "http://localhost:8000/recepie.html", - name: "Ingredients - Boeuf Bourguignon", - }, ], // Chat room - https://www.youtube.com/watch?v=ZfkwW4GgAiU '!wQqrqwOipOOWALxJNe:matrix.org': [ @@ -56,6 +51,11 @@ const roomWidgetConfig = { url: "https://www.youtube.com/embed/ZfkwW4GgAiU?controls=0&enablejsapi=1&iv_load_policy=3&modestbranding=1&playsinline=1&autoplay=1", name: "Live stream - ChatGirl86", }, + { + id: "thermometer", + url: "http://localhost:8000/index.html", + name: "Tip Me!!! -- Send me cash $$$", + }, ], // Game room - https://www.youtube.com/watch?v=Dm2Ma1dOFO4 '!dYSCwtVljhTdBlgNxq:matrix.org': [ @@ -64,6 +64,11 @@ const roomWidgetConfig = { url: "https://www.youtube.com/embed/Dm2Ma1dOFO4?controls=0&enablejsapi=1&iv_load_policy=3&modestbranding=1&playsinline=1&autoplay=1", name: "Live stream - Overwatch Balle Royale", }, + { + id: "thermometer", + url: "http://localhost:8000/index.html", + name: "Tip Me!!! -- Send me cash $$$", + }, ], }; From dac154f8280bc4db13f8494288ebea0e75ea5bbd Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 31 May 2017 10:08:39 +0100 Subject: [PATCH 037/481] Add full width widgets --- src/components/views/elements/AppTile.js | 2 +- src/components/views/rooms/AppsDrawer.js | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 18b2148829..338c03ceeb 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -43,7 +43,7 @@ export default React.createClass({ render: function() { return ( -
+
{this.props.name} diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 7fcf26e69d..f729c2032d 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -106,7 +106,13 @@ module.exports = React.createClass({ render: function() { const apps = this.state.apps.map( - (app) => ); + (app, index, arr) => ); return (
From d5bc24d9f76fbcef01263f99f39cdc788de7cde7 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Fri, 19 May 2017 09:54:29 +0100 Subject: [PATCH 038/481] Initial implementation of KeyRequestHandler, KeyShareDialog etc --- src/KeyRequestHandler.js | 89 ++++++++++ src/components/structures/MatrixChat.js | 6 + .../views/dialogs/KeyShareDialog.js | 164 ++++++++++++++++++ 3 files changed, 259 insertions(+) create mode 100644 src/KeyRequestHandler.js create mode 100644 src/components/views/dialogs/KeyShareDialog.js diff --git a/src/KeyRequestHandler.js b/src/KeyRequestHandler.js new file mode 100644 index 0000000000..90ff00d47e --- /dev/null +++ b/src/KeyRequestHandler.js @@ -0,0 +1,89 @@ +/* +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 sdk from './index'; +import Modal from './Modal'; + +export default class KeyRequestHandler { + constructor(matrixClient) { + this._matrixClient = matrixClient; + + this._isDialogOpen = false; + + // userId -> deviceId -> [keyRequest] + this._pendingKeyRequests = {}; + } + + + handleKeyRequest(keyRequest) { + const userId = keyRequest.userId; + const deviceId = keyRequest.deviceId; + + if (!this._pendingKeyRequests[userId]) { + this._pendingKeyRequests[userId] = {}; + } + if (!this._pendingKeyRequests[userId][deviceId]) { + this._pendingKeyRequests[userId][deviceId] = []; + } + this._pendingKeyRequests[userId][deviceId].push(keyRequest); + + if (this._isDialogOpen) { + // ignore for now + console.log("Key request, but we already have a dialog open"); + return; + } + + this._processNextRequest(); + } + + _processNextRequest() { + const userId = Object.keys(this._pendingKeyRequests)[0]; + if (!userId) { + return; + } + const deviceId = Object.keys(this._pendingKeyRequests[userId])[0]; + if (!deviceId) { + return; + } + console.log(`Starting KeyShareDialog for ${userId}:${deviceId}`); + + const finished = (r) => { + this._isDialogOpen = false; + + if (r) { + for (const req of this._pendingKeyRequests[userId][deviceId]) { + req.share(); + } + } + delete this._pendingKeyRequests[userId][deviceId]; + if (Object.keys(this._pendingKeyRequests[userId]).length === 0) { + delete this._pendingKeyRequests[userId]; + } + + this._processNextRequest(); + }; + + const KeyShareDialog = sdk.getComponent("dialogs.KeyShareDialog"); + Modal.createDialog(KeyShareDialog, { + matrixClient: this._matrixClient, + userId: userId, + deviceId: deviceId, + onFinished: finished, + }); + this._isDialogOpen = true; + } +} + diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index f53128fba9..544213edc6 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -38,6 +38,7 @@ import PageTypes from '../../PageTypes'; import createRoom from "../../createRoom"; import * as UDEHandler from '../../UnknownDeviceErrorHandler'; +import KeyRequestHandler from '../../KeyRequestHandler'; import { _t } from '../../languageHandler'; module.exports = React.createClass({ @@ -914,6 +915,11 @@ module.exports = React.createClass({ } } }); + + const krh = new KeyRequestHandler(cli); + cli.on("crypto.roomKeyRequest", (req) => { + krh.handleKeyRequest(req); + }); }, showScreen: function(screen, params) { diff --git a/src/components/views/dialogs/KeyShareDialog.js b/src/components/views/dialogs/KeyShareDialog.js new file mode 100644 index 0000000000..5b66944dbc --- /dev/null +++ b/src/components/views/dialogs/KeyShareDialog.js @@ -0,0 +1,164 @@ +/* +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 Modal from '../../../Modal'; +import React from 'react'; +import sdk from '../../../index'; + +import { _t } from '../../../languageHandler'; + +export default React.createClass({ + propTypes: { + matrixClient: React.PropTypes.object.isRequired, + userId: React.PropTypes.string.isRequired, + deviceId: React.PropTypes.string.isRequired, + onFinished: React.PropTypes.func.isRequired, + }, + + getInitialState: function() { + return { + deviceInfo: null, + wasNewDevice: false, + }; + }, + + componentDidMount: function() { + this._unmounted = false; + const userId = this.props.userId; + const deviceId = this.props.deviceId; + + // give the client a chance to refresh the device list + this.props.matrixClient.downloadKeys([userId], false).then((r) => { + if (this._unmounted) { return; } + + const deviceInfo = r[userId][deviceId]; + + if(!deviceInfo) { + console.warn(`No details found for device ${userId}:${deviceId}`); + + this.props.onFinished(false); + return; + } + + const wasNewDevice = !deviceInfo.isKnown(); + + this.setState({ + deviceInfo: deviceInfo, + wasNewDevice: wasNewDevice, + }); + + // if the device was new before, it's not any more. + if (wasNewDevice) { + this.props.matrixClient.setDeviceKnown( + userId, + deviceId, + true, + ); + } + }).done(); + }, + + componentWillUnmount: function() { + this._unmounted = true; + }, + + + _onVerifyClicked: function() { + const DeviceVerifyDialog = sdk.getComponent('views.dialogs.DeviceVerifyDialog'); + + console.log("KeyShareDialog: Starting verify dialog"); + Modal.createDialog(DeviceVerifyDialog, { + userId: this.props.userId, + device: this.state.deviceInfo, + onFinished: (verified) => { + if (verified) { + // can automatically share the keys now. + this.props.onFinished(true); + } + }, + }); + }, + + _onShareClicked: function() { + console.log("KeyShareDialog: User clicked 'share'"); + this.props.onFinished(true); + }, + + _onIgnoreClicked: function() { + console.log("KeyShareDialog: User clicked 'ignore'"); + this.props.onFinished(false); + }, + + _renderContent: function() { + const displayName = this.state.deviceInfo.getDisplayName() || + this.state.deviceInfo.deviceId; + + let text; + if (this.state.wasNewDevice) { + text = "You added a new device '%(displayName)s', which is" + + " requesting encryption keys."; + } else { + text = "Your unverified device '%(displayName)s' is requesting" + + " encryption keys."; + } + text = _t(text, {displayName: displayName}); + + return ( +
+

{text}

+ +
+ + + +
+
+ ); + }, + + render: function() { + const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); + const Spinner = sdk.getComponent('views.elements.Spinner'); + + let content; + + if (this.state.deviceInfo) { + content = this._renderContent(); + } else { + content = ( +
+

{_t('Loading device info...')}

+ +
+ ); + } + + return ( + + {content} + + ); + }, +}); From 7d55f3e75d55edef5a0303ab8c0f8909cce2d57e Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Thu, 1 Jun 2017 17:49:24 +0100 Subject: [PATCH 039/481] handle room key request cancellations --- src/KeyRequestHandler.js | 55 ++++++++++++++++++++++--- src/components/structures/MatrixChat.js | 3 ++ 2 files changed, 52 insertions(+), 6 deletions(-) diff --git a/src/KeyRequestHandler.js b/src/KeyRequestHandler.js index 90ff00d47e..fbb869d468 100644 --- a/src/KeyRequestHandler.js +++ b/src/KeyRequestHandler.js @@ -21,16 +21,18 @@ export default class KeyRequestHandler { constructor(matrixClient) { this._matrixClient = matrixClient; - this._isDialogOpen = false; + // the user/device for which we currently have a dialog open + this._currentUser = null; + this._currentDevice = null; // userId -> deviceId -> [keyRequest] this._pendingKeyRequests = {}; } - handleKeyRequest(keyRequest) { const userId = keyRequest.userId; const deviceId = keyRequest.deviceId; + const requestId = keyRequest.requestId; if (!this._pendingKeyRequests[userId]) { this._pendingKeyRequests[userId] = {}; @@ -38,9 +40,17 @@ export default class KeyRequestHandler { if (!this._pendingKeyRequests[userId][deviceId]) { this._pendingKeyRequests[userId][deviceId] = []; } - this._pendingKeyRequests[userId][deviceId].push(keyRequest); - if (this._isDialogOpen) { + // check if we already have this request + const requests = this._pendingKeyRequests[userId][deviceId]; + if (requests.find((r) => r.requestId === requestId)) { + console.log("Already have this key request, ignoring"); + return; + } + + requests.push(keyRequest); + + if (this._currentUser) { // ignore for now console.log("Key request, but we already have a dialog open"); return; @@ -49,6 +59,37 @@ export default class KeyRequestHandler { this._processNextRequest(); } + handleKeyRequestCancellation(cancellation) { + // see if we can find the request in the queue + const userId = cancellation.userId; + const deviceId = cancellation.deviceId; + const requestId = cancellation.requestId; + + if (userId === this._currentUser && deviceId === this._currentDevice) { + console.log( + "room key request cancellation for the user we currently have a" + + " dialog open for", + ); + // TODO: update the dialog. For now, we just ignore the + // cancellation. + return; + } + + if (!this._pendingKeyRequests[userId]) { + return; + } + const requests = this._pendingKeyRequests[userId][deviceId]; + if (!requests) { + return; + } + const idx = requests.findIndex((r) => r.requestId === requestId); + if (idx < 0) { + return; + } + console.log("Forgetting room key request"); + requests.splice(idx, 1); + } + _processNextRequest() { const userId = Object.keys(this._pendingKeyRequests)[0]; if (!userId) { @@ -61,7 +102,8 @@ export default class KeyRequestHandler { console.log(`Starting KeyShareDialog for ${userId}:${deviceId}`); const finished = (r) => { - this._isDialogOpen = false; + this._currentUser = null; + this._currentDevice = null; if (r) { for (const req of this._pendingKeyRequests[userId][deviceId]) { @@ -83,7 +125,8 @@ export default class KeyRequestHandler { deviceId: deviceId, onFinished: finished, }); - this._isDialogOpen = true; + this._currentUser = userId; + this._currentDevice = deviceId; } } diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 544213edc6..afb3c57818 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -920,6 +920,9 @@ module.exports = React.createClass({ cli.on("crypto.roomKeyRequest", (req) => { krh.handleKeyRequest(req); }); + cli.on("crypto.roomKeyRequestCancellation", (req) => { + krh.handleKeyRequestCancellation(req); + }); }, showScreen: function(screen, params) { From 21277557f80a725ac0ee0175633d198ecbae263a Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Fri, 2 Jun 2017 10:10:40 +0100 Subject: [PATCH 040/481] Add translations for new dialog --- src/i18n/strings/en_EN.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 95baf1f50e..6e7648f00d 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -779,5 +779,10 @@ "Disable URL previews for this room (affects only you)": "Disable URL previews for this room (affects only you)", "$senderDisplayName changed the room avatar to ": "$senderDisplayName changed the room avatar to ", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", - "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s" + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s", + "Start verification": "Start verification", + "Share without verifying": "Share without verifying", + "Ignore request": "Ignore request", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "You added a new device '%(displayName)s', which is requesting encryption keys.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Your unverified device '%(displayName)s' is requesting encryption keys." } From 0f4dc5c0725ca92179b556a0cff4831a5d20d20d Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 3 Jun 2017 15:10:05 +0100 Subject: [PATCH 041/481] first iter of manual update control Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/structures/LoggedInView.js | 13 +++++++------ src/components/structures/MatrixChat.js | 5 +++++ src/components/structures/UserSettings.js | 23 +++++++++++++++++++++++ 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js index e2fdeb4687..f42c752bb9 100644 --- a/src/components/structures/LoggedInView.js +++ b/src/components/structures/LoggedInView.js @@ -182,6 +182,7 @@ export default React.createClass({ const MatrixToolbar = sdk.getComponent('globals.MatrixToolbar'); const GuestWarningBar = sdk.getComponent('globals.GuestWarningBar'); const NewVersionBar = sdk.getComponent('globals.NewVersionBar'); + const UpdateCheckBar = sdk.getComponent('globals.UpdateCheckBar'); let page_element; let right_panel = ''; @@ -249,16 +250,16 @@ export default React.createClass({ break; } - var topBar; + let topBar; if (this.props.hasNewVersion) { topBar = ; - } - else if (this.props.matrixClient.isGuest()) { + } else if (this.props.checkingForUpdate) { + topBar = ; + } else if (this.props.matrixClient.isGuest()) { topBar = ; - } - else if (Notifier.supportsDesktopNotifications() && !Notifier.isEnabled() && !Notifier.isToolbarHidden()) { + } else if (Notifier.supportsDesktopNotifications() && !Notifier.isEnabled() && !Notifier.isToolbarHidden()) { topBar = ; } diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 0dedc02270..706f7d35dd 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -127,6 +127,7 @@ module.exports = React.createClass({ newVersion: null, hasNewVersion: false, newVersionReleaseNotes: null, + checkingForUpdate: false, // The username to default to when upgrading an account from a guest upgradeUsername: null, @@ -527,6 +528,9 @@ module.exports = React.createClass({ payload.releaseNotes, ); break; + case 'check_updates': + this.setState({ checkingForUpdate: payload.value }); + break; } }, @@ -1107,6 +1111,7 @@ module.exports = React.createClass({ newVersion: latest, hasNewVersion: current !== latest, newVersionReleaseNotes: releaseNotes, + checkingForUpdate: false, }); }, diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index 89debcb461..e914f64859 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -854,6 +854,27 @@ module.exports = React.createClass({
; }, + _onCheckUpdates: function() { + dis.dispatch({ + action: 'check_updates', + value: true, + }); + }, + + _renderCheckUpdate: function() { + const platform = PlatformPeg.get(); + if ('canSelfUpdate' in platform && platform.canSelfUpdate()) { + return
+

Updates

+
+ + Check for update + +
+
; + } + }, + _renderBulkOptions: function() { const invitedRooms = MatrixClientPeg.get().getRooms().filter((r) => { return r.hasMembershipState(this._me, "invite"); @@ -1246,6 +1267,8 @@ module.exports = React.createClass({
+ {this._renderCheckUpdate()} + {this._renderClearCache()} {this._renderDeactivateAccount()} From 98e99d542b6bdbd0818ba9d92512dee93571b254 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 3 Jun 2017 15:48:33 +0100 Subject: [PATCH 042/481] i18n things Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/structures/UserSettings.js | 6 +++--- src/i18n/strings/en_EN.json | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index e914f64859..5af1ed42c6 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -865,10 +865,10 @@ module.exports = React.createClass({ const platform = PlatformPeg.get(); if ('canSelfUpdate' in platform && platform.canSelfUpdate()) { return
-

Updates

+

{_t('Updates')}

- - Check for update + + {_t('Check for update')}
; diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 92c6b74444..b9f3c6b36d 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -822,6 +822,8 @@ "Online": "Online", "Idle": "Idle", "Offline": "Offline", + "Updates": "Updates", + "Check for update": "Check for update", "Disable URL previews for this room (affects only you)": "Disable URL previews for this room (affects only you)", "$senderDisplayName changed the room avatar to ": "$senderDisplayName changed the room avatar to ", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", From c6991fd33c7c99818a4784f0cf52634d22371867 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Sun, 4 Jun 2017 23:00:52 +0100 Subject: [PATCH 043/481] Periodically pass messages to embedded iframe --- src/components/views/elements/AppTile.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 338c03ceeb..134db04926 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -33,6 +33,16 @@ export default React.createClass({ }; }, + componentDidMount: function() { + console.log("App component %s mounted", this.props.id); + setInterval(() => { + const msg = "Message from riot"; + const domain = 'http://localhost:8000'; + this.refs.appFrame.contentWindow.postMessage(msg, domain); + console.log("Sending message"); + }, 3000); + }, + _onEditClick: function() { console.log("Edit widget %s", this.props.id); }, @@ -65,7 +75,7 @@ export default React.createClass({
{/* */} - +
); From 998a55a5902e44c6f9ae815a64bd2cfda51826fe Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Mon, 5 Jun 2017 16:51:50 +0100 Subject: [PATCH 044/481] Add basic group view --- src/PageTypes.js | 1 + src/components/structures/GroupView.js | 130 ++++++++++++++++++++++ src/components/structures/LoggedInView.js | 7 ++ src/components/structures/MatrixChat.js | 23 ++++ src/linkify-matrix.js | 49 ++++++++ 5 files changed, 210 insertions(+) create mode 100644 src/components/structures/GroupView.js diff --git a/src/PageTypes.js b/src/PageTypes.js index d87b363a6f..b2346c62c3 100644 --- a/src/PageTypes.js +++ b/src/PageTypes.js @@ -22,4 +22,5 @@ export default { CreateRoom: "create_room", RoomDirectory: "room_directory", UserView: "user_view", + GroupView: "group_view", }; diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js new file mode 100644 index 0000000000..2368c44319 --- /dev/null +++ b/src/components/structures/GroupView.js @@ -0,0 +1,130 @@ +/* +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 MatrixClientPeg from '../../MatrixClientPeg'; +import sdk from '../../index'; +import sanitizeHtml from "sanitize-html"; +import { sanitizeHtmlParams } from '../../HtmlUtils'; + + +module.exports = React.createClass({ + displayName: 'GroupView', + + propTypes: { + groupId: React.PropTypes.string.isRequired, + }, + + getInitialState: function() { + return { + phase: "GroupView.LOADING", // LOADING / DISPLAY / ERROR / NOT_FOUND + summary: null, + }; + }, + + componentWillMount: function() { + this.setState({ + phase: "GroupView.LOADING", + summary: null, + }) + this._loadGroupFromServer(this.props.groupId) + }, + + componentWillReceiveProps: function(new_props) { + if (this.props.groupId != new_props.groupId) { + this.setState({ + phase: "GroupView.LOADING", + summary: null, + }) + this._loadGroupFromServer(new_props.groupId); + } + }, + + _loadGroupFromServer: function(groupId) { + const self = this; + MatrixClientPeg.get().getGroupSummary(groupId).done(function(res) { + self.setState({ + phase: "GroupView.DISPLAY", + summary: res, + }); + }, function(err) { + self.setState({ + phase: err.errcode == 404 ? "GroupView.NOT_FOUND" :"GroupView.ERROR", + summary: null, + }); + }); + }, + + render: function() { + var BaseAvatar = sdk.getComponent("avatars.BaseAvatar"); + var Loader = sdk.getComponent("elements.Spinner"); + + if (this.state.phase == "GroupView.LOADING") { + return ( +
+ +
+ ); + } else if (this.state.phase == "GroupView.DISPLAY") { + const summary = this.state.summary; + let avatar_url = null; + if (summary.profile.avatar_url) { + avatar_url = MatrixClientPeg.get().mxcUrlToHttp(summary.profile.avatar_url); + } + let description = null; + if (summary.profile.long_description) { + description = sanitizeHtml(summary.profile.long_description); + } + return ( +
+
+
+
+ +
+
+
+ {summary.profile.name} + + ({this.props.groupId}) + +
+
+ {summary.profile.short_description} +
+
+
+
+
+
+ ); + } else if (this.state.phase == "GroupView.NOT_FOUND") { +
+ Group {this.props.groupId} not found +
+ } else { + return ( +
+ Failed to load {this.props.groupId} +
+ ); + } + }, +}); diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js index e2fdeb4687..cf9a8310b1 100644 --- a/src/components/structures/LoggedInView.js +++ b/src/components/structures/LoggedInView.js @@ -179,6 +179,7 @@ export default React.createClass({ const CreateRoom = sdk.getComponent('structures.CreateRoom'); const RoomDirectory = sdk.getComponent('structures.RoomDirectory'); const HomePage = sdk.getComponent('structures.HomePage'); + const GroupView = sdk.getComponent('structures.GroupView'); const MatrixToolbar = sdk.getComponent('globals.MatrixToolbar'); const GuestWarningBar = sdk.getComponent('globals.GuestWarningBar'); const NewVersionBar = sdk.getComponent('globals.NewVersionBar'); @@ -247,6 +248,12 @@ export default React.createClass({ page_element = null; // deliberately null for now right_panel = ; break; + case PageTypes.GroupView: + // TODO + page_element = + break; } var topBar; diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 0dedc02270..8771231e68 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -261,6 +261,9 @@ module.exports = React.createClass({ if (this.onUserClick) { linkifyMatrix.onUserClick = this.onUserClick; } + if (this.onGroupClick) { + linkifyMatrix.onGroupClick = this.onGroupClick; + } window.addEventListener('resize', this.handleResize); this.handleResize(); @@ -458,6 +461,12 @@ module.exports = React.createClass({ this._setPage(PageTypes.RoomDirectory); this.notifyNewScreen('directory'); break; + case 'view_group': + const groupId = payload.group_id; + this.setState({currentGroupId: groupId}); + this._setPage(PageTypes.GroupView); + this.notifyNewScreen('group/' + groupId); + break; case 'view_home_page': if (!this._teamToken) { dis.dispatch({action: 'view_room_directory'}); @@ -1001,6 +1010,15 @@ module.exports = React.createClass({ member: member, }); } + } else if (screen.indexOf('group/') == 0) { + const groupId = screen.substring(6); + + // TODO: Check valid group ID + + dis.dispatch({ + action: 'view_group', + group_id: groupId, + }); } else { console.info("Ignoring showScreen for '%s'", screen); } @@ -1029,6 +1047,11 @@ module.exports = React.createClass({ }); }, + onGroupClick: function(event, groupId) { + event.preventDefault(); + dis.dispatch({action: 'view_group', group_id: groupId}); + }, + onLogoutClick: function(event) { dis.dispatch({ action: 'logout', diff --git a/src/linkify-matrix.js b/src/linkify-matrix.js index d9b0b78982..b96730145a 100644 --- a/src/linkify-matrix.js +++ b/src/linkify-matrix.js @@ -108,11 +108,53 @@ function matrixLinkify(linkify) { S_AT_NAME_COLON_DOMAIN.on(TT.DOT, S_AT_NAME_COLON_DOMAIN_DOT); S_AT_NAME_COLON_DOMAIN_DOT.on(TT.DOMAIN, S_AT_NAME_COLON_DOMAIN); S_AT_NAME_COLON_DOMAIN_DOT.on(TT.TLD, S_USERID); + + + var GROUPID = function(value) { + MultiToken.call(this, value); + this.type = 'groupid'; + this.isLink = true; + }; + GROUPID.prototype = new MultiToken(); + + var S_PLUS = new linkify.parser.State(); + var S_PLUS_NAME = new linkify.parser.State(); + var S_PLUS_NAME_COLON = new linkify.parser.State(); + var S_PLUS_NAME_COLON_DOMAIN = new linkify.parser.State(); + var S_PLUS_NAME_COLON_DOMAIN_DOT = new linkify.parser.State(); + var S_GROUPID = new linkify.parser.State(GROUPID); + + var groupid_tokens = [ + TT.DOT, + TT.UNDERSCORE, + TT.PLUS, + TT.NUM, + TT.DOMAIN, + TT.TLD, + + // as in roomname_tokens + TT.LOCALHOST, + ]; + + S_START.on(TT.PLUS, S_PLUS); + + S_PLUS.on(groupid_tokens, S_PLUS_NAME); + S_PLUS_NAME.on(groupid_tokens, S_PLUS_NAME); + S_PLUS_NAME.on(TT.DOMAIN, S_PLUS_NAME); + + S_PLUS_NAME.on(TT.COLON, S_PLUS_NAME_COLON); + + S_PLUS_NAME_COLON.on(TT.DOMAIN, S_PLUS_NAME_COLON_DOMAIN); + S_PLUS_NAME_COLON.on(TT.LOCALHOST, S_GROUPID); // accept +foo:localhost + S_PLUS_NAME_COLON_DOMAIN.on(TT.DOT, S_PLUS_NAME_COLON_DOMAIN_DOT); + S_PLUS_NAME_COLON_DOMAIN_DOT.on(TT.DOMAIN, S_PLUS_NAME_COLON_DOMAIN); + S_PLUS_NAME_COLON_DOMAIN_DOT.on(TT.TLD, S_GROUPID); } // stubs, overwritten in MatrixChat's componentDidMount matrixLinkify.onUserClick = function(e, userId) { e.preventDefault(); }; matrixLinkify.onAliasClick = function(e, roomAlias) { e.preventDefault(); }; +matrixLinkify.onGroupClick = function(e, groupId) { e.preventDefault(); }; var escapeRegExp = function(string) { return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); @@ -143,6 +185,12 @@ matrixLinkify.options = { matrixLinkify.onAliasClick(e, href); } }; + case "groupid": + return { + click: function(e) { + matrixLinkify.onGroupClick(e, href); + } + }; } }, @@ -150,6 +198,7 @@ matrixLinkify.options = { switch (type) { case 'roomalias': case 'userid': + case "groupid": return matrixLinkify.MATRIXTO_BASE_URL + '/#/' + href; default: var m; From 7a9784fd6ef39e4fc214e8416456b9d92cb9f7e8 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Mon, 5 Jun 2017 17:26:25 +0100 Subject: [PATCH 045/481] KeyRequestHandler: clear redundant users/devices on cancellations ... otherwise _processNextRequest will get confused --- src/KeyRequestHandler.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/KeyRequestHandler.js b/src/KeyRequestHandler.js index fbb869d468..4354fba269 100644 --- a/src/KeyRequestHandler.js +++ b/src/KeyRequestHandler.js @@ -88,6 +88,12 @@ export default class KeyRequestHandler { } console.log("Forgetting room key request"); requests.splice(idx, 1); + if (requests.length === 0) { + delete this._pendingKeyRequests[userId][deviceId]; + if (Object.keys(this._pendingKeyRequests[userId]).length === 0) { + delete this._pendingKeyRequests[userId]; + } + } } _processNextRequest() { From 32e3ea0601355fc366fddee43194f9c7b1492238 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Mon, 5 Jun 2017 17:58:11 +0100 Subject: [PATCH 046/481] Address review comments --- src/KeyRequestHandler.js | 4 ++-- src/components/views/dialogs/KeyShareDialog.js | 10 +++++++++- src/i18n/strings/en_EN.json | 4 +++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/KeyRequestHandler.js b/src/KeyRequestHandler.js index 4354fba269..1da4922153 100644 --- a/src/KeyRequestHandler.js +++ b/src/KeyRequestHandler.js @@ -26,7 +26,7 @@ export default class KeyRequestHandler { this._currentDevice = null; // userId -> deviceId -> [keyRequest] - this._pendingKeyRequests = {}; + this._pendingKeyRequests = Object.create(null); } handleKeyRequest(keyRequest) { @@ -35,7 +35,7 @@ export default class KeyRequestHandler { const requestId = keyRequest.requestId; if (!this._pendingKeyRequests[userId]) { - this._pendingKeyRequests[userId] = {}; + this._pendingKeyRequests[userId] = Object.create(null); } if (!this._pendingKeyRequests[userId][deviceId]) { this._pendingKeyRequests[userId][deviceId] = []; diff --git a/src/components/views/dialogs/KeyShareDialog.js b/src/components/views/dialogs/KeyShareDialog.js index 5b66944dbc..61391d281c 100644 --- a/src/components/views/dialogs/KeyShareDialog.js +++ b/src/components/views/dialogs/KeyShareDialog.js @@ -20,6 +20,14 @@ import sdk from '../../../index'; import { _t } from '../../../languageHandler'; +/** + * Dialog which asks the user whether they want to share their keys with + * an unverified device. + * + * onFinished is called with `true` if the key should be shared, `false` if it + * should not, and `undefined` if the dialog is cancelled. (In other words: + * truthy: do the key share. falsy: don't share the keys). + */ export default React.createClass({ propTypes: { matrixClient: React.PropTypes.object.isRequired, @@ -155,7 +163,7 @@ export default React.createClass({ return ( {content} diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 7421ccad76..f6c044deac 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -809,5 +809,7 @@ "Share without verifying": "Share without verifying", "Ignore request": "Ignore request", "You added a new device '%(displayName)s', which is requesting encryption keys.": "You added a new device '%(displayName)s', which is requesting encryption keys.", - "Your unverified device '%(displayName)s' is requesting encryption keys.": "Your unverified device '%(displayName)s' is requesting encryption keys." + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Your unverified device '%(displayName)s' is requesting encryption keys.", + "Encryption key request": "Encryption key request" + } From dc4f321707da8d7431c857ab6abf8240e671fb31 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Mon, 5 Jun 2017 18:21:31 +0100 Subject: [PATCH 047/481] Pass room and user id to apps draw --- src/components/structures/RoomView.js | 4 ++++ src/components/views/elements/AppTile.js | 3 +-- src/components/views/rooms/AppsDrawer.js | 30 ++++++++++++++++++++++-- src/components/views/rooms/AuxPanel.js | 5 +++- 4 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index 49aa3a0af5..af5429fe4e 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -122,6 +122,7 @@ module.exports = React.createClass({ return { room: null, roomId: null, + userId: null, roomLoading: true, editingRoomSettings: false, uploadingRoomSettings: false, @@ -185,6 +186,7 @@ module.exports = React.createClass({ this.setState({ room: room, roomId: result.room_id, + userId: MatrixClientPeg.get().credentials.userId, roomLoading: !room, unsentMessageError: this._getUnsentMessageError(room), }, this._onHaveRoom); @@ -198,6 +200,7 @@ module.exports = React.createClass({ var room = MatrixClientPeg.get().getRoom(this.props.roomAddress); this.setState({ roomId: this.props.roomAddress, + userId: MatrixClientPeg.get().credentials.userId, room: room, roomLoading: !room, unsentMessageError: this._getUnsentMessageError(room), @@ -1640,6 +1643,7 @@ module.exports = React.createClass({ var auxPanel = (
- {/* */} - +
); diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index f729c2032d..ed21fb6d77 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -44,7 +44,7 @@ const roomWidgetConfig = { name: "Monitoring our Single-Point-Of-Failure DB", }, ], - // Chat room - https://www.youtube.com/watch?v=ZfkwW4GgAiU + // Camgirl room - https://www.youtube.com/watch?v=ZfkwW4GgAiU '!wQqrqwOipOOWALxJNe:matrix.org': [ { id: "youtube", @@ -70,6 +70,14 @@ const roomWidgetConfig = { name: "Tip Me!!! -- Send me cash $$$", }, ], + // Game room - !BLQjREzUgbtIsgrvRn:matrix.org + '!BLQjREzUgbtIsgrvRn:matrix.org': [ + { + id: "etherpad", + url: "http://localhost:8000/etherpad.html", + name: "Etherpad", + }, + ], }; module.exports = React.createClass({ @@ -81,11 +89,27 @@ module.exports = React.createClass({ componentDidMount: function() { }, + initAppConfig: function(appConfig) { + console.log("App props: ", this.props); + appConfig = appConfig.map( + (app, index, arr) => { + switch(app.id) { + case 'etherpad': + app.url = app.url + '?userName=' + this.props.userId + + '&padId=' + this.props.room.roomId; + break; + } + + return app; + }); + return appConfig; + }, + getInitialState: function() { for (const key in roomWidgetConfig) { if(key == this.props.room.roomId) { return { - apps: roomWidgetConfig[key], + apps: this.initAppConfig(roomWidgetConfig[key]), }; } } @@ -112,6 +136,8 @@ module.exports = React.createClass({ url={app.url} name={app.name} fullWdith={arr.length<2 ? true : false} + roomId={this.props.roomId} + userId={this.props.userId} />); return ( diff --git a/src/components/views/rooms/AuxPanel.js b/src/components/views/rooms/AuxPanel.js index 31739a890f..ec2de2558c 100644 --- a/src/components/views/rooms/AuxPanel.js +++ b/src/components/views/rooms/AuxPanel.js @@ -116,7 +116,10 @@ module.exports = React.createClass({ let appsDrawer = null; if(this.props.showApps) { - appsDrawer = ; + appsDrawer = ; } return ( From e9f110a4c53e0b0a2a85033700afb2e4d73f27de Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 6 Jun 2017 14:50:43 +0100 Subject: [PATCH 048/481] Don't show add widget if there are more than one existing widgets --- src/components/views/rooms/AppsDrawer.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index ed21fb6d77..37cddf8a2e 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -140,18 +140,21 @@ module.exports = React.createClass({ userId={this.props.userId} />); + const addWidget = this.state.apps && this.state.apps.length < 2 && + (
+ [+] Add a widget +
); + return (
{apps}
-
- [+] Add a widget -
+ {addWidget}
); }, From e8353edb064b2b3d2509ab99826e542763cdf973 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 6 Jun 2017 15:57:40 +0100 Subject: [PATCH 049/481] Disable test postmessag --- src/components/views/elements/AppTile.js | 12 ++++++------ src/components/views/rooms/AppsDrawer.js | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index fd59735014..a3713d2b96 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -35,12 +35,12 @@ export default React.createClass({ componentDidMount: function() { console.log("App component %s mounted", this.props.id); - setInterval(() => { - const msg = "Message from riot"; - const domain = 'http://localhost:8000'; - this.refs.appFrame.contentWindow.postMessage(msg, domain); - console.log("Sending message"); - }, 3000); + // setInterval(() => { + // const msg = "Message from riot"; + // const domain = 'http://localhost:8000'; + // this.refs.appFrame.contentWindow.postMessage(msg, domain); + // console.log("Sending message"); + // }, 3000); }, _onEditClick: function() { diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 37cddf8a2e..af262a9470 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -32,7 +32,7 @@ const roomWidgetConfig = { }, { id: "recipie", - url: "http://localhost:8000/recepie.html", + url: "http://10.9.64.88:8000/recepie.html", name: "Ingredients - Boeuf Bourguignon", }, ], @@ -40,7 +40,7 @@ const roomWidgetConfig = { '!JWeMRscvtWqfNuzmSf:matrix.org': [ { id: "grafana", - url: "http://localhost:8000/grafana.html", + url: "http://10.9.64.88:8000/grafana.html", name: "Monitoring our Single-Point-Of-Failure DB", }, ], @@ -53,7 +53,7 @@ const roomWidgetConfig = { }, { id: "thermometer", - url: "http://localhost:8000/index.html", + url: "http://10.9.64.88:8000/index.html", name: "Tip Me!!! -- Send me cash $$$", }, ], @@ -66,7 +66,7 @@ const roomWidgetConfig = { }, { id: "thermometer", - url: "http://localhost:8000/index.html", + url: "http://10.9.64.88:8000/index.html", name: "Tip Me!!! -- Send me cash $$$", }, ], @@ -74,7 +74,7 @@ const roomWidgetConfig = { '!BLQjREzUgbtIsgrvRn:matrix.org': [ { id: "etherpad", - url: "http://localhost:8000/etherpad.html", + url: "http://10.9.64.88:8000/etherpad.html", name: "Etherpad", }, ], From f6f660fa9a240de088b8284ba41557660968438c Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 6 Jun 2017 23:45:17 +0100 Subject: [PATCH 050/481] Initial app icon tiles --- src/components/structures/AppWidget.js | 28 +++++++++++++ src/components/structures/ModularWidgets.js | 13 +++++++ src/components/views/dialogs/AddAppDialog.js | 18 ++++----- src/components/views/elements/AppIconTile.js | 41 ++++++++++++++++++++ src/components/views/rooms/AppsDrawer.js | 10 ++--- 5 files changed, 96 insertions(+), 14 deletions(-) create mode 100644 src/components/structures/AppWidget.js create mode 100644 src/components/structures/ModularWidgets.js create mode 100644 src/components/views/elements/AppIconTile.js diff --git a/src/components/structures/AppWidget.js b/src/components/structures/AppWidget.js new file mode 100644 index 0000000000..5ab2207f60 --- /dev/null +++ b/src/components/structures/AppWidget.js @@ -0,0 +1,28 @@ +/* +Copyright 2015, 2016 OpenMarket 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 ModularWidgets from 'ModularWidgets'; + +class AppWidget { + constructor(type, url, options) { + if(!ModularWidgets.widgetTypes.includes(type) || url === "") { + return null; + } + this.type = type; + this.url = url; + this.options = options || {}; + } +} +export default AppWidget; diff --git a/src/components/structures/ModularWidgets.js b/src/components/structures/ModularWidgets.js new file mode 100644 index 0000000000..16b00dfbf3 --- /dev/null +++ b/src/components/structures/ModularWidgets.js @@ -0,0 +1,13 @@ +class ModularWidgets { + static widgetTypes = [ + { + type: 'etherpad', + icon: '', + }, + { + type: 'grafana', + icon: '', + }, + ]; +} +export default ModularWidgets; diff --git a/src/components/views/dialogs/AddAppDialog.js b/src/components/views/dialogs/AddAppDialog.js index b72a3809b4..90bb53f3c3 100644 --- a/src/components/views/dialogs/AddAppDialog.js +++ b/src/components/views/dialogs/AddAppDialog.js @@ -53,22 +53,22 @@ export default React.createClass({ return (
- Please enter the URL of the app / widget to add. -
-
-
+ + {/*
+ +
Or enter the URL of the widget to add.
-
+
- -
- + +
*/} +
); }, diff --git a/src/components/views/elements/AppIconTile.js b/src/components/views/elements/AppIconTile.js new file mode 100644 index 0000000000..2c67efcede --- /dev/null +++ b/src/components/views/elements/AppIconTile.js @@ -0,0 +1,41 @@ +/* +Copyright 2015, 2016 OpenMarket 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. +*/ + +'use strict'; +import React from 'react'; + +class AppIconTile extends React.Component { + render() { + return ( +
+ {this.props.name} +
+

{this.props.name}

+

{this.props.description}

+
+
+ ); + } +} + +AppIconTile.propTypes = { + type: React.PropTypes.string.isRequired, + icon: React.PropTypes.string.isRequired, + name: React.PropTypes.string.isRequired, + description: React.PropTypes.string.isRequired, +}; + +export default AppIconTile; diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index af262a9470..0386128a10 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -32,7 +32,7 @@ const roomWidgetConfig = { }, { id: "recipie", - url: "http://10.9.64.88:8000/recepie.html", + url: "http://10.9.64.55:8000/recepie.html", name: "Ingredients - Boeuf Bourguignon", }, ], @@ -40,7 +40,7 @@ const roomWidgetConfig = { '!JWeMRscvtWqfNuzmSf:matrix.org': [ { id: "grafana", - url: "http://10.9.64.88:8000/grafana.html", + url: "http://10.9.64.55:8000/grafana.html", name: "Monitoring our Single-Point-Of-Failure DB", }, ], @@ -53,7 +53,7 @@ const roomWidgetConfig = { }, { id: "thermometer", - url: "http://10.9.64.88:8000/index.html", + url: "http://10.9.64.55:8000/index.html", name: "Tip Me!!! -- Send me cash $$$", }, ], @@ -66,7 +66,7 @@ const roomWidgetConfig = { }, { id: "thermometer", - url: "http://10.9.64.88:8000/index.html", + url: "http://10.9.64.55:8000/index.html", name: "Tip Me!!! -- Send me cash $$$", }, ], @@ -74,7 +74,7 @@ const roomWidgetConfig = { '!BLQjREzUgbtIsgrvRn:matrix.org': [ { id: "etherpad", - url: "http://10.9.64.88:8000/etherpad.html", + url: "http://10.9.64.55:8000/etherpad.html", name: "Etherpad", }, ], From c552f7f336f9490fd17dd1b3d4afb8c40e9d2f53 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 7 Jun 2017 10:55:49 +0100 Subject: [PATCH 051/481] App icon styling --- src/components/structures/ModularWidgets.js | 8 ++++++-- src/components/views/dialogs/AddAppDialog.js | 13 ++++++++++++- src/components/views/elements/AppIconTile.js | 4 +++- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/components/structures/ModularWidgets.js b/src/components/structures/ModularWidgets.js index 16b00dfbf3..306a645a6f 100644 --- a/src/components/structures/ModularWidgets.js +++ b/src/components/structures/ModularWidgets.js @@ -2,11 +2,15 @@ class ModularWidgets { static widgetTypes = [ { type: 'etherpad', - icon: '', + icon: 'http://localhost:8000/static/etherpad.svg', + name: 'Etherpad', + description: 'Collaborative text editor', }, { type: 'grafana', - icon: '', + icon: 'http://localhost:8000/static/grafana.svg', + name: 'Grafana', + description: 'Graph and monitor all the things!', }, ]; } diff --git a/src/components/views/dialogs/AddAppDialog.js b/src/components/views/dialogs/AddAppDialog.js index 90bb53f3c3..0d24c641a6 100644 --- a/src/components/views/dialogs/AddAppDialog.js +++ b/src/components/views/dialogs/AddAppDialog.js @@ -16,6 +16,8 @@ limitations under the License. import React from 'react'; import sdk from '../../../index'; +import AppIconTile from '../elements/AppIconTile'; +import ModularWidgets from '../../structures/ModularWidgets'; /** * Prompt the user for address of iframe widget @@ -50,13 +52,22 @@ export default React.createClass({ render: function() { const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); + const appCards = ModularWidgets.widgetTypes.map((widgetType, index) => + , + ); + return (
- + {appCards} {/*
Or enter the URL of the widget to add.
diff --git a/src/components/views/elements/AppIconTile.js b/src/components/views/elements/AppIconTile.js index 2c67efcede..9e9dbe6d41 100644 --- a/src/components/views/elements/AppIconTile.js +++ b/src/components/views/elements/AppIconTile.js @@ -21,7 +21,9 @@ class AppIconTile extends React.Component { render() { return (
- {this.props.name} +
+ {this.props.name} +

{this.props.name}

{this.props.description}

From a09001933a4c48610c1b39ff40f056a2e77ed226 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 7 Jun 2017 15:39:27 +0100 Subject: [PATCH 052/481] git status --- src/components/structures/ModularWidgets.js | 6 ++++++ src/components/views/dialogs/AddAppDialog.js | 4 ++-- src/components/views/elements/AppIconTile.js | 8 +++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/components/structures/ModularWidgets.js b/src/components/structures/ModularWidgets.js index 306a645a6f..4e59fd9cfd 100644 --- a/src/components/structures/ModularWidgets.js +++ b/src/components/structures/ModularWidgets.js @@ -12,6 +12,12 @@ class ModularWidgets { name: 'Grafana', description: 'Graph and monitor all the things!', }, + { + type: 'custom', + icon: 'http://localhost:8000/static/blocks.png', + name: 'Custom Widget', + description: 'Add your own custom widget', + }, ]; } export default ModularWidgets; diff --git a/src/components/views/dialogs/AddAppDialog.js b/src/components/views/dialogs/AddAppDialog.js index 0d24c641a6..6d722365e8 100644 --- a/src/components/views/dialogs/AddAppDialog.js +++ b/src/components/views/dialogs/AddAppDialog.js @@ -68,7 +68,7 @@ export default React.createClass({ >
{appCards} - {/*
+
Or enter the URL of the widget to add.
-
*/} +
); diff --git a/src/components/views/elements/AppIconTile.js b/src/components/views/elements/AppIconTile.js index 9e9dbe6d41..282a33743c 100644 --- a/src/components/views/elements/AppIconTile.js +++ b/src/components/views/elements/AppIconTile.js @@ -18,9 +18,15 @@ limitations under the License. import React from 'react'; class AppIconTile extends React.Component { + render() { + const contentClasses = ['mx_AppIconTile']; + // if(this.props.type == 'custom') { + // contentClasses.push('mx_AppIconTile_active'); + // } + return ( -
+
{this.props.name}
From 6d1d43524788e8278681fcef2ba466ba96addeed Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Fri, 9 Jun 2017 11:21:37 +0100 Subject: [PATCH 053/481] Scalar: add in set_widget and get_widgets --- src/ScalarMessaging.js | 141 +++++++++++++++++++++++++++++++++++- src/i18n/strings/en_EN.json | 1 + 2 files changed, 141 insertions(+), 1 deletion(-) diff --git a/src/ScalarMessaging.js b/src/ScalarMessaging.js index c1b975e8e8..2ceb021a93 100644 --- a/src/ScalarMessaging.js +++ b/src/ScalarMessaging.js @@ -1,5 +1,6 @@ /* Copyright 2016 OpenMarket Ltd +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. @@ -109,6 +110,76 @@ Example: response: 78 } +set_widget +---------- +Set a new widget in the room. Clobbers based on the ID. + +Request: + - `room_id` (String) is the room to set the widget in. + - `widget_id` (String) is the ID of the widget to add (or replace if it already exists). + It can be an arbitrary UTF8 string and is purely for distinguishing between widgets. + - `url` (String) is the URL that clients should load in an iframe to run the widget. + All widgets must have a valid URL. If the URL is `null` (not `undefined`), the + widget will be removed from the room. + - `type` (String) is the type of widget, which is provided as a hint for matrix clients so they + can configure/lay out the widget in different ways. All widgets must have a type. + - `name` (String) is an optional human-readable string about the widget. + - `data` (Object) is some optional data about the widget, and can contain arbitrary key/value pairs. +Response: +{ + success: true +} +Example: +{ + action: "set_widget", + room_id: "!foo:bar", + widget_id: "abc123", + url: "http://widget.url", + type: "example", + response: { + success: true + } +} + +get_widgets +----------- +Get a list of all widgets in the room. The response is the `content` field +of the state event. + +Request: + - `room_id` (String) is the room to get the widgets in. +Response: +{ + $widget_id: { + type: "example", + url: "http://widget.url", + name: "Example Widget", + data: { + key: "val" + } + }, + $widget_id: { ... } +} +Example: +{ + action: "get_widgets", + room_id: "!foo:bar", + widget_id: "abc123", + url: "http://widget.url", + type: "example", + response: { + $widget_id: { + type: "example", + url: "http://widget.url", + name: "Example Widget", + data: { + key: "val" + } + }, + $widget_id: { ... } + } +} + membership_state AND bot_options -------------------------------- @@ -191,6 +262,68 @@ function inviteUser(event, roomId, userId) { }); } +function setWidget(event, roomId) { + // check required fields exist + const widgetId = event.data.widget_id; + const widgetType = event.data.type; + const widgetUrl = event.data.url; + if (!widgetId || widgetUrl === undefined || !widgetType) { + sendError(event, _t("Unable to create widget."), new Error("Missing required widget fields.")); + return; + } + const client = MatrixClientPeg.get(); + if (!client) { + sendError(event, _t('You need to be logged in.')); + return; + } + + // check types of fields + const widgetName = event.data.name; // optional + const widgetData = event.data.data; // optional + if (widgetName !== undefined && typeof widgetName !== 'string') { + sendError(event, _t("Unable to create widget."), new Error("Optional field 'name' must be a string.")); + return; + } + if (widgetData !== undefined && !(widgetData instanceof Object)) { + sendError(event, _t("Unable to create widget."), new Error("Optional field 'data' must be an Object.")); + return; + } + if (typeof widgetType !== 'string') { + sendError(event, _t("Unable to create widget."), new Error("Field 'type' must be a string.")); + return; + } + if (widgetUrl !== null && typeof widgetUrl !== 'string') { + sendError(event, _t("Unable to create widget."), new Error("Field 'url' must be a string or null.")); + return; + } + + // TODO: same dance we do for power levels. It'd be nice if the JS SDK had helper methods to do this. + client.getStateEvent(roomId, "im.vector.modular.widgets", "").then((widgets) => { + if (widgetUrl === null) { + delete widgets[widgetId]; + } + else { + widgets[widgetId] = { + type: widgetType, + url: widgetUrl, + name: widgetName, + data: widgetData, + }; + } + return client.sendStateEvent(roomId, "im.vector.modular.widgets", widgets); + }).done(() => { + sendResponse(event, { + success: true, + }); + }, (err) => { + sendError(event, _t('Failed to send request.'), err); + }); +} + +function getWidgets(event, roomId) { + returnStateEvent(event, roomId, "im.vector.modular.widgets", ""); +} + function setPlumbingState(event, roomId, status) { if (typeof status !== 'string') { throw new Error('Plumbing state status should be a string'); @@ -367,7 +500,7 @@ const onMessage = function(event) { return; } - // Getting join rules does not require userId + // These APIs don't require userId if (event.data.action === "join_rules_state") { getJoinRules(event, roomId); return; @@ -377,6 +510,12 @@ const onMessage = function(event) { } else if (event.data.action === "get_membership_count") { getMembershipCount(event, roomId); return; + } else if (event.data.action === "set_widget") { + setWidget(event, roomId); + return; + } else if (event.data.action === "get_widgets") { + getWidgets(event, roomId); + return; } if (!userId) { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 3540feddee..7494d9378f 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -580,6 +580,7 @@ "Turn Markdown on": "Turn Markdown on", "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).", "Unable to add email address": "Unable to add email address", + "Unable to create widget.": "Unable to create widget.", "Unable to remove contact information": "Unable to remove contact information", "Unable to restore previous session": "Unable to restore previous session", "Unable to verify email address.": "Unable to verify email address.", From b70881f07831115128cd9247e0535f0810f6b4cf Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Fri, 9 Jun 2017 12:34:19 +0100 Subject: [PATCH 054/481] Rejig to support deletions better --- src/ScalarMessaging.js | 46 +++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/src/ScalarMessaging.js b/src/ScalarMessaging.js index 2ceb021a93..61a76289b6 100644 --- a/src/ScalarMessaging.js +++ b/src/ScalarMessaging.js @@ -263,38 +263,42 @@ function inviteUser(event, roomId, userId) { } function setWidget(event, roomId) { - // check required fields exist const widgetId = event.data.widget_id; const widgetType = event.data.type; const widgetUrl = event.data.url; - if (!widgetId || widgetUrl === undefined || !widgetType) { - sendError(event, _t("Unable to create widget."), new Error("Missing required widget fields.")); - return; - } + const widgetName = event.data.name; // optional + const widgetData = event.data.data; // optional + const client = MatrixClientPeg.get(); if (!client) { sendError(event, _t('You need to be logged in.')); return; } - // check types of fields - const widgetName = event.data.name; // optional - const widgetData = event.data.data; // optional - if (widgetName !== undefined && typeof widgetName !== 'string') { - sendError(event, _t("Unable to create widget."), new Error("Optional field 'name' must be a string.")); + // both adding/removing widgets need these checks + if (!widgetId || widgetUrl === undefined) { + sendError(event, _t("Unable to create widget."), new Error("Missing required widget fields.")); return; } - if (widgetData !== undefined && !(widgetData instanceof Object)) { - sendError(event, _t("Unable to create widget."), new Error("Optional field 'data' must be an Object.")); - return; - } - if (typeof widgetType !== 'string') { - sendError(event, _t("Unable to create widget."), new Error("Field 'type' must be a string.")); - return; - } - if (widgetUrl !== null && typeof widgetUrl !== 'string') { - sendError(event, _t("Unable to create widget."), new Error("Field 'url' must be a string or null.")); - return; + + if (widgetUrl !== null) { // if url is null it is being deleted, don't need to check name/type/etc + // check types of fields + if (widgetName !== undefined && typeof widgetName !== 'string') { + sendError(event, _t("Unable to create widget."), new Error("Optional field 'name' must be a string.")); + return; + } + if (widgetData !== undefined && !(widgetData instanceof Object)) { + sendError(event, _t("Unable to create widget."), new Error("Optional field 'data' must be an Object.")); + return; + } + if (typeof widgetType !== 'string') { + sendError(event, _t("Unable to create widget."), new Error("Field 'type' must be a string.")); + return; + } + if (typeof widgetUrl !== 'string') { + sendError(event, _t("Unable to create widget."), new Error("Field 'url' must be a string or null.")); + return; + } } // TODO: same dance we do for power levels. It'd be nice if the JS SDK had helper methods to do this. From 34d7d793b7d0208be49df0de24a9e95225d88a84 Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Fri, 9 Jun 2017 15:06:09 +0100 Subject: [PATCH 055/481] Handle M_NOT_FOUND --- src/ScalarMessaging.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/ScalarMessaging.js b/src/ScalarMessaging.js index 61a76289b6..49f1a5c6f9 100644 --- a/src/ScalarMessaging.js +++ b/src/ScalarMessaging.js @@ -315,6 +315,18 @@ function setWidget(event, roomId) { }; } return client.sendStateEvent(roomId, "im.vector.modular.widgets", widgets); + }, (err) => { + if (err.errcode === "M_NOT_FOUND") { + return client.sendStateEvent(roomId, "im.vector.modular.widgets", { + [widgetId]: { + type: widgetType, + url: widgetUrl, + name: widgetName, + data: widgetData, + } + }); + } + throw err; }).done(() => { sendResponse(event, { success: true, From 6ead97c7a6979bda915dc09aae23924b22f639b3 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sun, 11 Jun 2017 19:12:40 +0100 Subject: [PATCH 056/481] change interface to UpdateCheckBar and change launching mechanism Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/structures/LoggedInView.js | 2 +- src/components/structures/MatrixChat.js | 4 ++-- src/components/structures/UserSettings.js | 11 ++--------- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js index f42c752bb9..f916e28024 100644 --- a/src/components/structures/LoggedInView.js +++ b/src/components/structures/LoggedInView.js @@ -256,7 +256,7 @@ export default React.createClass({ releaseNotes={this.props.newVersionReleaseNotes} />; } else if (this.props.checkingForUpdate) { - topBar = ; + topBar = ; } else if (this.props.matrixClient.isGuest()) { topBar = ; } else if (Notifier.supportsDesktopNotifications() && !Notifier.isEnabled() && !Notifier.isToolbarHidden()) { diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 706f7d35dd..6294201e13 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -127,7 +127,7 @@ module.exports = React.createClass({ newVersion: null, hasNewVersion: false, newVersionReleaseNotes: null, - checkingForUpdate: false, + checkingForUpdate: null, // The username to default to when upgrading an account from a guest upgradeUsername: null, @@ -1111,7 +1111,7 @@ module.exports = React.createClass({ newVersion: latest, hasNewVersion: current !== latest, newVersionReleaseNotes: releaseNotes, - checkingForUpdate: false, + checkingForUpdate: null, }); }, diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index 5af1ed42c6..a2d9df4900 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -854,20 +854,13 @@ module.exports = React.createClass({
; }, - _onCheckUpdates: function() { - dis.dispatch({ - action: 'check_updates', - value: true, - }); - }, - _renderCheckUpdate: function() { const platform = PlatformPeg.get(); - if ('canSelfUpdate' in platform && platform.canSelfUpdate()) { + if ('canSelfUpdate' in platform && platform.canSelfUpdate() && 'startUpdateCheck' in platform) { return

{_t('Updates')}

- + {_t('Check for update')}
From ccad1013a71161df34870346d8292b43425979ce Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sun, 11 Jun 2017 23:42:22 +0100 Subject: [PATCH 057/481] don't return null in case it breaks things Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/structures/UserSettings.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index 52e2c7b0e4..7edeafe889 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -863,6 +863,7 @@ module.exports = React.createClass({
; } + return
; }, _renderBulkOptions: function() { From 4124a8dcffe40287c3c2537d7cc2bbe3713d1f7a Mon Sep 17 00:00:00 2001 From: Oliver Hunt Date: Mon, 12 Jun 2017 06:19:12 +0100 Subject: [PATCH 058/481] Save scroll state immediately before updating Signed-off-by: Oliver Hunt --- src/components/structures/ScrollPanel.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/structures/ScrollPanel.js b/src/components/structures/ScrollPanel.js index a652bcc827..1f324d059f 100644 --- a/src/components/structures/ScrollPanel.js +++ b/src/components/structures/ScrollPanel.js @@ -160,6 +160,10 @@ module.exports = React.createClass({ this.checkFillState(); }, + componentWillUpdate: function(nextProps, nextState) { + this._saveScrollState(); + }, + componentDidUpdate: function() { // after adding event tiles, we may need to tweak the scroll (either to // keep at the bottom of the timeline, or to maintain the view after From b893887707079ac23e2312a59ad7edf846a718e9 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Mon, 12 Jun 2017 14:52:41 +0100 Subject: [PATCH 059/481] Fix merge conflict --- src/components/views/rooms/MessageComposer.js | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index 0f9ec5cd4e..c4e13a5fe6 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -354,26 +354,21 @@ export default class MessageComposer extends React.Component { } else { controls.push(
-<<<<<<< HEAD - You do not have permission to post to this room -
, -======= { _t('You do not have permission to post to this room') } -
->>>>>>> 31f1e421f226bd471b68cdf1f69a8e049a443e5d +
, ); } - // let autoComplete; - // if (UserSettingsStore.isFeatureEnabled('rich_text_editor')) { - // autoComplete =
- // - //
; - // } + let autoComplete; + if (UserSettingsStore.isFeatureEnabled('rich_text_editor')) { + autoComplete =
+ +
; + } const {style, blockType} = this.state.inputState; From 2da30137ec5bc7ef1230c5560fc9f221d9b6fec5 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 13 Jun 2017 10:31:16 +0100 Subject: [PATCH 060/481] Fix import path and add LG widget --- src/components/structures/AppWidget.js | 2 +- src/components/views/rooms/AppsDrawer.js | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/components/structures/AppWidget.js b/src/components/structures/AppWidget.js index 5ab2207f60..283efb9fcd 100644 --- a/src/components/structures/AppWidget.js +++ b/src/components/structures/AppWidget.js @@ -13,7 +13,7 @@ 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 ModularWidgets from 'ModularWidgets'; +import ModularWidgets from './ModularWidgets'; class AppWidget { constructor(type, url, options) { diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 0386128a10..9c49fdb663 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -78,6 +78,14 @@ const roomWidgetConfig = { name: "Etherpad", }, ], + // Insurance room - !nTUetaZELiqWcWYshy:matrix.org + '!nTUetaZELiqWcWYshy:matrix.org': [ + { + id: "lg", + url: "http://localhost:8000/lg.html", + name: "L&G Insurance Policy", + }, + ], }; module.exports = React.createClass({ From 99b1de7f0e886166a50885418cb3e021e5a0de7e Mon Sep 17 00:00:00 2001 From: Robert Swain Date: Tue, 13 Jun 2017 15:19:06 +0200 Subject: [PATCH 061/481] RoomView: Display AppsDrawer if apps in room state --- src/components/structures/RoomView.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index 29534727a2..4d7ac46ab4 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -251,12 +251,18 @@ module.exports = React.createClass({ } else if (isUserJoined) { MatrixClientPeg.get().stopPeeking(); this.setState({ + showApps: this._shouldShowApps(room), unsentMessageError: this._getUnsentMessageError(room), }); this._onRoomLoaded(room); } }, + _shouldShowApps: function(room) { + const appsStateEvents = room.currentState.getStateEvents('im.vector.modular.widgets', ''); + return appsStateEvents && Object.keys(appsStateEvents.getContent()).length > 0; + }, + componentDidMount: function() { var call = this._getCallForRoom(); var callState = call ? call.call_state : "ended"; From e2759774fc027a7d4057571955217e6182fd43b8 Mon Sep 17 00:00:00 2001 From: Robert Swain Date: Tue, 13 Jun 2017 15:19:38 +0200 Subject: [PATCH 062/481] RoomView: Correctly pass userId from matrix client It isn't set in the state anywhere. --- src/components/structures/RoomView.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index 4d7ac46ab4..0bf3d4e181 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -1604,7 +1604,7 @@ module.exports = React.createClass({ var auxPanel = ( Date: Tue, 13 Jun 2017 15:28:37 +0200 Subject: [PATCH 063/481] AppsDrawer: Populate apps from room state --- src/components/views/rooms/AppsDrawer.js | 155 +++++++++++------------ 1 file changed, 74 insertions(+), 81 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 0386128a10..d2b6cf8b21 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -17,107 +17,100 @@ limitations under the License. 'use strict'; const React = require('react'); +const MatrixClientPeg = require('../../../MatrixClientPeg'); const AddAppDialog = require('../dialogs/AddAppDialog'); const AppTile = require('../elements/AppTile'); const Modal = require("../../../Modal"); - -// FIXME -- Hard coded widget config -const roomWidgetConfig = { - // Cooking room - '!IAkkwswSrOSzPRWksX:matrix.org': [ - { - id: "youtube", - url: "https://www.youtube.com/embed/ZJy1ajvMU1k?controls=0&enablejsapi=1&iv_load_policy=3&modestbranding=1&playsinline=1&autoplay=1", - name: "Live stream - Boeuf Bourguignon", - }, - { - id: "recipie", - url: "http://10.9.64.55:8000/recepie.html", - name: "Ingredients - Boeuf Bourguignon", - }, - ], - // Grafana room - '!JWeMRscvtWqfNuzmSf:matrix.org': [ - { - id: "grafana", - url: "http://10.9.64.55:8000/grafana.html", - name: "Monitoring our Single-Point-Of-Failure DB", - }, - ], - // Camgirl room - https://www.youtube.com/watch?v=ZfkwW4GgAiU - '!wQqrqwOipOOWALxJNe:matrix.org': [ - { - id: "youtube", - url: "https://www.youtube.com/embed/ZfkwW4GgAiU?controls=0&enablejsapi=1&iv_load_policy=3&modestbranding=1&playsinline=1&autoplay=1", - name: "Live stream - ChatGirl86", - }, - { - id: "thermometer", - url: "http://10.9.64.55:8000/index.html", - name: "Tip Me!!! -- Send me cash $$$", - }, - ], - // Game room - https://www.youtube.com/watch?v=Dm2Ma1dOFO4 - '!dYSCwtVljhTdBlgNxq:matrix.org': [ - { - id: "youtube", - url: "https://www.youtube.com/embed/Dm2Ma1dOFO4?controls=0&enablejsapi=1&iv_load_policy=3&modestbranding=1&playsinline=1&autoplay=1", - name: "Live stream - Overwatch Balle Royale", - }, - { - id: "thermometer", - url: "http://10.9.64.55:8000/index.html", - name: "Tip Me!!! -- Send me cash $$$", - }, - ], - // Game room - !BLQjREzUgbtIsgrvRn:matrix.org - '!BLQjREzUgbtIsgrvRn:matrix.org': [ - { - id: "etherpad", - url: "http://10.9.64.55:8000/etherpad.html", - name: "Etherpad", - }, - ], -}; +const dis = require('../../../dispatcher'); module.exports = React.createClass({ displayName: 'AppsDrawer', propTypes: { + room: React.PropTypes.object.isRequired, + }, + + componentWillMount: function() { + MatrixClientPeg.get().on("RoomState.events", this.onRoomStateEvents); }, componentDidMount: function() { }, - initAppConfig: function(appConfig) { - console.log("App props: ", this.props); - appConfig = appConfig.map( - (app, index, arr) => { - switch(app.id) { - case 'etherpad': - app.url = app.url + '?userName=' + this.props.userId + - '&padId=' + this.props.room.roomId; - break; - } + componentWillUnmount: function() { + if (MatrixClientPeg.get()) { + MatrixClientPeg.get().removeListener("RoomState.events", this.onRoomStateEvents); + } + }, - return app; - }); - return appConfig; + _initAppConfig: function(appId, app) { + console.log("App props: ", this.props); + app.id = appId; + app.name = app.type; + + switch(app.type) { + case 'etherpad': + app.url = app.url + '?userName=' + this.props.userId + + '&padId=' + this.props.room.roomId; + break; + case 'jitsi': { + const user = MatrixClientPeg.get().getUser(this.props.userId); + app.url = app.url + + '?confId=' + app.data.confId + + '&displayName=' + encodeURIComponent(user.displayName) + + '&avatarUrl=' + encodeURIComponent(MatrixClientPeg.get().mxcUrlToHttp(user.avatarUrl)) + + '&email=' + encodeURIComponent(this.props.userId) + + '&isAudioConf=' + app.data.isAudioConf; + + app.name += ' - ' + app.data.confId; + break; + } + } + + return app; }, getInitialState: function() { - for (const key in roomWidgetConfig) { - if(key == this.props.room.roomId) { - return { - apps: this.initAppConfig(roomWidgetConfig[key]), - }; - } - } return { - apps: [], + apps: this._getApps(), }; }, + onRoomStateEvents: function(ev, state) { + if (ev.getRoomId() !== this.props.room.roomId || ev.getType() !== 'im.vector.modular.widgets') { + return; + } + this._updateApps(); + }, + + _getApps: function() { + const appsStateEvents = this.props.room.currentState.getStateEvents('im.vector.modular.widgets', ''); + if (!appsStateEvents) { + return []; + } + const appsStateEvent = appsStateEvents.getContent(); + if (Object.keys(appsStateEvent).length < 1) { + return []; + } + + return Object.keys(appsStateEvent).map((appId) => { + return this._initAppConfig(appId, appsStateEvent[appId]); + }); + }, + + _updateApps: function() { + const apps = this._getApps(); + if (apps.length < 1) { + dis.dispatch({ + action: 'appsDrawer', + show: false, + }); + } + this.setState({ + apps: this._getApps(), + }); + }, + onClickAddWidget: function() { Modal.createDialog(AddAppDialog, { onFinished: (proceed, reason) => { @@ -131,7 +124,7 @@ module.exports = React.createClass({ render: function() { const apps = this.state.apps.map( (app, index, arr) => Date: Tue, 13 Jun 2017 15:31:37 +0200 Subject: [PATCH 064/481] AddAppDialog: Support adding apps to room state --- src/components/views/dialogs/AddAppDialog.js | 9 +++- src/components/views/elements/AppIconTile.js | 11 +++- src/components/views/rooms/AppsDrawer.js | 55 ++++++++++++++++++-- 3 files changed, 69 insertions(+), 6 deletions(-) diff --git a/src/components/views/dialogs/AddAppDialog.js b/src/components/views/dialogs/AddAppDialog.js index 6d722365e8..49e16820d6 100644 --- a/src/components/views/dialogs/AddAppDialog.js +++ b/src/components/views/dialogs/AddAppDialog.js @@ -46,10 +46,14 @@ export default React.createClass({ onFormSubmit: function(ev) { ev.preventDefault(); - this.props.onFinished(true, this.state.value); + this.props.onFinished(true, 'custom', this.state.value); return false; }, + onTileClick: function(value) { + this.props.onFinished(true, value, null); + }, + render: function() { const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); const appCards = ModularWidgets.widgetTypes.map((widgetType, index) => @@ -58,7 +62,8 @@ export default React.createClass({ type={widgetType.type} icon={widgetType.icon} name={widgetType.name} - description={widgetType.description}/>, + description={widgetType.description} + onClick={this.onTileClick}/>, ); return ( diff --git a/src/components/views/elements/AppIconTile.js b/src/components/views/elements/AppIconTile.js index 282a33743c..32fcd74111 100644 --- a/src/components/views/elements/AppIconTile.js +++ b/src/components/views/elements/AppIconTile.js @@ -18,6 +18,14 @@ limitations under the License. import React from 'react'; class AppIconTile extends React.Component { + constructor(props) { + super(props); + this._onTileClick = this._onTileClick.bind(this); + } + + _onTileClick(props) { + this.props.onClick(this.props.type); + } render() { const contentClasses = ['mx_AppIconTile']; @@ -26,7 +34,7 @@ class AppIconTile extends React.Component { // } return ( -
+
{this.props.name}
@@ -44,6 +52,7 @@ AppIconTile.propTypes = { icon: React.PropTypes.string.isRequired, name: React.PropTypes.string.isRequired, description: React.PropTypes.string.isRequired, + onClick: React.PropTypes.func.isRequired, }; export default AppIconTile; diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index d2b6cf8b21..1dee5dacf8 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -113,10 +113,59 @@ module.exports = React.createClass({ onClickAddWidget: function() { Modal.createDialog(AddAppDialog, { - onFinished: (proceed, reason) => { - if (!proceed) return; + onFinished: (proceed, type, value) => { + if (!proceed || !type) return; + if (type === 'custom' && !value) return; - this.state.apps.push(); + const appsStateEvents = this.props.room.currentState.getStateEvents('im.vector.modular.widgets', ''); + let appsStateEvent = {}; + if (appsStateEvents) { + appsStateEvent = appsStateEvents.getContent(); + } + + if (appsStateEvent[type]) { + return; + } + + switch (type) { + case 'etherpad': + appsStateEvent.etherpad = { + type: type, + url: 'http://localhost:8000/etherpad.html', + }; + break; + case 'grafana': + appsStateEvent.grafana = { + type: type, + url: 'http://localhost:8000/grafana.html', + }; + break; + case 'jitsi': + appsStateEvent.videoConf = { + type: type, + url: 'http://localhost:8000/jitsi.html', + data: { + confId: this.props.room.roomId.replace(/[^A-Za-z0-9]/g, '_') + Date.now(), + }, + }; + break; + case 'custom': + appsStateEvent.custom = { + type: type, + url: value, + }; + break; + default: + console.warn('Unsupported app type:', type); + return; + } + + MatrixClientPeg.get().sendStateEvent( + this.props.room.roomId, + 'im.vector.modular.widgets', + appsStateEvent, + '', + ); }, }); }, From bcb2f8408b80e1e9898e27e80ea77f2d99a51142 Mon Sep 17 00:00:00 2001 From: Robert Swain Date: Tue, 13 Jun 2017 15:32:40 +0200 Subject: [PATCH 065/481] AppTile: Fix typo in property name --- src/components/views/elements/AppTile.js | 2 +- src/components/views/rooms/AppsDrawer.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index a3713d2b96..90208cd548 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -53,7 +53,7 @@ export default React.createClass({ render: function() { return ( -
+
{this.props.name} diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 1dee5dacf8..504221f894 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -177,8 +177,8 @@ module.exports = React.createClass({ id={app.id} url={app.url} name={app.name} - fullWdith={arr.length<2 ? true : false} roomId={this.props.roomId} + fullWidth={arr.length<2 ? true : false} userId={this.props.userId} />); From b63edcb390e6bfafaaa6b1771f7b3ec319807134 Mon Sep 17 00:00:00 2001 From: Robert Swain Date: Tue, 13 Jun 2017 15:33:17 +0200 Subject: [PATCH 066/481] AppTile: Support deletion of apps from room state --- src/components/views/elements/AppTile.js | 20 ++++++++++++++++++++ src/components/views/rooms/AppsDrawer.js | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 90208cd548..3f81ff5067 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -17,6 +17,7 @@ limitations under the License. 'use strict'; const React = require('react'); +const MatrixClientPeg = require('../../../MatrixClientPeg'); export default React.createClass({ displayName: 'AppTile', @@ -25,6 +26,7 @@ export default React.createClass({ id: React.PropTypes.string.isRequired, url: React.PropTypes.string.isRequired, name: React.PropTypes.string.isRequired, + room: React.PropTypes.object.isRequired, }, getDefaultProps: function() { @@ -49,6 +51,24 @@ export default React.createClass({ _onDeleteClick: function() { console.log("Delete widget %s", this.props.id); + const appsStateEvents = this.props.room.currentState.getStateEvents('im.vector.modular.widgets', ''); + if (!appsStateEvents) { + return; + } + const appsStateEvent = appsStateEvents.getContent(); + if (appsStateEvent[this.props.id]) { + delete appsStateEvent[this.props.id]; + MatrixClientPeg.get().sendStateEvent( + this.props.room.roomId, + 'im.vector.modular.widgets', + appsStateEvent, + '', + ).then(() => { + console.log('Deleted widget'); + }, (e) => { + console.error('Failed to delete widget', e); + }); + } }, render: function() { diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 504221f894..816b813da1 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -177,8 +177,8 @@ module.exports = React.createClass({ id={app.id} url={app.url} name={app.name} - roomId={this.props.roomId} fullWidth={arr.length<2 ? true : false} + room={this.props.room} userId={this.props.userId} />); From 5d898dd0984663e1ccfff4c983107c76397bb597 Mon Sep 17 00:00:00 2001 From: Robert Swain Date: Tue, 13 Jun 2017 15:34:05 +0200 Subject: [PATCH 067/481] AuxPanel: Add type checking for userId and showApps properties --- src/components/views/rooms/AuxPanel.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/views/rooms/AuxPanel.js b/src/components/views/rooms/AuxPanel.js index efa4da141f..4958de263e 100644 --- a/src/components/views/rooms/AuxPanel.js +++ b/src/components/views/rooms/AuxPanel.js @@ -29,6 +29,8 @@ module.exports = React.createClass({ propTypes: { // js-sdk room object room: React.PropTypes.object.isRequired, + userId: React.PropTypes.string.isRequired, + showApps: React.PropTypes.bool, // Conference Handler implementation conferenceHandler: React.PropTypes.object, From 91eabbba604faed2e062ff777d71c12763c2d9de Mon Sep 17 00:00:00 2001 From: Robert Swain Date: Tue, 13 Jun 2017 15:35:13 +0200 Subject: [PATCH 068/481] MessageComposer: Trigger Jitsi app from call buttons --- src/components/structures/ModularWidgets.js | 6 +++ src/components/views/elements/AppTile.js | 2 +- src/components/views/rooms/MessageComposer.js | 40 ++++++++++++++----- 3 files changed, 37 insertions(+), 11 deletions(-) diff --git a/src/components/structures/ModularWidgets.js b/src/components/structures/ModularWidgets.js index 4e59fd9cfd..b459241948 100644 --- a/src/components/structures/ModularWidgets.js +++ b/src/components/structures/ModularWidgets.js @@ -12,6 +12,12 @@ class ModularWidgets { name: 'Grafana', description: 'Graph and monitor all the things!', }, + { + type: 'jitsi', + icon: 'http://localhost:8000/static/jitsi.png', + name: 'jitsi', + description: 'Jitsi video conference', + }, { type: 'custom', icon: 'http://localhost:8000/static/blocks.png', diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 3f81ff5067..3bf99dbddd 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -94,7 +94,7 @@ export default React.createClass({
- +
); diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index 63f980304e..24254d989b 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -153,21 +153,41 @@ export default class MessageComposer extends React.Component { }); } - onCallClick(ev) { - console.warn("Call but clicked!"); + _startCallApp(isAudioConf) { dis.dispatch({ - action: 'place_call', - type: ev.shiftKey ? "screensharing" : "video", - room_id: this.props.room.roomId, + action: 'appsDrawer', + show: true, }); + + const appsStateEvents = this.props.room.currentState.getStateEvents('im.vector.modular.widgets', ''); + let appsStateEvent = {}; + if (appsStateEvents) { + appsStateEvent = appsStateEvents.getContent(); + } + if (!appsStateEvent.videoConf) { + appsStateEvent.videoConf = { + type: 'jitsi', + url: 'http://localhost:8000/jitsi.html', + data: { + confId: this.props.room.roomId.replace(/[^A-Za-z0-9]/g, '_') + Date.now(), + isAudioConf: isAudioConf, + }, + }; + MatrixClientPeg.get().sendStateEvent( + this.props.room.roomId, + 'im.vector.modular.widgets', + appsStateEvent, + '', + ).then(() => console.log('Sent state'), (e) => console.error(e)); + } + } + + onCallClick(ev) { + this._startCallApp(false); } onVoiceCallClick(ev) { - dis.dispatch({ - action: 'place_call', - type: 'voice', - room_id: this.props.room.roomId, - }); + this._startCallApp(true); } onShowAppsClick(ev) { From b916bc97b1a3fe0bfe4036bd1dce10754abb1243 Mon Sep 17 00:00:00 2001 From: Krombel Date: Wed, 14 Jun 2017 10:16:19 +0000 Subject: [PATCH 069/481] Translated using Weblate (German) Currently translated at 100.0% (906 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 7f979b98eb..a84c5157a5 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -972,5 +972,7 @@ "Your browser does not support the required cryptography extensions": "Dein Browser unterstützt die benötigten Kryptografie-Erweiterungen nicht", "Not a valid Riot keyfile": "Keine gültige Riot-Schlüsseldatei", "Authentication check failed: incorrect password?": "Authentifizierung fehlgeschlagen: Falsches Passwort?", - "Disable Peer-to-Peer for 1:1 calls": "Peer-to-Peer-Verbindung für 1-zu-1-Anrufe deaktivieren" + "Disable Peer-to-Peer for 1:1 calls": "Peer-to-Peer-Verbindung für 1-zu-1-Anrufe deaktivieren", + "Do you want to set an email address?": "Möchtest du eine E-Mail-Adresse setzen?", + "This will allow you to reset your password and receive notifications.": "Dies erlaubt dir dein Passwort zurückzusetzen und Benachrichtigungen zu empfangen." } From 7983f9af87ee37e7599e721d9b7064370a6b5eb8 Mon Sep 17 00:00:00 2001 From: Tom Tryfonidis Date: Wed, 14 Jun 2017 10:19:45 +0000 Subject: [PATCH 070/481] Translated using Weblate (Greek) Currently translated at 96.7% (877 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/el/ --- src/i18n/strings/el.json | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index e757c05f81..5e6ed6a00a 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -62,7 +62,7 @@ "Bug Report": "Αναφορά σφάλματος", "anyone": "οποιοσδήποτε", "Anyone who knows the room's link, apart from guests": "Oποιοσδήποτε", - "all room members, from the point they joined": "όλα τα μέλη του δωματίου, από τη στιγμή που συνδέθηκαν", + "all room members, from the point they joined": "όλα τα μέλη, από τη στιγμή που συνδέθηκαν", "%(items)s and %(lastItem)s": "%(items)s %(lastItem)s", "be": "Λευκορώσικα", "bg": "Βουλγάρικα", @@ -170,8 +170,8 @@ "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Ένα μήνυμα στάλθηκε στο +%(msisdn)s. Παρακαλώ γράψε τον κωδικό επαλήθευσης που περιέχει", "Access Token:": "Κωδικός πρόσβασης:", "Always show message timestamps": "Εμφάνιση πάντα της ένδειξης ώρας στα μηνύματα", - "all room members": "όλα τα μέλη του δωματίου", - "all room members, from the point they are invited": "όλα τα μέλη του δωματίου, από τη στιγμή που προσκλήθηκαν", + "all room members": "όλα τα μέλη", + "all room members, from the point they are invited": "όλα τα μέλη, από τη στιγμή που προσκλήθηκαν", "an address": "μία διεύθηνση", "%(items)s and %(remaining)s others": "%(items)s και %(remaining)s ακόμα", "%(items)s and one other": "%(items)s και ένας ακόμα", @@ -194,7 +194,7 @@ "%(senderDisplayName)s removed the room name.": "Ο %(senderDisplayName)s διέγραψε το όνομα του δωματίου.", "Changes your display nickname": "Αλλάζει το ψευδώνυμο χρήστη", "Click here": "Κάνε κλικ εδώ", - "Drop here %(toAction)s": "Απόθεση εδώ %(toAction)s", + "Drop here %(toAction)s": "Αποθέστε εδώ %(toAction)s", "Conference call failed.": "Η κλήση συνδιάσκεψης απέτυχε.", "powered by Matrix": "βασισμένο στο πρωτόκολλο Matrix", "Confirm password": "Επιβεβαίωση κωδικού πρόσβασης", @@ -252,7 +252,7 @@ "Failed to reject invitation": "Δεν ήταν δυνατή η απόρριψη της πρόσκλησης", "Failed to save settings": "Δεν ήταν δυνατή η αποθήκευση των ρυθμίσεων", "Failed to send email": "Δεν ήταν δυνατή η αποστολή ηλ. αλληλογραφίας", - "Failed to verify email address: make sure you clicked the link in the email": "Δεν ήταν δυνατή η επαλήθευση του email: βεβαιωθείτε οτι κάνατε κλικ στον σύνδεσμο που σας στάλθηκε", + "Failed to verify email address: make sure you clicked the link in the email": "Δεν ήταν δυνατή η επιβεβαίωση του μηνύματος ηλεκτρονικής αλληλογραφίας βεβαιωθείτε οτι κάνατε κλικ στον σύνδεσμο που σας στάλθηκε", "Favourite": "Αγαπημένο", "favourite": "αγαπημένο", "Favourites": "Αγαπημένα", @@ -287,7 +287,7 @@ "%(targetName)s joined the room.": "ο %(targetName)s συνδέθηκε στο δωμάτιο.", "Jump to first unread message.": "Πηγαίνετε στο πρώτο μη αναγνωσμένο μήνυμα.", "%(senderName)s kicked %(targetName)s.": "Ο %(senderName)s έδιωξε τον χρήστη %(targetName)s.", - "Kick": "Διώξε", + "Kick": "Απομάκρυνση", "Kicks user with given id": "Διώχνει χρήστες με το συγκεκριμένο id", "Labs": "Πειραματικά", "Leave room": "Αποχώρηση από το δωμάτιο", @@ -490,7 +490,7 @@ "Unable to add email address": "Αδυναμία προσθήκης διεύθυνσης ηλ. αλληλογραφίας", "Unable to remove contact information": "Αδυναμία αφαίρεσης πληροφοριών επαφής", "Unable to restore previous session": "Αδυναμία επαναφοράς της προηγούμενης συνεδρίας", - "Unable to verify email address.": "Αδυναμία επιβεβαίωσης διεύθυνσης ηλ. αλληλογραφίας.", + "Unable to verify email address.": "Αδυναμία επιβεβαίωσης διεύθυνσης ηλεκτρονικής αλληλογραφίας.", "Unban": "Άρση αποκλεισμού", "%(senderName)s unbanned %(targetName)s.": "Ο χρήστης %(senderName)s έδιωξε τον χρήστη %(targetName)s.", "Unable to enable Notifications": "Αδυναμία ενεργοποίησης των ειδοποιήσεων", @@ -608,7 +608,7 @@ "Unknown devices": "Άγνωστες συσκευές", "Unknown Address": "Άγνωστη διεύθυνση", "Blacklist": "Μαύρη λίστα", - "Verify...": "Επαλήθευση...", + "Verify...": "Επιβεβαίωση...", "ex. @bob:example.com": "π.χ @bob:example.com", "Add User": "Προσθήκη χρήστη", "Sign in with CAS": "Σύνδεση με CAS", @@ -876,5 +876,14 @@ "If you already have a Matrix account you can log in instead.": "Αν έχετε ήδη λογαριασμό Matrix μπορείτε να συνδεθείτε.", "Failed to load timeline position": "Δεν ήταν δυνατή η φόρτωση της θέσης του χρονολόγιου", "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Προσπαθήσατε να φορτώσετε ένα συγκεκριμένο σημείο στο χρονολόγιο του δωματίου, αλλά δεν έχετε δικαίωμα να δείτε το εν λόγω μήνυμα.", - "Tried to load a specific point in this room's timeline, but was unable to find it.": "Προσπαθήσατε να φορτώσετε ένα συγκεκριμένο σημείο στο χρονολόγιο του δωματίου, αλλά δεν καταφέρατε να το βρείτε." + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Προσπαθήσατε να φορτώσετε ένα συγκεκριμένο σημείο στο χρονολόγιο του δωματίου, αλλά δεν καταφέρατε να το βρείτε.", + "Failed to kick": "Δεν ήταν δυνατή η απομάκρυνση", + "(no answer)": "(χωρίς απάντηση)", + "(unknown failure: %(reason)s)": "(άγνωστο σφάλμα: %(reason)s)", + "Unblacklist": "Άρση αποκλεισμού", + "Unverify": "Άρση επιβεβαίωσης", + "Ongoing conference call%(supportedText)s.": "Κλήση συνδιάσκεψης σε εξέλιξη %(supportedText)s.", + "Your browser does not support the required cryptography extensions": "Ο περιηγητής σας δεν υποστηρίζει τα απαιτούμενα πρόσθετα κρυπτογράφησης", + "Not a valid Riot keyfile": "Μη έγκυρο αρχείο κλειδιού Riot", + "Authentication check failed: incorrect password?": "Αποτυχία ελέγχου πιστοποίησης: λανθασμένος κωδικός πρόσβασης;" } From a2322853a1da5c6b41391c6725de6fd189b721f2 Mon Sep 17 00:00:00 2001 From: GrigRUSS Date: Wed, 14 Jun 2017 10:46:50 +0000 Subject: [PATCH 071/481] Translated using Weblate (Russian) Currently translated at 100.0% (906 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 12257fa35a..094537a788 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -954,5 +954,9 @@ "(no answer)": "(нет ответа)", "(unknown failure: %(reason)s)": "(неизвестная ошибка: %(reason)s", "Disable Peer-to-Peer for 1:1 calls": "Отключить Peer-to-Peer для 1:1 звонков", - "Not a valid Riot keyfile": "Не действительный Riot-файл ключа" + "Not a valid Riot keyfile": "Не действительный Riot-файл ключа", + "Your browser does not support the required cryptography extensions": "Ваш браузер не поддерживает требуемые расширения для криптографии", + "Authentication check failed: incorrect password?": "Ошибка авторизации: неверный пароль?", + "Do you want to set an email address?": "Вы хотите указать адрес электронной почты?", + "This will allow you to reset your password and receive notifications.": "Это позволит вам сбросить пароль и получить уведомления." } From 880e7149f345decd0f2c9ded04b3565ccfdfda4e Mon Sep 17 00:00:00 2001 From: Robert Swain Date: Wed, 14 Jun 2017 13:05:43 +0200 Subject: [PATCH 072/481] ModularWidgets: Add a quick VR demo widget --- src/components/structures/ModularWidgets.js | 6 ++++++ src/components/views/rooms/AppsDrawer.js | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/src/components/structures/ModularWidgets.js b/src/components/structures/ModularWidgets.js index b459241948..314d273103 100644 --- a/src/components/structures/ModularWidgets.js +++ b/src/components/structures/ModularWidgets.js @@ -18,6 +18,12 @@ class ModularWidgets { name: 'jitsi', description: 'Jitsi video conference', }, + { + type: 'vrdemo', + icon: 'http://localhost:8000/static/jitsi.png', + name: 'vrdemo', + description: 'Matrix VR Demo', + }, { type: 'custom', icon: 'http://localhost:8000/static/blocks.png', diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 816b813da1..1d738fb9d2 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -65,6 +65,9 @@ module.exports = React.createClass({ app.name += ' - ' + app.data.confId; break; } + case 'vrdemo': + app.name = 'Matrix VR Demo'; + break; } return app; @@ -149,6 +152,12 @@ module.exports = React.createClass({ }, }; break; + case 'vrdemo': + appsStateEvent.vrDemo = { + type: type, + url: 'http://localhost:8000/vrdemo.html', + }; + break; case 'custom': appsStateEvent.custom = { type: type, From 9c8ab2691b1cdc3f3c061bd1b049b208f590fd2b Mon Sep 17 00:00:00 2001 From: Robert Swain Date: Wed, 14 Jun 2017 13:26:43 +0200 Subject: [PATCH 073/481] AppsDrawer: Only append queryParams once --- src/components/views/rooms/AppsDrawer.js | 29 ++++++++++++++---------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 1d738fb9d2..a917dde5f6 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -50,13 +50,12 @@ module.exports = React.createClass({ switch(app.type) { case 'etherpad': - app.url = app.url + '?userName=' + this.props.userId + + app.queryParams = '?userName=' + this.props.userId + '&padId=' + this.props.room.roomId; break; case 'jitsi': { const user = MatrixClientPeg.get().getUser(this.props.userId); - app.url = app.url + - '?confId=' + app.data.confId + + app.queryParams = '?confId=' + app.data.confId + '&displayName=' + encodeURIComponent(user.displayName) + '&avatarUrl=' + encodeURIComponent(MatrixClientPeg.get().mxcUrlToHttp(user.avatarUrl)) + '&email=' + encodeURIComponent(this.props.userId) + @@ -181,15 +180,21 @@ module.exports = React.createClass({ render: function() { const apps = this.state.apps.map( - (app, index, arr) => ); + (app, index, arr) => { + let appUrl = app.url; + if (app.queryParams) { + appUrl += app.queryParams; + } + return ; + }); const addWidget = this.state.apps && this.state.apps.length < 2 && (
Date: Wed, 14 Jun 2017 13:27:15 +0200 Subject: [PATCH 074/481] AppsDrawer: Generate room alias for vrdemo --- src/components/views/rooms/AppsDrawer.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index a917dde5f6..c132b395cd 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -65,7 +65,8 @@ module.exports = React.createClass({ break; } case 'vrdemo': - app.name = 'Matrix VR Demo'; + app.name = 'Matrix VR Demo - ' + app.data.roomAlias; + app.queryParams = '?roomAlias=' + encodeURIComponent(app.data.roomAlias); break; } @@ -155,6 +156,9 @@ module.exports = React.createClass({ appsStateEvent.vrDemo = { type: type, url: 'http://localhost:8000/vrdemo.html', + data: { + roomAlias: '#vrvc' + this.props.room.roomId.replace(/[^A-Za-z0-9]/g, '_') + Date.now(), + }, }; break; case 'custom': From 5f020423bc89f1c82a9efb7511827f6c46966d8d Mon Sep 17 00:00:00 2001 From: Robert Swain Date: Wed, 14 Jun 2017 15:05:11 +0200 Subject: [PATCH 075/481] AddAppDialog: Put the submit button inside the form --- src/components/views/dialogs/AddAppDialog.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/views/dialogs/AddAppDialog.js b/src/components/views/dialogs/AddAppDialog.js index 49e16820d6..512570d9ad 100644 --- a/src/components/views/dialogs/AddAppDialog.js +++ b/src/components/views/dialogs/AddAppDialog.js @@ -80,10 +80,10 @@ export default React.createClass({ autoFocus={true} onChange={this.onValueChange} size="30" className="mx_SetAppURLDialog_input" /> +
+ +
-
- -
); From edb11d805e9f5e5038c12a3cb80f09990af61230 Mon Sep 17 00:00:00 2001 From: Robert Swain Date: Wed, 14 Jun 2017 15:05:29 +0200 Subject: [PATCH 076/481] AppsDrawer: Open add app widget if opening empty drawer This felt much better than having to also click the add app widget button. --- src/components/views/rooms/AppsDrawer.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index c132b395cd..6daa4d98cf 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -35,6 +35,9 @@ module.exports = React.createClass({ }, componentDidMount: function() { + if (this.state.apps && this.state.apps.length < 1) { + this.onClickAddWidget(); + } }, componentWillUnmount: function() { From 5e4e12316b51b27e53164d3cad93225d68632810 Mon Sep 17 00:00:00 2001 From: strixaluco Date: Wed, 14 Jun 2017 20:20:51 +0000 Subject: [PATCH 077/481] Added translation using Weblate (Ukrainian) --- src/i18n/strings/uk.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/i18n/strings/uk.json diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/uk.json @@ -0,0 +1 @@ +{} \ No newline at end of file From c5ae1dabe177084ca96ab14799444bfaaec8f05b Mon Sep 17 00:00:00 2001 From: GrigRUSS Date: Wed, 14 Jun 2017 11:24:31 +0000 Subject: [PATCH 078/481] Translated using Weblate (Russian) Currently translated at 100.0% (906 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 094537a788..2d4a463c5a 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -357,7 +357,7 @@ "Sunday": "Воскресенье", "%(weekDayName)s %(time)s": "%(weekDayName) %(time)", "Upload an avatar:": "Загрузите аватар:", - "You need to be logged in.": "Вы должны быть зарегистрированы.", + "You need to be logged in.": "Вы должны быть авторизованы.", "You need to be able to invite users to do that.": "Вам необходимо пригласить пользователей чтобы сделать это.", "You cannot place VoIP calls in this browser.": "Вы не можете сделать вызовы VoIP с этим браузером.", "You are already in a call.": "Связь уже установлена.", @@ -524,7 +524,7 @@ "OK": "ОК", "Only people who have been invited": "Только приглашённые люди", "Passwords can't be empty": "Пароли не могут быть пустыми", - "%(senderName)s placed a %(callType)s call.": "%(senderName)s выполнил %(callType)s вызов.", + "%(senderName)s placed a %(callType)s call.": "%(senderName) выполнил %(callType) вызов.", "Please check your email and click on the link it contains. Once this is done, click continue.": "Пожалуйста, проверьте вашу электронную почту и нажмите в ней ссылку. По завершении нажмите продолжить.", "Power level must be positive integer.": "Уровень силы должен быть положительным числом.", "Press": "Нажать", @@ -721,7 +721,7 @@ "Server may be unavailable or overloaded": "Сервер может быть недоступен или перегружен", "Server may be unavailable, overloaded, or search timed out :(": "Сервер может быть недоступен, перегружен или поиск прекращен по тайм-ауту :(", "Server may be unavailable, overloaded, or the file too big": "Сервер может быть недоступен, перегружен или размер файла слишком большой", - "Server may be unavailable, overloaded, or you hit a bug.": "Сервер может быть недоступен, перегружен или вы нашли ошибку.", + "Server may be unavailable, overloaded, or you hit a bug.": "Сервер может быть недоступен, перегружен или возникла ошибка.", "Server unavailable, overloaded, or something else went wrong.": "Сервер может быть недоступен, перегружен или что-то пошло не так.", "Session ID": "ID сессии", "%(senderName)s set a profile picture.": "%(senderName)s установил картинку профиля.", @@ -763,7 +763,7 @@ "You have entered an invalid contact. Try using their Matrix ID or email address.": "Вы ввели неправильный адрес. Попробуйте использовать Matrix ID или адрес email.", "You need to enter a user name.": "Необходимо ввести имя пользователя.", "You seem to be in a call, are you sure you want to quit?": "Звонок не завершен, вы уверены, что хотите выйти?", - "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Вы не сможете отменить это действие так как даете пользователю такой же уровень доступа как и у вас.", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Вы не сможете отменить это действие, так как даете пользователю такой же уровень доступа, как и у вас.", "Set a Display Name": "Установить отображаемое имя", "(~%(searchCount)s results)": "(~%(searchCount)s результатов)", "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)s отозвали свои приглашения %(repeats)s раз", @@ -842,7 +842,7 @@ "Error decrypting video": "Ошибка расшифровки видео", "Add an Integration": "Добавить интеграцию", "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Вы будете перенаправлены на внешний сайт, где вы сможете аутентифицировать свою учетную запись для использования с %(integrationsUrl)s. Вы хотите продолжить?", - "Removed or unknown message type": "Удаленный или неизвестный тип сообщения", + "Removed or unknown message type": "Удалено или тип сообщения неизвестен", "Disable URL previews by default for participants in this room": "Отключить предпросмотр URL для участников этой комнаты по-умолчанию", "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "Предпросмотр URL %(globalDisableUrlPreview)s по-умолчанию для участников этой комнаты.", "URL Previews": "Предпросмотр URL", @@ -950,11 +950,11 @@ "You have been kicked from %(roomName)s by %(userName)s.": "%(userName) выгнал Вас из %(roomName).", "You may wish to login with a different account, or add this email to this account.": "Вы можете войти в систему с другой учетной записью или добавить этот адрес email в эту учетную запись.", "Your home server does not support device management.": "Ваш домашний сервер не поддерживает управление устройствами.", - "(could not connect media)": "(не удается подключиться к медиа)", + "(could not connect media)": "(не удается подключиться к медиа)", "(no answer)": "(нет ответа)", "(unknown failure: %(reason)s)": "(неизвестная ошибка: %(reason)s", "Disable Peer-to-Peer for 1:1 calls": "Отключить Peer-to-Peer для 1:1 звонков", - "Not a valid Riot keyfile": "Не действительный Riot-файл ключа", + "Not a valid Riot keyfile": "Не действительный файл ключа Riot", "Your browser does not support the required cryptography extensions": "Ваш браузер не поддерживает требуемые расширения для криптографии", "Authentication check failed: incorrect password?": "Ошибка авторизации: неверный пароль?", "Do you want to set an email address?": "Вы хотите указать адрес электронной почты?", From ca4631461348646c939018802aece7586c17ae03 Mon Sep 17 00:00:00 2001 From: Tom Tryfonidis Date: Thu, 15 Jun 2017 09:32:23 +0000 Subject: [PATCH 079/481] Translated using Weblate (Greek) Currently translated at 99.5% (902 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/el/ --- src/i18n/strings/el.json | 47 ++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index 5e6ed6a00a..c155701360 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -542,17 +542,17 @@ "Sat": "Σάβ", "Jan": "Ιαν", "Feb": "Φεβ", - "Mar": "Μάρ", + "Mar": "Μαρ", "Apr": "Απρ", - "May": "Μάι", - "Jun": "Ιούν", - "Jul": "Ιούλ", - "Aug": "Αύγ", + "May": "Μαϊ", + "Jun": "Ιουν", + "Jul": "Ιουλ", + "Aug": "Αυγ", "Sep": "Σεπ", "Oct": "Οκτ", - "Nov": "Νοέ", + "Nov": "Νοε", "Dec": "Δεκ", - "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(time)s", "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", "Set a display name:": "Ορισμός ονόματος εμφάνισης:", "Set a Display Name": "Ορισμός ονόματος εμφάνισης", @@ -744,7 +744,7 @@ "You have been banned from %(roomName)s by %(userName)s.": "Έχετε αποκλειστεί από το δωμάτιο %(roomName)s από τον %(userName)s.", "You have been invited to join this room by %(inviterName)s": "Έχετε προσκληθεί να συνδεθείτε στο δωμάτιο από τον %(inviterName)s", "You seem to be in a call, are you sure you want to quit?": "Φαίνεται ότι είστε σε μια κλήση, είστε βέβαιοι ότι θέλετε να αποχωρήσετε;", - "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s", "This doesn't look like a valid phone number.": "Δεν μοιάζει με έναν έγκυρο αριθμό τηλεφώνου.", "Make this room private": "Κάντε το δωμάτιο ιδιωτικό", "There are no visible files in this room": "Δεν υπάρχουν ορατά αρχεία σε αυτό το δωμάτιο", @@ -770,8 +770,8 @@ "%(oneUser)schanged their avatar": "Ο %(oneUser)s άλλαξε την προσωπική του εικόνα", "Please select the destination room for this message": "Παρακαλούμε επιλέξτε ένα δωμάτιο προορισμού για αυτό το μήνυμα", "Desktop specific": "Μόνο για επιφάνεια εργασίας", - "Analytics": "Αναλυτικά στοιχεία", - "Opt out of analytics": "Αποκλείστε τα αναλυτικά στοιχεία", + "Analytics": "Αναλυτικά δεδομένα", + "Opt out of analytics": "Αποκλεισμός αναλυτικών δεδομένων", "Riot collects anonymous analytics to allow us to improve the application.": "Το Riot συλλέγει ανώνυμα δεδομένα επιτρέποντας μας να βελτιώσουμε την εφαρμογή.", "Failed to invite": "Δεν ήταν δυνατή η πρόσκληση", "Failed to invite user": "Δεν ήταν δυνατή η πρόσκληση του χρήστη", @@ -885,5 +885,30 @@ "Ongoing conference call%(supportedText)s.": "Κλήση συνδιάσκεψης σε εξέλιξη %(supportedText)s.", "Your browser does not support the required cryptography extensions": "Ο περιηγητής σας δεν υποστηρίζει τα απαιτούμενα πρόσθετα κρυπτογράφησης", "Not a valid Riot keyfile": "Μη έγκυρο αρχείο κλειδιού Riot", - "Authentication check failed: incorrect password?": "Αποτυχία ελέγχου πιστοποίησης: λανθασμένος κωδικός πρόσβασης;" + "Authentication check failed: incorrect password?": "Αποτυχία ελέγχου πιστοποίησης: λανθασμένος κωδικός πρόσβασης;", + "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": "Απαιτήθηκε κλειδί αποτυπώματος Ed25519", + "Displays action": "Εμφανίζει την ενέργεια", + "Resetting 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.": "Η επαναφορά του κωδικού πρόσβασης θα επαναφέρει τα κλειδιά κρυπτογράφησης από άκρο σε άκρο σε όλες τις συσκευές, καθιστώντας το κρυπτογραφημένο ιστορικό συζητήσεων μη αναγνώσιμο, εκτός και αν εξάγετε πρώτα τα κλειδιά και τα εισαγάγετε ξανά στο δωμάτιο. Στο μέλλον αυτή η διαδικασία θα βελτιωθεί.", + "To use it, just wait for autocomplete results to load and tab through them.": "Για να το χρησιμοποιήσετε, απλά περιμένετε μέχρι να φορτωθούν τα αποτέλεσμα αυτόματης συμπλήρωσης. Έπειτα επιλέξτε ένα από αυτά χρησιμοποιώντας τον στηλοθέτη.", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Δεν είναι δυνατό να εξακριβωθεί ότι η διεύθυνση αυτής της πρόσκλησης στάλθηκε σε αντιστοιχία με εκείνη που σχετίζεται με το λογαριασμό σας.", + "Use compact timeline layout": "Χρήση συμπαγούς διάταξης χρονολογίου", + "(could not connect media)": "(αδυναμία σύνδεσης με το πολυμέσο)", + "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!": "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: ΑΠΕΤΥΧΕ Η ΕΠΙΒΕΒΑΙΩΣΗ ΤΟΥ ΚΛΕΙΔΙΟΥ! Το κλειδί υπογραφής για τον χρήστη %(userId)s και συσκευή %(deviceId)s είναι \"%(fprint)s\" και δεν ταιριάζει με το δοσμένο κλειδί \"%(fingerprint)s\". Αυτό σημαίνει ότι η επικοινωνία σας μπορεί να έχει υποκλαπεί.", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Αυτή η διαδικασία σας επιτρέπει να εξαγάγετε τα κλειδιά για τα μηνύματα που έχετε λάβει σε κρυπτογραφημένα δωμάτια σε ένα τοπικό αρχείο. Στη συνέχεια, θα μπορέσετε να εισάγετε το αρχείο σε άλλο πρόγραμμα του Matrix, έτσι ώστε το πρόγραμμα να είναι σε θέση να αποκρυπτογραφήσει αυτά τα μηνύματα.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Το αρχείο εξαγωγής θα επιτρέψει σε οποιονδήποτε που μπορεί να το διαβάσει να αποκρυπτογραφήσει κρυπτογραφημένα μηνύματα που εσείς μπορείτε να δείτε, οπότε θα πρέπει να είστε προσεκτικοί για να το κρατήσετε ασφαλές. Για να βοηθήσετε με αυτό, θα πρέπει να εισαγάγετε ένα συνθηματικό, το οποία θα χρησιμοποιηθεί για την κρυπτογράφηση των εξαγόμενων δεδομένων. Η εισαγωγή δεδομένων θα είναι δυνατή χρησιμοποιώντας μόνο το ίδιο συνθηματικό.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Αυτή η διαδικασία σας επιτρέπει να εισαγάγετε κλειδιά κρυπτογράφησης που έχετε προηγουμένως εξάγει από άλλο πρόγραμμα του Matrix. Στη συνέχεια, θα μπορέσετε να αποκρυπτογραφήσετε τυχόν μηνύματα που το άλλο πρόγραμμα θα μπορούσε να αποκρυπτογραφήσει.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Το αρχείο εξαγωγής θα είναι προστατευμένο με συνθηματικό. Θα χρειαστεί να πληκτρολογήσετε το συνθηματικό εδώ για να αποκρυπτογραφήσετε το αρχείο.", + "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Με αυτόν τον τρόπο, ο λογαριασμός σας θα είναι μόνιμα αχρησιμοποίητος. Δεν θα μπορείτε να εγγραφείτε ξανά με το ίδιο αναγνωριστικό χρήστη.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Για να βεβαιωθείτε ότι είναι αξιόπιστη αυτή η συσκευή, επικοινωνήστε με τον κάτοχο της χρησιμοποιώντας άλλα μέσα (π.χ. προσωπικά ή μέσω τηλεφώνου) και ρωτήστε εάν το κλειδί που βλέπετε στις ρυθμίσεις χρήστη για αυτήν τη συσκευή ταιριάζει με το παρακάτω κλειδί:", + "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.": "Εάν ταιριάζει, πατήστε το κουμπί επιβεβαίωσης παρακάτω. Εάν όχι, τότε κάποιος άλλος παρακολουθεί αυτή τη συσκευή και ίσως θέλετε να πατήσετε το κουμπί της μαύρης λίστας.", + "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.": "Παρουσιάστηκε ένα σφάλμα κατά την προσπάθεια επαναφοράς της προηγούμενης συνεδρίας. Αν συνεχίσετε, θα χρειαστεί να συνδεθείτε ξανά και το κρυπτογραφημένο ιστορικό συνομιλιών θα είναι μη αναγνώσιμο.", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Αν χρησιμοποιούσατε προηγουμένως μια πιο πρόσφατη έκδοση του Riot, η συνεδρία σας ίσως είναι μη συμβατή με αυτήν την έκδοση. Κλείστε αυτό το παράθυρο και επιστρέψτε στην πιο πρόσφατη έκδοση.", + "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "Το εμφανιζόμενο όνομα είναι το πως θα εμφανιστείτε σε άλλους όταν μιλάτε σε δωμάτια. Τι θα θέλατε να είναι;", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Αυτήν τη στιγμή βάζετε σε μαύρη λίστα μη επιβαιωμένες συσκευές. Για να στείλετε μηνύματα σε αυτές τις συσκευές, πρέπει να τις επιβεβαιώσετε.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Σας συνιστούμε να ολοκληρώσετε τη διαδικασία επαλήθευσης για κάθε συσκευή και να επιβεβαιώσετε ότι ανήκουν στον νόμιμο κάτοχό της, αλλά εάν προτιμάτε μπορείτε να στείλετε ξανά το μήνυμα χωρίς επαλήθευση.", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Θα μεταφερθείτε σε έναν ιστότοπου τρίτου για να πραγματοποιηθεί η πιστοποίηση του λογαριασμού σας με το %(integrationsUrl)s. Θα θέλατε να συνεχίσετε;", + "Disable Peer-to-Peer for 1:1 calls": "Απενεργοποίηση του ομότιμου (Peer-to-Peer) για κλήσεις έναν προς έναν.", + "Do you want to set an email address?": "Θέλετε να ορίσετε μια διεύθυνση ηλεκτρονικής αλληλογραφίας;", + "This will allow you to reset your password and receive notifications.": "Αυτό θα σας επιτρέψει να επαναφέρετε τον κωδικό πρόσβαση σας και θα μπορείτε να λαμβάνετε ειδοποιήσεις." } From 2172dd5325c8cc7c5523081fa5a5597332a4714f Mon Sep 17 00:00:00 2001 From: Tom Tryfonidis Date: Thu, 15 Jun 2017 09:39:52 +0000 Subject: [PATCH 080/481] Translated using Weblate (Greek) Currently translated at 100.0% (906 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/el/ --- src/i18n/strings/el.json | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index c155701360..eb25cd9e16 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -465,7 +465,7 @@ "Set": "Ορισμός", "Start authentication": "Έναρξη πιστοποίησης", "Submit": "Υποβολή", - "Tagged as: ": "Με ετικέτα:", + "Tagged as: ": "Με ετικέτα: ", "The default role for new room members is": "Ο προεπιλεγμένος ρόλος για νέα μέλη είναι", "The main address for this room is": "Η κύρια διεύθυνση για το δωμάτιο είναι", "%(actionVerb)s this person?": "%(actionVerb)s αυτού του ατόμου;", @@ -800,7 +800,7 @@ "%(senderName)s removed their display name (%(oldDisplayName)s).": "Ο %(senderName)s αφαίρεσε το όνομα εμφάνισης του (%(oldDisplayName)s).", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "Ο %(senderName)s έστειλε μια πρόσκληση στον %(targetDisplayName)s για να συνδεθεί στο δωμάτιο.", "%(senderName)s set their display name to %(displayName)s.": "Ο %(senderName)s όρισε το όνομα του σε %(displayName)s.", - "Sorry, this homeserver is using a login which is not recognised ": "Συγγνώμη, ο διακομιστής χρησιμοποιεί έναν τρόπο σύνδεσης που δεν αναγνωρίζεται", + "Sorry, this homeserver is using a login which is not recognised ": "Συγγνώμη, ο διακομιστής χρησιμοποιεί έναν τρόπο σύνδεσης που δεν αναγνωρίζεται ", "tag as %(tagName)s": "ετικέτα ως %(tagName)s", "tag direct chat": "προσθήκη ετικέτας στην απευθείας συνομιλία", "The phone number entered looks invalid": "Ο αριθμός που καταχωρίσατε δεν είναι έγκυρος", @@ -894,7 +894,7 @@ "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Δεν είναι δυνατό να εξακριβωθεί ότι η διεύθυνση αυτής της πρόσκλησης στάλθηκε σε αντιστοιχία με εκείνη που σχετίζεται με το λογαριασμό σας.", "Use compact timeline layout": "Χρήση συμπαγούς διάταξης χρονολογίου", "(could not connect media)": "(αδυναμία σύνδεσης με το πολυμέσο)", - "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!": "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: ΑΠΕΤΥΧΕ Η ΕΠΙΒΕΒΑΙΩΣΗ ΤΟΥ ΚΛΕΙΔΙΟΥ! Το κλειδί υπογραφής για τον χρήστη %(userId)s και συσκευή %(deviceId)s είναι \"%(fprint)s\" και δεν ταιριάζει με το δοσμένο κλειδί \"%(fingerprint)s\". Αυτό σημαίνει ότι η επικοινωνία σας μπορεί να έχει υποκλαπεί.", + "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!": "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: ΑΠΕΤΥΧΕ Η ΕΠΙΒΕΒΑΙΩΣΗ ΤΟΥ ΚΛΕΙΔΙΟΥ! Το κλειδί υπογραφής για τον χρήστη %(userId)s και συσκευή %(deviceId)s είναι \"%(fprint)s\" και δεν ταιριάζει με το δοσμένο κλειδί \"%(fingerprint)s\". Αυτό σημαίνει ότι η επικοινωνία σας μπορεί να έχει υποκλαπεί!", "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Αυτή η διαδικασία σας επιτρέπει να εξαγάγετε τα κλειδιά για τα μηνύματα που έχετε λάβει σε κρυπτογραφημένα δωμάτια σε ένα τοπικό αρχείο. Στη συνέχεια, θα μπορέσετε να εισάγετε το αρχείο σε άλλο πρόγραμμα του Matrix, έτσι ώστε το πρόγραμμα να είναι σε θέση να αποκρυπτογραφήσει αυτά τα μηνύματα.", "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Το αρχείο εξαγωγής θα επιτρέψει σε οποιονδήποτε που μπορεί να το διαβάσει να αποκρυπτογραφήσει κρυπτογραφημένα μηνύματα που εσείς μπορείτε να δείτε, οπότε θα πρέπει να είστε προσεκτικοί για να το κρατήσετε ασφαλές. Για να βοηθήσετε με αυτό, θα πρέπει να εισαγάγετε ένα συνθηματικό, το οποία θα χρησιμοποιηθεί για την κρυπτογράφηση των εξαγόμενων δεδομένων. Η εισαγωγή δεδομένων θα είναι δυνατή χρησιμοποιώντας μόνο το ίδιο συνθηματικό.", "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Αυτή η διαδικασία σας επιτρέπει να εισαγάγετε κλειδιά κρυπτογράφησης που έχετε προηγουμένως εξάγει από άλλο πρόγραμμα του Matrix. Στη συνέχεια, θα μπορέσετε να αποκρυπτογραφήσετε τυχόν μηνύματα που το άλλο πρόγραμμα θα μπορούσε να αποκρυπτογραφήσει.", @@ -908,7 +908,11 @@ "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Αυτήν τη στιγμή βάζετε σε μαύρη λίστα μη επιβαιωμένες συσκευές. Για να στείλετε μηνύματα σε αυτές τις συσκευές, πρέπει να τις επιβεβαιώσετε.", "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Σας συνιστούμε να ολοκληρώσετε τη διαδικασία επαλήθευσης για κάθε συσκευή και να επιβεβαιώσετε ότι ανήκουν στον νόμιμο κάτοχό της, αλλά εάν προτιμάτε μπορείτε να στείλετε ξανά το μήνυμα χωρίς επαλήθευση.", "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Θα μεταφερθείτε σε έναν ιστότοπου τρίτου για να πραγματοποιηθεί η πιστοποίηση του λογαριασμού σας με το %(integrationsUrl)s. Θα θέλατε να συνεχίσετε;", - "Disable Peer-to-Peer for 1:1 calls": "Απενεργοποίηση του ομότιμου (Peer-to-Peer) για κλήσεις έναν προς έναν.", + "Disable Peer-to-Peer for 1:1 calls": "Απενεργοποίηση του ομότιμου (Peer-to-Peer) για κλήσεις έναν προς έναν", "Do you want to set an email address?": "Θέλετε να ορίσετε μια διεύθυνση ηλεκτρονικής αλληλογραφίας;", - "This will allow you to reset your password and receive notifications.": "Αυτό θα σας επιτρέψει να επαναφέρετε τον κωδικό πρόσβαση σας και θα μπορείτε να λαμβάνετε ειδοποιήσεις." + "This will allow you to reset your password and receive notifications.": "Αυτό θα σας επιτρέψει να επαναφέρετε τον κωδικό πρόσβαση σας και θα μπορείτε να λαμβάνετε ειδοποιήσεις.", + "were unbanned %(repeats)s times": "ξεμπλοκαρίστηκαν %(repeats)s φορές", + "was unbanned %(repeats)s times": "ξεμπλοκαρίστηκε %(repeats)s φορές", + "were unbanned": "ξεμπλοκαρίστηκαν", + "was unbanned": "ξεμπλοκαρίστηκε" } From 559f29d6bead62575b4f3ac79aaffc035201ab97 Mon Sep 17 00:00:00 2001 From: IMIN <2reeseenmin@gmail.com> Date: Thu, 15 Jun 2017 10:44:22 +0000 Subject: [PATCH 081/481] Added translation using Weblate (Korean) --- src/i18n/strings/ko.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/i18n/strings/ko.json diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/ko.json @@ -0,0 +1 @@ +{} \ No newline at end of file From ce42a9a06f0fb12bf0bf434e68fcfeae4d214566 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Fri, 9 Jun 2017 17:18:45 +0100 Subject: [PATCH 082/481] Replace MatrixChat.state.screen with 'view' 'screen' is overloaded, as it us used for the parameter of `showScreen` (and, by implication, `state.screenAfterLogin`). Attempt to clear up the confusion by replacing 'screen' with 'view' and using some constants for the potential values. This should be a no-op! --- src/components/structures/MatrixChat.js | 43 ++++++++++++++++--------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index efca22cc85..f6eb56c06f 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -43,6 +43,15 @@ import createRoom from "../../createRoom"; import * as UDEHandler from '../../UnknownDeviceErrorHandler'; import { _t, getCurrentLanguage } from '../../languageHandler'; +/** constants for MatrixChat.state.view */ +const VIEWS = { + DEFAULT: 0, + LOGIN: 1, + REGISTER: 2, + POST_REGISTRATION: 3, + FORGOT_PASSWORD: 4, +}; + module.exports = React.createClass({ displayName: 'MatrixChat', @@ -94,7 +103,11 @@ module.exports = React.createClass({ getInitialState: function() { const s = { loading: true, - screen: undefined, + + // the master view we are showing. + view: VIEWS.DEFAULT, + + // a thing to call showScreen with once login completes. screenAfterLogin: this.props.initialScreenAfterLogin, // Stashed guest credentials if the user logs out @@ -317,9 +330,9 @@ module.exports = React.createClass({ } }, - setStateForNewScreen: function(state) { + setStateForNewView: function(state) { const newState = { - screen: undefined, + view: VIEWS.DEFAULT, viewUserId: null, loggedIn: false, ready: false, @@ -347,19 +360,19 @@ module.exports = React.createClass({ guestCreds: MatrixClientPeg.getCredentials(), }); } - this.setStateForNewScreen({ - screen: 'login', + this.setStateForNewView({ + view: VIEWS.LOGIN, }); this.notifyNewScreen('login'); break; case 'start_post_registration': this.setState({ // don't clobber loggedIn status - screen: 'post_registration', + view: VIEWS.POST_REGISTRATION, }); break; case 'start_password_recovery': - this.setStateForNewScreen({ - screen: 'forgot_password', + this.setStateForNewView({ + view: VIEWS.FORGOT_PASSWORD, }); this.notifyNewScreen('forgot_password'); break; @@ -537,8 +550,8 @@ module.exports = React.createClass({ }, _startRegistration: function(params) { - this.setStateForNewScreen({ - screen: 'register', + this.setStateForNewView({ + view: VIEWS.REGISTER, // these params may be undefined, but if they are, // unset them from our state: we don't want to // resume a previous registration session if the @@ -969,7 +982,7 @@ module.exports = React.createClass({ */ _onLoggedOut: function() { this.notifyNewScreen('login'); - this.setStateForNewScreen({ + this.setStateForNewView({ loggedIn: false, ready: false, collapse_lhs: false, @@ -1253,7 +1266,7 @@ module.exports = React.createClass({ onFinishPostRegistration: function() { // Don't confuse this with "PageType" which is the middle window to show this.setState({ - screen: undefined, + view: VIEWS.DEFAULT, }); this.showScreen("settings"); }, @@ -1335,7 +1348,7 @@ module.exports = React.createClass({ } // needs to be before normal PageTypes as you are logged in technically - if (this.state.screen == 'post_registration') { + if (this.state.view === VIEWS.POST_REGISTRATION) { const PostRegistration = sdk.getComponent('structures.login.PostRegistration'); return (
); - } else if (this.state.screen == 'register') { + } else if (this.state.view == VIEWS.REGISTER) { const Registration = sdk.getComponent('structures.login.Registration'); return ( ); - } else if (this.state.screen == 'forgot_password') { + } else if (this.state.view == VIEWS.FORGOT_PASSWORD) { const ForgotPassword = sdk.getComponent('structures.login.ForgotPassword'); return ( Date: Thu, 15 Jun 2017 17:15:26 +0100 Subject: [PATCH 083/481] js-sdk 0.7.12-rc.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 151b6d6170..2af3a21684 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "isomorphic-fetch": "^2.2.1", "linkifyjs": "^2.1.3", "lodash": "^4.13.1", - "matrix-js-sdk": "0.7.11", + "matrix-js-sdk": "0.7.12-rc.1", "optimist": "^0.6.1", "prop-types": "^15.5.8", "q": "^1.4.1", From 1f8566cbdbd15aa81d031f8013a80fbfe033e297 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 15 Jun 2017 17:17:17 +0100 Subject: [PATCH 084/481] Prepare changelog for v0.9.5-rc.1 --- CHANGELOG.md | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed6fb3ba36..d26a8c0955 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,64 @@ +Changes in [0.9.5-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.9.5-rc.1) (2017-06-15) +============================================================================================================= +[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.9.4...v0.9.5-rc.1) + + * Groundwork for tests including a teamserver login + [\#1098](https://github.com/matrix-org/matrix-react-sdk/pull/1098) + * Show a spinner when accepting an invite and waitingForRoom + [\#1100](https://github.com/matrix-org/matrix-react-sdk/pull/1100) + * Display a spinner until new room object after join success + [\#1099](https://github.com/matrix-org/matrix-react-sdk/pull/1099) + * Luke/attempt fix peeking regression + [\#1097](https://github.com/matrix-org/matrix-react-sdk/pull/1097) + * Show correct text in set email password dialog (2) + [\#1096](https://github.com/matrix-org/matrix-react-sdk/pull/1096) + * Don't create a guest login if user went to /login + [\#1092](https://github.com/matrix-org/matrix-react-sdk/pull/1092) + * Give password confirmation correct title, description + [\#1095](https://github.com/matrix-org/matrix-react-sdk/pull/1095) + * Make enter submit change password form + [\#1094](https://github.com/matrix-org/matrix-react-sdk/pull/1094) + * When not specified, remove roomAlias state in RoomViewStore + [\#1093](https://github.com/matrix-org/matrix-react-sdk/pull/1093) + * Update from Weblate. + [\#1091](https://github.com/matrix-org/matrix-react-sdk/pull/1091) + * Fixed pagination infinite loop caused by long messages + [\#1045](https://github.com/matrix-org/matrix-react-sdk/pull/1045) + * Clear persistent storage on login and logout + [\#1085](https://github.com/matrix-org/matrix-react-sdk/pull/1085) + * DM guessing: prefer oldest joined member + [\#1087](https://github.com/matrix-org/matrix-react-sdk/pull/1087) + * Ask for email address after setting password for the first time + [\#1090](https://github.com/matrix-org/matrix-react-sdk/pull/1090) + * i18n for setting password flow + [\#1089](https://github.com/matrix-org/matrix-react-sdk/pull/1089) + * remove mx_filterFlipColor from verified e2e icon so its not purple :/ + [\#1088](https://github.com/matrix-org/matrix-react-sdk/pull/1088) + * width and height must be int otherwise synapse cries + [\#1083](https://github.com/matrix-org/matrix-react-sdk/pull/1083) + * remove RoomViewStore listener from MatrixChat on unmount + [\#1084](https://github.com/matrix-org/matrix-react-sdk/pull/1084) + * Add script to copy translations between files + [\#1082](https://github.com/matrix-org/matrix-react-sdk/pull/1082) + * Only process user_directory response if it's for the current query + [\#1081](https://github.com/matrix-org/matrix-react-sdk/pull/1081) + * Fix regressions with starting a 1-1. + [\#1080](https://github.com/matrix-org/matrix-react-sdk/pull/1080) + * allow forcing of TURN + [\#1079](https://github.com/matrix-org/matrix-react-sdk/pull/1079) + * Remove a bunch of dead code from react-sdk + [\#1077](https://github.com/matrix-org/matrix-react-sdk/pull/1077) + * Improve error logging/reporting in megolm import/export + [\#1061](https://github.com/matrix-org/matrix-react-sdk/pull/1061) + * Delinting + [\#1064](https://github.com/matrix-org/matrix-react-sdk/pull/1064) + * Show reason for a call hanging up unexpectedly. + [\#1071](https://github.com/matrix-org/matrix-react-sdk/pull/1071) + * Add reason for ban in room settings + [\#1072](https://github.com/matrix-org/matrix-react-sdk/pull/1072) + * adds mx_filterFlipColor so that the dark theme will invert this image + [\#1070](https://github.com/matrix-org/matrix-react-sdk/pull/1070) + Changes in [0.9.4](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.9.4) (2017-06-14) =================================================================================================== [Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.9.3...v0.9.4) From 82436758b2f49b0e2af66d7dd4a455acfaf97e65 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 15 Jun 2017 17:17:17 +0100 Subject: [PATCH 085/481] v0.9.5-rc.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2af3a21684..8b9e437a9c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "matrix-react-sdk", - "version": "0.9.4", + "version": "0.9.5-rc.1", "description": "SDK for matrix.org using React", "author": "matrix.org", "repository": { From dac9e511c972efb8f05f224f750fc12a243e2caa Mon Sep 17 00:00:00 2001 From: IMIN <2reeseenmin@gmail.com> Date: Thu, 15 Jun 2017 15:41:21 +0000 Subject: [PATCH 086/481] Translated using Weblate (Korean) Currently translated at 26.6% (241 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ko/ --- src/i18n/strings/ko.json | 244 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 243 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index 9e26dfeeb6..1a093cd325 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -1 +1,243 @@ -{} \ No newline at end of file +{ + "af": "아프리칸스어", + "ar-ae": "아랍어 (아랍 에미리트 연방)", + "ar-bh": "아랍어 (바레인)", + "ar-dz": "아랍어 (알제리)", + "ar-eg": "아랍어 (이집트)", + "ar-iq": "아랍어 (이라크)", + "ar-jo": "아랍어 (요르단)", + "ar-kw": "아랍어 (쿠웨이트)", + "ar-lb": "아랍어 (레바논)", + "ar-ly": "아랍어 (리비아)", + "ar-ma": "아랍어 (모로코)", + "ar-om": "아랍어 (오만)", + "ar-qa": "아랍어 (카타르)", + "ar-sa": "아랍어 (사우디아라비아)", + "ar-sy": "아랍어 (시리아)", + "ar-tn": "아랍어 (튀니지)", + "ar-ye": "아랍어 (예멘)", + "be": "벨라루스어", + "bg": "불가리아어", + "ca": "카탈로니아어", + "cs": "체코어", + "da": "덴마크어", + "de-at": "독일어 (오스트리아)", + "de-ch": "독일어 (스위스)", + "de": "독일어", + "de-li": "독일어 (리히텐슈타인)", + "de-lu": "독일어 (룩셈부르크)", + "el": "그리스어", + "Cancel": "취소", + "Close": "닫기", + "Create new room": "새 방 만들기", + "Custom Server Options": "사용자 지정 서버 설정", + "Direct Chat": "직접 얘기하기", + "Dismiss": "없애기", + "Error": "오류", + "Mute": "알림 끄기", + "Notifications": "알림", + "Please Register": "계정을 등록해주세요", + "powered by Matrix": "매트릭스의 지원을 받고 있어요", + "Remove": "지우기", + "Room directory": "방 목록", + "Search": "찾기", + "Settings": "설정", + "Start chat": "얘기하기", + "unknown error code": "알 수 없는 오류 코드", + "Sunday": "일요일", + "Monday": "월요일", + "Tuesday": "화요일", + "Wednesday": "수요일", + "Thursday": "목요일", + "Friday": "금요일", + "Saturday": "토요일", + "OK": "알았어요", + "Welcome page": "환영 화면", + "Continue": "게속하기", + "en-au": "영어 (호주)", + "en-bz": "영어 (벨리즈)", + "en-ca": "영어 (캐나다)", + "en": "영어", + "en-gb": "영어 (영국)", + "en-ie": "영어 (아일랜드)", + "en-jm": "영어 (자메이카)", + "en-nz": "영어 (뉴질랜드)", + "en-tt": "영어 (트리니다드토바고)", + "en-us": "영어 (미국)", + "en-za": "영어 (남아프리카)", + "es-ar": "스페인어 (아르헨티나)", + "es-bo": "스페인어 (볼리비아)", + "es-cl": "스페인어 (칠레)", + "es-co": "스페인어 (콜롬비아)", + "es-cr": "스페인어 (코스타리카)", + "es-do": "스페인어 (도미니카 공화국)", + "es-ec": "스페인어 (에콰도르)", + "es-gt": "스페인어 (과테말라)", + "es-hn": "스페인어 (온두라스)", + "es-mx": "스페인어 (멕시코)", + "es-ni": "스페인어 (니카라과)", + "es-pa": "스페인어 (파나마)", + "es-pe": "스페인어 (페루)", + "es-pr": "스페인어 (푸에르토리코)", + "es-py": "스페인어 (파라과이)", + "es": "스페인어 (스페인)", + "es-sv": "스페인어 (엘살바도르)", + "es-uy": "스페인어 (우루과이)", + "es-ve": "스페인어 (베네수엘라)", + "et": "에스토니아어", + "eu": "바스크어 (바스크)", + "fa": "페르시아어", + "fi": "핀란드어", + "fo": "페로스어", + "fr-be": "프랑스어 (벨기에)", + "fr-ca": "프랑스어 (캐나다)", + "fr-ch": "프랑스어 (스위스)", + "fr": "프랑스어", + "fr-lu": "프랑스어 (룩셈부르크)", + "ga": "아일랜드어", + "gd": "게일어 (스코틀랜드)", + "he": "히브리어", + "hi": "힌디어", + "hr": "크로아티아어", + "hu": "헝가리어", + "id": "인도네시아어", + "is": "아이슬란드어", + "it-ch": "이탈리아어 (스위스)", + "it": "이탈리아어", + "ja": "일본어", + "ji": "이디시어", + "ko": "한국어", + "lt": "리투아니아어", + "lv": "라트비아어", + "mk": "마케도니아어 (마케도니아 공화국)", + "ms": "말레이시아어", + "mt": "몰타어", + "nl-be": "네덜란드어 (벨기에)", + "nl": "네덜란드어", + "no": "노르웨이어", + "pl": "폴란드어", + "pt-br": "브라질 포르투갈어", + "pt": "포르투갈어", + "rm": "레토로만어", + "ro-mo": "루마니아어 (몰도바 공화국)", + "ro": "루마니아어", + "ru-mo": "러시아어 (몰도바 공확국)", + "ru": "러시아어", + "sb": "소르비아어", + "sk": "슬로바키아어", + "sr": "세르비아어", + "sv-fi": "스웨덴어 (핀란드)", + "sv": "스웨덴어", + "sx": "수투어", + "sz": "라플란드어 (라플란드)", + "th": "태국", + "tn": "츠와나어", + "tr": "터키어", + "ts": "총가어", + "uk": "우크라이나어", + "ur": "우르두어", + "ve": "벤다어", + "vi": "베트남어", + "xh": "코사어", + "zh-cn": "중국어 (중국)", + "zh-hk": "중국어 (홍콩)", + "zh-sg": "중국어 (싱가포르)", + "zh-tw": "중국어 (대만)", + "zu": "줄루어", + "a room": "방", + "Accept": "수락", + "Account": "계정", + "Add": "추가하기", + "Add email address": "이메일 주소 추가하기", + "Add phone number": "전화번호 추가하기", + "Admin": "관리자", + "Admin tools": "관리 도구", + "VoIP": "인터넷전화", + "No Microphones detected": "마이크를 찾지 못했어요", + "No Webcams detected": "카메라를 찾지 못했어요", + "No media permissions": "저장소 권한이 없어요", + "Default Device": "기본 장치", + "Microphone": "마이크", + "Camera": "카메라", + "Advanced": "고급", + "Algorithm": "알고리즘", + "Hide removed messages": "지운 메시지 숨기기", + "Always show message timestamps": "항상 메시지에 시간을 표시하기", + "Authentication": "인증", + "Alias (optional)": "별명 (선택)", + "and": "그리고", + "A new password must be entered.": "새 비밀번호를 입력해주세요.", + "An error has occurred.": "오류가 일어났어요.", + "Anyone": "누구나", + "anyone": "누구나", + "Are you sure?": "정말이세요?", + "Are you sure you want to leave the room '%(roomName)s'?": "정말로 '%(roomName)s'를 떠나실 거에요?", + "Attachment": "붙이기", + "Are you sure you want to upload the following files?": "정말로 다음 파일들을 올리실 거에요?", + "Autoplay GIFs and videos": "GIF와 비디오를 자동으로 재생하기", + "Ban": "차단", + "Banned users": "차단한 사용자", + "Blacklisted": "요주인물들", + "Bug Report": "오류 보고", + "Can't load user settings": "사용사 설정을 불러올 수 없어요", + "Change Password": "비밀번호 바꾸기", + "Changes your display nickname": "보여줄 별명을 바꾸기", + "Clear Cache and Reload": "캐시를 지우고 다시 불러오기", + "Clear Cache": "캐시 지우기", + "Confirm password": "비밀번호 확인", + "Confirm your new password": "새 비밀번호 확인", + "Create Room": "방 만들기", + "Create an account": "게정 만들기", + "Custom": "사용자 지정", + "Device ID": "장치 ID", + "Default": "기본", + "Device already verified!": "장치를 이미 확인했어요!", + "device id: ": "장치 ID: ", + "Devices": "장치", + "Direct chats": "직접 얘기하기", + "Disable Notifications": "알림 끄기", + "disabled": "끄기", + "Display name": "이름 보이기", + "Don't send typing notifications": "입력 중이라는 알림 보내지 않기", + "Email": "이메일", + "Email address": "이메일 주소", + "Email, name or matrix ID": "이메일, 이름 혹은 매트릭스 ID", + "Drop here %(toAction)s": "여기로 끌어주세요 %(toAction)s", + "Failed to forget room %(errCode)s": "방 %(errCode)s를 잊지 못했어요", + "Failed to join the room": "방에 들어가지 못했어요", + "Favourite": "즐겨찾기", + "Operation failed": "작업 실패", + "Failed to change password. Is your password correct?": "비밀번호를 바꾸지 못했어요. 이 비밀번호가 정말 맞으세요?", + "sl": "슬로베니아어", + "sq": "알바니아어", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "+%(msisdn)s로 문자 메시지를 보냈어요. 인증 번호를 입력해주세요", + "%(targetName)s accepted an invitation.": "%(targetName)s님이 초대를 수락했어요.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s님이 %(displayName)s님에게서 초대를 수락했어요.", + "Access Token:": "접근 토큰:", + "Active call (%(roomName)s)": "(%(roomName)s)에서 전화를 걸고 받을 수 있어요", + "Add a topic": "주제 추가", + "And %(count)s more...": "그리고 %(count)s 더 보기...", + "Missing Media Permissions, click here to request.": "저장소 권한을 잃었어요, 여기를 눌러 다시 요청해주세요.", + "You may need to manually permit Riot to access your microphone/webcam": "수동으로 라이엇에 마이크와 카메라를 허용해야 할 수도 있어요", + "all room members": "방 구성원 모두", + "all room members, from the point they are invited": "방 구성원 모두, 초대받은 시점부터", + "all room members, from the point they joined": "방 구성원 모두, 방에 들어온 시점부터", + "%(items)s and %(remaining)s others": "%(items)s과 %(remaining)s", + "%(items)s and one other": "%(items)s과 다른 하나", + "%(items)s and %(lastItem)s": "%(items)s과 %(lastItem)s", + "and %(overflowCount)s others...": "그리고 %(overflowCount)s...", + "and one other...": "그리고 다른 하나...", + "%(names)s and %(lastPerson)s are typing": "%(names)s님과 %(lastPerson)s님이 입력중", + "%(names)s and one other are typing": "%(names)s님과 다른 분이 입력중", + "%(names)s and %(count)s others are typing": "%(names)s님과 %(count)s 분들이 입력중", + "An email has been sent to": "이메일을 보냈어요", + "%(senderName)s answered the call.": "%(senderName)s님이 전화를 받았어요.", + "Anyone who knows the room's link, apart from guests": "손님을 제외하고, 방의 주소를 아는 누구나", + "Anyone who knows the room's link, including guests": "손님을 포함하여, 방의 주소를 아는 누구나", + "Are you sure you want to reject the invitation?": "정말로 초대를 거부하실 거에요?", + "%(senderName)s banned %(targetName)s.": "%(senderName)s님이 %(targetName)s님을 차단하셨어요.", + "Bans user with given id": "받은 ID로 사용자 차단하기", + "Bulk Options": "대규모 설정", + "Call Timeout": "전화 대기 시간 초과", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "홈 서버에 연결할 수 없어요 - 연결을 확인해주시고, 홈 서버의 SSL 인증서가 믿을 수 있는지 확인하시고, 브라우저 확장기능이 요청을 차단하고 있는지 확인해주세요." +} From 12c2272fcd950ecc6d1c071da4e20c6bd61acec4 Mon Sep 17 00:00:00 2001 From: Walter Date: Thu, 15 Jun 2017 07:30:52 +0000 Subject: [PATCH 087/481] Translated using Weblate (Russian) Currently translated at 100.0% (906 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 2d4a463c5a..26c2986948 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -16,7 +16,7 @@ "An email has been sent to": "Email был отправлен", "A new password must be entered.": "Введите новый пароль.", "answered the call.": "принятый звонок.", - "anyone": "кто угодно", + "anyone": "любой", "Anyone who knows the room's link, apart from guests": "Любой, кто знает ссылку на комнату, кроме гостей", "Anyone who knows the room's link, including guests": "Любой, кто знает ссылку комнаты, включая гостей", "Are you sure you want to reject the invitation?": "Вы уверены что вы хотите отклонить приглашение?", @@ -126,7 +126,7 @@ "my Matrix ID": "мой Matrix ID", "Name": "Имя", "Never send encrypted messages to unverified devices from this device": "Никогда не отправлять зашифрованные сообщения на не верифицированные устройства с этого устройства", - "Never send encrypted messages to unverified devices in this room from this device": "Никогда не отправляйте зашифрованные сообщения в непроверенные устройства в этой комнате из этого устройства", + "Never send encrypted messages to unverified devices in this room from this device": "Никогда не отправляйте зашифрованные сообщения на непроверенные устройства в этой комнате из вашего устройства", "New password": "Новый пароль", "New passwords must match each other.": "Новые пароли должны соответствовать друг другу.", "none": "никто", @@ -758,7 +758,7 @@ "Verified key": "Верифицированный ключ", "WARNING: Device already verified, but keys do NOT MATCH!": "ВНИМАНИЕ: устройство уже было верифицировано, однако ключи НЕ СОВПАДАЮТ!", "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)s пользователя %(userId)s: \"%(fprint)s\", однако он не совпадает с предоставленным ключем \"%(fingerprint)s\". Это может означать перехват вашего канала коммуникации!", - "You have disabled URL previews by default.": "Пред. просмотр ссылок отключен по-умолчанию.", + "You have disabled URL previews by default.": "Предпросмотр ссылок отключен по-умолчанию.", "You have enabled URL previews by default.": "Предпросмотр ссылок включен по-умолчанию.", "You have entered an invalid contact. Try using their Matrix ID or email address.": "Вы ввели неправильный адрес. Попробуйте использовать Matrix ID или адрес email.", "You need to enter a user name.": "Необходимо ввести имя пользователя.", @@ -791,7 +791,7 @@ "Failed to invite user": "Ошибка приглашения пользователя", "Failed to invite the following users to the %(roomName)s room:": "Ошибка приглашения следующих пользователей в %(roomName)s:", "Confirm Removal": "Подтвердите удаление", - "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Вы уверены, что хотите удалить этот эвент? Обратите внимание, что если это смена имени комнаты или топика, то удаление отменит это изменение.", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Вы уверены, что хотите удалить этот событие? Обратите внимание, что если это смена имени комнаты или топика, то удаление отменит это изменение.", "Unknown error": "Неизвестная ошибка", "Incorrect password": "Неправильный пароль", "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Это сделает вашу учетную запись нерабочей. Вы не сможете зарегистрироваться снова с тем же ID.", @@ -932,7 +932,7 @@ "Send anyway": "Отправить в любом случае", "Show Text Formatting Toolbar": "Показать панель инструментов форматирования текста", "This invitation was sent to an email address which is not associated with this account:": "Это приглашение было отправлено на адрес электронной почты, который не связан с этой учетной записью:", - "To link to a room it must have an address.": "Для ссылки на комнату. Она должна иметь адрес.", + "To link to a room it must have an address.": "Для ссылки на комнату необходим адрес.", "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Не удалось установить, что адрес на который было отправлено это приглашение соответствует вашей учетной записи.", "Undecryptable": "Невозможно расшифровать", "Unencrypted message": "Незашифрованое послание", From accb4dc591c78d1db135f0ff8fd8898bbbd0ead6 Mon Sep 17 00:00:00 2001 From: Max Sandholm Date: Thu, 15 Jun 2017 16:35:28 +0000 Subject: [PATCH 088/481] Translated using Weblate (Swedish) Currently translated at 35.6% (323 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index afc2c045b5..07c0ebd0ed 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -296,5 +296,35 @@ "Active call (%(roomName)s)": "Aktiv samtal (%(roomName)s)", "Add": "Lägg till", "Admin tools": "Admin verktyg", - "And %(count)s more...": "Och %(count) till..." + "And %(count)s more...": "Och %(count) till...", + "Alias (optional)": "Alias (valfri)", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Det gick inte att ansluta till servern - kontrollera anslutningen, försäkra att din hemservers TLS-certifikat är betrott, och att inget webbläsartillägg blockerar förfrågningar.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s ändrade maktnivån av %(powerLevelDiffText)s.", + "changing room on a RoomView is not supported": "det går inte att byta rum i en RoomView", + "Click here to join the discussion!": "Klicka här för att gå med i diskussionen!", + "Close": "Stäng", + "%(count)s new messages.one": "%(count)s nytt meddelande", + "%(count)s new messages.other": "%(count)s nya meddelanden", + "Create a new chat or reuse an existing one": "Skapa en ny chatt eller använd en existerande", + "Custom": "Egen", + "Decline": "Avvisa", + "Disable Notifications": "Slå av aviseringar", + "Disable markdown formatting": "Slå av Markdown-formattering", + "Drop File Here": "Dra filen hit", + "Enable Notifications": "Slå på aviseringar", + "Encrypted by a verified device": "Krypterat av en verifierad enhet", + "Encrypted by an unverified device": "Krypterat av en overifierad enhet", + "Encryption is enabled in this room": "Kryptering är aktiverat i det här rummet", + "Encryption is not enabled in this room": "Kryptering är inte aktiverat i det här rummet", + "Enter passphrase": "Ge lösenfras", + "Error: Problem communicating with the given homeserver.": "Fel: Det gick inte att kommunicera med den angivna hemservern.", + "Failed to fetch avatar URL": "Det gick inte att hämta avatar-URL", + "Failed to upload profile picture!": "Det gick inte att ladda upp profilbild!", + "Failure to create room": "Det gick inte att skapa rum", + "Favourites": "Favoriter", + "Fill screen": "Fyll skärmen", + "Filter room members": "Filtrera rumsmedlemmar", + "Forget room": "Glöm bort rum", + "Forgot your password?": "Glömt lösenord?", + "For security, this session has been signed out. Please sign in again.": "Av säkerhetsskäl har den här sessionen loggats ut. Vänligen logga in igen." } From 96e76ce42ec0f920a6c90b574ebfcff1e341bb1a Mon Sep 17 00:00:00 2001 From: strixaluco Date: Wed, 14 Jun 2017 20:37:20 +0000 Subject: [PATCH 089/481] Translated using Weblate (Ukrainian) Currently translated at 10.5% (96 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/uk/ --- src/i18n/strings/uk.json | 99 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index 9e26dfeeb6..4eff352909 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -1 +1,98 @@ -{} \ No newline at end of file +{ + "af": "афрікаанс", + "ar-ae": "арабська (ОАЕ)", + "ar-bh": "арабська (Бахрейн)", + "ar-dz": "арабська (Алжир)", + "ar-eg": "арабська (Єгипет)", + "ar-iq": "арабська (Ірак)", + "ar-jo": "арабська (Йорданія)", + "ar-kw": "арабська (Кувейт)", + "ar-lb": "арабська (Ліван)", + "ar-ly": "арабська (Лівія)", + "ar-ma": "арабська (Марокко)", + "ar-om": "арабська (Оман)", + "ar-qa": "арабська (Катар)", + "ar-sa": "арабська (Саудівська Аравія)", + "ar-sy": "арабська (Сирія)", + "ar-tn": "арабська (Туніс)", + "ar-ye": "арабська (Йемен)", + "be": "білоруська", + "bg": "болгарська", + "ca": "каталонська", + "cs": "чеська", + "da": "данська", + "de-at": "німецька (Австрія)", + "de-ch": "німецька (Швейцарія)", + "de": "німецька", + "de-li": "німецька (Ліхтенштейн)", + "de-lu": "німецька (Люксембург)", + "el": "грецька", + "en-au": "англійська (Австралія)", + "en-bz": "англійська (Беліз)", + "en-ca": "англійська (Канада)", + "en": "англійська", + "en-gb": "англійська (Великобританія)", + "en-ie": "англійська (Ірландія)", + "en-jm": "англійська (Ямайка)", + "en-nz": "англійська (Нова Зеландія)", + "en-tt": "англійська (Тринідад)", + "en-us": "англійська (Сполучені Штати)", + "en-za": "англійська (ПАР)", + "es-ar": "іспанська (Аргентина)", + "es-bo": "іспанська (Болівія)", + "es-cl": "іспанська (Чилі)", + "es-co": "іспанська (Колумбія)", + "es-cr": "іспанська (Коста Ріка)", + "es-do": "іспанська (Домініканська Республіка)", + "es-ec": "іспанська (Еквадор)", + "es-gt": "іспанська (Гватемала)", + "es-hn": "іспанська (Гондурас)", + "es-mx": "іспанська (Мексика)", + "es-ni": "іспанська (Нікарагуа)", + "es-pa": "іспанська (Панама)", + "es-pe": "іспанська (Перу)", + "es-pr": "іспанська (Пуерто Ріко)", + "es-py": "іспанська (Парагвай)", + "es": "іспанська (Іспанія)", + "es-sv": "іспанська (Сальвадор)", + "es-uy": "іспанська (Уругвай)", + "es-ve": "іспанська (Венесуела)", + "et": "естонська", + "eu": "баскійська", + "fa": "перська", + "fi": "фінська", + "fo": "фарерська", + "Cancel": "Скасувати", + "Close": "Закрити", + "Create new room": "Створити нову кімнату", + "Custom Server Options": "Нетипові параметри сервера", + "Direct Chat": "Прямий чат", + "Dismiss": "Відхилити", + "Drop here %(toAction)s": "Кидайте сюди %(toAction)s", + "Error": "Помилка", + "Failed to forget room %(errCode)s": "Не вдалось забути кімнату %(errCode)s", + "Failed to join the room": "Не вдалося приєднатись до кімнати", + "Favourite": "Вибране", + "Mute": "Стишити", + "Notifications": "Сповіщення", + "Operation failed": "Не вдалося виконати дію", + "Please Register": "Зареєструйтеся, будь ласка", + "powered by Matrix": "працює на Matrix", + "Remove": "Прибрати", + "Room directory": "Каталог кімнат", + "Search": "Пошук", + "Settings": "Налаштування", + "Start chat": "Почати розмову", + "unknown error code": "невідомий код помилки", + "Sunday": "Неділя", + "Monday": "Понеділок", + "Tuesday": "Вівторок", + "Wednesday": "Середа", + "Thursday": "Четвер", + "Friday": "П'ятниця", + "Saturday": "Субота", + "OK": "Гаразд", + "Welcome page": "Ласкаво просимо", + "Failed to change password. Is your password correct?": "Не вдалось змінити пароль. Ви впевнені, що пароль введено правильно?", + "Continue": "Продовжити" +} From 90213ce72e268f1d0438cb5bbd183592ded192e4 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Wed, 14 Jun 2017 20:04:55 +0100 Subject: [PATCH 090/481] MatrixChat: Replace state.{loading,loggedIn,loggingIn} with views MatrixChat is essentially a glorified state machine, with its states partially determined by the loading, loggedIn and loggingIn state flags. If we actually make each of the states implied by those flags an explicit 'view', then everything gets much clearer. --- src/components/structures/MatrixChat.js | 77 ++++++++++++++++--------- 1 file changed, 51 insertions(+), 26 deletions(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index f6eb56c06f..a34bafe086 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -45,14 +45,38 @@ import { _t, getCurrentLanguage } from '../../languageHandler'; /** constants for MatrixChat.state.view */ const VIEWS = { - DEFAULT: 0, + // a special initial state which is only used at startup, while we are + // trying to re-animate a matrix client or register as a guest. + LOADING: 0, + + // we are showing the login view LOGIN: 1, + + // we are showing the registration view REGISTER: 2, + + // completeing the registration flow POST_REGISTRATION: 3, + + // showing the 'forgot password' view FORGOT_PASSWORD: 4, + + // we have valid matrix credentials (either via an explicit login, via the + // initial re-animation/guest registration, or via a registration), and are + // now setting up a matrixclient to talk to it. This isn't an instant + // process because (a) we need to clear out indexeddb, and (b) we need to + LOGGING_IN: 5, + + // we are logged in with an active matrix client. + LOGGED_IN: 6, }; module.exports = React.createClass({ + // we export this so that the integration tests can use it :-S + statics: { + VIEWS: VIEWS, + }, + displayName: 'MatrixChat', propTypes: { @@ -102,10 +126,8 @@ module.exports = React.createClass({ getInitialState: function() { const s = { - loading: true, - // the master view we are showing. - view: VIEWS.DEFAULT, + view: VIEWS.LOADING, // a thing to call showScreen with once login completes. screenAfterLogin: this.props.initialScreenAfterLogin, @@ -126,8 +148,6 @@ module.exports = React.createClass({ // If we're trying to just view a user ID (i.e. /user URL), this is it viewUserId: null, - loggedIn: false, - loggingIn: false, collapse_lhs: false, collapse_rhs: false, ready: false, @@ -289,7 +309,6 @@ module.exports = React.createClass({ firstScreen === 'register' || firstScreen === 'forgot_password') { this.props.onLoadCompleted(); - this.setState({loading: false}); this._showScreenAfterLogin(); return; } @@ -331,17 +350,18 @@ module.exports = React.createClass({ }, setStateForNewView: function(state) { + if (state.view === undefined) { + throw new Error("setStateForNewView with no view!"); + } const newState = { - view: VIEWS.DEFAULT, viewUserId: null, - loggedIn: false, - ready: false, }; Object.assign(newState, state); this.setState(newState); }, onAction: function(payload) { + // console.log(`MatrixClientPeg.onAction: ${payload.action}`); const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog"); @@ -366,7 +386,7 @@ module.exports = React.createClass({ this.notifyNewScreen('login'); break; case 'start_post_registration': - this.setState({ // don't clobber loggedIn status + this.setState({ view: VIEWS.POST_REGISTRATION, }); break; @@ -516,7 +536,10 @@ module.exports = React.createClass({ // and also that we're not ready (we'll be marked as logged // in once the login completes, then ready once the sync // completes). - this.setState({loggingIn: true, ready: false}); + this.setStateForNewView({ + view: VIEWS.LOGGING_IN, + ready: false, + }); break; case 'on_logged_in': this._onLoggedIn(payload.teamToken); @@ -864,7 +887,12 @@ module.exports = React.createClass({ */ _onLoadCompleted: function() { this.props.onLoadCompleted(); - this.setState({loading: false}); + + // if we've got this far without leaving the 'loading' view, then + // login must have failed, so start the login process + if (this.state.view === VIEWS.LOADING) { + dis.dispatch({action: "start_login"}); + } }, /** @@ -919,9 +947,8 @@ module.exports = React.createClass({ */ _onLoggedIn: function(teamToken) { this.setState({ + view: VIEWS.LOGGED_IN, guestCreds: null, - loggedIn: true, - loggingIn: false, }); if (teamToken) { @@ -983,7 +1010,7 @@ module.exports = React.createClass({ _onLoggedOut: function() { this.notifyNewScreen('login'); this.setStateForNewView({ - loggedIn: false, + view: VIEWS.LOGIN, ready: false, collapse_lhs: false, collapse_rhs: false, @@ -1146,7 +1173,7 @@ module.exports = React.createClass({ // we can't view a room unless we're logged in // (a guest account is fine) - if (this.state.loggedIn) { + if (this.state.view === VIEWS.LOGGED_IN) { dis.dispatch(payload); } } else if (screen.indexOf('user/') == 0) { @@ -1266,7 +1293,7 @@ module.exports = React.createClass({ onFinishPostRegistration: function() { // Don't confuse this with "PageType" which is the middle window to show this.setState({ - view: VIEWS.DEFAULT, + view: VIEWS.LOGGED_IN, }); this.showScreen("settings"); }, @@ -1334,11 +1361,9 @@ module.exports = React.createClass({ }, render: function() { - // `loading` might be set to false before `loggedIn = true`, causing the default - // (``) to be visible for a few MS (say, whilst a request is in-flight to - // the RTS). So in the meantime, use `loggingIn`, which is true between - // actions `on_logging_in` and `on_logged_in`. - if (this.state.loading || this.state.loggingIn) { + // console.log(`Rendering MatrixChat with view ${this.state.view}`); + + if (this.state.view === VIEWS.LOADING || this.state.view === VIEWS.LOGGING_IN) { const Spinner = sdk.getComponent('elements.Spinner'); return (
@@ -1356,10 +1381,10 @@ module.exports = React.createClass({ ); } - // `ready` and `loggedIn` may be set before `page_type` (because the + // `ready` and `view==LOGGED_IN` may be set before `page_type` (because the // latter is set via the dispatcher). If we don't yet have a `page_type`, // keep showing the spinner for now. - if (this.state.loggedIn && this.state.ready && this.state.page_type) { + if (this.state.view === VIEWS.LOGGED_IN && this.state.ready && this.state.page_type) { /* for now, we stuff the entirety of our props and state into the LoggedInView. * we should go through and figure out what we actually need to pass down, as well * as using something like redux to avoid having a billion bits of state kicking around. @@ -1376,7 +1401,7 @@ module.exports = React.createClass({ {...this.state} /> ); - } else if (this.state.loggedIn) { + } else if (this.state.view === VIEWS.LOGGED_IN) { // we think we are logged in, but are still waiting for the /sync to complete const Spinner = sdk.getComponent('elements.Spinner'); return ( From 7b526308fdf2f82e8c2ceb5b7f923ee0e5c24e0e Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Thu, 15 Jun 2017 17:36:57 +0100 Subject: [PATCH 091/481] Rearrange MatrixChat.render for sanity no-op to make it into a nice simple switch-like arrangement --- src/components/structures/MatrixChat.js | 79 ++++++++++++++----------- 1 file changed, 45 insertions(+), 34 deletions(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index a34bafe086..c63a0cfaca 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -1381,38 +1381,42 @@ module.exports = React.createClass({ ); } - // `ready` and `view==LOGGED_IN` may be set before `page_type` (because the - // latter is set via the dispatcher). If we don't yet have a `page_type`, - // keep showing the spinner for now. - if (this.state.view === VIEWS.LOGGED_IN && this.state.ready && this.state.page_type) { - /* for now, we stuff the entirety of our props and state into the LoggedInView. - * we should go through and figure out what we actually need to pass down, as well - * as using something like redux to avoid having a billion bits of state kicking around. - */ - const LoggedInView = sdk.getComponent('structures.LoggedInView'); - return ( - - ); - } else if (this.state.view === VIEWS.LOGGED_IN) { - // we think we are logged in, but are still waiting for the /sync to complete - const Spinner = sdk.getComponent('elements.Spinner'); - return ( - - ); - } else if (this.state.view == VIEWS.REGISTER) { + if (this.state.view === VIEWS.LOGGED_IN) { + // `ready` and `view==LOGGED_IN` may be set before `page_type` (because the + // latter is set via the dispatcher). If we don't yet have a `page_type`, + // keep showing the spinner for now. + if (this.state.ready && this.state.page_type) { + /* for now, we stuff the entirety of our props and state into the LoggedInView. + * we should go through and figure out what we actually need to pass down, as well + * as using something like redux to avoid having a billion bits of state kicking around. + */ + const LoggedInView = sdk.getComponent('structures.LoggedInView'); + return ( + + ); + } else { + // we think we are logged in, but are still waiting for the /sync to complete + const Spinner = sdk.getComponent('elements.Spinner'); + return ( + + ); + } + } + + if (this.state.view === VIEWS.REGISTER) { const Registration = sdk.getComponent('structures.login.Registration'); return ( ); - } else if (this.state.view == VIEWS.FORGOT_PASSWORD) { + } + + + if (this.state.view === VIEWS.FORGOT_PASSWORD) { const ForgotPassword = sdk.getComponent('structures.login.ForgotPassword'); return ( ); - } else { + } + + if (this.state.view === VIEWS.LOGIN) { const Login = sdk.getComponent('structures.login.Login'); return ( ); } + + throw new Error(`Unknown view ${this.state.view}`); }, }); From af6392d7ca77346a3fc0a82f8be4c303657a203e Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 15 Jun 2017 22:57:41 +0100 Subject: [PATCH 092/481] Fix URL previews and also things like the unsent message error and encryption warning. Stuff that we need to do at room view mount time had got moved into a clause of the if statement in onHaveRoom and so wasn't being executed. Fixes https://github.com/vector-im/riot-web/issues/4327 --- src/components/structures/RoomView.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index c1f59c8e28..9afec13e20 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -230,6 +230,10 @@ module.exports = React.createClass({ if (room) { this._updateAutoComplete(room); this.tabComplete.loadEntries(room); + this.setState({ + unsentMessageError: this._getUnsentMessageError(room), + }); + this._onRoomLoaded(room); } if (!this.state.joining && this.state.roomId) { if (this.props.autoJoin) { @@ -262,10 +266,6 @@ module.exports = React.createClass({ } else if (room) { // Stop peeking because we have joined this room previously MatrixClientPeg.get().stopPeeking(); - this.setState({ - unsentMessageError: this._getUnsentMessageError(room), - }); - this._onRoomLoaded(room); } }, From 2a01e638b714be935ae53f689a064ef1418fb143 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 16 Jun 2017 10:25:51 +0100 Subject: [PATCH 093/481] Make sure captcha disappears when container does Should fix https://github.com/vector-im/riot-web/issues/4095 --- src/components/views/login/CaptchaForm.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/components/views/login/CaptchaForm.js b/src/components/views/login/CaptchaForm.js index b0dd29582b..f154cc4f1d 100644 --- a/src/components/views/login/CaptchaForm.js +++ b/src/components/views/login/CaptchaForm.js @@ -46,6 +46,10 @@ module.exports = React.createClass({ }; }, + componentWillMount: function() { + this._captchaWidgetId = null; + }, + componentDidMount: function() { // Just putting a script tag into the returned jsx doesn't work, annoyingly, // so we do this instead. @@ -75,6 +79,10 @@ module.exports = React.createClass({ } }, + componentWillUnmount: function() { + this._resetRecaptcha(); + }, + _renderRecaptcha: function(divId) { if (!global.grecaptcha) { console.error("grecaptcha not loaded!"); @@ -90,12 +98,18 @@ module.exports = React.createClass({ } console.log("Rendering to %s", divId); - global.grecaptcha.render(divId, { + this._captchaWidgetId = global.grecaptcha.render(divId, { sitekey: publicKey, callback: this.props.onCaptchaResponse, }); }, + _resetRecaptcha: function() { + if (this._captchaWidgetId !== null) { + global.grecaptcha.reset(this._captchaWidgetId); + } + }, + _onCaptchaLoaded: function() { console.log("Loaded recaptcha script."); try { From a0be1706a93b4ddadf9740427d594b06aba19d97 Mon Sep 17 00:00:00 2001 From: Bamstam Date: Thu, 15 Jun 2017 18:44:54 +0000 Subject: [PATCH 094/481] Translated using Weblate (German) Currently translated at 100.0% (906 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 64 ++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index a84c5157a5..47553e8b94 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -31,11 +31,11 @@ "Event information": "Ereignis-Informationen", "Sender device information": "Absender Geräte Informationen", "Displays action": "Zeigt Aktionen an", - "Bans user with given id": "Schließt den Benutzer mit der angegebenen ID aus dem Raum aus", + "Bans user with given id": "Schließt den Benutzer mit der angegebenen ID dauerhaft aus dem Raum aus", "Deops user with given id": "Entfernt OP beim Benutzer mit der angegebenen ID", "Invites user with given id to current room": "Lädt den Benutzer mit der angegebenen ID in den aktuellen Raum ein", "Joins room with given alias": "Betrete Raum mit angegebenen Alias", - "Kicks user with given id": "Kickt Benutzer mit angegebener ID", + "Kicks user with given id": "Entfernt den Benutzer mit der angegebenen ID aus dem Raum", "Changes your display nickname": "Ändert deinen angezeigten Nicknamen", "Change Password": "Passwort ändern", "Searches DuckDuckGo for results": "Verwendet DuckDuckGo für Suchergebnisse", @@ -66,7 +66,7 @@ "Are you sure you want to reject the invitation?": "Bist du sicher, dass du die Einladung ablehnen willst?", "Are you sure you want to upload the following files?": "Bist du sicher, dass du die folgenden Dateien hochladen möchtest?", "banned": "gebannt", - "Banned users": "Gebannte Nutzer", + "Banned users": "Dauerhaft aus dem Raum ausgeschlossene Benutzer", "Bug Report": "Fehlerbericht", "changed avatar": "änderte Avatar", "changed their display name from": "änderte seinen Anzeigenamen von", @@ -116,11 +116,11 @@ "Failed to leave room": "Verlassen des Raums fehlgeschlagen", "Failed to reject invitation": "Einladung konnte nicht abgelehnt werden", "Failed to set avatar.": "Fehler beim Setzen des Profilbilds.", - "Failed to unban": "Entbannen fehlgeschlagen", + "Failed to unban": "Dauerhaftes Ausschließen aus dem Raum konnte nicht aufgehoben werden", "Failed to upload file": "Datei-Upload fehlgeschlagen", "Favourite": "Favorit", "favourite": "Als Favorit setzen", - "Forget room": "Raum vergessen", + "Forget room": "Raum entfernen", "Forgot your password?": "Passwort vergessen?", "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Aus Sicherheitsgründen werden beim Ausloggen alle Ende-zu-Ende-Verschlüsselungs-Schlüssel in diesem Browser gelöscht. Wenn du in späteren Riot-Sitzungen den bisherigen Chatverlauf entschlüsseln möchtest, exportiere bitte deine Schlüssel zur sicheren Aufbewahrung.", "For security, this session has been signed out. Please sign in again.": "Aus Sicherheitsgründen wurde diese Sitzung beendet. Bitte melde dich erneut an.", @@ -205,7 +205,7 @@ "Sign out": "Abmelden", "since the point in time of selecting this option": "ab dem Zeitpunkt, an dem diese Option gewählt wird", "since they joined": "ab dem Zeitpunkt, an dem sie beigetreten sind", - "since they were invited": "seitdem sie eingeladen wurden", + "since they were invited": "ab dem Zeitpunkt, an dem sie eingeladen wurden", "Someone": "Jemand", "Start a chat": "Starte einen Chat", "Start Chat": "Chat beginnen", @@ -221,11 +221,11 @@ "This is a preview of this room. Room interactions have been disabled": "Dies ist eine Vorschau dieses Raumes. Raum-Interaktionen wurden deaktiviert", "This room is not accessible by remote Matrix servers": "Andere Matrix-Server können auf diesen Raum nicht zugreifen", "This room's internal ID is": "Die interne ID dieses Raumes ist", - "To ban users": "Zum Nutzer bannen", + "To ban users": "Um Benutzer dauerhaft aus dem Raum auszuschließen", "To configure the room": "Um den Raum zu konfigurieren", "To invite users into the room": "Um Nutzer in den Raum einzuladen", "to join the discussion": "um an der Diskussion teilzunehmen", - "To kick users": "Um Nutzer zu entfernen", + "To kick users": "Um Benutzer aus dem Raum zu entfernen", "Admin": "Administrator", "Server may be unavailable, overloaded, or you hit a bug.": "Server ist nicht verfügbar, überlastet oder du bist auf einen Fehler gestoßen.", "Could not connect to the integration server": "Konnte keine Verbindung zum Integrations-Server herstellen", @@ -240,9 +240,9 @@ "To send messages": "Um Nachrichten zu senden", "turned on end-to-end encryption (algorithm": "aktivierte Ende-zu-Ende-Verschlüsselung (Algorithmus", "Unable to add email address": "E-Mail-Adresse konnte nicht hinzugefügt werden", - "Unable to remove contact information": "Unfähig die Kontakt-Informationen zu löschen", + "Unable to remove contact information": "Die Kontakt-Informationen konnten nicht gelöscht werden", "Unable to verify email address.": "Unfähig die E-Mail-Adresse zu verifizieren.", - "Unban": "Entbannen", + "Unban": "Dauerhaftes Ausschließen aus dem Raum aufheben", "Unencrypted room": "Unverschlüsselter Raum", "unknown error code": "Unbekannter Fehlercode", "unknown": "unbekannt", @@ -260,10 +260,10 @@ "VoIP conference finished.": "VoIP-Konferenz wurde beendet.", "VoIP conference started.": "VoIP-Konferenz gestartet.", "(warning: cannot be disabled again!)": "(Warnung: Kann nicht wieder deaktiviert werden!)", - "was banned": "wurde aus dem Raum verbannt", + "was banned": "wurde dauerhaft aus dem Raum ausgeschlossen", "was invited": "wurde eingeladen", - "was kicked": "wurde gekickt", - "was unbanned": "wurde entbannt", + "was kicked": "wurde aus dem Raum entfernt", + "was unbanned": "wurde vom dauerhaften Ausschluss aus dem Raum befreit", "was": "wurde", "Who can access this room?": "Wer hat Zugang zu diesem Raum?", "Who can read history?": "Wer kann die Chat-Historie lesen?", @@ -351,7 +351,7 @@ "%(names)s and one other are typing": "%(names)s und eine weitere Person tippen", "%(names)s and %(count)s others are typing": "%(names)s und %(count)s weitere Personen schreiben", "%(senderName)s answered the call.": "%(senderName)s hat den Anruf angenommen.", - "%(senderName)s banned %(targetName)s.": "%(senderName)s hat %(targetName)s aus dem Raum verbannt.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s hat %(targetName)s dauerhaft aus dem Raum ausgeschlossen.", "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s hat den Anzeigenamen von \"%(oldDisplayName)s\" auf \"%(displayName)s\" geändert.", "%(senderName)s changed their profile picture.": "%(senderName)s hat das Profilbild geändert.", "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s hat das Berechtigungslevel von %(powerLevelDiffText)s geändert.", @@ -365,7 +365,7 @@ "%(senderName)s invited %(targetName)s.": "%(senderName)s hat %(targetName)s eingeladen.", "%(displayName)s is typing": "%(displayName)s schreibt", "%(targetName)s joined the room.": "%(targetName)s hat den Raum betreten.", - "%(senderName)s kicked %(targetName)s.": "%(senderName)s kickte %(targetName)s.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s hat %(targetName)s aus dem Raum entfernt.", "%(targetName)s left the room.": "%(targetName)s hat den Raum verlassen.", "%(senderName)s made future room history visible to": "%(senderName)s machte die zukünftige Raumhistorie sichtbar für", "Missing room_id in request": "Fehlende room_id in Anfrage", @@ -389,7 +389,7 @@ "These are experimental features that may break in unexpected ways": "Dies sind experimentelle Funktionen, die in unerwarteter Weise Fehler verursachen können", "To use it, just wait for autocomplete results to load and tab through them.": "Um diese Funktion zu nutzen, warte einfach auf die Autovervollständigungsergebnisse und benutze dann die TAB-Taste zum durchblättern.", "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s hat die Ende-zu-Ende-Verschlüsselung aktiviert (Algorithmus: %(algorithm)s).", - "%(senderName)s unbanned %(targetName)s.": "%(senderName)s zog Bann für %(targetName)s zurück.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s hat das dauerhafte Ausschließen von %(targetName)s aus dem Raum aufgehoben.", "Usage": "Verwendung", "Use with caution": "Mit Vorsicht zu verwenden", "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s hat die Einladung für %(targetName)s zurückgezogen.", @@ -550,14 +550,14 @@ "Friday": "Freitag", "Saturday": "Samstag", "Sunday": "Sonntag", - "Failed to forget room %(errCode)s": "Das Entfernen des Raums %(errCode)s aus deiner Liste ist fehlgeschlagen", + "Failed to forget room %(errCode)s": "Das Entfernen des Raums ist fehlgeschlagen %(errCode)s", "Failed to join the room": "Fehler beim Betreten des Raumes", "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Eine Textnachricht wurde an +%(msisdn)s gesendet. Bitte gebe den Verifikationscode ein, den er beinhaltet", "and %(overflowCount)s others...": "und %(overflowCount)s weitere...", "and one other...": "und ein(e) weitere(r)...", "Are you sure?": "Bist du sicher?", "Attachment": "Anhang", - "Ban": "Verbannen", + "Ban": "Dauerhaft aus dem Raum ausschließen", "Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "Verbindungsaufbau zum Heimserver nicht möglich - bitte Internetverbindung überprüfen und sicherstellen, ob das SSL-Zertifikat des Heimservers vertrauenswürdig ist.", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Es kann keine Verbindung zum Heimserver via HTTP aufgebaut werden, wenn die Adresszeile des Browsers eine HTTPS-URL enthält. Entweder HTTPS verwenden oder alternativ unsichere Skripte erlauben.", "changing room on a RoomView is not supported": "Das Ändern eines Raumes in einer RaumAnsicht wird nicht unterstützt", @@ -571,7 +571,7 @@ "Disinvite": "Einladung zurückziehen", "Download %(text)s": "%(text)s herunterladen", "Enter Code": "Code eingeben", - "Failed to ban user": "Bannen des Nutzers fehlgeschlagen", + "Failed to ban user": "Dauerhaftes Ausschließen des Benutzers aus dem Raum fehlgeschlagen", "Failed to change power level": "Ändern des Berechtigungslevels fehlgeschlagen", "Failed to delete device": "Löschen des Geräts fehlgeschlagen", "Failed to join room": "Betreten des Raumes ist fehlgeschlagen", @@ -581,14 +581,14 @@ "Failed to save settings": "Einstellungen konnten nicht gespeichert werden", "Failed to set display name": "Anzeigename konnte nicht gesetzt werden", "Fill screen": "Fülle Bildschirm", - "Hide Text Formatting Toolbar": "Verberge Text-Formatierungs-Toolbar", + "Hide Text Formatting Toolbar": "Text-Formatierungs-Werkzeugleiste verbergen", "Incorrect verification code": "Falscher Verifizierungscode", "Invalid alias format": "Ungültiges Alias-Format", "Invalid address format": "Ungültiges Adressformat", "'%(alias)s' is not a valid format for an address": "'%(alias)s' ist kein gültiges Adressformat", "'%(alias)s' is not a valid format for an alias": "'%(alias)s' ist kein gültiges Alias-Format", "Join Room": "Dem Raum beitreten", - "Kick": "Kicke", + "Kick": "Aus dem Raum entfernen", "Level": "Berechtigungslevel", "Local addresses for this room:": "Lokale Adressen dieses Raumes:", "Markdown is disabled": "Markdown ist deaktiviert", @@ -680,12 +680,12 @@ "were invited": "wurden eingeladen", "were banned %(repeats)s times": "wurden %(repeats)s mal aus dem Raum ausgeschlossen", "was banned %(repeats)s times": "wurde %(repeats)s mal aus dem Raum ausgeschlossen", - "were banned": "wurden aus dem Raum ausgeschlossen", - "were unbanned %(repeats)s times": "wurden %(repeats)s mal entbannt", - "was unbanned %(repeats)s times": "wurde %(repeats)s mal entbannt", - "were unbanned": "wurden entbannt", - "were kicked %(repeats)s times": "wurden %(repeats)s mal gekickt", - "was kicked %(repeats)s times": "wurde %(repeats)s mal gekickt", + "were banned": "wurden dauerhaft aus dem Raum ausgeschlossen", + "were unbanned %(repeats)s times": "wurden %(repeats)s mal vom dauerhaften Ausschluss aus dem Raum befreit", + "was unbanned %(repeats)s times": "wurde %(repeats)s mal vom dauerhaften Ausschluss aus dem Raum befreit", + "were unbanned": "wurden vom dauerhaften Ausschluss aus dem Raum befreit", + "were kicked %(repeats)s times": "wurden %(repeats)s mal aus dem Raum entfernt", + "was kicked %(repeats)s times": "wurde %(repeats)s mal aus dem Raum entfernt", "were kicked": "wurden aus dem Raum entfernt", "%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)shaben ihren Namen %(repeats)s mal geändert", "%(oneUser)schanged their name %(repeats)s times": "%(oneUser)shat den Namen %(repeats)s mal geändert", @@ -764,7 +764,7 @@ "This allows you to use this app with an existing Matrix account on a different home server.": "Dies erlaubt dir diese App mit einem existierenden Matrix-Konto auf einem anderen Heimserver zu verwenden.", "Dismiss": "Ablehnen", "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kannst auch einen angepassten Idantitätsserver angeben aber dies wird typischerweise Interaktionen mit anderen Nutzern auf Basis der E-Mail-Adresse verhindern.", - "Please check your email to continue registration.": "Bitte prüfe deine E-Mail um mit der Registrierung fortzufahren.", + "Please check your email to continue registration.": "Bitte prüfe deine E-Mails, um mit der Registrierung fortzufahren.", "Token incorrect": "Token inkorrekt", "A text message has been sent to": "Eine Textnachricht wurde gesendet an", "Please enter the code it contains:": "Bitte gebe den Code ein, den sie enthält:", @@ -795,7 +795,7 @@ "Disable URL previews by default for participants in this room": "URL-Vorschau für Teilnehmer dieses Raumes standardmäßig deaktivieren", "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "URL-Vorschau ist standardmäßig %(globalDisableUrlPreview)s für Teilnehmer dieses Raumes.", "URL Previews": "URL-Vorschau", - "Enable URL previews for this room (affects only you)": "Aktiviere die URL-Vorschau in diesem Raum (betrifft nur dich)", + "Enable URL previews for this room (affects only you)": "URL-Vorschau in diesem Raum aktivieren (betrifft nur dich)", "Offline": "Offline", "Online": "Online", " (unsupported)": " (nicht unterstützt)", @@ -944,7 +944,7 @@ "Send anyway": "Trotzdem senden", "Set": "Setze", "Start authentication": "Authentifizierung beginnen", - "Show Text Formatting Toolbar": "Zeige text-formatierende Werkzeugleiste", + "Show Text Formatting Toolbar": "Text-Formatierungs-Werkzeugleiste anzeigen", "This invitation was sent to an email address which is not associated with this account:": "Diese Einledung wurde an eine E-Mail-Adresse gesendet, die nicht mit diesem Konto verknüpft ist:", "This room": "Dieser Raum", "To link to a room it must have an address.": "Um einen Raum zu verlinken, muss er eine Adresse haben.", @@ -959,8 +959,8 @@ "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (Berechtigungslevel %(powerLevelNumber)s)", "Verified": "Verifiziert", "Would you like to accept or decline this invitation?": "Möchtest du diese Einladung akzeptieren oder ablehnen?", - "You have been banned from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s aus dem Raum %(roomName)s ausgeschlossen.", - "You have been kicked from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s aus dem Raum %(roomName)s gekickt.", + "You have been banned from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s dauerhaft aus dem Raum %(roomName)s ausgeschlossen.", + "You have been kicked from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s aus dem Raum %(roomName)s entfernt.", "You may wish to login with a different account, or add this email to this account.": "Du möchtest dich evtl. mit einem anderen Konto anmelden oder diese E-Mail-Adresse diesem Konto hinzufügen.", "Your home server does not support device management.": "Dein Heimserver unterstützt kein Geräte-Management.", "(~%(count)s results).one": "(~%(count)s Ergebnis)", From c57ff5933d1619a40ff94b33c43ef8c7305f6015 Mon Sep 17 00:00:00 2001 From: IMIN <2reeseenmin@gmail.com> Date: Fri, 16 Jun 2017 09:42:13 +0000 Subject: [PATCH 095/481] Translated using Weblate (Korean) Currently translated at 55.5% (503 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ko/ --- src/i18n/strings/ko.json | 284 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 273 insertions(+), 11 deletions(-) diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index 1a093cd325..ee21d5a500 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -31,7 +31,7 @@ "Close": "닫기", "Create new room": "새 방 만들기", "Custom Server Options": "사용자 지정 서버 설정", - "Direct Chat": "직접 얘기하기", + "Direct Chat": "직접 이야기하기", "Dismiss": "없애기", "Error": "오류", "Mute": "알림 끄기", @@ -42,7 +42,7 @@ "Room directory": "방 목록", "Search": "찾기", "Settings": "설정", - "Start chat": "얘기하기", + "Start chat": "이야기하기", "unknown error code": "알 수 없는 오류 코드", "Sunday": "일요일", "Monday": "월요일", @@ -171,10 +171,10 @@ "Anyone": "누구나", "anyone": "누구나", "Are you sure?": "정말이세요?", - "Are you sure you want to leave the room '%(roomName)s'?": "정말로 '%(roomName)s'를 떠나실 거에요?", + "Are you sure you want to leave the room '%(roomName)s'?": "정말로 '%(roomName)s'를 떠나시겠어요?", "Attachment": "붙이기", - "Are you sure you want to upload the following files?": "정말로 다음 파일들을 올리실 거에요?", - "Autoplay GIFs and videos": "GIF와 비디오를 자동으로 재생하기", + "Are you sure you want to upload the following files?": "다음 파일들을 올리시겠어요?", + "Autoplay GIFs and videos": "GIF와 동영상을 자동으로 재생하기", "Ban": "차단", "Banned users": "차단한 사용자", "Blacklisted": "요주인물들", @@ -192,17 +192,17 @@ "Device ID": "장치 ID", "Default": "기본", "Device already verified!": "장치를 이미 확인했어요!", - "device id: ": "장치 ID: ", + "device id: ": "장치 id: ", "Devices": "장치", - "Direct chats": "직접 얘기하기", + "Direct chats": "직접 여러 명에게 이야기하기", "Disable Notifications": "알림 끄기", "disabled": "끄기", - "Display name": "이름 보이기", + "Display name": "별명", "Don't send typing notifications": "입력 중이라는 알림 보내지 않기", "Email": "이메일", "Email address": "이메일 주소", "Email, name or matrix ID": "이메일, 이름 혹은 매트릭스 ID", - "Drop here %(toAction)s": "여기로 끌어주세요 %(toAction)s", + "Drop here %(toAction)s": "여기에 놓아주세요 %(toAction)s", "Failed to forget room %(errCode)s": "방 %(errCode)s를 잊지 못했어요", "Failed to join the room": "방에 들어가지 못했어요", "Favourite": "즐겨찾기", @@ -234,10 +234,272 @@ "%(senderName)s answered the call.": "%(senderName)s님이 전화를 받았어요.", "Anyone who knows the room's link, apart from guests": "손님을 제외하고, 방의 주소를 아는 누구나", "Anyone who knows the room's link, including guests": "손님을 포함하여, 방의 주소를 아는 누구나", - "Are you sure you want to reject the invitation?": "정말로 초대를 거부하실 거에요?", + "Are you sure you want to reject the invitation?": "초대를 거절하시겠어요?", "%(senderName)s banned %(targetName)s.": "%(senderName)s님이 %(targetName)s님을 차단하셨어요.", "Bans user with given id": "받은 ID로 사용자 차단하기", "Bulk Options": "대규모 설정", "Call Timeout": "전화 대기 시간 초과", - "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "홈 서버에 연결할 수 없어요 - 연결을 확인해주시고, 홈 서버의 SSL 인증서가 믿을 수 있는지 확인하시고, 브라우저 확장기능이 요청을 차단하고 있는지 확인해주세요." + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "홈 서버에 연결할 수 없어요 - 연결을 확인해주시고, 홈 서버의 SSL 인증서가 믿을 수 있는지 확인하시고, 브라우저 확장기능이 요청을 차단하고 있는지 확인해주세요.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "주소창에 HTTPS 주소가 있을 때는 HTTP로 홈 서버를 연결할 수 없어요. HTTPS를 쓰거나 안전하지 않은 스크립트를 허용해주세요.", + "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s님이 별명을 %(oldDisplayName)s에서 %(displayName)s로 바꾸셨어요.", + "%(senderName)s changed their profile picture.": "%(senderName)s님이 자기 소개 사진을 바꾸셨어요.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s님이 %(powerLevelDiffText)s의 권한 등급을 바꾸셨어요.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s님이 방 이름을 %(roomName)s로 바꾸셨어요.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s님이 방 이름을 지우셨어요.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s님이 주제를 \"%(topic)s\"로 바꾸셨어요.", + "Changes to who can read history will only apply to future messages in this room": "방의 이후 메시지부터 기록을 읽을 수 있는 조건의 변화가 적용되어요", + "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.": "비밀번호를 바꾸면 현재 모든 장치의 종단간 암호화 키가 다시 설정되고, 먼저 방의 키를 내보내고 나중에 다시 불러오지 않는 한, 암호화한 이야기 기록을 읽을 수 없게 되어요. 앞으로는 이 기능을 더 좋게 만들 거에요.", + "Claimed Ed25519 fingerprint key": "Ed25519 지문 키가 필요", + "Click here to join the discussion!": "여기를 눌러서 같이 논의해요!", + "Click here to fix": "해결하려면 여기를 누르세요", + "Click to mute audio": "소리를 끄려면 누르세요", + "Click to mute video": "동영상 소리를 끄려면 누르세요", + "click to reveal": "누르면 나타나요", + "Click to unmute video": "동영상 소리를 켜려면 누르세요", + "Click to unmute audio": "소리를 켜려면 누르세요", + "Command error": "명령 오류", + "Commands": "명령", + "Conference call failed.": "전화 회의를 실패했어요.", + "Conference calling is in development and may not be reliable.": "전화 회의는 개발 중이며 믿을 수 없어요.", + "Conference calls are not supported in encrypted rooms": "암호화한 방에서는 전화 회의를 할 수 없어요", + "Conference calls are not supported in this client": "이 클라이언트에서는 전화 회의를 할 수 없어요", + "Could not connect to the integration server": "통합 서버에 연결할 수 없어요", + "%(count)s new messages.one": "%(count)s 새 메시지", + "%(count)s new messages.other": "%(count)s 새 메시지", + "Create a new chat or reuse an existing one": "새 이야기를 시작하거나 기존에 하던 이야기를 이어하세요", + "Cryptography": "암호화", + "Current password": "현재 비밀번호", + "Curve25519 identity key": "Curve25519 신원 키", + "Custom level": "사용자 지정 단계", + "/ddg is not a command": "/ddg 는 없는 명령이에요", + "Deactivate Account": "계정 정지", + "Deactivate my account": "내 계정 정지하기", + "Decline": "거절", + "Decrypt %(text)s": "해독 %(text)s", + "Decryption error": "해독 오류", + "Delete": "지우기", + "demote": "등급 낮추기", + "Deops user with given id": "받은 ID로 사용자의 등급을 낮추기", + "Device ID:": "장치 ID:", + "Device key:": "장치 키:", + "Devices will not yet be able to decrypt history from before they joined the room": "방에 들어가기 전에는 장치에서 기록을 해독할 수 없어요", + "Disable inline URL previews by default": "기본적으로 인라인 주소 미리보기를 끄기", + "Disable markdown formatting": "마크다운 형식 끄기", + "Disinvite": "초대 취소", + "Displays action": "활동 보이기", + "Download %(text)s": "%(text)s 받기", + "Drop File Here": "여기에 파일을 놓아주세요", + "Drop here to tag %(section)s": "%(section)s 태그하려면 여기에 놓아주세요", + "Ed25519 fingerprint": "Ed25519 지문", + "Email address (optional)": "이메일 주소 (선택)", + "Emoji": "이모지", + "Enable encryption": "암호화 켜기", + "Enable Notifications": "알림 켜기", + "enabled": "사용", + "Encrypted by a verified device": "인증한 장치로 암호화했어요", + "Encrypted by an unverified device": "인증하지 않은 장치로 암호화했어요", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "암호화한 메시지는 아직 암호화를 구현하지 않은 클라이언트에서는 볼 수 없어요", + "Encrypted room": "암호화한 방", + "Encryption is enabled in this room": "이 방은 암호화중이에요", + "Encryption is not enabled in this room": "이 방은 암호화하고 있지 않아요", + "%(senderName)s ended the call.": "%(senderName)s님이 전화를 끊었어요.", + "End-to-end encryption information": "종단간 암호화 정보", + "End-to-end encryption is in beta and may not be reliable": "종단간 암호화는 시험중이며 믿을 수 없어요", + "Enter Code": "코드를 입력하세요", + "Enter passphrase": "암호를 입력하세요", + "Error decrypting attachment": "첨부 파일 해독중 문제가 일어났어요", + "Error: Problem communicating with the given homeserver.": "오류: 지정한 홈 서버와 통신에 문제가 있어요.", + "Event information": "사건 정보", + "Existing Call": "기존 전화", + "Export": "내보내기", + "Export E2E room keys": "종단간 암호화 방 키 내보내기", + "Failed to ban user": "사용자를 차단하지 못했어요", + "Failed to change power level": "권한 등급을 바꾸지 못했어요", + "Failed to delete device": "장치를 지우지 못했어요", + "Failed to fetch avatar URL": "아바타 주소를 불러오지 못했어요", + "Failed to join room": "방에 들어가지 못했어요", + "Failed to kick": "내쫓지 못했어요", + "Failed to leave room": "방을 떠나지 못했어요", + "Failed to load timeline position": "타임라인 위치를 불러오지 못했어요", + "Failed to lookup current room": "현재 방을 찾지 못했어요", + "Failed to mute user": "사용자의 알림을 끄지 못했어요", + "Failed to register as guest:": "손님으로 등록하지 못했어요:", + "Failed to reject invite": "초대를 거절하지 못했어요", + "Failed to reject invitation": "초대를 거절하지 못했어요", + "Failed to save settings": "설정을 저장하지 못했어요", + "Failed to send email": "이메일을 보내지 못했어요", + "Failed to send request.": "요청을 보내지 못했어요.", + "Failed to set avatar.": "아바타를 설정하지 못했어요.", + "Failed to set display name": "별명을 설정하지 못했어요", + "Failed to set up conference call": "전화 회의를 시작하지 못했어요", + "Failed to toggle moderator status": "조정자 상태를 설정하지 못했어요", + "Failed to unban": "차단을 풀지 못했어요", + "Failed to upload file": "파일을 올리지 못했어요", + "Failed to upload profile picture!": "자기 소개에 사진을 올리지 못했어요!", + "Failed to verify email address: make sure you clicked the link in the email": "이메일 주소를 확인하지 못했어요: 메일의 주소를 눌렀는지 확인해보세요", + "Failure to create room": "방을 만들지 못했어요", + "favourite": "즐겨찾기", + "Favourites": "즐겨찾기", + "Fill screen": "화면 채우기", + "Filter room members": "방 구성원 거르기", + "Forget room": "방 잊기", + "Forgot your password?": "비밀번호를 잊어버리셨어요?", + "For security, this session has been signed out. Please sign in again.": "보안을 위해서, 이 세션에서 로그아웃했어요. 다시 로그인해주세요.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "보안을 위해서, 로그아웃하면 이 브라우저에서 모든 종단간 암호화 키를 없앨 거에요. 이후 라이엇에서 이야기를 해독하고 싶으시면, 방 키를 내보내서 안전하게 보관하세요.", + "Found a bug?": "오류를 찾으셨나요?", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s를 %(fromPowerLevel)s에서 %(toPowerLevel)s로", + "Guest access is disabled on this Home Server.": "손님은 이 홈 서버에 접근하실 수 없어요.", + "Guests can't set avatars. Please register.": "손님은 아바타를 설정하실 수 없어요. 계정을 등록해주세요.", + "Guest users can't create new rooms. Please register to create room and start a chat.": "손님은 새 방을 만드실 수 없어요. 계정을 등록하셔서 방을 만드시고 이야기를 시작하세요.", + "Guest users can't upload files. Please register to upload.": "손님은 파일을 올릴 수 없어요. 파일을 올리시려면 계정을 등록해주세요.", + "Guests can't use labs features. Please register.": "손님은 실험실 기능을 쓸 수 없어요. 계정을 등록해주세요.", + "Guests cannot join this room even if explicitly invited.": "손님은 분명하게 초대받았어도 이 방에 들어가실 수 없어요.", + "had": "했어요", + "Hangup": "전화 끊기", + "Hide read receipts": "읽음 확인 표시 숨기기", + "Hide Text Formatting Toolbar": "문자 서식 도구 숨기기", + "Historical": "보관", + "Home": "중심", + "Homeserver is": "홈 서버는", + "Identity Server is": "ID 서버는", + "I have verified my email address": "제 이메일 주소를 확인했어요", + "Import": "불러오기", + "Import E2E room keys": "종단간 암호화 방 키 불러오기", + "Import room keys": "방 키 불러오기", + "Incoming call from %(name)s": "%(name)s님이 전화를 걸어왔어요", + "Incoming video call from %(name)s": "%(name)s님이 영상 통화를 걸어왔어요", + "Incoming voice call from %(name)s": "%(name)s님이 음성 통화를 걸어왔어요", + "Incorrect username and/or password.": "사용자 이름 혹은 비밀번호가 맞지 않아요.", + "Incorrect verification code": "인증 번호가 맞지 않아요", + "Interface Language": "인터페이스 언어", + "Invalid alias format": "가명 형식이 맞지 않아요", + "Invalid address format": "주소 형식이 맞지 않아요", + "Invalid Email Address": "이메일 주소가 맞지 않아요", + "Invalid file%(extra)s": "파일%(extra)s이 맞지 않아요", + "%(senderName)s invited %(targetName)s.": "%(senderName)s님이 %(targetName)s님을 초대하셨어요.", + "Invite new room members": "새 구성원 초대하기", + "Invited": "초대받기", + "Invites": "초대하기", + "Invites user with given id to current room": "받은 ID로 사용자를 현재 방에 초대하기", + "'%(alias)s' is not a valid format for an address": "'%(alias)s'는 주소에 맞는 형식이 아니에요", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s'는 가명에 맞는 형식이 아니에요", + "%(displayName)s is typing": "%(displayName)s님이 입력중", + "Sign in with": "로그인", + "Join as voice or video.": "음성 또는 영상으로 참여하세요.", + "Join Room": "방에 들어가기", + "joined and left": "들어왔다가 떠남", + "joined": "들어옴", + "%(targetName)s joined the room.": "%(targetName)s님이 방에 들어오셨어요.", + "Joins room with given alias": "받은 가명으로 방에 들어가기", + "Jump to first unread message.": "읽지 않은 첫 메시지로 이동할래요.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s님이 %(targetName)s을 내쫓았어요.", + "Kick": "내쫓기", + "Kicks user with given id": "받은 ID로 사용자 내쫓기", + "Labs": "실험실", + "Last seen": "마지막으로 본 곳", + "Leave room": "방 떠나기", + "left and rejoined": "떠났다가 다시 들어옴", + "left": "떠났음", + "%(targetName)s left the room.": "%(targetName)s님이 방을 떠나셨어요.", + "Level:": "등급:", + "List this room in %(domain)s's room directory?": "%(domain)s's 방 목록에 이 방을 놓으시겠어요?", + "Local addresses for this room:": "이 방의 로컬 주소:", + "Logged in as:": "로그인:", + "Login as guest": "손님으로 로그인", + "Logout": "로그아웃", + "Low priority": "낮은 우선순위", + "%(senderName)s made future room history visible to": "%(senderName)s님이 이후 방의 기록을 볼 수 있게 하셨어요", + "Manage Integrations": "통합 관리", + "Markdown is disabled": "마크다운이 꺼져있어요", + "Markdown is enabled": "마크다운이 켜져있어요", + "matrix-react-sdk version:": "matrix-react-sdk 버전:", + "Members only": "구성원만", + "Message not sent due to unknown devices being present": "알 수 없는 장치가 있어 메시지를 보내지 못했어요", + "Missing room_id in request": "요청에서 방_id가 빠졌어요", + "Missing user_id in request": "요청에서 사용자_id가 빠졌어요", + "Mobile phone number": "휴대 전화번호", + "Mobile phone number (optional)": "휴대 전화번호 (선택)", + "Moderator": "조정자", + "Must be viewing a room": "방을 둘러봐야만 해요", + "my Matrix ID": "내 매트릭스 ID", + "Name": "이름", + "Never send encrypted messages to unverified devices from this device": "이 장치에서 인증받지 않은 장치로 암호화한 메시지를 보내지 마세요", + "Never send encrypted messages to unverified devices in this room": "이 방에서 인증받지 않은 장치로 암호화한 메시지를 보내지 마세요", + "Never send encrypted messages to unverified devices in this room from this device": "이 장치에서 이 방의 인증받지 않은 장치로 암호화한 메시지를 보내지 마세요", + "New address (e.g. #foo:%(localDomain)s)": "새 주소 (예를 들면 #foo:%(localDomain)s)", + "New Composer & Autocomplete": "새 구성 & 자동 완성", + "New password": "새 비밀번호", + "New passwords don't match": "새 비밀번호가 맞지 않아요", + "New passwords must match each other.": "새 비밀번호는 서로 같아야 해요.", + "none": "없음", + "not set": "설정하지 않았어요", + "not specified": "지정하지 않았어요", + "(not supported by this browser)": "(이 브라우저에서는 지원하지 않아요)", + "": "<지원하지 않아요>", + "NOT verified": "확인하지 않음", + "No devices with registered encryption keys": "등록한 암호화 키가 있는 장치가 없어요", + "No display name": "별명이 없어요", + "No more results": "더 이상 결과가 없어요", + "No results": "결과 없음", + "No users have specific privileges in this room": "이 방에 지정한 권한의 사용자가 없어요", + "olm version:": "olm 버전:", + "Password": "비밀번호", + "Password:": "비밀번호:", + "Passwords can't be empty": "비밀번호는 비울 수 없어요", + "Permissions": "권한", + "People": "사람들", + "Phone": "전화", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "방을 암호화하면 암호화를 도중에 끌 수 없어요. (현재로서는)", + "Once you've followed the link it contains, click below": "포함된 주소를 따라가서, 아래를 누르세요", + "Only people who have been invited": "초대받은 사람만", + "Otherwise, click here to send a bug report.": "그 밖에는, 여기를 눌러 오류 보고서를 보내주세요.", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s님이 %(callType)s 전화를 걸었어요.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "이메일을 확인하시고 그 안에 있는 주소를 누르세요. 이 일을 하고 나서, 계속하기를 누르세요.", + "Power level must be positive integer.": "권한 등급은 양의 정수여야만 해요.", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (권한 %(powerLevelNumber)s)", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "사용자를 자신과 같은 권한 등급으로 승급시키면 되돌릴 수 없어요.", + "Press": "누르세요", + "Privacy warning": "개인정보 경고", + "Private Chat": "은밀한 이야기", + "Privileged Users": "권한 있는 사용자", + "Profile": "자기 소개", + "%(senderName)s removed their profile picture.": "%(senderName)s님이 자기 소개 사진을 지우셨어요.", + "%(senderName)s set a profile picture.": "%(senderName)s님이 자기 소개 사진을 설정하셨어요.", + "Public Chat": "공개 이야기", + "Reason": "이유", + "Reason: %(reasonText)s": "이유: %(reasonText)s", + "Revoke Moderator": "조정자 철회", + "Refer a friend to Riot:": "라이엇을 친구에게 추천해주세요:", + "Register": "등록하기", + "rejected": "거절함", + "%(targetName)s rejected the invitation.": "%(targetName)s님이 초대를 거절하셨어요.", + "Reject invitation": "초대 거절", + "Rejoin": "다시 들어가기", + "Remote addresses for this room:": "이 방의 원격 주소:", + "Remove Contact Information?": "연락처를 지우시겠어요?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s님이 별명 (%(oldDisplayName)s)을 지우셨어요.", + "Remove %(threePid)s?": "%(threePid)s 지우시겠어요?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s님이 인터넷전화 회의를 요청하셨어요.", + "Report it": "보고하기", + "Resetting 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.": "비밀번호를 다시 설정하면 현재 모든 장치의 종단간 암호화 키가 다시 설정되고, 먼저 방의 키를 내보내고 나중에 다시 불러오지 않는 한, 암호화한 이야기 기록을 읽을 수 없게 되어요. 앞으로는 이 기능을 더 좋게 만들 거에요.", + "restore": "복구하기", + "Results from DuckDuckGo": "덕덕고에서 검색한 결과", + "Return to app": "앱으로 돌아가기", + "Return to login screen": "로그인 화면으로 돌아가기", + "Riot does not have permission to send you notifications - please check your browser settings": "라이엇에게 알릴 권한이 없어요 - 브라우저 설정을 확인해주세요", + "Riot was not given permission to send notifications - please try again": "라이엇이 알릴 권한을 받지 못했어요 - 다시 해주세요", + "riot-web version:": "라이엇 웹 버전:", + "Room %(roomId)s not visible": "방 %(roomId)s은 보이지 않아요", + "Room Colour": "방 색상", + "Room contains unknown devices": "방에 알 수 없는 장치가 있어요", + "Room name (optional)": "방 이름 (선택)", + "%(roomName)s does not exist.": "%(roomName)s은 없는 방이에요.", + "%(roomName)s is not accessible at this time.": "현재는 %(roomName)s에 들어갈 수 없어요.", + "Rooms": "방", + "Save": "저장", + "Scroll to bottom of page": "화면 맨 아래로 이동", + "Scroll to unread messages": "읽지 않은 메시지로 이동", + "Search failed": "찾지 못함", + "Searches DuckDuckGo for results": "덕덕고에서 검색" } From 512c059f4e4ab4076b5581aaec9bf3dcedb71ea3 Mon Sep 17 00:00:00 2001 From: Enrique Date: Thu, 15 Jun 2017 19:02:06 +0000 Subject: [PATCH 096/481] Translated using Weblate (Spanish) Currently translated at 52.6% (477 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/ --- src/i18n/strings/es.json | 165 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 161 insertions(+), 4 deletions(-) diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 86619b770c..5f20f8113e 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -218,7 +218,7 @@ "Devices will not yet be able to decrypt history from before they joined the room": "Los dispositivos aun no serán capaces de descifrar el historial antes de haberse unido a la sala", "Direct Chat": "Conversación directa", "Direct chats": "Conversaciones directas", - "Disable inline URL previews by default": "Deshabilitar previsualizacón de enlaces por defecto", + "Disable inline URL previews by default": "Desactivar previsualización de enlaces por defecto", "Disinvite": "Deshacer invitación", "Display name": "Nombre para mostrar", "Displays action": "Mostrar acción", @@ -236,7 +236,7 @@ "Encrypted room": "Sala encriptada", "%(senderName)s ended the call.": "%(senderName)s terminó la llamada.", "End-to-end encryption information": "Información de encriptación de extremo a extremo", - "End-to-end encryption is in beta and may not be reliable": "Encriptación de extremo a extremo, esta en version beta y no podría ser confiable", + "End-to-end encryption is in beta and may not be reliable": "El cifrado de extremo a extremo está en pruebas, podría no ser fiable", "Enter Code": "Ingresar Código", "Error": "Error", "Error decrypting attachment": "Error al descifrar adjunto", @@ -265,7 +265,7 @@ "Failed to set up conference call": "Falló al configurar la llamada en conferencia", "Failed to toggle moderator status": "Falló al cambiar estatus de moderador", "Failed to unban": "Falló al desbloquear", - "Failed to upload file": "Falló al subir archivo", + "Failed to upload file": "Error en el envío del fichero", "Failed to verify email address: make sure you clicked the link in the email": "Falló al verificar el correo electrónico: Asegúrese hacer clic en el enlace del correo", "Failure to create room": "Falló al crear sala", "Favourite": "Favorito", @@ -326,5 +326,162 @@ "Logged in as:": "Sesión iniciada como:", "Login as guest": "Iniciar sesión como invitado", "Logout": "Cerrar Sesión", - "Low priority": "Baja prioridad" + "Low priority": "Baja prioridad", + "Accept": "Aceptar", + "Add": "Añadir", + "Admin tools": "Herramientas de administración", + "VoIP": "Voz IP", + "No Microphones detected": "No se ha detectado micrófono", + "No Webcams detected": "No se ha detectado cámara", + "Default Device": "Dispositivo por defecto", + "Microphone": "Micrófono", + "Camera": "Cámara", + "Hide removed messages": "Ocultar mensajes borrados", + "Alias (optional)": "Alias (opcional)", + "Anyone": "Cualquiera", + "Click here to join the discussion!": "¡Pulse aquí para unirse a la conversación!", + "Close": "Cerrar", + "%(count)s new messages.one": "%(count)s mensaje nuevo", + "%(count)s new messages.other": "%(count)s mensajes nuevos", + "Create a new chat or reuse an existing one": "Cree una nueva conversación o reutilice una existente", + "Custom": "Personalizado", + "Custom level": "Nivel personalizado", + "Decline": "Rechazar", + "Device already verified!": "¡El dispositivo ya ha sido verificado!", + "Device ID:": "ID del dispositivo:", + "device id: ": "id del dispositvo: ", + "Disable Notifications": "Desactivar notificaciones", + "disabled": "desactivado", + "Email address (optional)": "Dirección e-mail (opcional)", + "Enable Notifications": "Activar notificaciones", + "enabled": "activado", + "Encrypted by a verified device": "Cifrado por un dispositivo verificado", + "Encrypted by an unverified device": "Cifrado por un dispositivo sin verificar", + "Encryption is enabled in this room": "Cifrado activo en esta sala", + "Encryption is not enabled in this room": "Cifrado desactivado en esta sala", + "Enter passphrase": "Introduzca contraseña", + "Error: Problem communicating with the given homeserver.": "Error: No es posible comunicar con el servidor indicado.", + "Export": "Exportar", + "Failed to fetch avatar URL": "Fallo al obtener la URL del avatar", + "Failed to register as guest:": "Fallo al registrarse como invitado:", + "Failed to upload profile picture!": "¡Fallo al enviar la foto de perfil!", + "Home": "Inicio", + "Import": "Importar", + "Incoming call from %(name)s": "Llamada de %(name)s", + "Incoming video call from %(name)s": "Video-llamada de %(name)s", + "Incoming voice call from %(name)s": "Llamada telefónica de %(name)s", + "Incorrect username and/or password.": "Usuario o contraseña incorrectos.", + "Invited": "Invitado", + "Jump to first unread message.": "Ir al primer mensaje sin leer.", + "Last seen": "Visto por última vez", + "Level:": "Nivel:", + "%(senderName)s made future room history visible to": "%(senderName)s ha configurado el historial de la sala visible para", + "a room": "una sala", + "Something went wrong!": "¡Algo ha fallado!", + "were banned": "fueron expulsados", + "was banned": "fue expulsado", + "were unbanned %(repeats)s times": "fueron readmitidos %(repeats)s veces", + "was unbanned %(repeats)s times": "fue readmitido %(repeats)s veces", + "were unbanned": "fueron readmitidos", + "was unbanned": "fue readmitido", + "were kicked %(repeats)s times": "fueron pateados %(repeats)s veces", + "was kicked %(repeats)s times": "fue pateado %(repeats)s veces", + "were kicked": "fueron pateados", + "was kicked": "fue pateado", + "%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)s cambiaron su nombre %(repeats)s veces", + "%(oneUser)schanged their name %(repeats)s times": "%(oneUser)s cambió su nombre %(repeats)s veces", + "%(severalUsers)schanged their name": "%(severalUsers)s cambiaron su nombre", + "%(oneUser)schanged their name": "%(oneUser)s cambió su nombre", + "%(severalUsers)schanged their avatar %(repeats)s times": "%(severalUsers)s cambiaron su avatar %(repeats)s veces", + "%(oneUser)schanged their avatar %(repeats)s times": "%(oneUser)s cambió su avatar %(repeats)s veces", + "%(severalUsers)schanged their avatar": "%(severalUsers)s cambiaron su avatar", + "%(oneUser)schanged their avatar": "%(oneUser)s cambió su avatar", + "Please select the destination room for this message": "Por favor, seleccione la sala destino para este mensaje", + "Create new room": "Crear nueva sala", + "Welcome page": "Página de bienvenida", + "Start chat": "Comenzar chat", + "New Password": "Nueva contraseña", + "Analytics": "Analíticas", + "Opt out of analytics": "No participar en las analíticas", + "Options": "Opciones", + "Passphrases must match": "Las contraseñas deben coincidir", + "Passphrase must not be empty": "La contraseña no puede estar en blanco", + "Export room keys": "Exportar las claves de la sala", + "Confirm passphrase": "Confirmar contraseña", + "Import room keys": "Importar las claves de la sala", + "File to import": "Fichero a importar", + "You must join the room to see its files": "Debe unirse a la sala para ver los ficheros", + "Reject all %(invitedRooms)s invites": "Rechazar todas las invitaciones a %(invitedRooms)s", + "Start new chat": "Iniciar una nueva conversación", + "Guest users can't invite users. Please register.": "Los invitados no pueden invitar a otros usuarios. Por favor, regístrese.", + "Failed to invite": "Fallo en la invitación", + "Failed to invite user": "No se pudo invitar al usuario", + "Failed to invite the following users to the %(roomName)s room:": "No se pudo invitar a los siguientes usuarios a la sala %(roomName)s:", + "Unknown error": "Error desconocido", + "Incorrect password": "Contraseña incorrecta", + "This action is irreversible.": "Esta acción es irreversible.", + "To continue, please enter your password.": "Para continuar, introduzca su contraseña.", + "Device name": "Nombre del dispositivo", + "Device Name": "Nombre del dispositivo", + "Device key": "Clave del dispositivo", + "In future this verification process will be more sophisticated.": "En el futuro este proceso de verificación será mejorado.", + "Verify device": "Verifique el dispositivo", + "I verify that the keys match": "Confirmo que las claves coinciden", + "Unable to restore session": "No se puede recuperar la sesión", + "Continue anyway": "Continuar igualmente", + "Room Colour": "Color de la sala", + "Room contains unknown devices": "La sala contiene dispositivos desconocidos", + "Room name (optional)": "Nombre de la sala (opcional)", + "%(roomName)s does not exist.": "%(roomName)s no existe.", + "%(roomName)s is not accessible at this time.": "%(roomName)s no es accesible en este momento.", + "Rooms": "Salas", + "Save": "Guardar", + "Scroll to bottom of page": "Bajar al final de la página", + "Scroll to unread messages": "Ir al primer mensaje sin leer", + "Search": "Búsqueda", + "Search failed": "Falló la búsqueda", + "Searching known users": "Buscando usuarios conocidos", + "Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s el %(dateTime)s", + "Send a message (unencrypted)": "Enviar un mensaje (sin cifrar)", + "Send an encrypted message": "Enviar un mensaje cifrado", + "Send anyway": "Enviar igualmente", + "Sender device information": "Información del dispositivo del remitente", + "Send Invites": "Enviar invitaciones", + "Send Reset Email": "Enviar e-mail de reinicio", + "sent an image": "envió una imagen", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s envió una imagen.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s invitó a %(targetDisplayName)s a unirse a la sala.", + "sent a video": "envió un vídeo", + "Server error": "Error del servidor", + "Server may be unavailable, overloaded, or search timed out :(": "El servidor podría estar saturado o desconectado, o la búsqueda caducó :(", + "Server may be unavailable, overloaded, or the file too big": "El servidor podría estar saturado o desconectado, o el fichero ser demasiado grande", + "Server may be unavailable, overloaded, or you hit a bug.": "El servidor podría estar saturado o desconectado, o encontraste un fallo.", + "Server unavailable, overloaded, or something else went wrong.": "Servidor saturado, desconectado, o alguien ha roto algo.", + "Session ID": "ID de sesión", + "%(senderName)s set a profile picture.": "%(senderName)s puso una foto de perfil.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s cambió su nombre a %(displayName)s.", + "Set": "Configurar", + "Settings": "Configuración", + "Show panel": "Mostrar panel", + "Show Text Formatting Toolbar": "Mostrar la barra de formato de texto", + "Signed Out": "Desconectado", + "Sign in": "Conectar", + "Sign out": "Desconectar", + "since the point in time of selecting this option": "a partir del momento en que seleccione esta opción", + "since they joined": "desde que se conectaron", + "since they were invited": "desde que fueron invitados", + "Some of your messages have not been sent.": "Algunos de sus mensajes no han sido enviados.", + "Someone": "Alguien", + "Sorry, this homeserver is using a login which is not recognised ": "Lo siento, este servidor está usando un usuario no reconocido. ", + "Start a chat": "Iniciar una conversación", + "Start authentication": "Comenzar la identificación", + "Start Chat": "Comenzar la conversación", + "Submit": "Enviar", + "Success": "Éxito", + "tag as %(tagName)s": "etiquetar como %(tagName)s", + "tag direct chat": "etiquetar la conversación directa", + "Tagged as: ": "Etiquetado como: ", + "The default role for new room members is": "El nivel por defecto para los nuevos miembros de esta sala es", + "The main address for this room is": "La dirección principal de esta sala es", + "The phone number entered looks invalid": "El número de teléfono indicado parece erróneo" } From 6be3aefe050b6a723661230d8b2f25f1ad61886b Mon Sep 17 00:00:00 2001 From: Max Sandholm Date: Thu, 15 Jun 2017 16:47:48 +0000 Subject: [PATCH 097/481] Translated using Weblate (Swedish) Currently translated at 43.8% (397 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 76 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 07c0ebd0ed..fe8b1ffee1 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -326,5 +326,79 @@ "Filter room members": "Filtrera rumsmedlemmar", "Forget room": "Glöm bort rum", "Forgot your password?": "Glömt lösenord?", - "For security, this session has been signed out. Please sign in again.": "Av säkerhetsskäl har den här sessionen loggats ut. Vänligen logga in igen." + "For security, this session has been signed out. Please sign in again.": "Av säkerhetsskäl har den här sessionen loggats ut. Vänligen logga in igen.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Av säkerhetsskäl kommer alla krypteringsnycklar att raderas från den här webbläsaren om du loggar ut. Om du vill läsa din krypterade meddelandehistorik från framtida Riot-sessioner, exportera nycklarna till förvar.", + "Found a bug?": "Hittade du en bugg?", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s från %(fromPowerLevel)s till %(toPowerLevel)s", + "Guest access is disabled on this Home Server.": "Gäståtkomst är inte aktiverat på den här hemservern.", + "Guests can't set avatars. Please register.": "Gäster kan inte välja en profilbild. Vänligen registrera dig.", + "Guest users can't create new rooms. Please register to create room and start a chat.": "Gäster kan inte skapa nya rum. Vänligen registrera dig för att skapa rum och starta chattar.", + "Guest users can't upload files. Please register to upload.": "Gäster kan inte ladda upp filer. Vänligen registrera dig för att ladda upp.", + "Guests can't use labs features. Please register.": "Gäster kan inte använda labb-egenskaper. Vänligen registrera dig.", + "Guests cannot join this room even if explicitly invited.": "Gäster kan inte gå med i det här rummet fastän de är uttryckligen inbjudna.", + "had": "hade", + "Hangup": "Lägg på", + "Hide read receipts": "Göm kvitteringar", + "Hide Text Formatting Toolbar": "Göm textformatteringsverktygsfältet", + "Historical": "Historiska", + "Home": "Hem", + "Homeserver is": "Hemservern är", + "Identity Server is": "Identitetsservern är", + "I have verified my email address": "Jag har verifierat min epostadress", + "Import": "Importera", + "Import E2E room keys": "Importera rumskrypteringsnycklar", + "Incoming call from %(name)s": "Inkommande samtal från %(name)s", + "Incoming video call from %(name)s": "Inkommande videosamtal från %(name)s", + "Incoming voice call from %(name)s": "Inkommande röstsamtal från %(name)s", + "Incorrect username and/or password.": "Fel användarnamn och/eller lösenord.", + "Incorrect verification code": "Fel verifieringskod", + "Interface Language": "Gränssnittsspråk", + "Invalid alias format": "Fel alias-format", + "Invalid address format": "Fel adressformat", + "Invalid Email Address": "Ogiltig epostadress", + "Invalid file%(extra)s": "Fel fil%(extra)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s bjöd in %(targetName)s.", + "Invite new room members": "Bjud in nya rumsmedlemmar", + "Invited": "Inbjuden", + "Invites": "Inbjudningar", + "Invites user with given id to current room": "Bjuder in användaren med det givna ID:t till det nuvarande rummet", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' är inte ett giltigt format för en adress", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' är inte ett giltigt format för ett alias", + "%(displayName)s is typing": "%(displayName)s skriver", + "Sign in with": "Logga in med", + "Join as voice or video.": "Gå med som röst eller video.", + "Join Room": "Gå med i rum", + "joined and left": "gick med och lämnade", + "joined": "gick med", + "%(targetName)s joined the room.": "%(targetName)s gick med i rummet.", + "Joins room with given alias": "Går med i rummet med givet alias", + "Jump to first unread message.": "Hoppa till första olästa meddelande", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s kickade %(targetName)s.", + "Kick": "Kicka", + "Kicks user with given id": "Kickar användaren med givet ID", + "Labs": "Labb", + "Last seen": "Senast sedd", + "Leave room": "Lämna rummet", + "left and rejoined": "lämnade rummet och kom tillbaka", + "left": "lämnade", + "%(targetName)s left the room.": "%(targetName)s lämnade rummet.", + "Level:": "Nivå:", + "List this room in %(domain)s's room directory?": "Visa det här rummet i katalogen på %(domain)s?", + "Local addresses for this room:": "Lokala adresser för rummet:", + "Logged in as:": "Inloggad som:", + "Login as guest": "Logga in som gäst", + "Logout": "Logga ut", + "Low priority": "Lågprioritet", + "%(senderName)s made future room history visible to": "%(senderName)s gjorde framtida rumshistorik synligt åt", + "Manage Integrations": "Hantera integrationer", + "Markdown is disabled": "Markdown är inaktiverat", + "Markdown is enabled": "Markdown är aktiverat", + "matrix-react-sdk version:": "matrix-react-sdk -version:", + "Members only": "Endast medlemmar", + "Message not sent due to unknown devices being present": "Meddelandet skickades inte eftersom det finns okända enheter i rummet", + "Missing room_id in request": "room_id saknas i förfrågan", + "Missing user_id in request": "user_id saknas i förfrågan", + "Mobile phone number": "Telefonnummer", + "Mobile phone number (optional)": "Telefonnummer (valfri)", + "Moderator": "Moderator" } From cb14b28eb1b49e49d8f69f91e18fbf369d21fec8 Mon Sep 17 00:00:00 2001 From: strixaluco Date: Fri, 16 Jun 2017 08:21:15 +0000 Subject: [PATCH 098/481] Translated using Weblate (Ukrainian) Currently translated at 16.8% (153 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/uk/ --- src/i18n/strings/uk.json | 59 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index 4eff352909..dd8112fa11 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -94,5 +94,62 @@ "OK": "Гаразд", "Welcome page": "Ласкаво просимо", "Failed to change password. Is your password correct?": "Не вдалось змінити пароль. Ви впевнені, що пароль введено правильно?", - "Continue": "Продовжити" + "Continue": "Продовжити", + "fr-be": "французька (Бельгія)", + "fr-ca": "французька (Канада)", + "fr-ch": "французька (Швейцарія)", + "fr": "французька", + "fr-lu": "французька (Люксембург)", + "ga": "ірландська", + "gd": "гельська (Шотландія)", + "he": "іврит", + "hi": "гінді", + "hr": "хорватська", + "hu": "угорська", + "id": "індонезійська", + "is": "ісландська", + "it-ch": "італійська (Швейцарія)", + "it": "італійська", + "ja": "японська", + "ji": "ідиш", + "ko": "корейська", + "lt": "литовська", + "lv": "латвійська", + "mk": "македонська (КЮРМ)", + "ms": "малайська", + "mt": "мальтійська", + "nl-be": "нідерландська (Бельгія)", + "nl": "нідерландська", + "no": "норвезька", + "pl": "польська", + "pt-br": "бразильська португальська", + "pt": "португальська", + "rm": "ретороманська", + "ro-mo": "румунська (Молдова)", + "ro": "румунська", + "ru-mo": "російська (Молдова)", + "ru": "російська", + "sb": "лужицька", + "sk": "словацька", + "sl": "словенська", + "sq": "албанська", + "sr": "сербська", + "sv-fi": "шведська (Фінляндія)", + "sv": "шведська", + "sx": "сесото", + "sz": "північносаамська", + "th": "тайська", + "tn": "свана", + "tr": "турецька", + "ts": "тсонга", + "uk": "українська", + "ur": "урду", + "ve": "венда", + "vi": "в’єтнамська", + "xh": "коса", + "zh-cn": "спрощена китайська (КНР)", + "zh-hk": "традиційна китайська (Гонконг)", + "zh-sg": "спрощена китайська (Сингапур)", + "zh-tw": "традиційна китайська (Тайвань)", + "zu": "зулу" } From 807f01b57ede9fa36ea6701ce44be922ab7cd79e Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 16 Jun 2017 11:10:55 +0100 Subject: [PATCH 099/481] Make sure to pass the roomAlias to the preview header if we have it --- src/components/structures/RoomView.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index c1f59c8e28..481c78a0a9 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -1463,7 +1463,7 @@ module.exports = React.createClass({ // We have no room object for this room, only the ID. // We've got to this room by following a link, possibly a third party invite. - var room_alias = this.state.room_alias; + const roomAlias = this.state.roomAlias; return (
Date: Fri, 16 Jun 2017 11:27:47 +0100 Subject: [PATCH 100/481] Correctly inspect state when rejecting invite So that we view_next_room if we're looking at the room we're rejecting --- src/components/structures/MatrixChat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index efca22cc85..ab937c07ac 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -383,7 +383,7 @@ module.exports = React.createClass({ MatrixClientPeg.get().leave(payload.room_id).done(() => { modal.close(); - if (this.currentRoomId === payload.room_id) { + if (this.state.currentRoomId === payload.room_id) { dis.dispatch({action: 'view_next_room'}); } }, (err) => { From 5e5639b7307e006a81c59545e91f7d53c4682b98 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Fri, 16 Jun 2017 11:50:53 +0100 Subject: [PATCH 101/481] Fix half-written comment --- src/components/structures/MatrixChat.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index c63a0cfaca..3dbde90141 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -65,6 +65,7 @@ const VIEWS = { // initial re-animation/guest registration, or via a registration), and are // now setting up a matrixclient to talk to it. This isn't an instant // process because (a) we need to clear out indexeddb, and (b) we need to + // talk to the team server; while it is going on we show a big spinner. LOGGING_IN: 5, // we are logged in with an active matrix client. From 3884c5ccf061411843e17f1305d2fd6dbe7f5693 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Fri, 16 Jun 2017 11:51:12 +0100 Subject: [PATCH 102/481] Log an error on unknown state instead of throwing --- src/components/structures/MatrixChat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 3dbde90141..2fde44aaeb 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -1476,6 +1476,6 @@ module.exports = React.createClass({ ); } - throw new Error(`Unknown view ${this.state.view}`); + console.error(`Unknown view ${this.state.view}`); }, }); From af7a82cdae7f55d8519b2c7cedd406b1c628a6bb Mon Sep 17 00:00:00 2001 From: IMIN <2reeseenmin@gmail.com> Date: Fri, 16 Jun 2017 10:50:45 +0000 Subject: [PATCH 103/481] Translated using Weblate (Korean) Currently translated at 64.2% (582 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ko/ --- src/i18n/strings/ko.json | 87 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 83 insertions(+), 4 deletions(-) diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index ee21d5a500..151acc7d3c 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -162,7 +162,7 @@ "Advanced": "고급", "Algorithm": "알고리즘", "Hide removed messages": "지운 메시지 숨기기", - "Always show message timestamps": "항상 메시지에 시간을 표시하기", + "Always show message timestamps": "항상 메시지에 시간을 보이기", "Authentication": "인증", "Alias (optional)": "별명 (선택)", "and": "그리고", @@ -290,7 +290,7 @@ "Displays action": "활동 보이기", "Download %(text)s": "%(text)s 받기", "Drop File Here": "여기에 파일을 놓아주세요", - "Drop here to tag %(section)s": "%(section)s 태그하려면 여기에 놓아주세요", + "Drop here to tag %(section)s": "%(section)s 지정하려면 여기에 놓아주세요", "Ed25519 fingerprint": "Ed25519 지문", "Email address (optional)": "이메일 주소 (선택)", "Emoji": "이모지", @@ -427,7 +427,7 @@ "Never send encrypted messages to unverified devices from this device": "이 장치에서 인증받지 않은 장치로 암호화한 메시지를 보내지 마세요", "Never send encrypted messages to unverified devices in this room": "이 방에서 인증받지 않은 장치로 암호화한 메시지를 보내지 마세요", "Never send encrypted messages to unverified devices in this room from this device": "이 장치에서 이 방의 인증받지 않은 장치로 암호화한 메시지를 보내지 마세요", - "New address (e.g. #foo:%(localDomain)s)": "새 주소 (예를 들면 #foo:%(localDomain)s)", + "New address (e.g. #foo:%(localDomain)s)": "새 주소 (예. #foo:%(localDomain)s)", "New Composer & Autocomplete": "새 구성 & 자동 완성", "New password": "새 비밀번호", "New passwords don't match": "새 비밀번호가 맞지 않아요", @@ -501,5 +501,84 @@ "Scroll to bottom of page": "화면 맨 아래로 이동", "Scroll to unread messages": "읽지 않은 메시지로 이동", "Search failed": "찾지 못함", - "Searches DuckDuckGo for results": "덕덕고에서 검색" + "Searches DuckDuckGo for results": "덕덕고에서 검색", + "Searching known users": "아는 사용자 검색중", + "Seen by %(userName)s at %(dateTime)s": "%(userName)s님이 %(dateTime)s에 확인", + "Send a message (unencrypted)": "메시지 보내기 (비암호화)", + "Send an encrypted message": "암호화한 메시지 보내기", + "Send anyway": "그래도 보내기", + "Sender device information": "보낸 장치의 정보", + "Send Invites": "초대 보내기", + "Send Reset Email": "재설정 이메일 보내기", + "sent an image": "사진을 보냈어요", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s님이 사진을 보냈어요.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s님이 %(targetDisplayName)s님에게 들어오라는 초대를 보냈어요.", + "sent a video": "동영상을 보냈어요", + "Server error": "서버 오류", + "Server may be unavailable or overloaded": "서버를 쓸 수 없거나 과부하일 수 있어요", + "Server may be unavailable, overloaded, or search timed out :(": "서버를 쓸 수 없거나 과부하거나, 검색 시간을 초과했어요 :(", + "Server may be unavailable, overloaded, or the file too big": "서버를 쓸 수 없거나 과부하거나, 파일이 너무 커요", + "Server may be unavailable, overloaded, or you hit a bug.": "서버를 쓸 수 없거나 과부하거나, 오류에요.", + "Server unavailable, overloaded, or something else went wrong.": "서버를 쓸 수 없거나 과부하거나, 다른 문제가 있어요.", + "Session ID": "세션 ID", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s님이 별명을 %(displayName)s로 바꾸셨어요.", + "Set": "설정하기", + "Show panel": "패널 보이기", + "Show Text Formatting Toolbar": "문자 서식 도구 보이기", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "시간을 12시간제로 보이기 (예. 오후 2:30)", + "Signed Out": "로그아웃함", + "Sign in": "로그인", + "Sign out": "로그아웃", + "since the point in time of selecting this option": "이 선택을 하는 시점부터", + "since they joined": "들어온 이후", + "since they were invited": "초대받은 이후", + "Some of your messages have not been sent.": "일부 메시지는 보내지 못했어요.", + "Someone": "누군가", + "Sorry, this homeserver is using a login which is not recognised ": "죄송해요, 이 홈 서버는 인식할 수 없는 로그인을 쓰고 있네요 ", + "Start a chat": "이야기하기", + "Start authentication": "인증하기", + "Start Chat": "이야기하기", + "Submit": "보내기", + "Success": "성공", + "tag as %(tagName)s": "%(tagName)s로 지정하기", + "tag direct chat": "직접 이야기 지정하기", + "Tagged as: ": "지정함: ", + "The default role for new room members is": "방 새 구성원의 기본 역할", + "The main address for this room is": "이 방의 주요 주소", + "The phone number entered looks invalid": "입력한 전화번호가 잘못된 거 같아요", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "입력한 서명 키는 %(userId)s님의 장치 %(deviceId)s에서 받은 서명 키와 일치하네요. 인증한 장치로 표시할게요.", + "This action cannot be performed by a guest user. Please register to be able to do this.": "손님은 이 작업을 할 수 없어요. 하려면 계정을 등록해주세요.", + "This email address is already in use": "이 이메일 주소는 사용중이에요", + "This email address was not found": "이 이메일 주소를 찾지 못했어요", + "%(actionVerb)s this person?": "이 사용자에게 %(actionVerb)s?", + "The email address linked to your account must be entered.": "계정에 연결한 이메일 주소를 입력해야 해요.", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "'%(fileName)s' 파일이 홈 서버에 올릴 수 있는 한계 크기를 초과했어요", + "The file '%(fileName)s' failed to upload": "'%(fileName)s' 파일을 올리지 못했어요", + "The remote side failed to pick up": "원격 측에서 찾지 못했어요", + "This Home Server does not support login using email address.": "이 홈 서버는 이메일 주소 로그인을 지원하지 않아요.", + "This invitation was sent to an email address which is not associated with this account:": "이 초대는 이 계정과 연결되지 않은 이메일 주소로 보냈어요:", + "There was a problem logging in.": "로그인하는 데 문제가 있어요.", + "This room has no local addresses": "이 방은 로컬 주소가 없어요", + "This room is not recognised.": "이 방은 드러나지 않아요.", + "These are experimental features that may break in unexpected ways": "에상치 못한 방법으로 망가질 지도 모르는 실험 기능이에요", + "The visibility of existing history will be unchanged": "기존 기록은 볼 수 있는 대상이 바뀌지 않아요", + "This doesn't appear to be a valid email address": "올바르지 않은 이메일 주소로 보여요", + "This is a preview of this room. Room interactions have been disabled": "방을 미리보는 거에요. 상호작용은 보이지 않아요", + "This phone number is already in use": "이 전화번호는 사용중이에요", + "This room": "이 방", + "This room is not accessible by remote Matrix servers": "이 방은 원격 매트릭스 서버에 접근할 수 없어요", + "This room's internal ID is": "방의 내부 ID", + "times": "번", + "To ban users": "사용자를 차단하기", + "to browse the directory": "목록에서 찾기", + "To configure the room": "방을 구성하기", + "to demote": "등급을 낮추기", + "to favourite": "즐겨찾기하기", + "To invite users into the room": "방으로 사용자를 초대하기", + "To kick users": "사용자를 내쫓기", + "To link to a room it must have an address.": "방에 연결하려면 주소가 있어야 해요.", + "to make a room or": "방을 만들거나 혹은", + "To remove other users' messages": "다른 사용자의 메시지를 지우기", + "To reset your password, enter the email address linked to your account": "비밀번호을 다시 설정하려면, 계정과 연결한 이메일 주소를 입력해주세요", + "to restore": "복구하기" } From 1f719b3f7d379470e451513d1e8ad0fdcd896c5f Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Fri, 16 Jun 2017 13:06:28 +0100 Subject: [PATCH 104/481] Avoid getting stuck in a loop in CAS login 498ea53 made it so that the #/login URL fragment was prioritised over the token params in the query string; unfortunately that also means that CAS login gets stuck in a loop where you always get redirected back to the login view. Prioritising the URL fragment over the token params may or may not be the correct thing to, but I also think it's incorrect that we ask the CAS server to redirect us back to #/login. Accordingly, the easiest fix here is just to clear the URL fragment before redirecting to CAS. --- src/Login.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Login.js b/src/Login.js index 8db6e99b89..8225509919 100644 --- a/src/Login.js +++ b/src/Login.js @@ -178,11 +178,18 @@ export default class Login { } redirectToCas() { - var client = this._createTemporaryClient(); - var parsedUrl = url.parse(window.location.href, true); + const client = this._createTemporaryClient(); + const parsedUrl = url.parse(window.location.href, true); + + // XXX: at this point, the fragment will always be #/login, which is no + // use to anyone. Ideally, we would get the intended fragment from + // MatrixChat.screenAfterLogin so that you could follow #/room links etc + // through a CAS login. + parsedUrl.hash = ""; + parsedUrl.query["homeserver"] = client.getHomeserverUrl(); parsedUrl.query["identityServer"] = client.getIdentityServerUrl(); - var casUrl = client.getCasLoginUrl(url.format(parsedUrl)); + const casUrl = client.getCasLoginUrl(url.format(parsedUrl)); window.location.href = casUrl; } } From 5f42eb73c1e394c4236aae465b175ae68cb5e569 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 16 Jun 2017 13:28:48 +0100 Subject: [PATCH 105/481] Prepare changelog for v0.9.5-rc.2 --- CHANGELOG.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d26a8c0955..bf2e67caa5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,20 @@ +Changes in [0.9.5-rc.2](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.9.5-rc.2) (2017-06-16) +============================================================================================================= +[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.9.5-rc.1...v0.9.5-rc.2) + + * Avoid getting stuck in a loop in CAS login + [\#1109](https://github.com/matrix-org/matrix-react-sdk/pull/1109) + * Update from Weblate. + [\#1101](https://github.com/matrix-org/matrix-react-sdk/pull/1101) + * Correctly inspect state when rejecting invite + [\#1108](https://github.com/matrix-org/matrix-react-sdk/pull/1108) + * Make sure to pass the roomAlias to the preview header if we have it + [\#1107](https://github.com/matrix-org/matrix-react-sdk/pull/1107) + * Make sure captcha disappears when container does + [\#1106](https://github.com/matrix-org/matrix-react-sdk/pull/1106) + * Fix URL previews + [\#1105](https://github.com/matrix-org/matrix-react-sdk/pull/1105) + Changes in [0.9.5-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.9.5-rc.1) (2017-06-15) ============================================================================================================= [Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.9.4...v0.9.5-rc.1) From 12ad9a2c58827d101616b98c9fcb381bcfd2ce6a Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 16 Jun 2017 13:28:49 +0100 Subject: [PATCH 106/481] v0.9.5-rc.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8b9e437a9c..5c2e2048c9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "matrix-react-sdk", - "version": "0.9.5-rc.1", + "version": "0.9.5-rc.2", "description": "SDK for matrix.org using React", "author": "matrix.org", "repository": { From eb1fc9ae2d19950b55f08e776404db6a05cfae1c Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Fri, 16 Jun 2017 14:33:14 +0100 Subject: [PATCH 107/481] Avoid transitioning to loggedIn state during token login Fixes riot-web#4334 When we do a token login, don't carry on with the normal app startup (transitioning to the loggedIn state etc) - instead tell the app about the successful login and wait for it to redirect. Replace onLoadCompleted with onTokenLoginCompleted so that the app can see what it's supposed to be doing. --- src/Lifecycle.js | 102 +++++++++++++----------- src/components/structures/MatrixChat.js | 73 +++++++++-------- 2 files changed, 97 insertions(+), 78 deletions(-) diff --git a/src/Lifecycle.js b/src/Lifecycle.js index 39a159869c..1c5d35a642 100644 --- a/src/Lifecycle.js +++ b/src/Lifecycle.js @@ -35,26 +35,20 @@ import { _t } from './languageHandler'; * Called at startup, to attempt to build a logged-in Matrix session. It tries * a number of things: * - * 1. if we have a loginToken in the (real) query params, it uses that to log - * in. * - * 2. if we have a guest access token in the fragment query params, it uses + * 1. if we have a guest access token in the fragment query params, it uses * that. * - * 3. if an access token is stored in local storage (from a previous session), + * 2. if an access token is stored in local storage (from a previous session), * it uses that. * - * 4. it attempts to auto-register as a guest user. + * 3. it attempts to auto-register as a guest user. * * If any of steps 1-4 are successful, it will call {_doSetLoggedIn}, which in * turn will raise on_logged_in and will_start_client events. * * @param {object} opts * - * @param {object} opts.realQueryParams: string->string map of the - * query-parameters extracted from the real query-string of the starting - * URI. - * * @param {object} opts.fragmentQueryParams: string->string map of the * query-parameters extracted from the #-fragment of the starting URI. * @@ -70,7 +64,6 @@ import { _t } from './languageHandler'; * @returns {Promise} a promise which resolves when the above process completes. */ export function loadSession(opts) { - const realQueryParams = opts.realQueryParams || {}; const fragmentQueryParams = opts.fragmentQueryParams || {}; let enableGuest = opts.enableGuest || false; const guestHsUrl = opts.guestHsUrl; @@ -82,14 +75,6 @@ export function loadSession(opts) { enableGuest = false; } - if (realQueryParams.loginToken) { - if (!realQueryParams.homeserver) { - console.warn("Cannot log in with token: can't determine HS URL to use"); - } else { - return _loginWithToken(realQueryParams, defaultDeviceDisplayName); - } - } - if (enableGuest && fragmentQueryParams.guest_user_id && fragmentQueryParams.guest_access_token @@ -117,7 +102,26 @@ export function loadSession(opts) { }); } -function _loginWithToken(queryParams, defaultDeviceDisplayName) { +/** + * @param {Object} queryParams string->string map of the + * query-parameters extracted from the real query-string of the starting + * URI. + * + * @param {String} defaultDeviceDisplayName + * + * @returns {Promise} promise which resolves to true if we completed the token + * login, else false + */ +export function attemptTokenLogin(queryParams, defaultDeviceDisplayName) { + if (!queryParams.loginToken) { + return q(false); + } + + if (!queryParams.homeserver) { + console.warn("Cannot log in with token: can't determine HS URL to use"); + return q(false); + } + // create a temporary MatrixClient to do the login const client = Matrix.createClient({ baseUrl: queryParams.homeserver, @@ -130,17 +134,21 @@ function _loginWithToken(queryParams, defaultDeviceDisplayName) { }, ).then(function(data) { console.log("Logged in with token"); - return _doSetLoggedIn({ - userId: data.user_id, - deviceId: data.device_id, - accessToken: data.access_token, - homeserverUrl: queryParams.homeserver, - identityServerUrl: queryParams.identityServer, - guest: false, - }, true); - }, (err) => { + return _clearStorage().then(() => { + _persistCredentialsToLocalStorage({ + userId: data.user_id, + deviceId: data.device_id, + accessToken: data.access_token, + homeserverUrl: queryParams.homeserver, + identityServerUrl: queryParams.identityServer, + guest: false, + }); + return true; + }); + }).catch((err) => { console.error("Failed to log in with login token: " + err + " " + err.data); + return false; }); } @@ -322,23 +330,10 @@ async function _doSetLoggedIn(credentials, clearStorage) { // Resolves by default let teamPromise = Promise.resolve(null); - // persist the session + if (localStorage) { try { - localStorage.setItem("mx_hs_url", credentials.homeserverUrl); - localStorage.setItem("mx_is_url", credentials.identityServerUrl); - localStorage.setItem("mx_user_id", credentials.userId); - localStorage.setItem("mx_access_token", credentials.accessToken); - localStorage.setItem("mx_is_guest", JSON.stringify(credentials.guest)); - - // if we didn't get a deviceId from the login, leave mx_device_id unset, - // rather than setting it to "undefined". - // - // (in this case MatrixClient doesn't bother with the crypto stuff - // - that's fine for us). - if (credentials.deviceId) { - localStorage.setItem("mx_device_id", credentials.deviceId); - } + _persistCredentialsToLocalStorage(credentials); // The user registered as a PWLU (PassWord-Less User), the generated password // is cached here such that the user can change it at a later time. @@ -349,8 +344,6 @@ async function _doSetLoggedIn(credentials, clearStorage) { cachedPassword: credentials.password, }); } - - console.log("Session persisted for %s", credentials.userId); } catch (e) { console.warn("Error using local storage: can't persist session!", e); } @@ -379,6 +372,25 @@ async function _doSetLoggedIn(credentials, clearStorage) { startMatrixClient(); } +function _persistCredentialsToLocalStorage(credentials) { + localStorage.setItem("mx_hs_url", credentials.homeserverUrl); + localStorage.setItem("mx_is_url", credentials.identityServerUrl); + localStorage.setItem("mx_user_id", credentials.userId); + localStorage.setItem("mx_access_token", credentials.accessToken); + localStorage.setItem("mx_is_guest", JSON.stringify(credentials.guest)); + + // if we didn't get a deviceId from the login, leave mx_device_id unset, + // rather than setting it to "undefined". + // + // (in this case MatrixClient doesn't bother with the crypto stuff + // - that's fine for us). + if (credentials.deviceId) { + localStorage.setItem("mx_device_id", credentials.deviceId); + } + + console.log("Session persisted for %s", credentials.userId); +} + /** * Logs the current session out and transitions to the logged-out state */ diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index ab937c07ac..a4637d210d 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -59,8 +59,8 @@ module.exports = React.createClass({ // the initial queryParams extracted from the hash-fragment of the URI startingFragmentQueryParams: React.PropTypes.object, - // called when the session load completes - onLoadCompleted: React.PropTypes.func, + // called when we have completed a token login + onTokenLoginCompleted: React.PropTypes.func, // Represents the screen to display as a result of parsing the initial // window.location @@ -143,7 +143,7 @@ module.exports = React.createClass({ realQueryParams: {}, startingFragmentQueryParams: {}, config: {}, - onLoadCompleted: () => {}, + onTokenLoginCompleted: () => {}, }; }, @@ -266,39 +266,47 @@ module.exports = React.createClass({ const teamServerConfig = this.props.config.teamServerConfig || {}; Lifecycle.initRtsClient(teamServerConfig.teamServerURL); - // if the user has followed a login or register link, don't reanimate - // the old creds, but rather go straight to the relevant page + // the first thing to do is to try the token params in the query-string + Lifecycle.attemptTokenLogin(this.props.realQueryParams).then((loggedIn) => { + if(loggedIn) { + this.props.onTokenLoginCompleted(); - const firstScreen = this.state.screenAfterLogin ? - this.state.screenAfterLogin.screen : null; + // don't do anything else until the page reloads - just stay in + // the 'loading' state. + return; + } - if (firstScreen === 'login' || - firstScreen === 'register' || - firstScreen === 'forgot_password') { - this.props.onLoadCompleted(); - this.setState({loading: false}); - this._showScreenAfterLogin(); - return; - } + // if the user has followed a login or register link, don't reanimate + // the old creds, but rather go straight to the relevant page + const firstScreen = this.state.screenAfterLogin ? + this.state.screenAfterLogin.screen : null; - // the extra q() ensures that synchronous exceptions hit the same codepath as - // asynchronous ones. - q().then(() => { - return Lifecycle.loadSession({ - realQueryParams: this.props.realQueryParams, - fragmentQueryParams: this.props.startingFragmentQueryParams, - enableGuest: this.props.enableGuest, - guestHsUrl: this.getCurrentHsUrl(), - guestIsUrl: this.getCurrentIsUrl(), - defaultDeviceDisplayName: this.props.defaultDeviceDisplayName, + if (firstScreen === 'login' || + firstScreen === 'register' || + firstScreen === 'forgot_password') { + this.setState({loading: false}); + this._showScreenAfterLogin(); + return; + } + + // the extra q() ensures that synchronous exceptions hit the same codepath as + // asynchronous ones. + return q().then(() => { + return Lifecycle.loadSession({ + fragmentQueryParams: this.props.startingFragmentQueryParams, + enableGuest: this.props.enableGuest, + guestHsUrl: this.getCurrentHsUrl(), + guestIsUrl: this.getCurrentIsUrl(), + defaultDeviceDisplayName: this.props.defaultDeviceDisplayName, + }); + }).catch((e) => { + console.error("Unable to load session", e); + }).then(()=>{ + // stuff this through the dispatcher so that it happens + // after the on_logged_in action. + dis.dispatch({action: 'load_completed'}); }); - }).catch((e) => { - console.error("Unable to load session", e); - }).done(()=>{ - // stuff this through the dispatcher so that it happens - // after the on_logged_in action. - dis.dispatch({action: 'load_completed'}); - }); + }).done(); }, componentWillUnmount: function() { @@ -850,7 +858,6 @@ module.exports = React.createClass({ * Called when the sessionloader has finished */ _onLoadCompleted: function() { - this.props.onLoadCompleted(); this.setState({loading: false}); }, From db3d9c057349099e7186e8ab51d76f5e24a0a972 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Fri, 16 Jun 2017 12:20:52 +0100 Subject: [PATCH 108/481] Make Lifecycle.loadSession return an explicit result - rather than inferring it from the fact it didn't call logging_in. --- src/Lifecycle.js | 10 +++++++--- src/components/structures/MatrixChat.js | 24 ++++++------------------ 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/src/Lifecycle.js b/src/Lifecycle.js index 1c5d35a642..3733ba1ea5 100644 --- a/src/Lifecycle.js +++ b/src/Lifecycle.js @@ -62,6 +62,8 @@ import { _t } from './languageHandler'; * true; defines the IS to use. * * @returns {Promise} a promise which resolves when the above process completes. + * Resolves to `true` if we ended up starting a session, or `false` if we + * failed. */ export function loadSession(opts) { const fragmentQueryParams = opts.fragmentQueryParams || {}; @@ -86,12 +88,12 @@ export function loadSession(opts) { homeserverUrl: guestHsUrl, identityServerUrl: guestIsUrl, guest: true, - }, true); + }, true).then(() => true); } return _restoreFromLocalStorage().then((success) => { if (success) { - return; + return true; } if (enableGuest) { @@ -99,6 +101,7 @@ export function loadSession(opts) { } // fall back to login screen + return false; }); } @@ -176,9 +179,10 @@ function _registerAsGuest(hsUrl, isUrl, defaultDeviceDisplayName) { homeserverUrl: hsUrl, identityServerUrl: isUrl, guest: true, - }, true); + }, true).then(() => true); }, (err) => { console.error("Failed to register as guest: " + err + " " + err.data); + return false; }); } diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 2c95386811..831fcdd9b2 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -335,10 +335,12 @@ module.exports = React.createClass({ }); }).catch((e) => { console.error("Unable to load session", e); - }).then(()=>{ - // stuff this through the dispatcher so that it happens - // after the on_logged_in action. - dis.dispatch({action: 'load_completed'}); + return false; + }).then((loadedSession) => { + if (!loadedSession) { + // fall back to showing the login screen + dis.dispatch({action: "start_login"}); + } }); }).done(); }, @@ -560,9 +562,6 @@ module.exports = React.createClass({ case 'will_start_client': this._onWillStartClient(); break; - case 'load_completed': - this._onLoadCompleted(); - break; case 'new_version': this.onVersion( payload.currentVersion, payload.newVersion, @@ -892,17 +891,6 @@ module.exports = React.createClass({ }); }, - /** - * Called when the sessionloader has finished - */ - _onLoadCompleted: function() { - // if we've got this far without leaving the 'loading' view, then - // login must have failed, so start the login process - if (this.state.view === VIEWS.LOADING) { - dis.dispatch({action: "start_login"}); - } - }, - /** * Called whenever someone changes the theme * From aa7ddfe86ebc076f0dc8c6b324a94f2271bc5427 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 16 Jun 2017 15:47:40 +0100 Subject: [PATCH 109/481] Remove unused collapse_rhs Remove all the places we pass collapse_rhs through to places it's never used. Remove the commented RHS collapse button from SimpleRoomHeader. --- src/components/structures/LoggedInView.js | 2 -- src/components/structures/UserSettings.js | 4 ---- .../views/rooms/SimpleRoomHeader.js | 23 ------------------- 3 files changed, 29 deletions(-) diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js index 8fa35e84d7..8b0bcaad68 100644 --- a/src/components/structures/LoggedInView.js +++ b/src/components/structures/LoggedInView.js @@ -239,7 +239,6 @@ export default React.createClass({ page_element = diff --git a/src/components/views/rooms/SimpleRoomHeader.js b/src/components/views/rooms/SimpleRoomHeader.js index 44ec7c29aa..8c06d71b6f 100644 --- a/src/components/views/rooms/SimpleRoomHeader.js +++ b/src/components/views/rooms/SimpleRoomHeader.js @@ -14,10 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -'use strict'; - import React from 'react'; -import dis from '../../../dispatcher'; import AccessibleButton from '../elements/AccessibleButton'; import sdk from '../../../index'; import { _t } from '../../../languageHandler'; @@ -45,17 +42,10 @@ export default React.createClass({ title: React.PropTypes.string, onCancelClick: React.PropTypes.func, - // is the RightPanel collapsed? - collapsedRhs: React.PropTypes.bool, - // `src` to a TintableSvg. Optional. icon: React.PropTypes.string, }, - onShowRhsClick: function(ev) { - dis.dispatch({ action: 'show_right_panel' }); - }, - render: function() { let cancelButton; let icon; @@ -70,25 +60,12 @@ export default React.createClass({ />; } - let showRhsButton; - /* // don't bother cluttering things up with this for now. - const TintableSvg = sdk.getComponent("elements.TintableSvg"); - - if (this.props.collapsedRhs) { - showRhsButton = -
- -
- } - */ - return (
{ icon } { this.props.title } - { showRhsButton } { cancelButton }
From 7b4cd311242cb8a1e82746ae75933876d9125793 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 16 Jun 2017 16:12:52 +0100 Subject: [PATCH 110/481] make forward_message be friendly with the RVS stuffs Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/structures/MatrixChat.js | 24 +++++++++++++++++ src/components/structures/RoomView.js | 15 ++++++----- src/components/views/rooms/ForwardMessage.js | 28 -------------------- src/stores/RoomViewStore.js | 21 +++++++++++++++ 4 files changed, 53 insertions(+), 35 deletions(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index ab937c07ac..7b1855b678 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -523,6 +523,9 @@ module.exports = React.createClass({ payload.releaseNotes, ); break; + case 'send_event': + this.onSendEvent(payload.room_id, payload.event); + break; } }, @@ -1267,6 +1270,27 @@ module.exports = React.createClass({ }); }, + onSendEvent: function(roomId, event) { + const cli = MatrixClientPeg.get(); + if (!cli) { + dis.dispatch({action: 'message_send_failed'}); + return; + } + + cli.sendEvent(roomId, event.getType(), event.getContent()).done(() => { + dis.dispatch({action: 'message_sent'}); + }, (err) => { + if (err.name === 'UnknownDeviceError') { + dis.dispatch({ + action: 'unknown_device_error', + err: err, + room: cli.getRoom(roomId), + }); + } + dis.dispatch({action: 'message_send_failed'}); + }); + }, + updateStatusIndicator: function(state, prevState) { let notifCount = 0; diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index 9306008e71..542b7a3e50 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -168,6 +168,7 @@ module.exports = React.createClass({ initialEventId: RoomViewStore.getInitialEventId(), initialEventPixelOffset: RoomViewStore.getInitialEventPixelOffset(), isInitialEventHighlighted: RoomViewStore.isInitialEventHighlighted(), + forwardingEvent: RoomViewStore.getForwardingEvent(), }; // Temporary logging to diagnose https://github.com/vector-im/riot-web/issues/4307 @@ -452,11 +453,6 @@ module.exports = React.createClass({ callState: callState }); - break; - case 'forward_event': - this.setState({ - forwardingEvent: payload.content, - }); break; } }, @@ -1164,8 +1160,13 @@ module.exports = React.createClass({ this.updateTint(); this.setState({ editingRoomSettings: false, - forwardingEvent: null, }); + if (this.state.forwardingEvent) { + dis.dispatch({ + action: 'forward_event', + event: null, + }); + } dis.dispatch({action: 'focus_composer'}); }, @@ -1576,7 +1577,7 @@ module.exports = React.createClass({ } else if (this.state.uploadingRoomSettings) { aux = ; } else if (this.state.forwardingEvent !== null) { - aux = ; + aux = ; } else if (this.state.searching) { hideCancel = true; // has own cancel aux = ; diff --git a/src/components/views/rooms/ForwardMessage.js b/src/components/views/rooms/ForwardMessage.js index 33df201d7c..3c97128a02 100644 --- a/src/components/views/rooms/ForwardMessage.js +++ b/src/components/views/rooms/ForwardMessage.js @@ -17,7 +17,6 @@ import React from 'react'; import { _t } from '../../../languageHandler'; -import MatrixClientPeg from '../../../MatrixClientPeg'; import dis from '../../../dispatcher'; import KeyCode from '../../../KeyCode'; @@ -26,11 +25,6 @@ module.exports = React.createClass({ displayName: 'ForwardMessage', propTypes: { - currentRoomId: React.PropTypes.string.isRequired, - - /* the MatrixEvent to be forwarded */ - mxEvent: React.PropTypes.object.isRequired, - onCancelClick: React.PropTypes.func.isRequired, }, @@ -44,7 +38,6 @@ module.exports = React.createClass({ }, componentDidMount: function() { - this.dispatcherRef = dis.register(this.onAction); document.addEventListener('keydown', this._onKeyDown); }, @@ -54,30 +47,9 @@ module.exports = React.createClass({ sideOpacity: 1.0, middleOpacity: 1.0, }); - dis.unregister(this.dispatcherRef); document.removeEventListener('keydown', this._onKeyDown); }, - onAction: function(payload) { - if (payload.action === 'view_room') { - const event = this.props.mxEvent; - const Client = MatrixClientPeg.get(); - Client.sendEvent(payload.room_id, event.getType(), event.getContent()).done(() => { - dis.dispatch({action: 'message_sent'}); - }, (err) => { - if (err.name === "UnknownDeviceError") { - dis.dispatch({ - action: 'unknown_device_error', - err: err, - room: Client.getRoom(payload.room_id), - }); - } - dis.dispatch({action: 'message_send_failed'}); - }); - if (this.props.currentRoomId === payload.room_id) this.props.onCancelClick(); - } - }, - _onKeyDown: function(ev) { switch (ev.keyCode) { case KeyCode.ESCAPE: diff --git a/src/stores/RoomViewStore.js b/src/stores/RoomViewStore.js index ac06d41e81..d68373f0d5 100644 --- a/src/stores/RoomViewStore.js +++ b/src/stores/RoomViewStore.js @@ -55,6 +55,8 @@ const INITIAL_STATE = { // pixelOffset: the number of pixels the window is scrolled down // from the focussedEvent. scrollStateMap: {}, + + forwardingEvent: null, }; /** @@ -116,6 +118,11 @@ class RoomViewStore extends Store { case 'update_scroll_state': this._updateScrollState(payload); break; + case 'forward_event': + this._setState({ + forwardingEvent: payload.event, + }); + break; } } @@ -127,6 +134,7 @@ class RoomViewStore extends Store { initialEventId: payload.event_id, initialEventPixelOffset: undefined, isInitialEventHighlighted: payload.highlighted, + forwardingEvent: null, roomLoading: false, roomLoadError: null, }; @@ -141,6 +149,14 @@ class RoomViewStore extends Store { } } + if (this._state.forwardingEvent) { + dis.dispatch({ + action: 'send_event', + room_id: newState.roomId, + event: this._state.forwardingEvent, + }); + } + this._setState(newState); } else if (payload.room_alias) { // Resolve the alias and then do a second dispatch with the room ID acquired @@ -276,6 +292,11 @@ class RoomViewStore extends Store { getJoinError() { return this._state.joinError; } + + // The mxEvent if one is about to be forwarded + getForwardingEvent() { + return this._state.forwardingEvent; + } } let singletonRoomViewStore = null; From be58e1095e7ce5da5a994f3ae471761cf6c10a38 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 16 Jun 2017 18:24:07 +0100 Subject: [PATCH 111/481] Don't peek when creating a room This causes a race between receiving the room when starting to peek and receiving the room from joining it - https://github.com/vector-im/riot-web/issues/4330, https://github.com/matrix-org/riot-web-rageshakes/issues/196 --- src/components/structures/RoomView.js | 15 ++++++++++----- src/createRoom.js | 1 + src/stores/RoomViewStore.js | 6 ++++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index 9306008e71..25500d7739 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -93,6 +93,7 @@ module.exports = React.createClass({ roomId: null, roomLoading: true, peekLoading: false, + shouldPeek: true, // The event to be scrolled to initially initialEventId: null, @@ -168,8 +169,13 @@ module.exports = React.createClass({ initialEventId: RoomViewStore.getInitialEventId(), initialEventPixelOffset: RoomViewStore.getInitialEventPixelOffset(), isInitialEventHighlighted: RoomViewStore.isInitialEventHighlighted(), + shouldPeek: RoomViewStore.shouldPeek(), }; + // finished joining, start waiting for a room and show a spinner. See onRoom. + newState.waitingForRoom = this.state.joining && !newState.joining && + !RoomViewStore.getJoinError(); + // Temporary logging to diagnose https://github.com/vector-im/riot-web/issues/4307 console.log( 'RVS update:', @@ -177,12 +183,11 @@ module.exports = React.createClass({ newState.roomAlias, 'loading?', newState.roomLoading, 'joining?', newState.joining, + 'initial?', initial, + 'waiting?', newState.waitingForRoom, + 'shouldPeek?', newState.shouldPeek, ); - // finished joining, start waiting for a room and show a spinner. See onRoom. - newState.waitingForRoom = this.state.joining && !newState.joining && - !RoomViewStore.getJoinError(); - // NB: This does assume that the roomID will not change for the lifetime of // the RoomView instance if (initial) { @@ -238,7 +243,7 @@ module.exports = React.createClass({ if (!this.state.joining && this.state.roomId) { if (this.props.autoJoin) { this.onJoinButtonClicked(); - } else if (!room) { + } else if (!room && this.state.shouldPeek) { console.log("Attempting to peek into room %s", this.state.roomId); this.setState({ peekLoading: true, diff --git a/src/createRoom.js b/src/createRoom.js index 4d7f5792f3..bf0c0fee1c 100644 --- a/src/createRoom.js +++ b/src/createRoom.js @@ -100,6 +100,7 @@ function createRoom(opts) { dis.dispatch({ action: 'view_room', room_id: roomId, + should_peek: false, }); } return roomId; diff --git a/src/stores/RoomViewStore.js b/src/stores/RoomViewStore.js index ac06d41e81..38f16f945b 100644 --- a/src/stores/RoomViewStore.js +++ b/src/stores/RoomViewStore.js @@ -129,6 +129,8 @@ class RoomViewStore extends Store { isInitialEventHighlighted: payload.highlighted, roomLoading: false, roomLoadError: null, + // should peek by default + shouldPeek: payload.should_peek === undefined ? true : payload.should_peek, }; // If an event ID wasn't specified, default to the one saved for this room @@ -276,6 +278,10 @@ class RoomViewStore extends Store { getJoinError() { return this._state.joinError; } + + shouldPeek() { + return this._state.shouldPeek; + } } let singletonRoomViewStore = null; From 18971458dfd2d2c67ea821862144c9e62b0053c7 Mon Sep 17 00:00:00 2001 From: Enrique Date: Sat, 17 Jun 2017 10:49:57 +0000 Subject: [PATCH 112/481] Translated using Weblate (Spanish) Currently translated at 67.5% (612 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/ --- src/i18n/strings/es.json | 141 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 138 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 5f20f8113e..986642799e 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -1,5 +1,5 @@ { - "af": "Africano", + "af": "Afrikáans", "ar-ae": "Árabe (Emiratos Árabes Unidos)", "ar-bh": "Árabe (Baréin)", "ar-dz": "Árabe (Argelia)", @@ -267,7 +267,7 @@ "Failed to unban": "Falló al desbloquear", "Failed to upload file": "Error en el envío del fichero", "Failed to verify email address: make sure you clicked the link in the email": "Falló al verificar el correo electrónico: Asegúrese hacer clic en el enlace del correo", - "Failure to create room": "Falló al crear sala", + "Failure to create room": "Fallo al crear la sala", "Favourite": "Favorito", "favourite": "favorito", "Favourites": "Favoritos", @@ -483,5 +483,140 @@ "Tagged as: ": "Etiquetado como: ", "The default role for new room members is": "El nivel por defecto para los nuevos miembros de esta sala es", "The main address for this room is": "La dirección principal de esta sala es", - "The phone number entered looks invalid": "El número de teléfono indicado parece erróneo" + "The phone number entered looks invalid": "El número de teléfono indicado parece erróneo", + "Active call (%(roomName)s)": "Llamada activa (%(roomName)s)", + "Add a topic": "Añadir un tema", + "Missing Media Permissions, click here to request.": "Faltan permisos para el medio, pulse aquí para solicitarlos.", + "No media permissions": "Sin permisos para el medio", + "You may need to manually permit Riot to access your microphone/webcam": "Probablemente necesite dar permisos manualmente a Riot para su micrófono/cámara", + "Are you sure you want to leave the room '%(roomName)s'?": "¿Está seguro de que desea abandonar la sala '%(roomName)s'?", + "Are you sure you want to upload the following files?": "Confirme que desea enviar los siguientes ficheros.", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "No se puede conectar al servidor - compruebe su conexión, asegúrese de que el certificado SSL del servidor es de confiaza, y compruebe que no hay extensiones del navegador bloqueando las peticiones.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s ha quitado el nombre de la sala.", + "Device key:": "Clave del dispositivo:", + "Disable markdown formatting": "Desactivar el formato Markdown", + "Drop File Here": "Deje el fichero aquí", + "Guest access is disabled on this Home Server.": "El acceso de invitados está desactivado en este servidor.", + "Join as voice or video.": "Conecte con voz o vídeo.", + "List this room in %(domain)s's room directory?": "¿Mostrar esta sala en el directorio de %(domain)s?", + "Manage Integrations": "Gestionar integraciones", + "Markdown is disabled": "Markdown está desactivado", + "Markdown is enabled": "Markdown está activado", + "matrix-react-sdk version:": "Versión de matrix-react-sdk:", + "Members only": "Sólo para miembros", + "Message not sent due to unknown devices being present": "Mensaje no enviado debido a la presencia de dispositivos desconocidos", + "Missing room_id in request": "Falta el ID de sala en la petición", + "Missing user_id in request": "Falta el ID de usuario en la petición", + "Mobile phone number": "Número de teléfono móvil", + "Mobile phone number (optional)": "Número de teléfono móvil (opcional)", + "Moderator": "Moderador", + "Must be viewing a room": "Debe estar viendo una sala", + "Mute": "Silenciar", + "my Matrix ID": "Mi ID de Matrix", + "Name": "Nombre", + "Never send encrypted messages to unverified devices from this device": "No enviar nunca mensajes cifrados, desde este dispositivo, a dispositivos sin verificar", + "Never send encrypted messages to unverified devices in this room": "No enviar nunca mensajes cifrados a dispositivos no verificados, en esta sala", + "Never send encrypted messages to unverified devices in this room from this device": "No enviar nunca mensajes cifrados a dispositivos no verificados, en esta sala, desde este dispositivo", + "New address (e.g. #foo:%(localDomain)s)": "Nueva dirección (ej: #foo:%(localDomain)s)", + "New password": "Nueva contraseña", + "New passwords don't match": "Las nuevas contraseñas no coinciden", + "New passwords must match each other.": "Las nuevas contraseñas deben coincidir.", + "none": "ninguno", + "not set": "sin configurar", + "not specified": "sin especificar", + "Notifications": "Notificaciones", + "(not supported by this browser)": "(no soportado por este navegador)", + "": "", + "NOT verified": "NO verificado", + "No devices with registered encryption keys": "No hay dispositivos con claves de cifrado registradas", + "No display name": "Sin nombre para mostrar", + "No more results": "No hay más resultados", + "No results": "Sin resultados", + "No users have specific privileges in this room": "Ningún usuario tiene permisos específicos en esta sala", + "OK": "Correcto", + "olm version:": "versión de olm:", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Una vez se active el cifrado en esta sala, no podrá ser desactivado (por ahora)", + "Only people who have been invited": "Sólo usuarios que han sido invitados", + "Operation failed": "Falló la operación", + "Otherwise, click here to send a bug report.": "También puede pulsar aquí para enviar un informe de fallos.", + "Password": "Contraseña", + "Password:": "Contraseña:", + "Passwords can't be empty": "Las contraseñas no pueden estar en blanco", + "People": "Gente", + "Permissions": "Permisos", + "Phone": "Teléfono", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s ha hecho una llamada de tipo %(callType)s.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor, compruebe su e-mail y pulse el enlace que contiene. Una vez esté hecho, pulse continuar.", + "Please Register": "Por favor, regístrese", + "Power level must be positive integer.": "El nivel debe ser un entero positivo.", + "Press": "Pulse", + "Privacy warning": "Alerta de privacidad", + "Private Chat": "Conversación privada", + "Privileged Users": "Usuarios con privilegios", + "Profile": "Perfil", + "Public Chat": "Sala pública", + "Reason": "Razón", + "Reason: %(reasonText)s": "Razón: %(reasonText)s", + "Revoke Moderator": "Eliminar Moderador", + "Refer a friend to Riot:": "Informar a un amigo sobre Riot:", + "Register": "Registrarse", + "rejected": "rechazado", + "%(targetName)s rejected the invitation.": "%(targetName)s ha rechazado la invitación.", + "Reject invitation": "Rechazar invitación", + "Rejoin": "Volver a unirse", + "Remote addresses for this room:": "Dirección remota de esta sala:", + "Remove Contact Information?": "¿Eliminar información del contacto?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s ha suprimido su nombre para mostar (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s ha eliminado su foto de perfil.", + "Remove": "Eliminar", + "Remove %(threePid)s?": "¿Eliminar %(threePid)s?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s ha solicitado una conferencia Voz-IP.", + "Report it": "Informar", + "Resetting 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.": "Reiniciar la contraseña también reiniciará las claves de cifrado extremo-a-extremo, haciendo ilegible el historial de las conversaciones, salvo que exporte previamente las claves de sala, y las importe posteriormente. Esto será mejorado en futuras versiones.", + "restore": "restaurar", + "Results from DuckDuckGo": "Resultados desde DuckDuckGo", + "Return to app": "Volver a la aplicación", + "Return to login screen": "Volver a la pantalla de inicio de sesión", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot no tiene permisos para enviarle notificaciones - por favor, revise la configuración del navegador", + "Riot was not given permission to send notifications - please try again": "Riot no pudo obtener permisos para enviar notificaciones - por favor, inténtelo de nuevo", + "riot-web version:": "versión riot-web:", + "Room %(roomId)s not visible": "La sala %(roomId)s no es visible", + "Searches DuckDuckGo for results": "Busca en DuckDuckGo", + "Server may be unavailable or overloaded": "El servidor podría estar saturado o desconectado", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Mostrar el tiempo en formato 12h (am/pm)", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "La clave de firma que usted ha proporcionado coincide con la recibida del dispositivo %(deviceId)s de %(userId)s. Dispositivo verificado.", + "This action cannot be performed by a guest user. Please register to be able to do this.": "Esto no puede ser hecho por un invitado. Por favor, regístrese para poder hacerlo.", + "This email address is already in use": "Dirección e-mail en uso", + "This email address was not found": "Dirección e-mail no encontrada", + "%(actionVerb)s this person?": "¿%(actionVerb)s a esta persona?", + "The email address linked to your account must be entered.": "Debe introducir el e-mail asociado a su cuenta.", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "El fichero '%(fileName)s' excede el tamaño máximo permitido en este servidor", + "The file '%(fileName)s' failed to upload": "Se produjo un fallo al enviar '%(fileName)s'", + "The remote side failed to pick up": "El sitio remoto falló al sincronizar", + "This Home Server does not support login using email address.": "Este servidor no permite identificarse con direcciones e-mail.", + "This invitation was sent to an email address which is not associated with this account:": "Se envió la invitación a un e-mail no asociado con esta cuenta:", + "There was a problem logging in.": "Hubo un problema identificándose.", + "This room has no local addresses": "Esta sala no tiene direcciones locales", + "This room is not recognised.": "Esta sala no se reconoce.", + "These are experimental features that may break in unexpected ways": "Estas son funcionalidades experimentales, podrían fallar de formas imprevistas", + "The visibility of existing history will be unchanged": "La visibilidad del historial previo no se verá afectada", + "This doesn't appear to be a valid email address": "Esto no parece un e-mail váido", + "This is a preview of this room. Room interactions have been disabled": "Esto es una vista previa de la sala. Las interacciones con la sala están desactivadas", + "This phone number is already in use": "Este número de teléfono ya se está usando", + "This room": "Esta sala", + "This room is not accessible by remote Matrix servers": "Esta sala no es accesible por otros servidores Matrix", + "This room's internal ID is": "El ID interno de la sala es", + "times": "veces", + "To ban users": "Expulsar usuarios", + "to browse the directory": "navegar el directorio", + "To configure the room": "Configurar la sala", + "to demote": "degradar", + "to favourite": "marcar como favorito", + "To invite users into the room": "Invitar usuarios a la sala", + "To kick users": "Patear usuarios", + "To link to a room it must have an address.": "Para enlazar una sala, debe tener una dirección.", + "to make a room or": "hacer una sala o", + "To remove other users' messages": "Eliminar los mensajes de otros usuarios", + "To reset your password, enter the email address linked to your account": "Para reiniciar su contraseña, introduzca el e-mail asociado a su cuenta", + "to restore": "restaurar" } From e0e18d25ead86bd9d246379d2810e7e1fbb92b78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20P=C3=A9rez-Su=C3=A1rez?= Date: Sat, 17 Jun 2017 23:37:54 +0000 Subject: [PATCH 113/481] Translated using Weblate (Spanish) Currently translated at 67.6% (613 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/ --- src/i18n/strings/es.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 986642799e..80b32cd73d 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -618,5 +618,6 @@ "to make a room or": "hacer una sala o", "To remove other users' messages": "Eliminar los mensajes de otros usuarios", "To reset your password, enter the email address linked to your account": "Para reiniciar su contraseña, introduzca el e-mail asociado a su cuenta", - "to restore": "restaurar" + "to restore": "restaurar", + "Cancel": "Cancelar" } From 1bc985820083ea214dcee6a6e6b152f5d38e9ab9 Mon Sep 17 00:00:00 2001 From: Eric Newport Date: Sun, 18 Jun 2017 06:29:30 +0000 Subject: [PATCH 114/481] Translated using Weblate (English (United States)) Currently translated at 100.0% (906 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/en_US/ --- src/i18n/strings/en_US.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json index c3df1f90a6..5233111065 100644 --- a/src/i18n/strings/en_US.json +++ b/src/i18n/strings/en_US.json @@ -913,5 +913,11 @@ "Username not available": "Username not available", "Something went wrong!": "Something went wrong!", "This will be your account name on the homeserver, or you can pick a different server.": "This will be your account name on the homeserver, or you can pick a different server.", - "If you already have a Matrix account you can log in instead.": "If you already have a Matrix account you can log in instead." + "If you already have a Matrix account you can log in instead.": "If you already have a Matrix account you can log in instead.", + "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions", + "Not a valid Riot keyfile": "Not a valid Riot keyfile", + "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", + "Disable Peer-to-Peer for 1:1 calls": "Disable Peer-to-Peer for 1:1 calls", + "Do you want to set an email address?": "Do you want to set an email address?", + "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications." } From 75b330c20885f43e0c55c92dcb0240b780a2e81e Mon Sep 17 00:00:00 2001 From: Gary Date: Sun, 18 Jun 2017 10:48:49 +0000 Subject: [PATCH 115/481] Translated using Weblate (Dutch) Currently translated at 36.3% (329 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nl/ --- src/i18n/strings/nl.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 7a04d4ca38..06e3ff3718 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -327,5 +327,10 @@ "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", "Set a display name:": "Weergavenaam instellen:", "Set a Display Name": "Weergavenaam instellen", - "Upload an avatar:": "Een avatar uploaden:" + "Upload an avatar:": "Een avatar uploaden:", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Geen verbinding met de thuisserver - controleer je verbinding. Controleer het SSL-certificaat van de thuisserver en browser-extensies die verzoeken kunnen blokkeren.", + "%(count)s new messages.other": "%(count)s nieuwe berichten", + "Create an account": "Open een account", + "Cryptography": "Cryptografie", + "Current password": "Huidig wachtwoord" } From 40fa5ddb17b71609209ae8c06e923ca133f389c6 Mon Sep 17 00:00:00 2001 From: "Carlos A. Carnero Delgado" Date: Sun, 18 Jun 2017 00:58:29 +0000 Subject: [PATCH 116/481] Translated using Weblate (Spanish) Currently translated at 67.6% (613 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/ --- src/i18n/strings/es.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 80b32cd73d..32e76b1c31 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -490,7 +490,7 @@ "No media permissions": "Sin permisos para el medio", "You may need to manually permit Riot to access your microphone/webcam": "Probablemente necesite dar permisos manualmente a Riot para su micrófono/cámara", "Are you sure you want to leave the room '%(roomName)s'?": "¿Está seguro de que desea abandonar la sala '%(roomName)s'?", - "Are you sure you want to upload the following files?": "Confirme que desea enviar los siguientes ficheros.", + "Are you sure you want to upload the following files?": "¿Está seguro que desea enviar los siguientes archivos?", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "No se puede conectar al servidor - compruebe su conexión, asegúrese de que el certificado SSL del servidor es de confiaza, y compruebe que no hay extensiones del navegador bloqueando las peticiones.", "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s ha quitado el nombre de la sala.", "Device key:": "Clave del dispositivo:", From d05d9ab38fbf738d445c0ab3d10dc507d95e144d Mon Sep 17 00:00:00 2001 From: zwindl Date: Sun, 18 Jun 2017 02:39:29 +0000 Subject: [PATCH 117/481] Translated using Weblate (Chinese (Simplified)) Currently translated at 39.1% (355 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hans/ --- src/i18n/strings/zh_Hans.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index ad37ce9430..9fdc7a0b42 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -352,5 +352,9 @@ "Password:": "密码:", "Passwords can't be empty": "密码不能为空", "Permissions": "权限", - "Phone": "电话" + "Phone": "电话", + "Cancel": "取消", + "Create new room": "创建新房间", + "Custom Server Options": "自定义服务器选项", + "Dismiss": "设为已读" } From 123d742a60cc3ed9114079bd0de6c72a3d60c757 Mon Sep 17 00:00:00 2001 From: PurgingPanda Date: Sun, 18 Jun 2017 15:11:53 +0000 Subject: [PATCH 118/481] Translated using Weblate (Dutch) Currently translated at 39.7% (360 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nl/ --- src/i18n/strings/nl.json | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 06e3ff3718..04b0514c4d 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -332,5 +332,36 @@ "%(count)s new messages.other": "%(count)s nieuwe berichten", "Create an account": "Open een account", "Cryptography": "Cryptografie", - "Current password": "Huidig wachtwoord" + "Current password": "Huidig wachtwoord", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName) heeft de naam van de kamer verwijderd.", + "Create a new chat or reuse an existing one": "Maak een nieuwe chat aan of gebruik een reeds bestaande", + "Create Room": "Maak een kamer", + "Curve25519 identity key": "Curve25519 identiteits sleutel", + "/ddg is not a command": "/ddg is geen commando", + "Deactivate Account": "Account Deactiveren", + "Deactivate my account": "Mijn account deactiveren", + "Decline": "Weigeren", + "Decrypt %(text)s": "Ontcijfer %(text)s", + "Decryption error": "Fout bij het ontcijferen", + "Delete": "Verwijderen", + "demote": "degraderen", + "Device already verified!": "Apparaat reeds geverifieerd!", + "Device ID": "Apparaat ID", + "Device ID:": "Apparaat ID:", + "device id: ": "apparaat id: ", + "Device key:": "Apparaat sleutel:", + "Devices": "Apparaten", + "Devices will not yet be able to decrypt history from before they joined the room": "Het apparaat zal nog niet in staat zijn om de geschiedenis van voor het in de kamer is gekomen te ontcijferen", + "Direct chats": "Direct gesprek", + "Disable Notifications": "Notificaties uitschakelen", + "Disable markdown formatting": "Markdown formatering uitschakelen", + "Disinvite": "Uitnodiging terugtrekken", + "Display name": "Weergave naam", + "Don't send typing notifications": "Geen notificatie sturen bij het typen", + "Download %(text)s": "%(text)s Downloaden", + "Drop File Here": "Plaats Bestand Hier", + "Ed25519 fingerprint": "Ed25519 vingerafdruk", + "Email": "E-Post", + "Email address": "E-Post Adress", + "Email address (optional)": "E-Post adress (optioneel)" } From 8a76f0925054f206ec6ab1ba4ed2cb5188d85f3d Mon Sep 17 00:00:00 2001 From: Szimszon Date: Sun, 18 Jun 2017 21:34:26 +0000 Subject: [PATCH 119/481] Translated using Weblate (Hungarian) Currently translated at 56.1% (509 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 361 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 345 insertions(+), 16 deletions(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index c6a86347f5..3cc449b1fc 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -27,21 +27,21 @@ "Saturday": "Szombat", "af": "Afrikaans", "ar-ae": "Arabic (U.A.E.)", - "ar-bh": "Arabic (Bahrain)", - "ar-dz": "Arabic (Algeria)", - "ar-eg": "Arabic (Egypt)", - "ar-iq": "Arabic (Iraq)", - "ar-jo": "Arabic (Jordan)", - "ar-kw": "Arabic (Kuwait)", - "ar-lb": "Arabic (Lebanon)", - "ar-ly": "Arabic (Libya)", - "ar-ma": "Arabic (Morocco)", - "ar-om": "Arabic (Oman)", - "ar-qa": "Arabic (Qatar)", - "ar-sa": "Arabic (Saudi Arabia)", - "ar-sy": "Arabic (Syria)", - "ar-tn": "Arabic (Tunisia)", - "ar-ye": "Arabic (Yemen)", + "ar-bh": "Arab (Bahrain)", + "ar-dz": "Arab (Algeria)", + "ar-eg": "Arab (Egypt)", + "ar-iq": "Arab (Iraq)", + "ar-jo": "Arab (Jordan)", + "ar-kw": "Arab (Kuwait)", + "ar-lb": "Arab (Lebanon)", + "ar-ly": "Arab (Libya)", + "ar-ma": "Arab (Morocco)", + "ar-om": "Arab (Oman)", + "ar-qa": "Arab (Qatar)", + "ar-sa": "Arab (Saudi Arabia)", + "ar-sy": "Arab (Syria)", + "ar-tn": "Arab (Tunisia)", + "ar-ye": "Arab (Yemen)", "be": "Belorusz", "bg": "Bolgár", "ca": "Katalán", @@ -179,5 +179,334 @@ "Create new room": "Új szoba létrehozása", "sb": "Szorb", "rm": "Rétoromán", - "tn": "Tswana" + "tn": "Tswana", + "Close": "Bezár", + "Room directory": "Szobák listája", + "Start chat": "Csevegés indítása", + "Welcome page": "Üdvözlő oldal", + "all room members, from the point they are invited": "minden résztvevő a szobában, amióta meg van hívva", + "all room members, from the point they joined": "minden résztvevő a szobában, amióta csatlakozott", + "and": "és", + "%(items)s and %(remaining)s others": "%(items)s és még: %(remaining)s", + "%(items)s and one other": "%(items)s és még egy", + "%(items)s and %(lastItem)s": "%(items)s és %(lastItem)s", + "and %(overflowCount)s others...": "és még: %(overflowCount)s ...", + "and one other...": "és még egy...", + "%(names)s and %(lastPerson)s are typing": "%(names)s és %(lastPerson)s írnak", + "%(names)s and one other are typing": "%(names)s és még valaki ír", + "%(names)s and %(count)s others are typing": "%(names)s és %(count)s ember ír", + "An email has been sent to": "Az e-mail ide lett küldve:", + "A new password must be entered.": "Új jelszót kell megadni.", + "%(senderName)s answered the call.": "%(senderName)s felvette a telefont.", + "anyone": "bárki", + "An error has occurred.": "Hiba történt.", + "Anyone": "Bárki", + "Anyone who knows the room's link, apart from guests": "A vendégeken kívül bárki aki ismeri a szoba link-jét", + "Anyone who knows the room's link, including guests": "Bárki aki tudja a szoba link-jét, még a vendégek is", + "Are you sure?": "Biztos?", + "Are you sure you want to leave the room '%(roomName)s'?": "Biztos elhagyod a szobát?", + "Are you sure you want to reject the invitation?": "Biztos elutasítod a meghívást?", + "Are you sure you want to upload the following files?": "Biztos feltöltöd ezeket a fájlokat?", + "Attachment": "Csatolmány", + "Autoplay GIFs and videos": "GIF-ek és videók automatikus lejátszása", + "%(senderName)s banned %(targetName)s.": "%(senderName)s kitiltotta őt: %(targetName)s.", + "Ban": "Kitilt", + "Banned users": "Kitiltott felhasználók", + "Bans user with given id": "Kitiltja a felhasználót a megadott ID-vel", + "Blacklisted": "Fekete listára téve", + "Bug Report": "Hiba jelentés", + "Bulk Options": "Tömeges beállítások", + "Call Timeout": "Hívás időtúllépés", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Nem lehet kapcsolódni a saját szerverhez - ellenőrizd a kapcsolatot, biztosítsd, hogy a saját szerver tanúsítványa hiteles legyen, és a böngésző kiterjesztések ne blokkolják a kéréseket.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Nem lehet csatlakozni a saját szerverhez HTTP-n keresztül ha HTTPS van a böngésző címsorában. Vagy használj HTTPS-t vagy engedélyezd a nem biztonságos script-et.", + "Can't load user settings": "A felhasználói beállítások nem tölthetők be", + "Change Password": "Jelszó megváltoztatása", + "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s megváltoztatta a nevét erről: %(oldDisplayName)s erre: %(displayName)s.", + "%(senderName)s changed their profile picture.": "%(senderName)s megváltoztatta a profil képét.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s megváltoztatta a hozzáférési szintjét erre: %(powerLevelDiffText)s.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s megváltoztatta a szoba nevét erre: %(roomName)s.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s törölte a szoba nevét.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s megváltoztatta a témát erre \"%(topic)s\".", + "Changes to who can read history will only apply to future messages in this room": "Változtatások a napló olvasási jogosultságon csak a szoba új üzeneteire fog vonatkozni", + "Changes your display nickname": "Becenév megváltoztatása", + "changing room on a RoomView is not supported": "Szoba nézetben nem lehet szobát váltani", + "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.": "Jelszó megváltoztatása jelenleg alaphelyzetbe állítja a titkosításnál használt kulcsokat minden készüléken, ezzel a régi titkosított üzenetek olvashatatlanok lesznek hacsak először nem mented ki a kulcsokat és újra betöltöd. A jövőben ezen javítunk.", + "Claimed Ed25519 fingerprint key": "Igényelt Ed25519 ujjlenyomat kulcs", + "Clear Cache and Reload": "Gyorsítótár törlése és újratöltés", + "Clear Cache": "Gyorsítótár törlése", + "Click here to join the discussion!": "A beszélgetéshez való csatlakozáshoz kattints ide!", + "Click here to fix": "A javításhoz kattints ide", + "Click to mute audio": "Hang némításhoz kattints ide", + "Click to mute video": "A videó kikapcsoláshoz kattints ide", + "click to reveal": "Megjelenítéshez kattints ide", + "Click to unmute video": "Videó bekapcsoláshoz kattints ide", + "Click to unmute audio": "Hang visszakapcsoláshoz kattints ide", + "Command error": "Parancs hiba", + "Commands": "Parancsok", + "Conference call failed.": "Sikertelen konferencia hívás.", + "Conference calling is in development and may not be reliable.": "Konferencia hívás meg fejlesztés alatt és lehet, hogy nem elég stabil.", + "Conference calls are not supported in encrypted rooms": "Titkosított szobákban a konferencia hívás nem támogatott", + "Conference calls are not supported in this client": "Ez a kliens nem támogatja a konferencia hívást", + "Confirm password": "Jelszó megerősítése", + "Confirm your new password": "Új jelszó megerősítése", + "Could not connect to the integration server": "Az integrációs szerverhez nem lehet kapcsolódni", + "%(count)s new messages.one": "%(count)s új üzenet", + "%(count)s new messages.other": "%(count)s új üzenet", + "Create a new chat or reuse an existing one": "Új csevegés indítása vagy egy meglévő használata", + "Create an account": "Fiók készítése", + "Create Room": "Szoba készítése", + "Cryptography": "Titkosítás", + "Current password": "Jelenlegi jelszó", + "Curve25519 identity key": "Curve25519 azonosítási kulcs", + "Custom": "Egyedi", + "Custom level": "Egyedi szint", + "/ddg is not a command": "/ddg nem egy parancs", + "Deactivate Account": "Fiók zárolása", + "Deactivate my account": "Fiókom felfüggesztése", + "Decline": "Elutasít", + "Decrypt %(text)s": "%(text)s visszafejtése", + "Decryption error": "Visszafejtési hiba", + "Delete": "Töröl", + "demote": "hozzáférési szint csökkentése", + "Default": "Alapértelmezett", + "Device already verified!": "Készülék már ellenőrizve!", + "Device ID": "Készülék azonosító", + "Device ID:": "Készülék azonosító:", + "device id: ": "készülék azonosító: ", + "Device key:": "Készülék kulcs:", + "Devices": "Készülékek", + "Devices will not yet be able to decrypt history from before they joined the room": "A készülékek nem tudják egyenlőre visszafejteni a régebbi üzeneteket mint mikor csatlakoztak a szobához", + "Direct chats": "Közvetlen csevegés", + "Disable Notifications": "Értesítések tiltása", + "disabled": "letiltva", + "Disable inline URL previews by default": "Beágyazott URL előnézet alapértelmezetten tiltva", + "Disable markdown formatting": "Markdown formázás tiltva", + "Disinvite": "Meghívás visszavonása", + "Display name": "Megjelenített név", + "Displays action": "Tevékenységek megjelenítése", + "Don't send typing notifications": "Ne küldjön írás értesítést", + "Download %(text)s": "%(text)s letöltése", + "Drop File Here": "Ide húzd a fájlt", + "Drop here to tag %(section)s": "Húzd ide a címkézéshez: %(section)s", + "Ed25519 fingerprint": "Ed25519 ujjlenyomat", + "Email": "E-mail", + "Email address": "E-mail cím", + "Email address (optional)": "E-mail cím (opcionális)", + "Email, name or matrix ID": "E-mail, név vagy matrix azonosító", + "Emoji": "Emoji", + "Enable encryption": "Titkosítás bekapcsolása", + "Enable Notifications": "Értesítések bekapcsolása", + "enabled": "bekapcsolva", + "Encrypted by a verified device": "Ellenőrzött eszköz által titkosítva", + "Encrypted by an unverified device": "Nem ellenőrzött eszköz által titkosítva", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "A titkosított üzenetek nem láthatók azokon a klienseken amik még nem támogatják a titkosítást", + "Encrypted room": "Titkosított szoba", + "Encryption is enabled in this room": "Ebben a szobában a titkosítás be van kapcsolva", + "Encryption is not enabled in this room": "Ebben a szobában a titkosítás nincs bekapcsolva", + "%(senderName)s ended the call.": "%(senderName)s befejezte a hívást.", + "End-to-end encryption information": "Végponttól végpontig való titkosítási információk", + "End-to-end encryption is in beta and may not be reliable": "Végponttól végpontig tartó titkosítás béta állapotú és lehet, hogy nem megbízható", + "Enter Code": "Kód megadása", + "Enter passphrase": "Jelmondat megadása", + "Error decrypting attachment": "Csatolmány visszafejtése sikertelen", + "Error: Problem communicating with the given homeserver.": "Hiba: Probléma van a saját szerverrel való kommunikációval.", + "Event information": "Esemény információ", + "Existing Call": "Hívás folyamatban", + "Export": "Mentés", + "Export E2E room keys": "E2E szoba kulcsok mentése", + "Failed to ban user": "A felhasználót nem sikerült kizárni", + "Failed to change power level": "A hozzáférési szintet nem sikerült megváltoztatni", + "Failed to delete device": "Eszközt nem sikerült törölni", + "Failed to fetch avatar URL": "Avatar képet nem sikerült letölteni", + "Failed to join room": "A szobába nem sikerült belépni", + "Failed to kick": "Kirúgás nem sikerült", + "Failed to leave room": "A szobát nem sikerült elhagyni", + "Failed to load timeline position": "Az idővonal pozíciót nem sikerült betölteni", + "Failed to lookup current room": "Az aktuális szoba felkeresése sikertelen", + "Failed to mute user": "A felhasználót nem sikerült hallgatásra bírni", + "Failed to register as guest:": "Nem sikerült vendégként regisztrálni:", + "Failed to reject invite": "A meghívót nem sikerült elutasítani", + "Failed to reject invitation": "A meghívót nem sikerült elutasítani", + "Failed to save settings": "A beállításokat nem sikerült elmenteni", + "Failed to send email": "E-mail nem sikerült elküldeni", + "Failed to send request.": "A kérést nem sikerült elküldeni.", + "Failed to set avatar.": "Avatar képet nem sikerült beállítani.", + "Failed to set display name": "Megjelenítési nevet nem sikerült beállítani", + "Failed to set up conference call": "Konferencia hívást nem sikerült elindítani", + "Failed to toggle moderator status": "Moderátor státuszt nem sikerült átállítani", + "Failed to unban": "Kizárás visszavonása sikertelen", + "Failed to upload file": "Fájl feltöltés sikertelen", + "Failed to upload profile picture!": "Profil kép feltöltése sikertelen!", + "Failed to verify email address: make sure you clicked the link in the email": "E-mail cím ellenőrzése sikertelen: ellenőrizd, hogy az e-mailnél lévő linkre rákattintottál", + "Failure to create room": "Szoba létrehozása sikertelen", + "favourite": "kedvenc", + "Favourites": "Kedvencek", + "Fill screen": "Képernyő kitöltése", + "Filter room members": "Szoba tagság szűrése", + "Forget room": "Szoba elfelejtése", + "Forgot your password?": "Elfelejtetted a jelszavad?", + "For security, this session has been signed out. Please sign in again.": "A biztonság érdekében ez a kapcsolat le lesz bontva. Légy szíves jelentkezz be újra.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "A biztonság érdekében a kilépéskor a végponttól végpontig való (E2E) titkosításhoz szükséges kulcsok törlésre kerülnek a böngészőből. Ha a régi üzeneteket továbbra is el szeretnéd olvasni, kérlek mentsed ki a szobákhoz tartozó kulcsot.", + "Found a bug?": "Hibát találtál?", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s : %(fromPowerLevel)s -> %(toPowerLevel)s", + "Guest access is disabled on this Home Server.": "Vendég belépés tiltva van a saját szerveren.", + "Guests can't set avatars. Please register.": "A vendégek nem tudnak avatar képet beállítani. Kérlek regisztrálj.", + "Guest users can't create new rooms. Please register to create room and start a chat.": "Vendégek nem készíthetnek szobákat. Kérlek regisztrálj, hogy szobát tudják nyitni és el tudj kezdeni csevegni.", + "Guest users can't upload files. Please register to upload.": "Vendégek nem tölthetnek fel fájlokat. A feltöltéshez kérlek regisztrálj.", + "Guests can't use labs features. Please register.": "Vendégek nem használhatnak labor funkciókat. Kérlek regisztrálj.", + "Guests cannot join this room even if explicitly invited.": "Vendégek akkor sem csatlakozhatnak ehhez a szobához ha külön meghívók kaptak.", + "had": "van", + "Hangup": "Megszakít", + "Hide read receipts": "Olvasási visszajelzés elrejtése", + "Hide Text Formatting Toolbar": "Szövegformázási menü elrejtése", + "Historical": "Archív", + "Home": "Kezdőlap", + "Homeserver is": "Saját szerver:", + "Identity Server is": "Azonosítási szerver:", + "I have verified my email address": "Ellenőriztem az e-mail címemet", + "Import": "Betöltés", + "Import E2E room keys": "E2E szoba kulcsok betöltése", + "Incoming call from %(name)s": "Beérkező hivás: %(name)s", + "Incoming video call from %(name)s": "Bejövő videóhívás: %(name)s", + "Incoming voice call from %(name)s": "Bejövő hívás: %(name)s", + "Incorrect username and/or password.": "Helytelen felhasználó és/vagy jelszó.", + "Incorrect verification code": "Hibás azonosítási kód", + "Interface Language": "Felhasználói felület nyelve", + "Invalid alias format": "Hibás alternatív név formátum", + "Invalid address format": "Hibás cím formátum", + "Invalid Email Address": "Hibás e-mail cím", + "Invalid file%(extra)s": "Hibás fájl%(extra)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s meghívta: %(targetName)s.", + "Invite new room members": "Új tagok meghívása", + "Invited": "Meghívva", + "Invites": "Meghívók", + "Invites user with given id to current room": "Felhasználó meghívása ebbe a szobába megadott azonosítóval", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' nem megfelelő formátum egy címhez", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' nem megfelelő formátum egy alternatív névhez", + "%(displayName)s is typing": "%(displayName)s ír", + "Sign in with": "Belépés ezzel:", + "Join as voice or video.": "Csatlakozás hanggal vagy videóval.", + "Join Room": "Belépés a szobába", + "joined and left": "be-, és kilépett", + "joined": "belépett", + "%(targetName)s joined the room.": "%(targetName)s belépett a szobába.", + "Joins room with given alias": "A megadott becenévvel belépett a szobába", + "Jump to first unread message.": "Ugrás az első olvasatlan üzenetre.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s kizárta: %(targetName)s.", + "Kick": "Kizár", + "Kicks user with given id": "Az adott azonosítójú felhasználó kizárása", + "Labs": "Labor", + "Last seen": "Utoljára láttuk", + "Leave room": "Szoba elhagyása", + "left and rejoined": "ki-, és belépett", + "left": "kilépett", + "%(targetName)s left the room.": "%(targetName)s elhagyta a szobát.", + "Level:": "Szint:", + "List this room in %(domain)s's room directory?": "%(domain)s szobát feltüntessük a szobák listájában?", + "Local addresses for this room:": "A szoba helyi címe:", + "Logged in as:": "Bejelentkezve mint:", + "Login as guest": "Belépés vendégként", + "Logout": "Kilép", + "Low priority": "Alacsony prioritás", + "%(senderName)s made future room history visible to": "%(senderName)s elérhetővé tette a szoba új üzeneteit nekik:", + "Manage Integrations": "Integrációk kezelése", + "Markdown is disabled": "Markdown kikapcsolva", + "Markdown is enabled": "Markdown engedélyezett", + "matrix-react-sdk version:": "matrix-react-sdk verzió:", + "Members only": "Csak tagoknak", + "Message not sent due to unknown devices being present": "Ismeretlen eszköz miatt az üzenet nem küldhető el", + "Missing room_id in request": "Hiányzó room_id a kérésben", + "Missing user_id in request": "Hiányzó user_id a kérésben", + "Mobile phone number": "Mobil telefonszám", + "Mobile phone number (optional)": "Mobill telefonszám (opcionális)", + "Moderator": "Moderátor", + "Must be viewing a room": "Meg kell nézni a szobát", + "my Matrix ID": "Matrix azonosítóm", + "Name": "Név", + "Never send encrypted messages to unverified devices from this device": "Soha ne küldj titkosított üzenetet ellenőrizetlen eszközre erről az eszközről", + "Never send encrypted messages to unverified devices in this room": "Soha ne küldj titkosított üzenetet ebből a szobából ellenőrizetlen eszközre", + "Never send encrypted messages to unverified devices in this room from this device": "Soha ne küldj titkosított üzenetet ebből a szobából ellenőrizetlen eszközre erről az eszközről", + "New address (e.g. #foo:%(localDomain)s)": "Új cím (e.g. #foo:%(localDomain)s)", + "New Composer & Autocomplete": "Új szerkesztő és automatikus kiegészítés", + "New password": "Új jelszó", + "New passwords don't match": "Az új jelszavak nem egyeznek", + "New passwords must match each other.": "Az új jelszavaknak meg kell egyezniük egymással.", + "none": "semmi", + "not set": "nincs beállítva", + "not specified": "nincs meghatározva", + "(not supported by this browser)": "(ebben a böngészőben nem támogatott)", + "": "", + "NOT verified": "NEM ellenőrzött", + "No devices with registered encryption keys": "Nincs eszköz a regisztrált titkosítási kulcsokhoz", + "No display name": "Nincs megjelenítési név", + "No more results": "Nincs több találat", + "No results": "Nincs találat", + "No users have specific privileges in this room": "Egy felhasználónak sincsenek specifikus jogosultságai ebben a szobában", + "olm version:": "olm verzió:", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Ha egyszer bekapcsolod a titkosítást a szobába utána nem lehet kikapcsolni (egyenlőre)", + "Once you've followed the link it contains, click below": "Miután a linket követted, kattints alulra", + "Only people who have been invited": "Csak akiket meghívtak", + "Otherwise, click here to send a bug report.": "Különben hiba jelentés küldéséhez kattints ide.", + "Password": "Jelszó", + "Password:": "Jelszó:", + "Passwords can't be empty": "A jelszó nem lehet üres", + "People": "Emberek", + "Permissions": "Jogosultságok", + "Phone": "Telefon", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s %(callType)s hívást kezdeményezett.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Ellenőrizd az e-mail-edet és kattints a benne lévő linkre. Ha ez megvan, kattints a folytatásra.", + "Power level must be positive integer.": "A szintnek pozitív egésznek kell lennie.", + "Press": "Nyomd meg", + "Private Chat": "Privát csevegés", + "Privileged Users": "Privilegizált felhasználók", + "Profile": "Profil", + "Public Chat": "Nyilvános csevegés", + "Reason": "Ok", + "Reason: %(reasonText)s": "Ok: %(reasonText)s", + "Revoke Moderator": "Moderátor visszahívása", + "Refer a friend to Riot:": "Ismerős meghívása a Riotba:", + "Register": "Regisztráció", + "rejected": "elutasítva", + "%(targetName)s rejected the invitation.": "%(targetName)s elutasította a meghívót.", + "Reject invitation": "Meghívó elutasítása", + "Rejoin": "Újracsatlakozás", + "Remote addresses for this room:": "A szoba távoli címei:", + "Remove Contact Information?": "Kapcsolat információk törlése?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s törölte a megjelenítési nevet (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s törölte a profil képét.", + "Remove %(threePid)s?": "Töröl: %(threePid)s?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s VoIP konferenciát kezdeményez.", + "Report it": "Jelent", + "restore": "visszaállít", + "Results from DuckDuckGo": "Eredmények a DuckDuckGo-ból", + "Return to app": "Vissza az alkalmazáshoz", + "Return to login screen": "Vissza a bejelentkezési képernyőre", + "Riot does not have permission to send you notifications - please check your browser settings": "Riotnak nincs jogosultsága értesítést küldeni neked - ellenőrizd a böngésző beállításait", + "Riot was not given permission to send notifications - please try again": "Riotnak nincs jogosultsága értesítést küldeni neked - próbáld újra", + "riot-web version:": "riot-web verzió:", + "Room %(roomId)s not visible": "%(roomId)s szoba nem látható", + "Room Colour": "Szoba színe", + "Room contains unknown devices": "A szobában ellenőrizetlen eszközök vannak", + "Room name (optional)": "Szoba neve (opcionális)", + "%(roomName)s does not exist.": "%(roomName)s nem létezik.", + "%(roomName)s is not accessible at this time.": "%(roomName)s jelenleg nem érhető el.", + "Rooms": "Szobák", + "Save": "Mentés", + "Scroll to bottom of page": "Az oldal aljára görget", + "Scroll to unread messages": "Olvasatlan üzenetekhez görget", + "Search failed": "Keresés sikertelen", + "Searches DuckDuckGo for results": "Keresés DuckDuckGo-val", + "Searching known users": "Ismert felhasználók keresése", + "Seen by %(userName)s at %(dateTime)s": "%(userName)s %(dateTime)s időpontban látta", + "Send a message (unencrypted)": "Üzenet küldése (titkosítás nélkül)", + "Send an encrypted message": "Titkosított üzenet küldése", + "Send anyway": "Küld mindenképpen", + "Sender device information": "Küldő eszközének információja", + "Send Invites": "Meghívók elküldése", + "Send Reset Email": "Visszaállítási e-mail küldése", + "sent an image": "kép küldése", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s képet küldött.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s meghívót küldött %(targetDisplayName)s felhasználónak, hogy lépjen be a szobába.", + "sent a video": "videó küldve", + "Server error": "Szerver hiba" } From 48c336a8bdc24f02e591f9f6c581a33442ba5e78 Mon Sep 17 00:00:00 2001 From: IMIN <2reeseenmin@gmail.com> Date: Sun, 18 Jun 2017 07:53:26 +0000 Subject: [PATCH 120/481] Translated using Weblate (Korean) Currently translated at 72.0% (653 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ko/ --- src/i18n/strings/ko.json | 81 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 76 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index 151acc7d3c..f7f0654276 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -533,7 +533,7 @@ "since they joined": "들어온 이후", "since they were invited": "초대받은 이후", "Some of your messages have not been sent.": "일부 메시지는 보내지 못했어요.", - "Someone": "누군가", + "Someone": "다른 사람", "Sorry, this homeserver is using a login which is not recognised ": "죄송해요, 이 홈 서버는 인식할 수 없는 로그인을 쓰고 있네요 ", "Start a chat": "이야기하기", "Start authentication": "인증하기", @@ -570,15 +570,86 @@ "This room's internal ID is": "방의 내부 ID", "times": "번", "To ban users": "사용자를 차단하기", - "to browse the directory": "목록에서 찾기", + "to browse the directory": "목록에서 찾으려면", "To configure the room": "방을 구성하기", - "to demote": "등급을 낮추기", - "to favourite": "즐겨찾기하기", + "to demote": "등급을 낮추려면", + "to favourite": "즐겨찾기하려면", "To invite users into the room": "방으로 사용자를 초대하기", "To kick users": "사용자를 내쫓기", "To link to a room it must have an address.": "방에 연결하려면 주소가 있어야 해요.", "to make a room or": "방을 만들거나 혹은", "To remove other users' messages": "다른 사용자의 메시지를 지우기", "To reset your password, enter the email address linked to your account": "비밀번호을 다시 설정하려면, 계정과 연결한 이메일 주소를 입력해주세요", - "to restore": "복구하기" + "to restore": "복구하려면", + "To send events of type": "유형 이벤트 보내기", + "To send messages": "메시지 보내기", + "to start a chat with someone": "다른 사람과 이야기하기", + "to tag as %(tagName)s": "%(tagName)s로 지정하려면", + "to tag direct chat": "직접 이야기를 지정하려면", + "To use it, just wait for autocomplete results to load and tab through them.": "이 기능을 사용하시려면, 자동완성 결과가 나오길 기다리신 뒤에 탭으로 움직여주세요.", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "이 방의 타임라인에서 특정 시점을 불러오려고 했지만, 문제의 메시지를 볼 수 있는 권한이 없어요.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "이 방의 타임라인에서 특정 시점을 불러오려고 했지만, 찾을 수 없었어요.", + "Turn Markdown off": "마크다운 끄기", + "Turn Markdown on": "마크다운 켜기", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s님이 종단간 암호화를 켜셨어요 (알고리즘 %(algorithm)s).", + "Unable to add email address": "이메일 주소를 추가할 수 없어요", + "Unable to remove contact information": "연락처를 지울 수 없어요", + "Unable to restore previous session": "이전 세션을 복구할 수 없어요", + "Unable to verify email address.": "이메일 주소를 인증할 수 없어요.", + "Unban": "차단풀기", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s님이 %(targetName)s님의 차단을 푸셨어요.", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "이 이매알 주소가 초대를 받은 계정과 연결된 주소가 맞는지 확인할 수 없어요.", + "Unable to capture screen": "화면을 찍을 수 없어요", + "Unable to enable Notifications": "알림을 켤 수 없어요", + "Unable to load device list": "장치 목록을 불러올 수 없어요", + "Undecryptable": "해독할 수 없는", + "Unencrypted room": "암호화하지 않은 방", + "unencrypted": "암호화하지 않음", + "Unencrypted message": "암호화하지 않은 메시지", + "unknown caller": "알 수 없는 발신자", + "Unknown command": "알 수 없는 명령", + "unknown device": "알 수 없는 장치", + "Unknown room %(roomId)s": "알 수 없는 방 %(roomId)s", + "Unknown (user, device) pair:": "알 수 없는 (사용자, 장치) 연결:", + "unknown": "알 수 없음", + "Unmute": "소리 켜기", + "Unnamed Room": "이름 없는 방", + "Unrecognised command:": "인식 할 수 없는 명령:", + "Unrecognised room alias:": "인식할 수 없는 방 가명:", + "Unverified": "인증하지 않음", + "Uploading %(filename)s and %(count)s others.zero": "%(filename)s 올리는 중", + "Uploading %(filename)s and %(count)s others.one": "%(filename)s 외 %(count)s 올리는 중", + "Uploading %(filename)s and %(count)s others.other": "%(filename)s 외 %(count)s 올리는 중", + "uploaded a file": "파일을 올렸어요", + "Upload avatar": "아바타 올리기", + "Upload Failed": "파일을 올리지 못했어요", + "Upload Files": "파일 올리기", + "Upload file": "파일 올리기", + "Upload new:": "새로 올리기:", + "Usage": "사용", + "Use compact timeline layout": "간단한 타임라인 구성 사용", + "Use with caution": "조심해서 사용", + "User ID": "사용자 ID", + "User Interface": "사용자 인터페이스", + "%(user)s is a": "%(user)s는", + "User name": "사용자 이름", + "Username invalid: %(errMessage)s": "사용자 이름을 인식할 수 없어요: %(errMessage)s", + "Users": "사용자들", + "User": "사용자", + "Verification Pending": "인증을 기다리는 중", + "Verification": "인증", + "verified": "인증함", + "Verified": "인증함", + "Verified key": "인증한 키", + "Video call": "영상통화", + "Voice call": "음성통화", + "VoIP conference finished.": "인터넷전화 회의를 마쳤어요.", + "VoIP conference started.": "인터넷전화 회의를 시작했어요.", + "VoIP is unsupported": "인터넷전화를 지원하지 않아요", + "(could not connect media)": "(미디어에 연결할 수 없어요)", + "(no answer)": "(응답 없음)", + "(unknown failure: %(reason)s)": "(알 수 없는 오류: %(reason)s)", + "(warning: cannot be disabled again!)": "(주의: 다시 끌 수 없어요!)", + "Warning!": "주의!", + "WARNING: Device already verified, but keys do NOT MATCH!": "주의: 장치는 이미 인증했지만, 키가 맞지 않아요!" } From 4edca7a0295c9855a3c8dc355a8d9f108705abc9 Mon Sep 17 00:00:00 2001 From: Walter Date: Fri, 16 Jun 2017 19:38:57 +0000 Subject: [PATCH 121/481] Translated using Weblate (Russian) Currently translated at 100.0% (906 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 26c2986948..8712d310e7 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -50,7 +50,7 @@ "Create Room": "Создайте Комнату", "Cryptography": "Шифрование", "Curve25519 identity key": "Curve25519 идентификационный ключ", - "Deactivate Account": "Деактивировать Учётную запись", + "Deactivate Account": "Деактивировать учётную запись", "Deactivate my account": "Деактивировать мою учётную запись", "decline": "отказаться", "Decryption error": "Ошибка дешифрования", @@ -101,7 +101,7 @@ "invited": "invited", "Invite new room members": "Пригласить новых участников в комнату", "Invites": "Приглашать", - "Invites user with given id to current room": "Пригласить пользователя с данным id в текущую комнату", + "Invites user with given id to current room": "Пригласить пользователя с данным ID в текущую комнату", "is a": "является", "Sign in with": "Я хочу регистрироваться с", "joined and left": "присоединенный и оставленный", @@ -470,7 +470,7 @@ "Failed to ban user": "Не удалось забанить пользователя", "Failed to change power level": "Не удалось изменить уровень привилегий", "Failed to delete device": "Не удалось удалить устройство", - "Failed to forget room %(errCode)s": "Не удалось забыть комнату %(errCode)s", + "Failed to forget room %(errCode)s": "Не удалось удалить комнату %(errCode)s", "Failed to join room": "Не удалось присоединиться к комнате", "Failed to join the room": "Не удалось войти в комнату", "Access Token:": "Токен:", @@ -523,7 +523,7 @@ "No results": "Нет результатов", "OK": "ОК", "Only people who have been invited": "Только приглашённые люди", - "Passwords can't be empty": "Пароли не могут быть пустыми", + "Passwords can't be empty": "Поля паролей не могут быть пустыми", "%(senderName)s placed a %(callType)s call.": "%(senderName) выполнил %(callType) вызов.", "Please check your email and click on the link it contains. Once this is done, click continue.": "Пожалуйста, проверьте вашу электронную почту и нажмите в ней ссылку. По завершении нажмите продолжить.", "Power level must be positive integer.": "Уровень силы должен быть положительным числом.", @@ -686,7 +686,7 @@ "Custom level": "Пользовательский уровень", "Device already verified!": "Устройство уже верифицировано!", "Device ID:": "ID устройства:", - "device id: ": "id устройства: ", + "device id: ": "ID устройства: ", "Device key:": "Ключ устройства:", "disabled": "отключено", "Disable markdown formatting": "Отключить форматирование Markdown", From e957e77d7e2784bfa4674beee237ff98cb3cb23d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Magr=C3=AD?= Date: Sun, 18 Jun 2017 22:43:01 +0000 Subject: [PATCH 122/481] Translated using Weblate (Spanish) Currently translated at 67.9% (616 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/ --- src/i18n/strings/es.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 32e76b1c31..c8b14b0022 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -619,5 +619,8 @@ "To remove other users' messages": "Eliminar los mensajes de otros usuarios", "To reset your password, enter the email address linked to your account": "Para reiniciar su contraseña, introduzca el e-mail asociado a su cuenta", "to restore": "restaurar", - "Cancel": "Cancelar" + "Cancel": "Cancelar", + "Dismiss": "Omitir", + "powered by Matrix": "con el poder de Matrix", + "Room directory": "Directorio de salas" } From 194ea2895610f99952b131d7230ebbbf4de86ce5 Mon Sep 17 00:00:00 2001 From: strixaluco Date: Sun, 18 Jun 2017 13:34:11 +0000 Subject: [PATCH 123/481] Translated using Weblate (Ukrainian) Currently translated at 17.3% (157 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/uk/ --- src/i18n/strings/uk.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index dd8112fa11..4af2a6e311 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -151,5 +151,9 @@ "zh-hk": "традиційна китайська (Гонконг)", "zh-sg": "спрощена китайська (Сингапур)", "zh-tw": "традиційна китайська (Тайвань)", - "zu": "зулу" + "zu": "зулу", + "a room": "кімната", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Текстове повідомлення було надіслано +%(msisdn)s. Введіть, будь ласка, код підтвердження з цього повідомлення", + "Accept": "Прийняти", + "Account": "Обліковка" } From 022161b78f23e47499ee33fc1f12695fd226cb07 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Mon, 19 Jun 2017 00:08:24 +0100 Subject: [PATCH 124/481] fix broken vars --- src/i18n/strings/ru.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 8712d310e7..e12f8528b2 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -355,7 +355,7 @@ "Friday": "Пятница", "Saturday": "Суббота", "Sunday": "Воскресенье", - "%(weekDayName)s %(time)s": "%(weekDayName) %(time)", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", "Upload an avatar:": "Загрузите аватар:", "You need to be logged in.": "Вы должны быть авторизованы.", "You need to be able to invite users to do that.": "Вам необходимо пригласить пользователей чтобы сделать это.", @@ -946,8 +946,8 @@ "Would you like to accept or decline this invitation?": "Хотели бы вы подтвердить это приглашение или отклонить?", "(~%(count)s results).one": "(~%(count)s Результат)", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Не удается подключиться к домашнему серверу - проверьте подключение, убедитесь, что ваш сертификат SSL homeserver's SSL certificate действителен, и расширение браузера не блокирует запросы.", - "You have been banned from %(roomName)s by %(userName)s.": "%(userName) забанил Вас в % (roomName).", - "You have been kicked from %(roomName)s by %(userName)s.": "%(userName) выгнал Вас из %(roomName).", + "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s забанил Вас в %(roomName)s.", + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s выгнал Вас из %(roomName)s.", "You may wish to login with a different account, or add this email to this account.": "Вы можете войти в систему с другой учетной записью или добавить этот адрес email в эту учетную запись.", "Your home server does not support device management.": "Ваш домашний сервер не поддерживает управление устройствами.", "(could not connect media)": "(не удается подключиться к медиа)", From fac98d16ddb8271ba0e6856f9efe6d07b272dd40 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Mon, 19 Jun 2017 00:11:34 +0100 Subject: [PATCH 125/481] fix broken i18n --- src/i18n/strings/el.json | 8 ++++---- src/i18n/strings/hu.json | 2 +- src/i18n/strings/nl.json | 2 +- src/i18n/strings/ru.json | 4 ++-- src/i18n/strings/sv.json | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index eb25cd9e16..cdfb558f3a 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -839,13 +839,13 @@ "Share message history with new users": "Διαμοιρασμός ιστορικού μηνυμάτων με τους νέους χρήστες", "numbullet": "απαρίθμηση", "%(severalUsers)sleft and rejoined %(repeats)s times": "%(severalUsers)s έφυγαν και ξανασυνδέθηκαν %(repeats)s φορές", - "%(oneUser)sleft and rejoined %(repeats)s times": "%(severalUsers)s έφυγε και ξανασυνδέθηκε %(repeats)s φορές", + "%(oneUser)sleft and rejoined %(repeats)s times": "%(oneUser)s έφυγε και ξανασυνδέθηκε %(repeats)s φορές", "%(severalUsers)sleft and rejoined": "%(severalUsers)s έφυγαν και ξανασυνδέθηκαν", - "%(oneUser)sleft and rejoined": "%(severalUsers)s έφυγε και ξανασυνδέθηκε", + "%(oneUser)sleft and rejoined": "%(oneUser)s έφυγε και ξανασυνδέθηκε", "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "Οι %(severalUsers)s απέσυραν τις προσκλήσεις τους %(repeats)s φορές", - "%(oneUser)shad their invitation withdrawn %(repeats)s times": "Ο %(severalUsers)s απέσυρε την πρόσκληση του %(repeats)s φορές", + "%(oneUser)shad their invitation withdrawn %(repeats)s times": "Ο %(oneUser)s απέσυρε την πρόσκληση του %(repeats)s φορές", "%(severalUsers)shad their invitations withdrawn": "Οι %(severalUsers)s απέσυραν τις προσκλήσεις τους", - "%(oneUser)shad their invitation withdrawn": "Ο %(severalUsers)s απέσυρε την πρόσκληση του", + "%(oneUser)shad their invitation withdrawn": "Ο %(oneUser)s απέσυρε την πρόσκληση του", "You must join the room to see its files": "Πρέπει να συνδεθείτε στο δωμάτιο για να δείτε τα αρχεία του", "Reject all %(invitedRooms)s invites": "Απόρριψη όλων των προσκλήσεων %(invitedRooms)s", "Failed to invite the following users to the %(roomName)s room:": "Δεν ήταν δυνατή η πρόσκληση των χρηστών στο δωμάτιο %(roomName)s:", diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 3cc449b1fc..696a548b4a 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -204,7 +204,7 @@ "Anyone who knows the room's link, apart from guests": "A vendégeken kívül bárki aki ismeri a szoba link-jét", "Anyone who knows the room's link, including guests": "Bárki aki tudja a szoba link-jét, még a vendégek is", "Are you sure?": "Biztos?", - "Are you sure you want to leave the room '%(roomName)s'?": "Biztos elhagyod a szobát?", + "Are you sure you want to leave the room '%(roomName)s'?": "Biztos elhagyod a szobát '%(roomName)s'?", "Are you sure you want to reject the invitation?": "Biztos elutasítod a meghívást?", "Are you sure you want to upload the following files?": "Biztos feltöltöd ezeket a fájlokat?", "Attachment": "Csatolmány", diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 04b0514c4d..1c1d27c42b 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -333,7 +333,7 @@ "Create an account": "Open een account", "Cryptography": "Cryptografie", "Current password": "Huidig wachtwoord", - "%(senderDisplayName)s removed the room name.": "%(senderDisplayName) heeft de naam van de kamer verwijderd.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s heeft de naam van de kamer verwijderd.", "Create a new chat or reuse an existing one": "Maak een nieuwe chat aan of gebruik een reeds bestaande", "Create Room": "Maak een kamer", "Curve25519 identity key": "Curve25519 identiteits sleutel", diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index e12f8528b2..d69282a07e 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -246,7 +246,7 @@ "Failed to set up conference call": "Не удалось установить конференц-вызов", "Failed to verify email address: make sure you clicked the link in the email": "Не удалось подтвердить email-адрес: убедитесь что вы щелкнули по ссылке электронной почты", "Failure to create room": "Не удалось создать комнату", - "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId) изменил %(fromPowerLevel) на %(toPowerLevel)", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s изменил %(fromPowerLevel)s на %(toPowerLevel)s", "Guest users can't create new rooms. Please register to create room and start a chat.": "Гостевые пользователи не могут создавать новые комнаты. Зарегистрируйтесь для создания комнаты и чата.", "click to reveal": "нажать для открытия", "%(senderName)s invited %(targetName)s.": "%(senderName)s приглашает %(targetName)s.", @@ -524,7 +524,7 @@ "OK": "ОК", "Only people who have been invited": "Только приглашённые люди", "Passwords can't be empty": "Поля паролей не могут быть пустыми", - "%(senderName)s placed a %(callType)s call.": "%(senderName) выполнил %(callType) вызов.", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s выполнил %(callType)s вызов.", "Please check your email and click on the link it contains. Once this is done, click continue.": "Пожалуйста, проверьте вашу электронную почту и нажмите в ней ссылку. По завершении нажмите продолжить.", "Power level must be positive integer.": "Уровень силы должен быть положительным числом.", "Press": "Нажать", diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index fe8b1ffee1..21bda3b741 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -296,7 +296,7 @@ "Active call (%(roomName)s)": "Aktiv samtal (%(roomName)s)", "Add": "Lägg till", "Admin tools": "Admin verktyg", - "And %(count)s more...": "Och %(count) till...", + "And %(count)s more...": "Och %(count)s till...", "Alias (optional)": "Alias (valfri)", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Det gick inte att ansluta till servern - kontrollera anslutningen, försäkra att din hemservers TLS-certifikat är betrott, och att inget webbläsartillägg blockerar förfrågningar.", "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s ändrade maktnivån av %(powerLevelDiffText)s.", From 3b518f2c597d68ec811bc3424e86ef80d862d6dd Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Mon, 19 Jun 2017 10:22:18 +0100 Subject: [PATCH 126/481] Fix race in registration for pusher config we no longer immediately create the MatrixClient, so don't assume we do. --- src/Lifecycle.js | 7 +++++-- src/components/structures/MatrixChat.js | 3 ++- src/components/structures/login/Registration.js | 12 ++++++------ 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/Lifecycle.js b/src/Lifecycle.js index 3733ba1ea5..59580e7cb6 100644 --- a/src/Lifecycle.js +++ b/src/Lifecycle.js @@ -294,10 +294,12 @@ export function initRtsClient(url) { * storage before starting the new client. * * @param {MatrixClientCreds} credentials The credentials to use + * + * @returns {Promise} promise which resolves to the new MatrixClient once it has been started */ export function setLoggedIn(credentials) { stopMatrixClient(); - _doSetLoggedIn(credentials, true); + return _doSetLoggedIn(credentials, true); } /** @@ -307,7 +309,7 @@ export function setLoggedIn(credentials) { * @param {MatrixClientCreds} credentials * @param {Boolean} clearStorage * - * returns a Promise which resolves once the client has been started + * @returns {Promise} promise which resolves to the new MatrixClient once it has been started */ async function _doSetLoggedIn(credentials, clearStorage) { credentials.guest = Boolean(credentials.guest); @@ -374,6 +376,7 @@ async function _doSetLoggedIn(credentials, clearStorage) { }); startMatrixClient(); + return MatrixClientPeg.get(); } function _persistCredentialsToLocalStorage(credentials) { diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 26f0edf309..e2bb5764cc 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -1280,13 +1280,14 @@ module.exports = React.createClass({ } }, + // returns a promise which resolves to the new MatrixClient onRegistered: function(credentials, teamToken) { // XXX: These both should be in state or ideally store(s) because we risk not // rendering the most up-to-date view of state otherwise. // teamToken may not be truthy this._teamToken = teamToken; this._is_registered = true; - Lifecycle.setLoggedIn(credentials); + return Lifecycle.setLoggedIn(credentials); }, onFinishPostRegistration: function() { diff --git a/src/components/structures/login/Registration.js b/src/components/structures/login/Registration.js index 17fbf445b2..388198bb02 100644 --- a/src/components/structures/login/Registration.js +++ b/src/components/structures/login/Registration.js @@ -218,29 +218,29 @@ module.exports = React.createClass({ } trackPromise.then((teamToken) => { - this.props.onLoggedIn({ + return this.props.onLoggedIn({ userId: response.user_id, deviceId: response.device_id, homeserverUrl: this._matrixClient.getHomeserverUrl(), identityServerUrl: this._matrixClient.getIdentityServerUrl(), accessToken: response.access_token }, teamToken); - }).then(() => { - return this._setupPushers(); + }).then((cli) => { + return this._setupPushers(cli); }); }, - _setupPushers: function() { + _setupPushers: function(matrixClient) { if (!this.props.brand) { return q(); } - return MatrixClientPeg.get().getPushers().then((resp)=>{ + return matrixClient.getPushers().then((resp)=>{ const pushers = resp.pushers; for (let i = 0; i < pushers.length; ++i) { if (pushers[i].kind == 'email') { const emailPusher = pushers[i]; emailPusher.data = { brand: this.props.brand }; - MatrixClientPeg.get().setPusher(emailPusher).done(() => { + matrixClient.setPusher(emailPusher).done(() => { console.log("Set email branding to " + this.props.brand); }, (error) => { console.error("Couldn't set email branding: " + error); From a5d65ee3912af2c82476fbc82cd11560ab22a5f0 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Tue, 13 Jun 2017 15:46:26 +0100 Subject: [PATCH 127/481] Get rid of guestCreds -- we just keep the MatrixClient running in the background, so it is easy to resume. --- src/components/structures/MatrixChat.js | 28 +++++-------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 26f0edf309..2c0a3269cc 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -133,11 +133,6 @@ module.exports = React.createClass({ // a thing to call showScreen with once login completes. screenAfterLogin: this.props.initialScreenAfterLogin, - // Stashed guest credentials if the user logs out - // whilst logged in as a guest user (so they can change - // their mind & log back in) - guestCreds: null, - // What the LoggedInView would be showing if visible page_type: null, @@ -385,13 +380,6 @@ module.exports = React.createClass({ this._startRegistration(payload.params || {}); break; case 'start_login': - if (MatrixClientPeg.get() && - MatrixClientPeg.get().isGuest() - ) { - this.setState({ - guestCreds: MatrixClientPeg.getCredentials(), - }); - } this.setStateForNewView({ view: VIEWS.LOGIN, }); @@ -947,7 +935,6 @@ module.exports = React.createClass({ _onLoggedIn: function(teamToken) { this.setState({ view: VIEWS.LOGGED_IN, - guestCreds: null, }); if (teamToken) { @@ -1270,14 +1257,9 @@ module.exports = React.createClass({ this.showScreen("forgot_password"); }, - onReturnToGuestClick: function() { - // reanimate our guest login - if (this.state.guestCreds) { - // TODO: this is probably a bit broken - we don't want to be - // clearing storage when we reanimate the guest creds. - Lifecycle.setLoggedIn(this.state.guestCreds); - this.setState({guestCreds: null}); - } + onReturnToAppClick: function() { + // treat it the same as if the user had completed the login + this._onLoggedIn(null); }, onRegistered: function(credentials, teamToken) { @@ -1456,7 +1438,7 @@ module.exports = React.createClass({ onLoggedIn={this.onRegistered} onLoginClick={this.onLoginClick} onRegisterClick={this.onRegisterClick} - onCancelClick={this.state.guestCreds ? this.onReturnToGuestClick : null} + onCancelClick={MatrixClientPeg.get() ? this.onReturnToAppClick : null} /> ); } @@ -1490,7 +1472,7 @@ module.exports = React.createClass({ defaultDeviceDisplayName={this.props.defaultDeviceDisplayName} onForgotPasswordClick={this.onForgotPasswordClick} enableGuest={this.props.enableGuest} - onCancelClick={this.state.guestCreds ? this.onReturnToGuestClick : null} + onCancelClick={MatrixClientPeg.get() ? this.onReturnToAppClick : null} /> ); } From 27f38aeba7ffe0ce320f8dd36c0f19ae11ba2dba Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 16 Jun 2017 16:12:52 +0100 Subject: [PATCH 128/481] make forward_message be friendly with the RVS stuffs Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/structures/MatrixChat.js | 24 +++++++++++++++++ src/components/structures/RoomView.js | 15 ++++++----- src/components/views/rooms/ForwardMessage.js | 28 -------------------- src/stores/RoomViewStore.js | 21 +++++++++++++++ 4 files changed, 53 insertions(+), 35 deletions(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index ab937c07ac..7b1855b678 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -523,6 +523,9 @@ module.exports = React.createClass({ payload.releaseNotes, ); break; + case 'send_event': + this.onSendEvent(payload.room_id, payload.event); + break; } }, @@ -1267,6 +1270,27 @@ module.exports = React.createClass({ }); }, + onSendEvent: function(roomId, event) { + const cli = MatrixClientPeg.get(); + if (!cli) { + dis.dispatch({action: 'message_send_failed'}); + return; + } + + cli.sendEvent(roomId, event.getType(), event.getContent()).done(() => { + dis.dispatch({action: 'message_sent'}); + }, (err) => { + if (err.name === 'UnknownDeviceError') { + dis.dispatch({ + action: 'unknown_device_error', + err: err, + room: cli.getRoom(roomId), + }); + } + dis.dispatch({action: 'message_send_failed'}); + }); + }, + updateStatusIndicator: function(state, prevState) { let notifCount = 0; diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index 9306008e71..542b7a3e50 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -168,6 +168,7 @@ module.exports = React.createClass({ initialEventId: RoomViewStore.getInitialEventId(), initialEventPixelOffset: RoomViewStore.getInitialEventPixelOffset(), isInitialEventHighlighted: RoomViewStore.isInitialEventHighlighted(), + forwardingEvent: RoomViewStore.getForwardingEvent(), }; // Temporary logging to diagnose https://github.com/vector-im/riot-web/issues/4307 @@ -452,11 +453,6 @@ module.exports = React.createClass({ callState: callState }); - break; - case 'forward_event': - this.setState({ - forwardingEvent: payload.content, - }); break; } }, @@ -1164,8 +1160,13 @@ module.exports = React.createClass({ this.updateTint(); this.setState({ editingRoomSettings: false, - forwardingEvent: null, }); + if (this.state.forwardingEvent) { + dis.dispatch({ + action: 'forward_event', + event: null, + }); + } dis.dispatch({action: 'focus_composer'}); }, @@ -1576,7 +1577,7 @@ module.exports = React.createClass({ } else if (this.state.uploadingRoomSettings) { aux = ; } else if (this.state.forwardingEvent !== null) { - aux = ; + aux = ; } else if (this.state.searching) { hideCancel = true; // has own cancel aux = ; diff --git a/src/components/views/rooms/ForwardMessage.js b/src/components/views/rooms/ForwardMessage.js index 33df201d7c..3c97128a02 100644 --- a/src/components/views/rooms/ForwardMessage.js +++ b/src/components/views/rooms/ForwardMessage.js @@ -17,7 +17,6 @@ import React from 'react'; import { _t } from '../../../languageHandler'; -import MatrixClientPeg from '../../../MatrixClientPeg'; import dis from '../../../dispatcher'; import KeyCode from '../../../KeyCode'; @@ -26,11 +25,6 @@ module.exports = React.createClass({ displayName: 'ForwardMessage', propTypes: { - currentRoomId: React.PropTypes.string.isRequired, - - /* the MatrixEvent to be forwarded */ - mxEvent: React.PropTypes.object.isRequired, - onCancelClick: React.PropTypes.func.isRequired, }, @@ -44,7 +38,6 @@ module.exports = React.createClass({ }, componentDidMount: function() { - this.dispatcherRef = dis.register(this.onAction); document.addEventListener('keydown', this._onKeyDown); }, @@ -54,30 +47,9 @@ module.exports = React.createClass({ sideOpacity: 1.0, middleOpacity: 1.0, }); - dis.unregister(this.dispatcherRef); document.removeEventListener('keydown', this._onKeyDown); }, - onAction: function(payload) { - if (payload.action === 'view_room') { - const event = this.props.mxEvent; - const Client = MatrixClientPeg.get(); - Client.sendEvent(payload.room_id, event.getType(), event.getContent()).done(() => { - dis.dispatch({action: 'message_sent'}); - }, (err) => { - if (err.name === "UnknownDeviceError") { - dis.dispatch({ - action: 'unknown_device_error', - err: err, - room: Client.getRoom(payload.room_id), - }); - } - dis.dispatch({action: 'message_send_failed'}); - }); - if (this.props.currentRoomId === payload.room_id) this.props.onCancelClick(); - } - }, - _onKeyDown: function(ev) { switch (ev.keyCode) { case KeyCode.ESCAPE: diff --git a/src/stores/RoomViewStore.js b/src/stores/RoomViewStore.js index ac06d41e81..d68373f0d5 100644 --- a/src/stores/RoomViewStore.js +++ b/src/stores/RoomViewStore.js @@ -55,6 +55,8 @@ const INITIAL_STATE = { // pixelOffset: the number of pixels the window is scrolled down // from the focussedEvent. scrollStateMap: {}, + + forwardingEvent: null, }; /** @@ -116,6 +118,11 @@ class RoomViewStore extends Store { case 'update_scroll_state': this._updateScrollState(payload); break; + case 'forward_event': + this._setState({ + forwardingEvent: payload.event, + }); + break; } } @@ -127,6 +134,7 @@ class RoomViewStore extends Store { initialEventId: payload.event_id, initialEventPixelOffset: undefined, isInitialEventHighlighted: payload.highlighted, + forwardingEvent: null, roomLoading: false, roomLoadError: null, }; @@ -141,6 +149,14 @@ class RoomViewStore extends Store { } } + if (this._state.forwardingEvent) { + dis.dispatch({ + action: 'send_event', + room_id: newState.roomId, + event: this._state.forwardingEvent, + }); + } + this._setState(newState); } else if (payload.room_alias) { // Resolve the alias and then do a second dispatch with the room ID acquired @@ -276,6 +292,11 @@ class RoomViewStore extends Store { getJoinError() { return this._state.joinError; } + + // The mxEvent if one is about to be forwarded + getForwardingEvent() { + return this._state.forwardingEvent; + } } let singletonRoomViewStore = null; From 467c195d4f59a7e28fba4b810004a108fb997825 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 16 Jun 2017 18:24:07 +0100 Subject: [PATCH 129/481] Don't peek when creating a room This causes a race between receiving the room when starting to peek and receiving the room from joining it - https://github.com/vector-im/riot-web/issues/4330, https://github.com/matrix-org/riot-web-rageshakes/issues/196 --- src/components/structures/RoomView.js | 15 ++++++++++----- src/createRoom.js | 1 + src/stores/RoomViewStore.js | 6 ++++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index 542b7a3e50..b29b3579f0 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -93,6 +93,7 @@ module.exports = React.createClass({ roomId: null, roomLoading: true, peekLoading: false, + shouldPeek: true, // The event to be scrolled to initially initialEventId: null, @@ -169,8 +170,13 @@ module.exports = React.createClass({ initialEventPixelOffset: RoomViewStore.getInitialEventPixelOffset(), isInitialEventHighlighted: RoomViewStore.isInitialEventHighlighted(), forwardingEvent: RoomViewStore.getForwardingEvent(), + shouldPeek: RoomViewStore.shouldPeek(), }; + // finished joining, start waiting for a room and show a spinner. See onRoom. + newState.waitingForRoom = this.state.joining && !newState.joining && + !RoomViewStore.getJoinError(); + // Temporary logging to diagnose https://github.com/vector-im/riot-web/issues/4307 console.log( 'RVS update:', @@ -178,12 +184,11 @@ module.exports = React.createClass({ newState.roomAlias, 'loading?', newState.roomLoading, 'joining?', newState.joining, + 'initial?', initial, + 'waiting?', newState.waitingForRoom, + 'shouldPeek?', newState.shouldPeek, ); - // finished joining, start waiting for a room and show a spinner. See onRoom. - newState.waitingForRoom = this.state.joining && !newState.joining && - !RoomViewStore.getJoinError(); - // NB: This does assume that the roomID will not change for the lifetime of // the RoomView instance if (initial) { @@ -239,7 +244,7 @@ module.exports = React.createClass({ if (!this.state.joining && this.state.roomId) { if (this.props.autoJoin) { this.onJoinButtonClicked(); - } else if (!room) { + } else if (!room && this.state.shouldPeek) { console.log("Attempting to peek into room %s", this.state.roomId); this.setState({ peekLoading: true, diff --git a/src/createRoom.js b/src/createRoom.js index 4d7f5792f3..bf0c0fee1c 100644 --- a/src/createRoom.js +++ b/src/createRoom.js @@ -100,6 +100,7 @@ function createRoom(opts) { dis.dispatch({ action: 'view_room', room_id: roomId, + should_peek: false, }); } return roomId; diff --git a/src/stores/RoomViewStore.js b/src/stores/RoomViewStore.js index d68373f0d5..2f7d55b71f 100644 --- a/src/stores/RoomViewStore.js +++ b/src/stores/RoomViewStore.js @@ -137,6 +137,8 @@ class RoomViewStore extends Store { forwardingEvent: null, roomLoading: false, roomLoadError: null, + // should peek by default + shouldPeek: payload.should_peek === undefined ? true : payload.should_peek, }; // If an event ID wasn't specified, default to the one saved for this room @@ -297,6 +299,10 @@ class RoomViewStore extends Store { getForwardingEvent() { return this._state.forwardingEvent; } + + shouldPeek() { + return this._state.shouldPeek; + } } let singletonRoomViewStore = null; From 8f19400cc064fa55d8b455755f4f402ccae97a2c Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Sun, 18 Jun 2017 23:49:57 +0100 Subject: [PATCH 130/481] Merge pull request #1114 from RiotTranslateBot/weblate-riot-web-matrix-react-sdk Update from Weblate. --- src/i18n/strings/en_US.json | 8 +- src/i18n/strings/es.json | 145 +++++++++++++- src/i18n/strings/hu.json | 361 ++++++++++++++++++++++++++++++++-- src/i18n/strings/ko.json | 81 +++++++- src/i18n/strings/nl.json | 38 +++- src/i18n/strings/ru.json | 10 +- src/i18n/strings/uk.json | 6 +- src/i18n/strings/zh_Hans.json | 6 +- 8 files changed, 622 insertions(+), 33 deletions(-) diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json index c3df1f90a6..5233111065 100644 --- a/src/i18n/strings/en_US.json +++ b/src/i18n/strings/en_US.json @@ -913,5 +913,11 @@ "Username not available": "Username not available", "Something went wrong!": "Something went wrong!", "This will be your account name on the homeserver, or you can pick a different server.": "This will be your account name on the homeserver, or you can pick a different server.", - "If you already have a Matrix account you can log in instead.": "If you already have a Matrix account you can log in instead." + "If you already have a Matrix account you can log in instead.": "If you already have a Matrix account you can log in instead.", + "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions", + "Not a valid Riot keyfile": "Not a valid Riot keyfile", + "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", + "Disable Peer-to-Peer for 1:1 calls": "Disable Peer-to-Peer for 1:1 calls", + "Do you want to set an email address?": "Do you want to set an email address?", + "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications." } diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 5f20f8113e..c8b14b0022 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -1,5 +1,5 @@ { - "af": "Africano", + "af": "Afrikáans", "ar-ae": "Árabe (Emiratos Árabes Unidos)", "ar-bh": "Árabe (Baréin)", "ar-dz": "Árabe (Argelia)", @@ -267,7 +267,7 @@ "Failed to unban": "Falló al desbloquear", "Failed to upload file": "Error en el envío del fichero", "Failed to verify email address: make sure you clicked the link in the email": "Falló al verificar el correo electrónico: Asegúrese hacer clic en el enlace del correo", - "Failure to create room": "Falló al crear sala", + "Failure to create room": "Fallo al crear la sala", "Favourite": "Favorito", "favourite": "favorito", "Favourites": "Favoritos", @@ -483,5 +483,144 @@ "Tagged as: ": "Etiquetado como: ", "The default role for new room members is": "El nivel por defecto para los nuevos miembros de esta sala es", "The main address for this room is": "La dirección principal de esta sala es", - "The phone number entered looks invalid": "El número de teléfono indicado parece erróneo" + "The phone number entered looks invalid": "El número de teléfono indicado parece erróneo", + "Active call (%(roomName)s)": "Llamada activa (%(roomName)s)", + "Add a topic": "Añadir un tema", + "Missing Media Permissions, click here to request.": "Faltan permisos para el medio, pulse aquí para solicitarlos.", + "No media permissions": "Sin permisos para el medio", + "You may need to manually permit Riot to access your microphone/webcam": "Probablemente necesite dar permisos manualmente a Riot para su micrófono/cámara", + "Are you sure you want to leave the room '%(roomName)s'?": "¿Está seguro de que desea abandonar la sala '%(roomName)s'?", + "Are you sure you want to upload the following files?": "¿Está seguro que desea enviar los siguientes archivos?", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "No se puede conectar al servidor - compruebe su conexión, asegúrese de que el certificado SSL del servidor es de confiaza, y compruebe que no hay extensiones del navegador bloqueando las peticiones.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s ha quitado el nombre de la sala.", + "Device key:": "Clave del dispositivo:", + "Disable markdown formatting": "Desactivar el formato Markdown", + "Drop File Here": "Deje el fichero aquí", + "Guest access is disabled on this Home Server.": "El acceso de invitados está desactivado en este servidor.", + "Join as voice or video.": "Conecte con voz o vídeo.", + "List this room in %(domain)s's room directory?": "¿Mostrar esta sala en el directorio de %(domain)s?", + "Manage Integrations": "Gestionar integraciones", + "Markdown is disabled": "Markdown está desactivado", + "Markdown is enabled": "Markdown está activado", + "matrix-react-sdk version:": "Versión de matrix-react-sdk:", + "Members only": "Sólo para miembros", + "Message not sent due to unknown devices being present": "Mensaje no enviado debido a la presencia de dispositivos desconocidos", + "Missing room_id in request": "Falta el ID de sala en la petición", + "Missing user_id in request": "Falta el ID de usuario en la petición", + "Mobile phone number": "Número de teléfono móvil", + "Mobile phone number (optional)": "Número de teléfono móvil (opcional)", + "Moderator": "Moderador", + "Must be viewing a room": "Debe estar viendo una sala", + "Mute": "Silenciar", + "my Matrix ID": "Mi ID de Matrix", + "Name": "Nombre", + "Never send encrypted messages to unverified devices from this device": "No enviar nunca mensajes cifrados, desde este dispositivo, a dispositivos sin verificar", + "Never send encrypted messages to unverified devices in this room": "No enviar nunca mensajes cifrados a dispositivos no verificados, en esta sala", + "Never send encrypted messages to unverified devices in this room from this device": "No enviar nunca mensajes cifrados a dispositivos no verificados, en esta sala, desde este dispositivo", + "New address (e.g. #foo:%(localDomain)s)": "Nueva dirección (ej: #foo:%(localDomain)s)", + "New password": "Nueva contraseña", + "New passwords don't match": "Las nuevas contraseñas no coinciden", + "New passwords must match each other.": "Las nuevas contraseñas deben coincidir.", + "none": "ninguno", + "not set": "sin configurar", + "not specified": "sin especificar", + "Notifications": "Notificaciones", + "(not supported by this browser)": "(no soportado por este navegador)", + "": "", + "NOT verified": "NO verificado", + "No devices with registered encryption keys": "No hay dispositivos con claves de cifrado registradas", + "No display name": "Sin nombre para mostrar", + "No more results": "No hay más resultados", + "No results": "Sin resultados", + "No users have specific privileges in this room": "Ningún usuario tiene permisos específicos en esta sala", + "OK": "Correcto", + "olm version:": "versión de olm:", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Una vez se active el cifrado en esta sala, no podrá ser desactivado (por ahora)", + "Only people who have been invited": "Sólo usuarios que han sido invitados", + "Operation failed": "Falló la operación", + "Otherwise, click here to send a bug report.": "También puede pulsar aquí para enviar un informe de fallos.", + "Password": "Contraseña", + "Password:": "Contraseña:", + "Passwords can't be empty": "Las contraseñas no pueden estar en blanco", + "People": "Gente", + "Permissions": "Permisos", + "Phone": "Teléfono", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s ha hecho una llamada de tipo %(callType)s.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor, compruebe su e-mail y pulse el enlace que contiene. Una vez esté hecho, pulse continuar.", + "Please Register": "Por favor, regístrese", + "Power level must be positive integer.": "El nivel debe ser un entero positivo.", + "Press": "Pulse", + "Privacy warning": "Alerta de privacidad", + "Private Chat": "Conversación privada", + "Privileged Users": "Usuarios con privilegios", + "Profile": "Perfil", + "Public Chat": "Sala pública", + "Reason": "Razón", + "Reason: %(reasonText)s": "Razón: %(reasonText)s", + "Revoke Moderator": "Eliminar Moderador", + "Refer a friend to Riot:": "Informar a un amigo sobre Riot:", + "Register": "Registrarse", + "rejected": "rechazado", + "%(targetName)s rejected the invitation.": "%(targetName)s ha rechazado la invitación.", + "Reject invitation": "Rechazar invitación", + "Rejoin": "Volver a unirse", + "Remote addresses for this room:": "Dirección remota de esta sala:", + "Remove Contact Information?": "¿Eliminar información del contacto?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s ha suprimido su nombre para mostar (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s ha eliminado su foto de perfil.", + "Remove": "Eliminar", + "Remove %(threePid)s?": "¿Eliminar %(threePid)s?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s ha solicitado una conferencia Voz-IP.", + "Report it": "Informar", + "Resetting 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.": "Reiniciar la contraseña también reiniciará las claves de cifrado extremo-a-extremo, haciendo ilegible el historial de las conversaciones, salvo que exporte previamente las claves de sala, y las importe posteriormente. Esto será mejorado en futuras versiones.", + "restore": "restaurar", + "Results from DuckDuckGo": "Resultados desde DuckDuckGo", + "Return to app": "Volver a la aplicación", + "Return to login screen": "Volver a la pantalla de inicio de sesión", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot no tiene permisos para enviarle notificaciones - por favor, revise la configuración del navegador", + "Riot was not given permission to send notifications - please try again": "Riot no pudo obtener permisos para enviar notificaciones - por favor, inténtelo de nuevo", + "riot-web version:": "versión riot-web:", + "Room %(roomId)s not visible": "La sala %(roomId)s no es visible", + "Searches DuckDuckGo for results": "Busca en DuckDuckGo", + "Server may be unavailable or overloaded": "El servidor podría estar saturado o desconectado", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Mostrar el tiempo en formato 12h (am/pm)", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "La clave de firma que usted ha proporcionado coincide con la recibida del dispositivo %(deviceId)s de %(userId)s. Dispositivo verificado.", + "This action cannot be performed by a guest user. Please register to be able to do this.": "Esto no puede ser hecho por un invitado. Por favor, regístrese para poder hacerlo.", + "This email address is already in use": "Dirección e-mail en uso", + "This email address was not found": "Dirección e-mail no encontrada", + "%(actionVerb)s this person?": "¿%(actionVerb)s a esta persona?", + "The email address linked to your account must be entered.": "Debe introducir el e-mail asociado a su cuenta.", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "El fichero '%(fileName)s' excede el tamaño máximo permitido en este servidor", + "The file '%(fileName)s' failed to upload": "Se produjo un fallo al enviar '%(fileName)s'", + "The remote side failed to pick up": "El sitio remoto falló al sincronizar", + "This Home Server does not support login using email address.": "Este servidor no permite identificarse con direcciones e-mail.", + "This invitation was sent to an email address which is not associated with this account:": "Se envió la invitación a un e-mail no asociado con esta cuenta:", + "There was a problem logging in.": "Hubo un problema identificándose.", + "This room has no local addresses": "Esta sala no tiene direcciones locales", + "This room is not recognised.": "Esta sala no se reconoce.", + "These are experimental features that may break in unexpected ways": "Estas son funcionalidades experimentales, podrían fallar de formas imprevistas", + "The visibility of existing history will be unchanged": "La visibilidad del historial previo no se verá afectada", + "This doesn't appear to be a valid email address": "Esto no parece un e-mail váido", + "This is a preview of this room. Room interactions have been disabled": "Esto es una vista previa de la sala. Las interacciones con la sala están desactivadas", + "This phone number is already in use": "Este número de teléfono ya se está usando", + "This room": "Esta sala", + "This room is not accessible by remote Matrix servers": "Esta sala no es accesible por otros servidores Matrix", + "This room's internal ID is": "El ID interno de la sala es", + "times": "veces", + "To ban users": "Expulsar usuarios", + "to browse the directory": "navegar el directorio", + "To configure the room": "Configurar la sala", + "to demote": "degradar", + "to favourite": "marcar como favorito", + "To invite users into the room": "Invitar usuarios a la sala", + "To kick users": "Patear usuarios", + "To link to a room it must have an address.": "Para enlazar una sala, debe tener una dirección.", + "to make a room or": "hacer una sala o", + "To remove other users' messages": "Eliminar los mensajes de otros usuarios", + "To reset your password, enter the email address linked to your account": "Para reiniciar su contraseña, introduzca el e-mail asociado a su cuenta", + "to restore": "restaurar", + "Cancel": "Cancelar", + "Dismiss": "Omitir", + "powered by Matrix": "con el poder de Matrix", + "Room directory": "Directorio de salas" } diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index c6a86347f5..3cc449b1fc 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -27,21 +27,21 @@ "Saturday": "Szombat", "af": "Afrikaans", "ar-ae": "Arabic (U.A.E.)", - "ar-bh": "Arabic (Bahrain)", - "ar-dz": "Arabic (Algeria)", - "ar-eg": "Arabic (Egypt)", - "ar-iq": "Arabic (Iraq)", - "ar-jo": "Arabic (Jordan)", - "ar-kw": "Arabic (Kuwait)", - "ar-lb": "Arabic (Lebanon)", - "ar-ly": "Arabic (Libya)", - "ar-ma": "Arabic (Morocco)", - "ar-om": "Arabic (Oman)", - "ar-qa": "Arabic (Qatar)", - "ar-sa": "Arabic (Saudi Arabia)", - "ar-sy": "Arabic (Syria)", - "ar-tn": "Arabic (Tunisia)", - "ar-ye": "Arabic (Yemen)", + "ar-bh": "Arab (Bahrain)", + "ar-dz": "Arab (Algeria)", + "ar-eg": "Arab (Egypt)", + "ar-iq": "Arab (Iraq)", + "ar-jo": "Arab (Jordan)", + "ar-kw": "Arab (Kuwait)", + "ar-lb": "Arab (Lebanon)", + "ar-ly": "Arab (Libya)", + "ar-ma": "Arab (Morocco)", + "ar-om": "Arab (Oman)", + "ar-qa": "Arab (Qatar)", + "ar-sa": "Arab (Saudi Arabia)", + "ar-sy": "Arab (Syria)", + "ar-tn": "Arab (Tunisia)", + "ar-ye": "Arab (Yemen)", "be": "Belorusz", "bg": "Bolgár", "ca": "Katalán", @@ -179,5 +179,334 @@ "Create new room": "Új szoba létrehozása", "sb": "Szorb", "rm": "Rétoromán", - "tn": "Tswana" + "tn": "Tswana", + "Close": "Bezár", + "Room directory": "Szobák listája", + "Start chat": "Csevegés indítása", + "Welcome page": "Üdvözlő oldal", + "all room members, from the point they are invited": "minden résztvevő a szobában, amióta meg van hívva", + "all room members, from the point they joined": "minden résztvevő a szobában, amióta csatlakozott", + "and": "és", + "%(items)s and %(remaining)s others": "%(items)s és még: %(remaining)s", + "%(items)s and one other": "%(items)s és még egy", + "%(items)s and %(lastItem)s": "%(items)s és %(lastItem)s", + "and %(overflowCount)s others...": "és még: %(overflowCount)s ...", + "and one other...": "és még egy...", + "%(names)s and %(lastPerson)s are typing": "%(names)s és %(lastPerson)s írnak", + "%(names)s and one other are typing": "%(names)s és még valaki ír", + "%(names)s and %(count)s others are typing": "%(names)s és %(count)s ember ír", + "An email has been sent to": "Az e-mail ide lett küldve:", + "A new password must be entered.": "Új jelszót kell megadni.", + "%(senderName)s answered the call.": "%(senderName)s felvette a telefont.", + "anyone": "bárki", + "An error has occurred.": "Hiba történt.", + "Anyone": "Bárki", + "Anyone who knows the room's link, apart from guests": "A vendégeken kívül bárki aki ismeri a szoba link-jét", + "Anyone who knows the room's link, including guests": "Bárki aki tudja a szoba link-jét, még a vendégek is", + "Are you sure?": "Biztos?", + "Are you sure you want to leave the room '%(roomName)s'?": "Biztos elhagyod a szobát?", + "Are you sure you want to reject the invitation?": "Biztos elutasítod a meghívást?", + "Are you sure you want to upload the following files?": "Biztos feltöltöd ezeket a fájlokat?", + "Attachment": "Csatolmány", + "Autoplay GIFs and videos": "GIF-ek és videók automatikus lejátszása", + "%(senderName)s banned %(targetName)s.": "%(senderName)s kitiltotta őt: %(targetName)s.", + "Ban": "Kitilt", + "Banned users": "Kitiltott felhasználók", + "Bans user with given id": "Kitiltja a felhasználót a megadott ID-vel", + "Blacklisted": "Fekete listára téve", + "Bug Report": "Hiba jelentés", + "Bulk Options": "Tömeges beállítások", + "Call Timeout": "Hívás időtúllépés", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Nem lehet kapcsolódni a saját szerverhez - ellenőrizd a kapcsolatot, biztosítsd, hogy a saját szerver tanúsítványa hiteles legyen, és a böngésző kiterjesztések ne blokkolják a kéréseket.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Nem lehet csatlakozni a saját szerverhez HTTP-n keresztül ha HTTPS van a böngésző címsorában. Vagy használj HTTPS-t vagy engedélyezd a nem biztonságos script-et.", + "Can't load user settings": "A felhasználói beállítások nem tölthetők be", + "Change Password": "Jelszó megváltoztatása", + "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s megváltoztatta a nevét erről: %(oldDisplayName)s erre: %(displayName)s.", + "%(senderName)s changed their profile picture.": "%(senderName)s megváltoztatta a profil képét.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s megváltoztatta a hozzáférési szintjét erre: %(powerLevelDiffText)s.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s megváltoztatta a szoba nevét erre: %(roomName)s.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s törölte a szoba nevét.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s megváltoztatta a témát erre \"%(topic)s\".", + "Changes to who can read history will only apply to future messages in this room": "Változtatások a napló olvasási jogosultságon csak a szoba új üzeneteire fog vonatkozni", + "Changes your display nickname": "Becenév megváltoztatása", + "changing room on a RoomView is not supported": "Szoba nézetben nem lehet szobát váltani", + "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.": "Jelszó megváltoztatása jelenleg alaphelyzetbe állítja a titkosításnál használt kulcsokat minden készüléken, ezzel a régi titkosított üzenetek olvashatatlanok lesznek hacsak először nem mented ki a kulcsokat és újra betöltöd. A jövőben ezen javítunk.", + "Claimed Ed25519 fingerprint key": "Igényelt Ed25519 ujjlenyomat kulcs", + "Clear Cache and Reload": "Gyorsítótár törlése és újratöltés", + "Clear Cache": "Gyorsítótár törlése", + "Click here to join the discussion!": "A beszélgetéshez való csatlakozáshoz kattints ide!", + "Click here to fix": "A javításhoz kattints ide", + "Click to mute audio": "Hang némításhoz kattints ide", + "Click to mute video": "A videó kikapcsoláshoz kattints ide", + "click to reveal": "Megjelenítéshez kattints ide", + "Click to unmute video": "Videó bekapcsoláshoz kattints ide", + "Click to unmute audio": "Hang visszakapcsoláshoz kattints ide", + "Command error": "Parancs hiba", + "Commands": "Parancsok", + "Conference call failed.": "Sikertelen konferencia hívás.", + "Conference calling is in development and may not be reliable.": "Konferencia hívás meg fejlesztés alatt és lehet, hogy nem elég stabil.", + "Conference calls are not supported in encrypted rooms": "Titkosított szobákban a konferencia hívás nem támogatott", + "Conference calls are not supported in this client": "Ez a kliens nem támogatja a konferencia hívást", + "Confirm password": "Jelszó megerősítése", + "Confirm your new password": "Új jelszó megerősítése", + "Could not connect to the integration server": "Az integrációs szerverhez nem lehet kapcsolódni", + "%(count)s new messages.one": "%(count)s új üzenet", + "%(count)s new messages.other": "%(count)s új üzenet", + "Create a new chat or reuse an existing one": "Új csevegés indítása vagy egy meglévő használata", + "Create an account": "Fiók készítése", + "Create Room": "Szoba készítése", + "Cryptography": "Titkosítás", + "Current password": "Jelenlegi jelszó", + "Curve25519 identity key": "Curve25519 azonosítási kulcs", + "Custom": "Egyedi", + "Custom level": "Egyedi szint", + "/ddg is not a command": "/ddg nem egy parancs", + "Deactivate Account": "Fiók zárolása", + "Deactivate my account": "Fiókom felfüggesztése", + "Decline": "Elutasít", + "Decrypt %(text)s": "%(text)s visszafejtése", + "Decryption error": "Visszafejtési hiba", + "Delete": "Töröl", + "demote": "hozzáférési szint csökkentése", + "Default": "Alapértelmezett", + "Device already verified!": "Készülék már ellenőrizve!", + "Device ID": "Készülék azonosító", + "Device ID:": "Készülék azonosító:", + "device id: ": "készülék azonosító: ", + "Device key:": "Készülék kulcs:", + "Devices": "Készülékek", + "Devices will not yet be able to decrypt history from before they joined the room": "A készülékek nem tudják egyenlőre visszafejteni a régebbi üzeneteket mint mikor csatlakoztak a szobához", + "Direct chats": "Közvetlen csevegés", + "Disable Notifications": "Értesítések tiltása", + "disabled": "letiltva", + "Disable inline URL previews by default": "Beágyazott URL előnézet alapértelmezetten tiltva", + "Disable markdown formatting": "Markdown formázás tiltva", + "Disinvite": "Meghívás visszavonása", + "Display name": "Megjelenített név", + "Displays action": "Tevékenységek megjelenítése", + "Don't send typing notifications": "Ne küldjön írás értesítést", + "Download %(text)s": "%(text)s letöltése", + "Drop File Here": "Ide húzd a fájlt", + "Drop here to tag %(section)s": "Húzd ide a címkézéshez: %(section)s", + "Ed25519 fingerprint": "Ed25519 ujjlenyomat", + "Email": "E-mail", + "Email address": "E-mail cím", + "Email address (optional)": "E-mail cím (opcionális)", + "Email, name or matrix ID": "E-mail, név vagy matrix azonosító", + "Emoji": "Emoji", + "Enable encryption": "Titkosítás bekapcsolása", + "Enable Notifications": "Értesítések bekapcsolása", + "enabled": "bekapcsolva", + "Encrypted by a verified device": "Ellenőrzött eszköz által titkosítva", + "Encrypted by an unverified device": "Nem ellenőrzött eszköz által titkosítva", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "A titkosított üzenetek nem láthatók azokon a klienseken amik még nem támogatják a titkosítást", + "Encrypted room": "Titkosított szoba", + "Encryption is enabled in this room": "Ebben a szobában a titkosítás be van kapcsolva", + "Encryption is not enabled in this room": "Ebben a szobában a titkosítás nincs bekapcsolva", + "%(senderName)s ended the call.": "%(senderName)s befejezte a hívást.", + "End-to-end encryption information": "Végponttól végpontig való titkosítási információk", + "End-to-end encryption is in beta and may not be reliable": "Végponttól végpontig tartó titkosítás béta állapotú és lehet, hogy nem megbízható", + "Enter Code": "Kód megadása", + "Enter passphrase": "Jelmondat megadása", + "Error decrypting attachment": "Csatolmány visszafejtése sikertelen", + "Error: Problem communicating with the given homeserver.": "Hiba: Probléma van a saját szerverrel való kommunikációval.", + "Event information": "Esemény információ", + "Existing Call": "Hívás folyamatban", + "Export": "Mentés", + "Export E2E room keys": "E2E szoba kulcsok mentése", + "Failed to ban user": "A felhasználót nem sikerült kizárni", + "Failed to change power level": "A hozzáférési szintet nem sikerült megváltoztatni", + "Failed to delete device": "Eszközt nem sikerült törölni", + "Failed to fetch avatar URL": "Avatar képet nem sikerült letölteni", + "Failed to join room": "A szobába nem sikerült belépni", + "Failed to kick": "Kirúgás nem sikerült", + "Failed to leave room": "A szobát nem sikerült elhagyni", + "Failed to load timeline position": "Az idővonal pozíciót nem sikerült betölteni", + "Failed to lookup current room": "Az aktuális szoba felkeresése sikertelen", + "Failed to mute user": "A felhasználót nem sikerült hallgatásra bírni", + "Failed to register as guest:": "Nem sikerült vendégként regisztrálni:", + "Failed to reject invite": "A meghívót nem sikerült elutasítani", + "Failed to reject invitation": "A meghívót nem sikerült elutasítani", + "Failed to save settings": "A beállításokat nem sikerült elmenteni", + "Failed to send email": "E-mail nem sikerült elküldeni", + "Failed to send request.": "A kérést nem sikerült elküldeni.", + "Failed to set avatar.": "Avatar képet nem sikerült beállítani.", + "Failed to set display name": "Megjelenítési nevet nem sikerült beállítani", + "Failed to set up conference call": "Konferencia hívást nem sikerült elindítani", + "Failed to toggle moderator status": "Moderátor státuszt nem sikerült átállítani", + "Failed to unban": "Kizárás visszavonása sikertelen", + "Failed to upload file": "Fájl feltöltés sikertelen", + "Failed to upload profile picture!": "Profil kép feltöltése sikertelen!", + "Failed to verify email address: make sure you clicked the link in the email": "E-mail cím ellenőrzése sikertelen: ellenőrizd, hogy az e-mailnél lévő linkre rákattintottál", + "Failure to create room": "Szoba létrehozása sikertelen", + "favourite": "kedvenc", + "Favourites": "Kedvencek", + "Fill screen": "Képernyő kitöltése", + "Filter room members": "Szoba tagság szűrése", + "Forget room": "Szoba elfelejtése", + "Forgot your password?": "Elfelejtetted a jelszavad?", + "For security, this session has been signed out. Please sign in again.": "A biztonság érdekében ez a kapcsolat le lesz bontva. Légy szíves jelentkezz be újra.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "A biztonság érdekében a kilépéskor a végponttól végpontig való (E2E) titkosításhoz szükséges kulcsok törlésre kerülnek a böngészőből. Ha a régi üzeneteket továbbra is el szeretnéd olvasni, kérlek mentsed ki a szobákhoz tartozó kulcsot.", + "Found a bug?": "Hibát találtál?", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s : %(fromPowerLevel)s -> %(toPowerLevel)s", + "Guest access is disabled on this Home Server.": "Vendég belépés tiltva van a saját szerveren.", + "Guests can't set avatars. Please register.": "A vendégek nem tudnak avatar képet beállítani. Kérlek regisztrálj.", + "Guest users can't create new rooms. Please register to create room and start a chat.": "Vendégek nem készíthetnek szobákat. Kérlek regisztrálj, hogy szobát tudják nyitni és el tudj kezdeni csevegni.", + "Guest users can't upload files. Please register to upload.": "Vendégek nem tölthetnek fel fájlokat. A feltöltéshez kérlek regisztrálj.", + "Guests can't use labs features. Please register.": "Vendégek nem használhatnak labor funkciókat. Kérlek regisztrálj.", + "Guests cannot join this room even if explicitly invited.": "Vendégek akkor sem csatlakozhatnak ehhez a szobához ha külön meghívók kaptak.", + "had": "van", + "Hangup": "Megszakít", + "Hide read receipts": "Olvasási visszajelzés elrejtése", + "Hide Text Formatting Toolbar": "Szövegformázási menü elrejtése", + "Historical": "Archív", + "Home": "Kezdőlap", + "Homeserver is": "Saját szerver:", + "Identity Server is": "Azonosítási szerver:", + "I have verified my email address": "Ellenőriztem az e-mail címemet", + "Import": "Betöltés", + "Import E2E room keys": "E2E szoba kulcsok betöltése", + "Incoming call from %(name)s": "Beérkező hivás: %(name)s", + "Incoming video call from %(name)s": "Bejövő videóhívás: %(name)s", + "Incoming voice call from %(name)s": "Bejövő hívás: %(name)s", + "Incorrect username and/or password.": "Helytelen felhasználó és/vagy jelszó.", + "Incorrect verification code": "Hibás azonosítási kód", + "Interface Language": "Felhasználói felület nyelve", + "Invalid alias format": "Hibás alternatív név formátum", + "Invalid address format": "Hibás cím formátum", + "Invalid Email Address": "Hibás e-mail cím", + "Invalid file%(extra)s": "Hibás fájl%(extra)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s meghívta: %(targetName)s.", + "Invite new room members": "Új tagok meghívása", + "Invited": "Meghívva", + "Invites": "Meghívók", + "Invites user with given id to current room": "Felhasználó meghívása ebbe a szobába megadott azonosítóval", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' nem megfelelő formátum egy címhez", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' nem megfelelő formátum egy alternatív névhez", + "%(displayName)s is typing": "%(displayName)s ír", + "Sign in with": "Belépés ezzel:", + "Join as voice or video.": "Csatlakozás hanggal vagy videóval.", + "Join Room": "Belépés a szobába", + "joined and left": "be-, és kilépett", + "joined": "belépett", + "%(targetName)s joined the room.": "%(targetName)s belépett a szobába.", + "Joins room with given alias": "A megadott becenévvel belépett a szobába", + "Jump to first unread message.": "Ugrás az első olvasatlan üzenetre.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s kizárta: %(targetName)s.", + "Kick": "Kizár", + "Kicks user with given id": "Az adott azonosítójú felhasználó kizárása", + "Labs": "Labor", + "Last seen": "Utoljára láttuk", + "Leave room": "Szoba elhagyása", + "left and rejoined": "ki-, és belépett", + "left": "kilépett", + "%(targetName)s left the room.": "%(targetName)s elhagyta a szobát.", + "Level:": "Szint:", + "List this room in %(domain)s's room directory?": "%(domain)s szobát feltüntessük a szobák listájában?", + "Local addresses for this room:": "A szoba helyi címe:", + "Logged in as:": "Bejelentkezve mint:", + "Login as guest": "Belépés vendégként", + "Logout": "Kilép", + "Low priority": "Alacsony prioritás", + "%(senderName)s made future room history visible to": "%(senderName)s elérhetővé tette a szoba új üzeneteit nekik:", + "Manage Integrations": "Integrációk kezelése", + "Markdown is disabled": "Markdown kikapcsolva", + "Markdown is enabled": "Markdown engedélyezett", + "matrix-react-sdk version:": "matrix-react-sdk verzió:", + "Members only": "Csak tagoknak", + "Message not sent due to unknown devices being present": "Ismeretlen eszköz miatt az üzenet nem küldhető el", + "Missing room_id in request": "Hiányzó room_id a kérésben", + "Missing user_id in request": "Hiányzó user_id a kérésben", + "Mobile phone number": "Mobil telefonszám", + "Mobile phone number (optional)": "Mobill telefonszám (opcionális)", + "Moderator": "Moderátor", + "Must be viewing a room": "Meg kell nézni a szobát", + "my Matrix ID": "Matrix azonosítóm", + "Name": "Név", + "Never send encrypted messages to unverified devices from this device": "Soha ne küldj titkosított üzenetet ellenőrizetlen eszközre erről az eszközről", + "Never send encrypted messages to unverified devices in this room": "Soha ne küldj titkosított üzenetet ebből a szobából ellenőrizetlen eszközre", + "Never send encrypted messages to unverified devices in this room from this device": "Soha ne küldj titkosított üzenetet ebből a szobából ellenőrizetlen eszközre erről az eszközről", + "New address (e.g. #foo:%(localDomain)s)": "Új cím (e.g. #foo:%(localDomain)s)", + "New Composer & Autocomplete": "Új szerkesztő és automatikus kiegészítés", + "New password": "Új jelszó", + "New passwords don't match": "Az új jelszavak nem egyeznek", + "New passwords must match each other.": "Az új jelszavaknak meg kell egyezniük egymással.", + "none": "semmi", + "not set": "nincs beállítva", + "not specified": "nincs meghatározva", + "(not supported by this browser)": "(ebben a böngészőben nem támogatott)", + "": "", + "NOT verified": "NEM ellenőrzött", + "No devices with registered encryption keys": "Nincs eszköz a regisztrált titkosítási kulcsokhoz", + "No display name": "Nincs megjelenítési név", + "No more results": "Nincs több találat", + "No results": "Nincs találat", + "No users have specific privileges in this room": "Egy felhasználónak sincsenek specifikus jogosultságai ebben a szobában", + "olm version:": "olm verzió:", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Ha egyszer bekapcsolod a titkosítást a szobába utána nem lehet kikapcsolni (egyenlőre)", + "Once you've followed the link it contains, click below": "Miután a linket követted, kattints alulra", + "Only people who have been invited": "Csak akiket meghívtak", + "Otherwise, click here to send a bug report.": "Különben hiba jelentés küldéséhez kattints ide.", + "Password": "Jelszó", + "Password:": "Jelszó:", + "Passwords can't be empty": "A jelszó nem lehet üres", + "People": "Emberek", + "Permissions": "Jogosultságok", + "Phone": "Telefon", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s %(callType)s hívást kezdeményezett.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Ellenőrizd az e-mail-edet és kattints a benne lévő linkre. Ha ez megvan, kattints a folytatásra.", + "Power level must be positive integer.": "A szintnek pozitív egésznek kell lennie.", + "Press": "Nyomd meg", + "Private Chat": "Privát csevegés", + "Privileged Users": "Privilegizált felhasználók", + "Profile": "Profil", + "Public Chat": "Nyilvános csevegés", + "Reason": "Ok", + "Reason: %(reasonText)s": "Ok: %(reasonText)s", + "Revoke Moderator": "Moderátor visszahívása", + "Refer a friend to Riot:": "Ismerős meghívása a Riotba:", + "Register": "Regisztráció", + "rejected": "elutasítva", + "%(targetName)s rejected the invitation.": "%(targetName)s elutasította a meghívót.", + "Reject invitation": "Meghívó elutasítása", + "Rejoin": "Újracsatlakozás", + "Remote addresses for this room:": "A szoba távoli címei:", + "Remove Contact Information?": "Kapcsolat információk törlése?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s törölte a megjelenítési nevet (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s törölte a profil képét.", + "Remove %(threePid)s?": "Töröl: %(threePid)s?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s VoIP konferenciát kezdeményez.", + "Report it": "Jelent", + "restore": "visszaállít", + "Results from DuckDuckGo": "Eredmények a DuckDuckGo-ból", + "Return to app": "Vissza az alkalmazáshoz", + "Return to login screen": "Vissza a bejelentkezési képernyőre", + "Riot does not have permission to send you notifications - please check your browser settings": "Riotnak nincs jogosultsága értesítést küldeni neked - ellenőrizd a böngésző beállításait", + "Riot was not given permission to send notifications - please try again": "Riotnak nincs jogosultsága értesítést küldeni neked - próbáld újra", + "riot-web version:": "riot-web verzió:", + "Room %(roomId)s not visible": "%(roomId)s szoba nem látható", + "Room Colour": "Szoba színe", + "Room contains unknown devices": "A szobában ellenőrizetlen eszközök vannak", + "Room name (optional)": "Szoba neve (opcionális)", + "%(roomName)s does not exist.": "%(roomName)s nem létezik.", + "%(roomName)s is not accessible at this time.": "%(roomName)s jelenleg nem érhető el.", + "Rooms": "Szobák", + "Save": "Mentés", + "Scroll to bottom of page": "Az oldal aljára görget", + "Scroll to unread messages": "Olvasatlan üzenetekhez görget", + "Search failed": "Keresés sikertelen", + "Searches DuckDuckGo for results": "Keresés DuckDuckGo-val", + "Searching known users": "Ismert felhasználók keresése", + "Seen by %(userName)s at %(dateTime)s": "%(userName)s %(dateTime)s időpontban látta", + "Send a message (unencrypted)": "Üzenet küldése (titkosítás nélkül)", + "Send an encrypted message": "Titkosított üzenet küldése", + "Send anyway": "Küld mindenképpen", + "Sender device information": "Küldő eszközének információja", + "Send Invites": "Meghívók elküldése", + "Send Reset Email": "Visszaállítási e-mail küldése", + "sent an image": "kép küldése", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s képet küldött.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s meghívót küldött %(targetDisplayName)s felhasználónak, hogy lépjen be a szobába.", + "sent a video": "videó küldve", + "Server error": "Szerver hiba" } diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index 151acc7d3c..f7f0654276 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -533,7 +533,7 @@ "since they joined": "들어온 이후", "since they were invited": "초대받은 이후", "Some of your messages have not been sent.": "일부 메시지는 보내지 못했어요.", - "Someone": "누군가", + "Someone": "다른 사람", "Sorry, this homeserver is using a login which is not recognised ": "죄송해요, 이 홈 서버는 인식할 수 없는 로그인을 쓰고 있네요 ", "Start a chat": "이야기하기", "Start authentication": "인증하기", @@ -570,15 +570,86 @@ "This room's internal ID is": "방의 내부 ID", "times": "번", "To ban users": "사용자를 차단하기", - "to browse the directory": "목록에서 찾기", + "to browse the directory": "목록에서 찾으려면", "To configure the room": "방을 구성하기", - "to demote": "등급을 낮추기", - "to favourite": "즐겨찾기하기", + "to demote": "등급을 낮추려면", + "to favourite": "즐겨찾기하려면", "To invite users into the room": "방으로 사용자를 초대하기", "To kick users": "사용자를 내쫓기", "To link to a room it must have an address.": "방에 연결하려면 주소가 있어야 해요.", "to make a room or": "방을 만들거나 혹은", "To remove other users' messages": "다른 사용자의 메시지를 지우기", "To reset your password, enter the email address linked to your account": "비밀번호을 다시 설정하려면, 계정과 연결한 이메일 주소를 입력해주세요", - "to restore": "복구하기" + "to restore": "복구하려면", + "To send events of type": "유형 이벤트 보내기", + "To send messages": "메시지 보내기", + "to start a chat with someone": "다른 사람과 이야기하기", + "to tag as %(tagName)s": "%(tagName)s로 지정하려면", + "to tag direct chat": "직접 이야기를 지정하려면", + "To use it, just wait for autocomplete results to load and tab through them.": "이 기능을 사용하시려면, 자동완성 결과가 나오길 기다리신 뒤에 탭으로 움직여주세요.", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "이 방의 타임라인에서 특정 시점을 불러오려고 했지만, 문제의 메시지를 볼 수 있는 권한이 없어요.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "이 방의 타임라인에서 특정 시점을 불러오려고 했지만, 찾을 수 없었어요.", + "Turn Markdown off": "마크다운 끄기", + "Turn Markdown on": "마크다운 켜기", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s님이 종단간 암호화를 켜셨어요 (알고리즘 %(algorithm)s).", + "Unable to add email address": "이메일 주소를 추가할 수 없어요", + "Unable to remove contact information": "연락처를 지울 수 없어요", + "Unable to restore previous session": "이전 세션을 복구할 수 없어요", + "Unable to verify email address.": "이메일 주소를 인증할 수 없어요.", + "Unban": "차단풀기", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s님이 %(targetName)s님의 차단을 푸셨어요.", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "이 이매알 주소가 초대를 받은 계정과 연결된 주소가 맞는지 확인할 수 없어요.", + "Unable to capture screen": "화면을 찍을 수 없어요", + "Unable to enable Notifications": "알림을 켤 수 없어요", + "Unable to load device list": "장치 목록을 불러올 수 없어요", + "Undecryptable": "해독할 수 없는", + "Unencrypted room": "암호화하지 않은 방", + "unencrypted": "암호화하지 않음", + "Unencrypted message": "암호화하지 않은 메시지", + "unknown caller": "알 수 없는 발신자", + "Unknown command": "알 수 없는 명령", + "unknown device": "알 수 없는 장치", + "Unknown room %(roomId)s": "알 수 없는 방 %(roomId)s", + "Unknown (user, device) pair:": "알 수 없는 (사용자, 장치) 연결:", + "unknown": "알 수 없음", + "Unmute": "소리 켜기", + "Unnamed Room": "이름 없는 방", + "Unrecognised command:": "인식 할 수 없는 명령:", + "Unrecognised room alias:": "인식할 수 없는 방 가명:", + "Unverified": "인증하지 않음", + "Uploading %(filename)s and %(count)s others.zero": "%(filename)s 올리는 중", + "Uploading %(filename)s and %(count)s others.one": "%(filename)s 외 %(count)s 올리는 중", + "Uploading %(filename)s and %(count)s others.other": "%(filename)s 외 %(count)s 올리는 중", + "uploaded a file": "파일을 올렸어요", + "Upload avatar": "아바타 올리기", + "Upload Failed": "파일을 올리지 못했어요", + "Upload Files": "파일 올리기", + "Upload file": "파일 올리기", + "Upload new:": "새로 올리기:", + "Usage": "사용", + "Use compact timeline layout": "간단한 타임라인 구성 사용", + "Use with caution": "조심해서 사용", + "User ID": "사용자 ID", + "User Interface": "사용자 인터페이스", + "%(user)s is a": "%(user)s는", + "User name": "사용자 이름", + "Username invalid: %(errMessage)s": "사용자 이름을 인식할 수 없어요: %(errMessage)s", + "Users": "사용자들", + "User": "사용자", + "Verification Pending": "인증을 기다리는 중", + "Verification": "인증", + "verified": "인증함", + "Verified": "인증함", + "Verified key": "인증한 키", + "Video call": "영상통화", + "Voice call": "음성통화", + "VoIP conference finished.": "인터넷전화 회의를 마쳤어요.", + "VoIP conference started.": "인터넷전화 회의를 시작했어요.", + "VoIP is unsupported": "인터넷전화를 지원하지 않아요", + "(could not connect media)": "(미디어에 연결할 수 없어요)", + "(no answer)": "(응답 없음)", + "(unknown failure: %(reason)s)": "(알 수 없는 오류: %(reason)s)", + "(warning: cannot be disabled again!)": "(주의: 다시 끌 수 없어요!)", + "Warning!": "주의!", + "WARNING: Device already verified, but keys do NOT MATCH!": "주의: 장치는 이미 인증했지만, 키가 맞지 않아요!" } diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 7a04d4ca38..04b0514c4d 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -327,5 +327,41 @@ "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", "Set a display name:": "Weergavenaam instellen:", "Set a Display Name": "Weergavenaam instellen", - "Upload an avatar:": "Een avatar uploaden:" + "Upload an avatar:": "Een avatar uploaden:", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Geen verbinding met de thuisserver - controleer je verbinding. Controleer het SSL-certificaat van de thuisserver en browser-extensies die verzoeken kunnen blokkeren.", + "%(count)s new messages.other": "%(count)s nieuwe berichten", + "Create an account": "Open een account", + "Cryptography": "Cryptografie", + "Current password": "Huidig wachtwoord", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName) heeft de naam van de kamer verwijderd.", + "Create a new chat or reuse an existing one": "Maak een nieuwe chat aan of gebruik een reeds bestaande", + "Create Room": "Maak een kamer", + "Curve25519 identity key": "Curve25519 identiteits sleutel", + "/ddg is not a command": "/ddg is geen commando", + "Deactivate Account": "Account Deactiveren", + "Deactivate my account": "Mijn account deactiveren", + "Decline": "Weigeren", + "Decrypt %(text)s": "Ontcijfer %(text)s", + "Decryption error": "Fout bij het ontcijferen", + "Delete": "Verwijderen", + "demote": "degraderen", + "Device already verified!": "Apparaat reeds geverifieerd!", + "Device ID": "Apparaat ID", + "Device ID:": "Apparaat ID:", + "device id: ": "apparaat id: ", + "Device key:": "Apparaat sleutel:", + "Devices": "Apparaten", + "Devices will not yet be able to decrypt history from before they joined the room": "Het apparaat zal nog niet in staat zijn om de geschiedenis van voor het in de kamer is gekomen te ontcijferen", + "Direct chats": "Direct gesprek", + "Disable Notifications": "Notificaties uitschakelen", + "Disable markdown formatting": "Markdown formatering uitschakelen", + "Disinvite": "Uitnodiging terugtrekken", + "Display name": "Weergave naam", + "Don't send typing notifications": "Geen notificatie sturen bij het typen", + "Download %(text)s": "%(text)s Downloaden", + "Drop File Here": "Plaats Bestand Hier", + "Ed25519 fingerprint": "Ed25519 vingerafdruk", + "Email": "E-Post", + "Email address": "E-Post Adress", + "Email address (optional)": "E-Post adress (optioneel)" } diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 26c2986948..8712d310e7 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -50,7 +50,7 @@ "Create Room": "Создайте Комнату", "Cryptography": "Шифрование", "Curve25519 identity key": "Curve25519 идентификационный ключ", - "Deactivate Account": "Деактивировать Учётную запись", + "Deactivate Account": "Деактивировать учётную запись", "Deactivate my account": "Деактивировать мою учётную запись", "decline": "отказаться", "Decryption error": "Ошибка дешифрования", @@ -101,7 +101,7 @@ "invited": "invited", "Invite new room members": "Пригласить новых участников в комнату", "Invites": "Приглашать", - "Invites user with given id to current room": "Пригласить пользователя с данным id в текущую комнату", + "Invites user with given id to current room": "Пригласить пользователя с данным ID в текущую комнату", "is a": "является", "Sign in with": "Я хочу регистрироваться с", "joined and left": "присоединенный и оставленный", @@ -470,7 +470,7 @@ "Failed to ban user": "Не удалось забанить пользователя", "Failed to change power level": "Не удалось изменить уровень привилегий", "Failed to delete device": "Не удалось удалить устройство", - "Failed to forget room %(errCode)s": "Не удалось забыть комнату %(errCode)s", + "Failed to forget room %(errCode)s": "Не удалось удалить комнату %(errCode)s", "Failed to join room": "Не удалось присоединиться к комнате", "Failed to join the room": "Не удалось войти в комнату", "Access Token:": "Токен:", @@ -523,7 +523,7 @@ "No results": "Нет результатов", "OK": "ОК", "Only people who have been invited": "Только приглашённые люди", - "Passwords can't be empty": "Пароли не могут быть пустыми", + "Passwords can't be empty": "Поля паролей не могут быть пустыми", "%(senderName)s placed a %(callType)s call.": "%(senderName) выполнил %(callType) вызов.", "Please check your email and click on the link it contains. Once this is done, click continue.": "Пожалуйста, проверьте вашу электронную почту и нажмите в ней ссылку. По завершении нажмите продолжить.", "Power level must be positive integer.": "Уровень силы должен быть положительным числом.", @@ -686,7 +686,7 @@ "Custom level": "Пользовательский уровень", "Device already verified!": "Устройство уже верифицировано!", "Device ID:": "ID устройства:", - "device id: ": "id устройства: ", + "device id: ": "ID устройства: ", "Device key:": "Ключ устройства:", "disabled": "отключено", "Disable markdown formatting": "Отключить форматирование Markdown", diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index dd8112fa11..4af2a6e311 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -151,5 +151,9 @@ "zh-hk": "традиційна китайська (Гонконг)", "zh-sg": "спрощена китайська (Сингапур)", "zh-tw": "традиційна китайська (Тайвань)", - "zu": "зулу" + "zu": "зулу", + "a room": "кімната", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Текстове повідомлення було надіслано +%(msisdn)s. Введіть, будь ласка, код підтвердження з цього повідомлення", + "Accept": "Прийняти", + "Account": "Обліковка" } diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index ad37ce9430..9fdc7a0b42 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -352,5 +352,9 @@ "Password:": "密码:", "Passwords can't be empty": "密码不能为空", "Permissions": "权限", - "Phone": "电话" + "Phone": "电话", + "Cancel": "取消", + "Create new room": "创建新房间", + "Custom Server Options": "自定义服务器选项", + "Dismiss": "设为已读" } From 217f44900c03aa3e76281fe7dcd346eaeb9edae7 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Mon, 19 Jun 2017 00:08:24 +0100 Subject: [PATCH 131/481] fix broken vars --- src/i18n/strings/ru.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 8712d310e7..e12f8528b2 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -355,7 +355,7 @@ "Friday": "Пятница", "Saturday": "Суббота", "Sunday": "Воскресенье", - "%(weekDayName)s %(time)s": "%(weekDayName) %(time)", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", "Upload an avatar:": "Загрузите аватар:", "You need to be logged in.": "Вы должны быть авторизованы.", "You need to be able to invite users to do that.": "Вам необходимо пригласить пользователей чтобы сделать это.", @@ -946,8 +946,8 @@ "Would you like to accept or decline this invitation?": "Хотели бы вы подтвердить это приглашение или отклонить?", "(~%(count)s results).one": "(~%(count)s Результат)", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Не удается подключиться к домашнему серверу - проверьте подключение, убедитесь, что ваш сертификат SSL homeserver's SSL certificate действителен, и расширение браузера не блокирует запросы.", - "You have been banned from %(roomName)s by %(userName)s.": "%(userName) забанил Вас в % (roomName).", - "You have been kicked from %(roomName)s by %(userName)s.": "%(userName) выгнал Вас из %(roomName).", + "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s забанил Вас в %(roomName)s.", + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s выгнал Вас из %(roomName)s.", "You may wish to login with a different account, or add this email to this account.": "Вы можете войти в систему с другой учетной записью или добавить этот адрес email в эту учетную запись.", "Your home server does not support device management.": "Ваш домашний сервер не поддерживает управление устройствами.", "(could not connect media)": "(не удается подключиться к медиа)", From 869329e78ae9d3217ed1f27f96f867981b3a87ea Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Mon, 19 Jun 2017 00:11:34 +0100 Subject: [PATCH 132/481] fix broken i18n --- src/i18n/strings/el.json | 8 ++++---- src/i18n/strings/hu.json | 2 +- src/i18n/strings/nl.json | 2 +- src/i18n/strings/ru.json | 4 ++-- src/i18n/strings/sv.json | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index eb25cd9e16..cdfb558f3a 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -839,13 +839,13 @@ "Share message history with new users": "Διαμοιρασμός ιστορικού μηνυμάτων με τους νέους χρήστες", "numbullet": "απαρίθμηση", "%(severalUsers)sleft and rejoined %(repeats)s times": "%(severalUsers)s έφυγαν και ξανασυνδέθηκαν %(repeats)s φορές", - "%(oneUser)sleft and rejoined %(repeats)s times": "%(severalUsers)s έφυγε και ξανασυνδέθηκε %(repeats)s φορές", + "%(oneUser)sleft and rejoined %(repeats)s times": "%(oneUser)s έφυγε και ξανασυνδέθηκε %(repeats)s φορές", "%(severalUsers)sleft and rejoined": "%(severalUsers)s έφυγαν και ξανασυνδέθηκαν", - "%(oneUser)sleft and rejoined": "%(severalUsers)s έφυγε και ξανασυνδέθηκε", + "%(oneUser)sleft and rejoined": "%(oneUser)s έφυγε και ξανασυνδέθηκε", "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "Οι %(severalUsers)s απέσυραν τις προσκλήσεις τους %(repeats)s φορές", - "%(oneUser)shad their invitation withdrawn %(repeats)s times": "Ο %(severalUsers)s απέσυρε την πρόσκληση του %(repeats)s φορές", + "%(oneUser)shad their invitation withdrawn %(repeats)s times": "Ο %(oneUser)s απέσυρε την πρόσκληση του %(repeats)s φορές", "%(severalUsers)shad their invitations withdrawn": "Οι %(severalUsers)s απέσυραν τις προσκλήσεις τους", - "%(oneUser)shad their invitation withdrawn": "Ο %(severalUsers)s απέσυρε την πρόσκληση του", + "%(oneUser)shad their invitation withdrawn": "Ο %(oneUser)s απέσυρε την πρόσκληση του", "You must join the room to see its files": "Πρέπει να συνδεθείτε στο δωμάτιο για να δείτε τα αρχεία του", "Reject all %(invitedRooms)s invites": "Απόρριψη όλων των προσκλήσεων %(invitedRooms)s", "Failed to invite the following users to the %(roomName)s room:": "Δεν ήταν δυνατή η πρόσκληση των χρηστών στο δωμάτιο %(roomName)s:", diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 3cc449b1fc..696a548b4a 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -204,7 +204,7 @@ "Anyone who knows the room's link, apart from guests": "A vendégeken kívül bárki aki ismeri a szoba link-jét", "Anyone who knows the room's link, including guests": "Bárki aki tudja a szoba link-jét, még a vendégek is", "Are you sure?": "Biztos?", - "Are you sure you want to leave the room '%(roomName)s'?": "Biztos elhagyod a szobát?", + "Are you sure you want to leave the room '%(roomName)s'?": "Biztos elhagyod a szobát '%(roomName)s'?", "Are you sure you want to reject the invitation?": "Biztos elutasítod a meghívást?", "Are you sure you want to upload the following files?": "Biztos feltöltöd ezeket a fájlokat?", "Attachment": "Csatolmány", diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 04b0514c4d..1c1d27c42b 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -333,7 +333,7 @@ "Create an account": "Open een account", "Cryptography": "Cryptografie", "Current password": "Huidig wachtwoord", - "%(senderDisplayName)s removed the room name.": "%(senderDisplayName) heeft de naam van de kamer verwijderd.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s heeft de naam van de kamer verwijderd.", "Create a new chat or reuse an existing one": "Maak een nieuwe chat aan of gebruik een reeds bestaande", "Create Room": "Maak een kamer", "Curve25519 identity key": "Curve25519 identiteits sleutel", diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index e12f8528b2..d69282a07e 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -246,7 +246,7 @@ "Failed to set up conference call": "Не удалось установить конференц-вызов", "Failed to verify email address: make sure you clicked the link in the email": "Не удалось подтвердить email-адрес: убедитесь что вы щелкнули по ссылке электронной почты", "Failure to create room": "Не удалось создать комнату", - "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId) изменил %(fromPowerLevel) на %(toPowerLevel)", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s изменил %(fromPowerLevel)s на %(toPowerLevel)s", "Guest users can't create new rooms. Please register to create room and start a chat.": "Гостевые пользователи не могут создавать новые комнаты. Зарегистрируйтесь для создания комнаты и чата.", "click to reveal": "нажать для открытия", "%(senderName)s invited %(targetName)s.": "%(senderName)s приглашает %(targetName)s.", @@ -524,7 +524,7 @@ "OK": "ОК", "Only people who have been invited": "Только приглашённые люди", "Passwords can't be empty": "Поля паролей не могут быть пустыми", - "%(senderName)s placed a %(callType)s call.": "%(senderName) выполнил %(callType) вызов.", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s выполнил %(callType)s вызов.", "Please check your email and click on the link it contains. Once this is done, click continue.": "Пожалуйста, проверьте вашу электронную почту и нажмите в ней ссылку. По завершении нажмите продолжить.", "Power level must be positive integer.": "Уровень силы должен быть положительным числом.", "Press": "Нажать", diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index fe8b1ffee1..21bda3b741 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -296,7 +296,7 @@ "Active call (%(roomName)s)": "Aktiv samtal (%(roomName)s)", "Add": "Lägg till", "Admin tools": "Admin verktyg", - "And %(count)s more...": "Och %(count) till...", + "And %(count)s more...": "Och %(count)s till...", "Alias (optional)": "Alias (valfri)", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Det gick inte att ansluta till servern - kontrollera anslutningen, försäkra att din hemservers TLS-certifikat är betrott, och att inget webbläsartillägg blockerar förfrågningar.", "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s ändrade maktnivån av %(powerLevelDiffText)s.", From c1ce12ef96e181a3eba1b0e7cc7859ab1e911711 Mon Sep 17 00:00:00 2001 From: Nathan van Beelen Date: Mon, 19 Jun 2017 10:06:07 +0000 Subject: [PATCH 133/481] Translated using Weblate (Dutch) Currently translated at 55.0% (499 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nl/ --- src/i18n/strings/nl.json | 165 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 152 insertions(+), 13 deletions(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 04b0514c4d..dee54d9c97 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -228,7 +228,7 @@ "Dismiss": "Afwijzen", "Drop here %(toAction)s": "%(toAction)s hier naartoe verplaatsen", "Error": "Fout", - "Failed to forget room %(errCode)s": "Kamer vergeten mislukt %(errCode)s", + "Failed to forget room %(errCode)s": "Ruimte vergeten mislukt %(errCode)s", "Failed to join the room": "Kamer binnengaan mislukt", "Favourite": "Favoriet", "Mute": "Dempen", @@ -268,8 +268,8 @@ "No display name": "Geen weergavenaam", "No more results": "Geen resultaten meer", "No results": "Geen resultaten", - "No users have specific privileges in this room": "Geen gebruikers me specifieke privileges in deze kamer", - "olm version:": "olm-versie:", + "No users have specific privileges in this room": "Geen gebruikers hebben specifieke privileges in deze ruimte", + "olm version:": "olm versie:", "Password": "Wachtwoord", "Password:": "Wachtwoord:", "Passwords can't be empty": "Wachtwoorden kunnen niet leeg zijn", @@ -336,13 +336,13 @@ "%(senderDisplayName)s removed the room name.": "%(senderDisplayName) heeft de naam van de kamer verwijderd.", "Create a new chat or reuse an existing one": "Maak een nieuwe chat aan of gebruik een reeds bestaande", "Create Room": "Maak een kamer", - "Curve25519 identity key": "Curve25519 identiteits sleutel", + "Curve25519 identity key": "Curve25519 identiteitssleutel", "/ddg is not a command": "/ddg is geen commando", "Deactivate Account": "Account Deactiveren", "Deactivate my account": "Mijn account deactiveren", "Decline": "Weigeren", - "Decrypt %(text)s": "Ontcijfer %(text)s", - "Decryption error": "Fout bij het ontcijferen", + "Decrypt %(text)s": "Ontsleutel %(text)s", + "Decryption error": "Fout bij het ontsleutelen", "Delete": "Verwijderen", "demote": "degraderen", "Device already verified!": "Apparaat reeds geverifieerd!", @@ -351,17 +351,156 @@ "device id: ": "apparaat id: ", "Device key:": "Apparaat sleutel:", "Devices": "Apparaten", - "Devices will not yet be able to decrypt history from before they joined the room": "Het apparaat zal nog niet in staat zijn om de geschiedenis van voor het in de kamer is gekomen te ontcijferen", - "Direct chats": "Direct gesprek", + "Devices will not yet be able to decrypt history from before they joined the room": "Apparaten kunnen nog niet de geschiedenis van voordat ze de ruimte betraden ontsleutelen", + "Direct chats": "Privégesprekken", "Disable Notifications": "Notificaties uitschakelen", - "Disable markdown formatting": "Markdown formatering uitschakelen", + "Disable markdown formatting": "Opmaak formatering uitschakelen", "Disinvite": "Uitnodiging terugtrekken", - "Display name": "Weergave naam", + "Display name": "Weergavenaam", "Don't send typing notifications": "Geen notificatie sturen bij het typen", "Download %(text)s": "%(text)s Downloaden", "Drop File Here": "Plaats Bestand Hier", "Ed25519 fingerprint": "Ed25519 vingerafdruk", - "Email": "E-Post", - "Email address": "E-Post Adress", - "Email address (optional)": "E-Post adress (optioneel)" + "Email": "E-mail", + "Email address": "E-mailadres", + "Email address (optional)": "E-mailadres (optioneel)", + "Claimed Ed25519 fingerprint key": "Vereiste Ed25519 vingerafdruk sleutel", + "Custom": "Aangepast", + "Custom level": "Aangepast niveau", + "Deops user with given id": "Ontmachtigd gebruiker met het gegeven id", + "Default": "Standaard", + "Disable inline URL previews by default": "URL voorvertoning standaard uitschakelen", + "Displays action": "Weergeeft actie", + "Drop here to tag %(section)s": "Hiernaartoe verplaatsen om %(section)s te etiketteren", + "Email, name or matrix ID": "E-mail, naam of matrix ID", + "Emoji": "Emoticon", + "Enable encryption": "Versleuteling inschakelen", + "Enable Notifications": "Notificaties inschakelen", + "enabled": "ingeschakeld", + "Encrypted by a verified device": "Versleuteld bij een geverifieerd apparaat", + "Encrypted by an unverified device": "Versleuteld bij een niet geverifieerd apparaat", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Versleutelde berichten zullen nog niet zichtbaar zijn op applicaties die geen versleuteling ondersteunen", + "Encrypted room": "Versleutelde ruimte", + "Encryption is enabled in this room": "Versleuteling is ingeschakeld in deze ruimte", + "Encryption is not enabled in this room": "Versleuteling is niet ingeschakeld in deze ruimte", + "%(senderName)s ended the call.": "%(senderName)s heeft opgehangen.", + "End-to-end encryption information": "Eind-tot-eind versleuteling informatie", + "End-to-end encryption is in beta and may not be reliable": "Eind-tot-eind versleuteling is nog in beta en kan onbetrouwbaar zijn", + "Enter Code": "Voer code in", + "Enter passphrase": "Voer wachtzin in", + "Error decrypting attachment": "Fout tijdens het ontsleutelen van de bijlage", + "Error: Problem communicating with the given homeserver.": "Fout: Er doet zich een probleem voor met het communiceren met de gegeven thuisserver.", + "Event information": "Gebeurtenis informatie", + "Existing Call": "Bestaande oproep", + "Export": "Exporteren", + "Export E2E room keys": "Exporteer E2E ruimte sleutels", + "Failed to ban user": "Niet gelukt om de gebruiker te verbannen", + "Failed to change power level": "Niet gelukt om het machtsniveau te wijzigen", + "Failed to delete device": "Niet gelukt om het apparaat te verwijderen", + "Failed to fetch avatar URL": "Niet gelukt om de avatar URL op te halen", + "Failed to join room": "Niet gelukt om tot de ruimte toe te treden", + "Failed to leave room": "Niet gelukt om de ruimte te verlaten", + "Failed to load timeline position": "Niet gelukt om de tijdlijn positie te laden", + "Failed to lookup current room": "Niet gelukt om de huidige ruimte op te zoeken", + "Failed to mute user": "Niet gelukt om de gebruiker te dempen", + "Failed to register as guest:": "Niet gelukt om als gast te registreren:", + "Failed to reject invite": "Niet gelukt om de uitnodiging te weigeren", + "Failed to reject invitation": "Niet gelukt om de uitnodiging te weigeren", + "Failed to save settings": "Niet gelukt om de instellingen op te slaan", + "Failed to send email": "Niet gelukt om de e-mail te versturen", + "Failed to send request.": "Niet gelukt om het verzoek te versturen.", + "Failed to set avatar.": "Niet gelukt om de avatar in te stellen.", + "Failed to set display name": "Niet gelukt om de weergavenaam in te stellen", + "Failed to set up conference call": "Niet gelukt om een vergadergesprek te maken", + "Failed to toggle moderator status": "Niet gelukt om de moderator status te veranderen", + "Failed to unban": "Niet gelukt om te ontbannen", + "Failed to upload file": "Niet gelukt om het bestand te uploaden", + "Failed to upload profile picture!": "Niet gelukt om een profiel foto te uploaden!", + "Failed to verify email address: make sure you clicked the link in the email": "Niet gelukt om het e-mailadres te verifiëren: wees er zeker van dat je de link in de e-mail hebt aangeklikt", + "Failure to create room": "Het aanmaken van een ruimte is mislukt", + "favourite": "favoriet", + "Favourites": "Favorieten", + "Fill screen": "Scherm vullen", + "Filter room members": "Ruimte leden filteren", + "Forget room": "Ruimte vergeten", + "Forgot your password?": "Wachtwoord vergeten?", + "For security, this session has been signed out. Please sign in again.": "Voor veiligheidsredenen is deze sessie uitgelogd. Log alsjeblieft opnieuw in.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "In verband met veiligheidsredenen zullen alle eind-tot-eind versleutelingssleutels van deze browser verwijderd worden. Als je je gespreksgeschiedenis van toekomstige Riot sessies wilt kunnen ontsleutelen, exporteer en bewaar dan de ruimte sleutels.", + "Found a bug?": "Een fout gevonden?", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s van %(fromPowerLevel)s naar %(toPowerLevel)s", + "Guest access is disabled on this Home Server.": "Gast toegang is uitgeschakeld op deze thuisserver.", + "Guests can't set avatars. Please register.": "Gasten kunnen geen avatars instellen. Registreer je alsjeblieft.", + "Guest users can't create new rooms. Please register to create room and start a chat.": "Gast gebruikers kunnen geen nieuwe ruimtes aanmaken. Registreer je om een nieuwe ruimte aan te maken en een gesprek te starten.", + "Guest users can't upload files. Please register to upload.": "Gast gebruikers kunnen geen bestanden uploaden. Registreer je om te uploaden.", + "Guests can't use labs features. Please register.": "Gasten kunnen geen labs mogelijkheden gebruiken. Registreer je alsjeblieft.", + "Guests cannot join this room even if explicitly invited.": "Gasten kunnen niet tot deze ruimte toetreden, zelfs als ze expliciet uitgenodigd zijn.", + "had": "had", + "Hangup": "Ophangen", + "Hide read receipts": "Leesbewijzen verbergen", + "Hide Text Formatting Toolbar": "Tekst formaterings-gereedschapsbalk verbergen", + "Historical": "Historische", + "Home": "Home", + "Homeserver is": "Thuisserver is", + "Identity Server is": "Identiteitsserver is", + "I have verified my email address": "Ik heb mijn e-mailadres geverifieerd", + "Import": "Importeren", + "Import E2E room keys": "E2E ruimte sleutels importeren", + "Incoming call from %(name)s": "Inkomende oproep van %(name)s", + "Incoming video call from %(name)s": "Inkomende video-oproep van %(name)s", + "Incoming voice call from %(name)s": "Inkomende spraakoproep van %(name)s", + "Incorrect username and/or password.": "Incorrecte gebruikersnaam en/of wachtwoord.", + "Incorrect verification code": "Incorrecte verificatie code", + "Interface Language": "Interface Taal", + "Invalid alias format": "Ongeldig naam formaat", + "Invalid address format": "Ongeldig adres formaat", + "Invalid Email Address": "Ongeldig e-mailadres", + "Invalid file%(extra)s": "Ongeldig bestand%(extra)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s heeft %(targetName)s uitgenodigd.", + "Invite new room members": "Nieuwe ruimte leden uitnodigen", + "Invited": "Uitgenodigd", + "Invites": "Uitnodigingen", + "Invites user with given id to current room": "Nodigt de gebruiker met het gegeven id uit in de huidige ruimte", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' is niet een geldig formaat voor een adres", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' is niet een geldig formaat voor een naam", + "%(displayName)s is typing": "%(displayName)s is aan het typen", + "Sign in with": "Inloggen met", + "Join as voice or video.": "Toetreden als spraak of video.", + "Join Room": "Ruimte toetreden", + "joined and left": "Toegetreden en verlaten", + "joined": "Toegetreden", + "%(targetName)s joined the room.": "%(targetName)s in de ruimte toegetreden.", + "Joins room with given alias": "Treed de ruimte toe met een gegeven naam", + "Jump to first unread message.": "Spring naar het eerste ongelezen bericht.", + "Labs": "Labs", + "Last seen": "Laatst gezien", + "Leave room": "Ruimte verlaten", + "left and rejoined": "verlaten en opnieuw toegetreden", + "left": "verlaten", + "%(targetName)s left the room.": "%(targetName)s heeft de ruimte verlaten.", + "Level:": "Niveau:", + "List this room in %(domain)s's room directory?": "Deze ruimte in %(domain)s's ruimte catalogus vermelden?", + "Local addresses for this room:": "Lokale adressen voor deze ruimte:", + "Logged in as:": "Ingelogd als:", + "Login as guest": "Als gast inloggen", + "Logout": "Uitloggen", + "Low priority": "Lage prioriteit", + "%(senderName)s made future room history visible to": "%(senderName)s heeft de toekomstige ruimte geschiedenis zichtbaar gemaakt voor", + "Manage Integrations": "Integraties beheren", + "Markdown is disabled": "Opmaak is uitgeschakeld", + "Markdown is enabled": "Opmaak ingeschakeld", + "matrix-react-sdk version:": "matrix-react-sdk versie:", + "Members only": "Alleen leden", + "Message not sent due to unknown devices being present": "Bericht niet verzonden doordat er een onbekende apparaten aanwezig zijn", + "Missing room_id in request": "Het room_id mist in het verzoek", + "Missing user_id in request": "De user_id mist in het verzoek", + "Mobile phone number": "Mobiel telefoonnummer", + "Mobile phone number (optional)": "Mobiel telefoonnummer (optioneel)", + "Never send encrypted messages to unverified devices from this device": "Nooit versleutelde berichten vanaf dit apparaat naar niet geverifieerde apparaten versturen", + "Never send encrypted messages to unverified devices in this room": "Nooit versleutelde berichten naar niet geverifieerde apparaten sturen in deze ruimte", + "Never send encrypted messages to unverified devices in this room from this device": "Nooit vanaf dit apparaat versleutelde berichten naar niet geverifieerde apparaten in deze ruimte sturen", + "New address (e.g. #foo:%(localDomain)s)": "Nieuw adres (bijv. #foo:%(localDomain)s)", + "New Composer & Autocomplete": "Nieuwe Componist & Automatisch Aanvullen", + "New passwords don't match": "Nieuwe wachtwoorden komen niet overeen", + "New passwords must match each other.": "Nieuwe wachtwoorden moeten overeenkomen.", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Zodra versleuteling in een kamer is ingeschakeld kan het niet meer worden uitgeschakeld (voor nu)" } From 1d958dd12007e4621a2211015f00dce5fa807281 Mon Sep 17 00:00:00 2001 From: Bamstam Date: Mon, 19 Jun 2017 08:31:12 +0000 Subject: [PATCH 134/481] Translated using Weblate (German) Currently translated at 100.0% (906 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 44 ++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 47553e8b94..a4ac23581d 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -28,7 +28,7 @@ "Decryption error": "Entschlüsselungs Fehler", "Session ID": "Sitzungs-ID", "End-to-end encryption information": "Ende-zu-Ende-Verschlüsselungs-Informationen", - "Event information": "Ereignis-Informationen", + "Event information": "Ereignis-Information", "Sender device information": "Absender Geräte Informationen", "Displays action": "Zeigt Aktionen an", "Bans user with given id": "Schließt den Benutzer mit der angegebenen ID dauerhaft aus dem Raum aus", @@ -78,7 +78,7 @@ "Click here": "Hier klicken,", "Confirm your new password": "Neues Passwort bestätigen", "Continue": "Fortfahren", - "Create an account": "Erstelle einen Account", + "Create an account": "Benutzerkonto erstellen", "Create Room": "Raum erstellen", "Cryptography": "Verschlüsselung", "Deactivate Account": "Benutzerkonto deaktivieren", @@ -172,7 +172,7 @@ "Permissions": "Berechtigungen", "Phone": "Telefon", "placed a": "plazierte einen", - "Please check your email and click on the link it contains. Once this is done, click continue.": "Bitte prüfen sie ihre E-Mails und klicken sie auf den enthaltenden Link. Anschließend klicke auf \"Fortsetzen\".", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Bitte prüfe deinen E-Mail-Posteingang und klicke auf den in der E-Mail enthaltenen Link. Anschließend auf \"Fortsetzen\" klicken.", "Please Register": "Bitte registrieren", "Privacy warning": "Datenschutzwarnung", "Privileged Users": "Privilegierte Nutzer", @@ -219,7 +219,7 @@ "This doesn't appear to be a valid email address": "Dies scheint keine gültige E-Mail-Adresse zu sein", "this invitation?": "diese Einladung?", "This is a preview of this room. Room interactions have been disabled": "Dies ist eine Vorschau dieses Raumes. Raum-Interaktionen wurden deaktiviert", - "This room is not accessible by remote Matrix servers": "Andere Matrix-Server können auf diesen Raum nicht zugreifen", + "This room is not accessible by remote Matrix servers": "Remote-Matrix-Server können auf diesen Raum nicht zugreifen", "This room's internal ID is": "Die interne ID dieses Raumes ist", "To ban users": "Um Benutzer dauerhaft aus dem Raum auszuschließen", "To configure the room": "Um den Raum zu konfigurieren", @@ -252,7 +252,7 @@ "Upload file": "Datei hochladen", "User Interface": "Benutzeroberfläche", "User name": "Nutzername", - "Users": "Nutzer", + "Users": "Benutzer", "User": "Nutzer", "Verification Pending": "Verifizierung ausstehend", "Video call": "Video-Anruf", @@ -319,7 +319,7 @@ "Mar": "Mrz", "Apr": "April", "May": "Mai", - "Jun": "Juni", + "Jun": "Jun", "Jul": "Juli", "Aug": "Aug", "Sep": "Sep", @@ -339,7 +339,7 @@ "User names may only contain letters, numbers, dots, hyphens and underscores.": "Benutzernamen dürfen nur Buchstaben, Nummern, Punkte, Binde- und Unterstriche enthalten.", "An unknown error occurred.": "Ein unbekannter Fehler ist aufgetreten.", "I already have an account": "Ich habe bereits einen Account", - "An error occurred: %(error_string)s": "Ein Fehler trat auf: %(error_string)s", + "An error occurred: %(error_string)s": "Ein Fehler ist aufgetreten: %(error_string)s", "Topic": "Thema", "Make this room private": "Mache diesen Raum privat", "Share message history with new users": "Bisherigen Chatverlauf mit neuen Nutzern teilen", @@ -416,14 +416,14 @@ "Drop here %(toAction)s": "Hierher ziehen: %(toAction)s", "Drop here to tag %(section)s": "Hierher ziehen: %(section)s taggen", "Press": "Drücke", - "tag as %(tagName)s": "als %(tagName)s taggen", + "tag as %(tagName)s": "als %(tagName)s markieren", "to browse the directory": "um das Raum-Verzeichnis zu durchsuchen", "to demote": "um das Berechtigungslevel herabzusetzen", "to favourite": "zum Favorisieren", "to make a room or": "um einen Raum zu erstellen, oder", "to restore": "zum wiederherstellen", "to start a chat with someone": "um einen Chat mit jemandem zu starten", - "to tag direct chat": "als direkten Chat markieren", + "to tag direct chat": "als Direkt-Chat markieren", "You're not in any rooms yet! Press": "Du bist noch keinem Raum beigetreten! Drücke", "click to reveal": "Klicke zum anzeigen", "To remove other users' messages": "Um Nachrichten anderer Nutzer zu verbergen", @@ -672,13 +672,13 @@ "%(severalUsers)srejected their invitations": "%(severalUsers)shaben ihre Einladung abgelehnt", "%(oneUser)srejected their invitation": "%(oneUser)shat die Einladung abgelehnt", "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)szogen ihre Einladungen %(repeats)s mal zurück", - "%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)szog seine/ihre Einladung %(repeats)s mal zurück", + "%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)swurde die Einladung %(repeats)s mal wieder entzogen", "%(severalUsers)shad their invitations withdrawn": "%(severalUsers)szogen ihre Einladungen zurück", "%(oneUser)shad their invitation withdrawn": "%(oneUser)swurde die ursprüngliche Einladung wieder entzogen", "were invited %(repeats)s times": "wurden %(repeats)s mal eingeladen", "was invited %(repeats)s times": "wurde %(repeats)s mal eingeladen", "were invited": "wurden eingeladen", - "were banned %(repeats)s times": "wurden %(repeats)s mal aus dem Raum ausgeschlossen", + "were banned %(repeats)s times": "wurden %(repeats)s mal dauerhaft aus dem Raum ausgeschlossen", "was banned %(repeats)s times": "wurde %(repeats)s mal aus dem Raum ausgeschlossen", "were banned": "wurden dauerhaft aus dem Raum ausgeschlossen", "were unbanned %(repeats)s times": "wurden %(repeats)s mal vom dauerhaften Ausschluss aus dem Raum befreit", @@ -726,7 +726,7 @@ "Remove %(threePid)s?": "%(threePid)s entfernen?", "Please select the destination room for this message": "Bitte den Raum auswählen, an den diese Nachricht gesendet werden soll", "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s hat den Raum-Namen gelöscht.", - "Passphrases must match": "Passphrase muss übereinstimmen", + "Passphrases must match": "Passphrases müssen übereinstimmen", "Passphrase must not be empty": "Passphrase darf nicht leer sein", "Export room keys": "Raum-Schlüssel exportieren", "Enter passphrase": "Passphrase eingeben", @@ -735,12 +735,12 @@ "You must join the room to see its files": "Du musst dem Raum beitreten, um die Raum-Dateien sehen zu können", "Reject all %(invitedRooms)s invites": "Alle %(invitedRooms)s Einladungen ablehnen", "Start new Chat": "Starte neuen Chat", - "Guest users can't invite users. Please register.": "Gäste können keine Nutzer einladen. Bitte registrieren.", + "Guest users can't invite users. Please register.": "Gäste können keine Benutzer einladen. Bitte registrieren.", "Failed to invite": "Einladen fehlgeschlagen", "Failed to invite user": "Einladen des Nutzers fehlgeschlagen", "Confirm Removal": "Entfernen bestätigen", "Unknown error": "Unbekannter Fehler", - "Incorrect password": "Inkorrektes Passwort", + "Incorrect password": "Ungültiges Passwort", "This action is irreversible.": "Diese Aktion kann nicht rückgängig gemacht werden.", "To continue, please enter your password.": "Zum fortfahren bitte Passwort eingeben.", "Device name": "Geräte-Name", @@ -781,7 +781,7 @@ "Image '%(Body)s' cannot be displayed.": "Das Bild '%(Body)s' kann nicht angezeigt werden.", "This image cannot be displayed.": "Dieses Bild kann nicht angezeigt werden.", "Error decrypting video": "Video-Entschlüsselung fehlgeschlagen", - "Import room keys": "Importiere Raum-Schlüssel", + "Import room keys": "Raum-Schlüssel importieren", "File to import": "Zu importierende Datei", "Failed to invite the following users to the %(roomName)s room:": "Das Einladen der folgenden Nutzer in den Raum \"%(roomName)s\" ist fehlgeschlagen:", "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Bist du sicher, dass du dieses Ereignis entfernen (löschen) möchtest? Wenn du die Änderung eines Raum-Namens oder eines Raum-Themas löscht, kann dies dazu führen, dass die ursprüngliche Änderung rückgängig gemacht wird.", @@ -849,7 +849,7 @@ "Anyone": "Jeder", "Are you sure you want to leave the room '%(roomName)s'?": "Bist du sicher, dass du den Raum '%(roomName)s' verlassen willst?", "Custom level": "Benutzerdefiniertes Berechtigungslevel", - "Device ID:": "Geräte-ID:", + "Device ID:": "Geräte-Kennung:", "device id: ": "Geräte-ID: ", "Device key:": "Geräte-Schlüssel:", "Email address (optional)": "E-Mail-Adresse (optional)", @@ -861,9 +861,9 @@ "Setting a user name will create a fresh account": "Die Eingabe eines Benutzernamens wird ein neues Konto erzeugen", "Tagged as: ": "Markiert als: ", "This Home Server does not support login using email address.": "Dieser Heimserver unterstützt den Login mittels E-Mail-Adresse nicht.", - "There was a problem logging in.": "Es gab ein Problem beim anmelden.", + "There was a problem logging in.": "Beim Anmelden ist ein Problem aufgetreten.", "Unknown (user, device) pair:": "Unbekanntes (Nutzer-/Gerät-)Paar:", - "Remote addresses for this room:": "Entfernte Raum-Adressen für diesen Raum:", + "Remote addresses for this room:": "Remote-Adressen für diesen Raum:", "Unrecognised command:": "Unbekannter Befehl:", "Unrecognised room alias:": "Unbekannter Raum-Alias:", "Use compact timeline layout": "Nutze kompaktes Zeitstrahl-Layout", @@ -872,7 +872,7 @@ "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!": "WARNUNG: SCHLÜSSEL-VERIFIZIERUNG FEHLGESCHLAGEN! Der Signatur-Schlüssel für %(userId)s und Gerät %(deviceId)s ist \"%(fprint)s\" welche nicht dem bereitgestellten Schlüssel \"%(fingerprint)s\" übereinstimmen. Dies kann bedeuten, dass deine Kommunikation abgefangen wird!", "You have disabled URL previews by default.": "Du hast die URL-Vorschau standardmäßig deaktiviert.", "You have enabled URL previews by default.": "Du hast die URL-Vorschau standardmäßig aktiviert.", - "You have entered an invalid contact. Try using their Matrix ID or email address.": "Du hast einen ungültigen Kontakt eingegeben. Versuche es mit der Matrix-ID oder der E-Mail-Adresse.", + "You have entered an invalid contact. Try using their Matrix ID or email address.": "Du hast einen ungültigen Kontakt eingegeben. Versuche es mit der Matrix-Kennung oder der E-Mail-Adresse des Kontakts.", "$senderDisplayName changed the room avatar to ": "$senderDisplayName hat das Raum-Bild geändert zu ", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s hat das Raum-Bild für %(roomName)s geändert", "Hide removed messages": "Gelöschte Nachrichten verbergen", @@ -922,12 +922,12 @@ "Drop File Here": "Lasse Datei hier los", "Enable Notifications": "Benachrichtigungen aktivieren", "Encrypted by a verified device": "Von einem vertrauten Gerät verschlüsselt", - "Encrypted by an unverified device": "Von einem nicht vertrauten Gerät verschlüsselt", + "Encrypted by an unverified device": "Von einem nicht verifizierten Gerät verschlüsselt", "Failed to upload profile picture!": "Hochladen des Profilbild's fehlgeschlagen!", "Incoming call from %(name)s": "Eingehender Anruf von %(name)s", "Incoming video call from %(name)s": "Eingehender Video-Anruf von %(name)s", "Incoming voice call from %(name)s": "Eingehender Sprach-Anruf von %(name)s", - "Join as voice or video.": "Mit Sprache oder Video beitreten.", + "Join as voice or video.": "Per Sprachanruf oder Videoanruf beitreten.", "Last seen": "Zuletzt gesehen", "Level:": "Level:", "No display name": "Kein Anzeigename", @@ -961,7 +961,7 @@ "Would you like to accept or decline this invitation?": "Möchtest du diese Einladung akzeptieren oder ablehnen?", "You have been banned from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s dauerhaft aus dem Raum %(roomName)s ausgeschlossen.", "You have been kicked from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s aus dem Raum %(roomName)s entfernt.", - "You may wish to login with a different account, or add this email to this account.": "Du möchtest dich evtl. mit einem anderen Konto anmelden oder diese E-Mail-Adresse diesem Konto hinzufügen.", + "You may wish to login with a different account, or add this email to this account.": "Du möchtest dich eventuell mit einem anderen Konto anmelden oder alternativ diese E-Mail-Adresse diesem Konto hinzufügen.", "Your home server does not support device management.": "Dein Heimserver unterstützt kein Geräte-Management.", "(~%(count)s results).one": "(~%(count)s Ergebnis)", "(~%(count)s results).other": "(~%(count)s Ergebnis)", From bfd5f1b09a1a22f0195b59c439ed40361a9b6cdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Magr=C3=AD?= Date: Sun, 18 Jun 2017 22:47:48 +0000 Subject: [PATCH 135/481] Translated using Weblate (Spanish) Currently translated at 68.9% (625 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/ --- src/i18n/strings/es.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index c8b14b0022..f7506b946d 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -622,5 +622,14 @@ "Cancel": "Cancelar", "Dismiss": "Omitir", "powered by Matrix": "con el poder de Matrix", - "Room directory": "Directorio de salas" + "Room directory": "Directorio de salas", + "Custom Server Options": "Opciones de Servidor Personalizado", + "unknown error code": "Código de error desconocido", + "Sunday": "Domingo", + "Monday": "Lunes", + "Tuesday": "Martes", + "Wednesday": "Miércoles", + "Thursday": "Jueves", + "Friday": "Viernes", + "Saturday": "Sábado" } From 11e03645052f492e5316bfd3de87c97f81b5c523 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 19 Jun 2017 11:27:48 +0100 Subject: [PATCH 136/481] Merge pull request #1117 from RiotTranslateBot/weblate-riot-web-matrix-react-sdk Update from Weblate. --- src/i18n/strings/de_DE.json | 44 +++++----- src/i18n/strings/es.json | 11 ++- src/i18n/strings/nl.json | 165 +++++++++++++++++++++++++++++++++--- 3 files changed, 184 insertions(+), 36 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 47553e8b94..a4ac23581d 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -28,7 +28,7 @@ "Decryption error": "Entschlüsselungs Fehler", "Session ID": "Sitzungs-ID", "End-to-end encryption information": "Ende-zu-Ende-Verschlüsselungs-Informationen", - "Event information": "Ereignis-Informationen", + "Event information": "Ereignis-Information", "Sender device information": "Absender Geräte Informationen", "Displays action": "Zeigt Aktionen an", "Bans user with given id": "Schließt den Benutzer mit der angegebenen ID dauerhaft aus dem Raum aus", @@ -78,7 +78,7 @@ "Click here": "Hier klicken,", "Confirm your new password": "Neues Passwort bestätigen", "Continue": "Fortfahren", - "Create an account": "Erstelle einen Account", + "Create an account": "Benutzerkonto erstellen", "Create Room": "Raum erstellen", "Cryptography": "Verschlüsselung", "Deactivate Account": "Benutzerkonto deaktivieren", @@ -172,7 +172,7 @@ "Permissions": "Berechtigungen", "Phone": "Telefon", "placed a": "plazierte einen", - "Please check your email and click on the link it contains. Once this is done, click continue.": "Bitte prüfen sie ihre E-Mails und klicken sie auf den enthaltenden Link. Anschließend klicke auf \"Fortsetzen\".", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Bitte prüfe deinen E-Mail-Posteingang und klicke auf den in der E-Mail enthaltenen Link. Anschließend auf \"Fortsetzen\" klicken.", "Please Register": "Bitte registrieren", "Privacy warning": "Datenschutzwarnung", "Privileged Users": "Privilegierte Nutzer", @@ -219,7 +219,7 @@ "This doesn't appear to be a valid email address": "Dies scheint keine gültige E-Mail-Adresse zu sein", "this invitation?": "diese Einladung?", "This is a preview of this room. Room interactions have been disabled": "Dies ist eine Vorschau dieses Raumes. Raum-Interaktionen wurden deaktiviert", - "This room is not accessible by remote Matrix servers": "Andere Matrix-Server können auf diesen Raum nicht zugreifen", + "This room is not accessible by remote Matrix servers": "Remote-Matrix-Server können auf diesen Raum nicht zugreifen", "This room's internal ID is": "Die interne ID dieses Raumes ist", "To ban users": "Um Benutzer dauerhaft aus dem Raum auszuschließen", "To configure the room": "Um den Raum zu konfigurieren", @@ -252,7 +252,7 @@ "Upload file": "Datei hochladen", "User Interface": "Benutzeroberfläche", "User name": "Nutzername", - "Users": "Nutzer", + "Users": "Benutzer", "User": "Nutzer", "Verification Pending": "Verifizierung ausstehend", "Video call": "Video-Anruf", @@ -319,7 +319,7 @@ "Mar": "Mrz", "Apr": "April", "May": "Mai", - "Jun": "Juni", + "Jun": "Jun", "Jul": "Juli", "Aug": "Aug", "Sep": "Sep", @@ -339,7 +339,7 @@ "User names may only contain letters, numbers, dots, hyphens and underscores.": "Benutzernamen dürfen nur Buchstaben, Nummern, Punkte, Binde- und Unterstriche enthalten.", "An unknown error occurred.": "Ein unbekannter Fehler ist aufgetreten.", "I already have an account": "Ich habe bereits einen Account", - "An error occurred: %(error_string)s": "Ein Fehler trat auf: %(error_string)s", + "An error occurred: %(error_string)s": "Ein Fehler ist aufgetreten: %(error_string)s", "Topic": "Thema", "Make this room private": "Mache diesen Raum privat", "Share message history with new users": "Bisherigen Chatverlauf mit neuen Nutzern teilen", @@ -416,14 +416,14 @@ "Drop here %(toAction)s": "Hierher ziehen: %(toAction)s", "Drop here to tag %(section)s": "Hierher ziehen: %(section)s taggen", "Press": "Drücke", - "tag as %(tagName)s": "als %(tagName)s taggen", + "tag as %(tagName)s": "als %(tagName)s markieren", "to browse the directory": "um das Raum-Verzeichnis zu durchsuchen", "to demote": "um das Berechtigungslevel herabzusetzen", "to favourite": "zum Favorisieren", "to make a room or": "um einen Raum zu erstellen, oder", "to restore": "zum wiederherstellen", "to start a chat with someone": "um einen Chat mit jemandem zu starten", - "to tag direct chat": "als direkten Chat markieren", + "to tag direct chat": "als Direkt-Chat markieren", "You're not in any rooms yet! Press": "Du bist noch keinem Raum beigetreten! Drücke", "click to reveal": "Klicke zum anzeigen", "To remove other users' messages": "Um Nachrichten anderer Nutzer zu verbergen", @@ -672,13 +672,13 @@ "%(severalUsers)srejected their invitations": "%(severalUsers)shaben ihre Einladung abgelehnt", "%(oneUser)srejected their invitation": "%(oneUser)shat die Einladung abgelehnt", "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)szogen ihre Einladungen %(repeats)s mal zurück", - "%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)szog seine/ihre Einladung %(repeats)s mal zurück", + "%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)swurde die Einladung %(repeats)s mal wieder entzogen", "%(severalUsers)shad their invitations withdrawn": "%(severalUsers)szogen ihre Einladungen zurück", "%(oneUser)shad their invitation withdrawn": "%(oneUser)swurde die ursprüngliche Einladung wieder entzogen", "were invited %(repeats)s times": "wurden %(repeats)s mal eingeladen", "was invited %(repeats)s times": "wurde %(repeats)s mal eingeladen", "were invited": "wurden eingeladen", - "were banned %(repeats)s times": "wurden %(repeats)s mal aus dem Raum ausgeschlossen", + "were banned %(repeats)s times": "wurden %(repeats)s mal dauerhaft aus dem Raum ausgeschlossen", "was banned %(repeats)s times": "wurde %(repeats)s mal aus dem Raum ausgeschlossen", "were banned": "wurden dauerhaft aus dem Raum ausgeschlossen", "were unbanned %(repeats)s times": "wurden %(repeats)s mal vom dauerhaften Ausschluss aus dem Raum befreit", @@ -726,7 +726,7 @@ "Remove %(threePid)s?": "%(threePid)s entfernen?", "Please select the destination room for this message": "Bitte den Raum auswählen, an den diese Nachricht gesendet werden soll", "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s hat den Raum-Namen gelöscht.", - "Passphrases must match": "Passphrase muss übereinstimmen", + "Passphrases must match": "Passphrases müssen übereinstimmen", "Passphrase must not be empty": "Passphrase darf nicht leer sein", "Export room keys": "Raum-Schlüssel exportieren", "Enter passphrase": "Passphrase eingeben", @@ -735,12 +735,12 @@ "You must join the room to see its files": "Du musst dem Raum beitreten, um die Raum-Dateien sehen zu können", "Reject all %(invitedRooms)s invites": "Alle %(invitedRooms)s Einladungen ablehnen", "Start new Chat": "Starte neuen Chat", - "Guest users can't invite users. Please register.": "Gäste können keine Nutzer einladen. Bitte registrieren.", + "Guest users can't invite users. Please register.": "Gäste können keine Benutzer einladen. Bitte registrieren.", "Failed to invite": "Einladen fehlgeschlagen", "Failed to invite user": "Einladen des Nutzers fehlgeschlagen", "Confirm Removal": "Entfernen bestätigen", "Unknown error": "Unbekannter Fehler", - "Incorrect password": "Inkorrektes Passwort", + "Incorrect password": "Ungültiges Passwort", "This action is irreversible.": "Diese Aktion kann nicht rückgängig gemacht werden.", "To continue, please enter your password.": "Zum fortfahren bitte Passwort eingeben.", "Device name": "Geräte-Name", @@ -781,7 +781,7 @@ "Image '%(Body)s' cannot be displayed.": "Das Bild '%(Body)s' kann nicht angezeigt werden.", "This image cannot be displayed.": "Dieses Bild kann nicht angezeigt werden.", "Error decrypting video": "Video-Entschlüsselung fehlgeschlagen", - "Import room keys": "Importiere Raum-Schlüssel", + "Import room keys": "Raum-Schlüssel importieren", "File to import": "Zu importierende Datei", "Failed to invite the following users to the %(roomName)s room:": "Das Einladen der folgenden Nutzer in den Raum \"%(roomName)s\" ist fehlgeschlagen:", "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Bist du sicher, dass du dieses Ereignis entfernen (löschen) möchtest? Wenn du die Änderung eines Raum-Namens oder eines Raum-Themas löscht, kann dies dazu führen, dass die ursprüngliche Änderung rückgängig gemacht wird.", @@ -849,7 +849,7 @@ "Anyone": "Jeder", "Are you sure you want to leave the room '%(roomName)s'?": "Bist du sicher, dass du den Raum '%(roomName)s' verlassen willst?", "Custom level": "Benutzerdefiniertes Berechtigungslevel", - "Device ID:": "Geräte-ID:", + "Device ID:": "Geräte-Kennung:", "device id: ": "Geräte-ID: ", "Device key:": "Geräte-Schlüssel:", "Email address (optional)": "E-Mail-Adresse (optional)", @@ -861,9 +861,9 @@ "Setting a user name will create a fresh account": "Die Eingabe eines Benutzernamens wird ein neues Konto erzeugen", "Tagged as: ": "Markiert als: ", "This Home Server does not support login using email address.": "Dieser Heimserver unterstützt den Login mittels E-Mail-Adresse nicht.", - "There was a problem logging in.": "Es gab ein Problem beim anmelden.", + "There was a problem logging in.": "Beim Anmelden ist ein Problem aufgetreten.", "Unknown (user, device) pair:": "Unbekanntes (Nutzer-/Gerät-)Paar:", - "Remote addresses for this room:": "Entfernte Raum-Adressen für diesen Raum:", + "Remote addresses for this room:": "Remote-Adressen für diesen Raum:", "Unrecognised command:": "Unbekannter Befehl:", "Unrecognised room alias:": "Unbekannter Raum-Alias:", "Use compact timeline layout": "Nutze kompaktes Zeitstrahl-Layout", @@ -872,7 +872,7 @@ "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!": "WARNUNG: SCHLÜSSEL-VERIFIZIERUNG FEHLGESCHLAGEN! Der Signatur-Schlüssel für %(userId)s und Gerät %(deviceId)s ist \"%(fprint)s\" welche nicht dem bereitgestellten Schlüssel \"%(fingerprint)s\" übereinstimmen. Dies kann bedeuten, dass deine Kommunikation abgefangen wird!", "You have disabled URL previews by default.": "Du hast die URL-Vorschau standardmäßig deaktiviert.", "You have enabled URL previews by default.": "Du hast die URL-Vorschau standardmäßig aktiviert.", - "You have entered an invalid contact. Try using their Matrix ID or email address.": "Du hast einen ungültigen Kontakt eingegeben. Versuche es mit der Matrix-ID oder der E-Mail-Adresse.", + "You have entered an invalid contact. Try using their Matrix ID or email address.": "Du hast einen ungültigen Kontakt eingegeben. Versuche es mit der Matrix-Kennung oder der E-Mail-Adresse des Kontakts.", "$senderDisplayName changed the room avatar to ": "$senderDisplayName hat das Raum-Bild geändert zu ", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s hat das Raum-Bild für %(roomName)s geändert", "Hide removed messages": "Gelöschte Nachrichten verbergen", @@ -922,12 +922,12 @@ "Drop File Here": "Lasse Datei hier los", "Enable Notifications": "Benachrichtigungen aktivieren", "Encrypted by a verified device": "Von einem vertrauten Gerät verschlüsselt", - "Encrypted by an unverified device": "Von einem nicht vertrauten Gerät verschlüsselt", + "Encrypted by an unverified device": "Von einem nicht verifizierten Gerät verschlüsselt", "Failed to upload profile picture!": "Hochladen des Profilbild's fehlgeschlagen!", "Incoming call from %(name)s": "Eingehender Anruf von %(name)s", "Incoming video call from %(name)s": "Eingehender Video-Anruf von %(name)s", "Incoming voice call from %(name)s": "Eingehender Sprach-Anruf von %(name)s", - "Join as voice or video.": "Mit Sprache oder Video beitreten.", + "Join as voice or video.": "Per Sprachanruf oder Videoanruf beitreten.", "Last seen": "Zuletzt gesehen", "Level:": "Level:", "No display name": "Kein Anzeigename", @@ -961,7 +961,7 @@ "Would you like to accept or decline this invitation?": "Möchtest du diese Einladung akzeptieren oder ablehnen?", "You have been banned from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s dauerhaft aus dem Raum %(roomName)s ausgeschlossen.", "You have been kicked from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s aus dem Raum %(roomName)s entfernt.", - "You may wish to login with a different account, or add this email to this account.": "Du möchtest dich evtl. mit einem anderen Konto anmelden oder diese E-Mail-Adresse diesem Konto hinzufügen.", + "You may wish to login with a different account, or add this email to this account.": "Du möchtest dich eventuell mit einem anderen Konto anmelden oder alternativ diese E-Mail-Adresse diesem Konto hinzufügen.", "Your home server does not support device management.": "Dein Heimserver unterstützt kein Geräte-Management.", "(~%(count)s results).one": "(~%(count)s Ergebnis)", "(~%(count)s results).other": "(~%(count)s Ergebnis)", diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index c8b14b0022..f7506b946d 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -622,5 +622,14 @@ "Cancel": "Cancelar", "Dismiss": "Omitir", "powered by Matrix": "con el poder de Matrix", - "Room directory": "Directorio de salas" + "Room directory": "Directorio de salas", + "Custom Server Options": "Opciones de Servidor Personalizado", + "unknown error code": "Código de error desconocido", + "Sunday": "Domingo", + "Monday": "Lunes", + "Tuesday": "Martes", + "Wednesday": "Miércoles", + "Thursday": "Jueves", + "Friday": "Viernes", + "Saturday": "Sábado" } diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 1c1d27c42b..e7a9f6e4b6 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -228,7 +228,7 @@ "Dismiss": "Afwijzen", "Drop here %(toAction)s": "%(toAction)s hier naartoe verplaatsen", "Error": "Fout", - "Failed to forget room %(errCode)s": "Kamer vergeten mislukt %(errCode)s", + "Failed to forget room %(errCode)s": "Ruimte vergeten mislukt %(errCode)s", "Failed to join the room": "Kamer binnengaan mislukt", "Favourite": "Favoriet", "Mute": "Dempen", @@ -268,8 +268,8 @@ "No display name": "Geen weergavenaam", "No more results": "Geen resultaten meer", "No results": "Geen resultaten", - "No users have specific privileges in this room": "Geen gebruikers me specifieke privileges in deze kamer", - "olm version:": "olm-versie:", + "No users have specific privileges in this room": "Geen gebruikers hebben specifieke privileges in deze ruimte", + "olm version:": "olm versie:", "Password": "Wachtwoord", "Password:": "Wachtwoord:", "Passwords can't be empty": "Wachtwoorden kunnen niet leeg zijn", @@ -336,13 +336,13 @@ "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s heeft de naam van de kamer verwijderd.", "Create a new chat or reuse an existing one": "Maak een nieuwe chat aan of gebruik een reeds bestaande", "Create Room": "Maak een kamer", - "Curve25519 identity key": "Curve25519 identiteits sleutel", + "Curve25519 identity key": "Curve25519 identiteitssleutel", "/ddg is not a command": "/ddg is geen commando", "Deactivate Account": "Account Deactiveren", "Deactivate my account": "Mijn account deactiveren", "Decline": "Weigeren", - "Decrypt %(text)s": "Ontcijfer %(text)s", - "Decryption error": "Fout bij het ontcijferen", + "Decrypt %(text)s": "Ontsleutel %(text)s", + "Decryption error": "Fout bij het ontsleutelen", "Delete": "Verwijderen", "demote": "degraderen", "Device already verified!": "Apparaat reeds geverifieerd!", @@ -351,17 +351,156 @@ "device id: ": "apparaat id: ", "Device key:": "Apparaat sleutel:", "Devices": "Apparaten", - "Devices will not yet be able to decrypt history from before they joined the room": "Het apparaat zal nog niet in staat zijn om de geschiedenis van voor het in de kamer is gekomen te ontcijferen", - "Direct chats": "Direct gesprek", + "Devices will not yet be able to decrypt history from before they joined the room": "Apparaten kunnen nog niet de geschiedenis van voordat ze de ruimte betraden ontsleutelen", + "Direct chats": "Privégesprekken", "Disable Notifications": "Notificaties uitschakelen", - "Disable markdown formatting": "Markdown formatering uitschakelen", + "Disable markdown formatting": "Opmaak formatering uitschakelen", "Disinvite": "Uitnodiging terugtrekken", - "Display name": "Weergave naam", + "Display name": "Weergavenaam", "Don't send typing notifications": "Geen notificatie sturen bij het typen", "Download %(text)s": "%(text)s Downloaden", "Drop File Here": "Plaats Bestand Hier", "Ed25519 fingerprint": "Ed25519 vingerafdruk", - "Email": "E-Post", - "Email address": "E-Post Adress", - "Email address (optional)": "E-Post adress (optioneel)" + "Email": "E-mail", + "Email address": "E-mailadres", + "Email address (optional)": "E-mailadres (optioneel)", + "Claimed Ed25519 fingerprint key": "Vereiste Ed25519 vingerafdruk sleutel", + "Custom": "Aangepast", + "Custom level": "Aangepast niveau", + "Deops user with given id": "Ontmachtigd gebruiker met het gegeven id", + "Default": "Standaard", + "Disable inline URL previews by default": "URL voorvertoning standaard uitschakelen", + "Displays action": "Weergeeft actie", + "Drop here to tag %(section)s": "Hiernaartoe verplaatsen om %(section)s te etiketteren", + "Email, name or matrix ID": "E-mail, naam of matrix ID", + "Emoji": "Emoticon", + "Enable encryption": "Versleuteling inschakelen", + "Enable Notifications": "Notificaties inschakelen", + "enabled": "ingeschakeld", + "Encrypted by a verified device": "Versleuteld bij een geverifieerd apparaat", + "Encrypted by an unverified device": "Versleuteld bij een niet geverifieerd apparaat", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Versleutelde berichten zullen nog niet zichtbaar zijn op applicaties die geen versleuteling ondersteunen", + "Encrypted room": "Versleutelde ruimte", + "Encryption is enabled in this room": "Versleuteling is ingeschakeld in deze ruimte", + "Encryption is not enabled in this room": "Versleuteling is niet ingeschakeld in deze ruimte", + "%(senderName)s ended the call.": "%(senderName)s heeft opgehangen.", + "End-to-end encryption information": "Eind-tot-eind versleuteling informatie", + "End-to-end encryption is in beta and may not be reliable": "Eind-tot-eind versleuteling is nog in beta en kan onbetrouwbaar zijn", + "Enter Code": "Voer code in", + "Enter passphrase": "Voer wachtzin in", + "Error decrypting attachment": "Fout tijdens het ontsleutelen van de bijlage", + "Error: Problem communicating with the given homeserver.": "Fout: Er doet zich een probleem voor met het communiceren met de gegeven thuisserver.", + "Event information": "Gebeurtenis informatie", + "Existing Call": "Bestaande oproep", + "Export": "Exporteren", + "Export E2E room keys": "Exporteer E2E ruimte sleutels", + "Failed to ban user": "Niet gelukt om de gebruiker te verbannen", + "Failed to change power level": "Niet gelukt om het machtsniveau te wijzigen", + "Failed to delete device": "Niet gelukt om het apparaat te verwijderen", + "Failed to fetch avatar URL": "Niet gelukt om de avatar URL op te halen", + "Failed to join room": "Niet gelukt om tot de ruimte toe te treden", + "Failed to leave room": "Niet gelukt om de ruimte te verlaten", + "Failed to load timeline position": "Niet gelukt om de tijdlijn positie te laden", + "Failed to lookup current room": "Niet gelukt om de huidige ruimte op te zoeken", + "Failed to mute user": "Niet gelukt om de gebruiker te dempen", + "Failed to register as guest:": "Niet gelukt om als gast te registreren:", + "Failed to reject invite": "Niet gelukt om de uitnodiging te weigeren", + "Failed to reject invitation": "Niet gelukt om de uitnodiging te weigeren", + "Failed to save settings": "Niet gelukt om de instellingen op te slaan", + "Failed to send email": "Niet gelukt om de e-mail te versturen", + "Failed to send request.": "Niet gelukt om het verzoek te versturen.", + "Failed to set avatar.": "Niet gelukt om de avatar in te stellen.", + "Failed to set display name": "Niet gelukt om de weergavenaam in te stellen", + "Failed to set up conference call": "Niet gelukt om een vergadergesprek te maken", + "Failed to toggle moderator status": "Niet gelukt om de moderator status te veranderen", + "Failed to unban": "Niet gelukt om te ontbannen", + "Failed to upload file": "Niet gelukt om het bestand te uploaden", + "Failed to upload profile picture!": "Niet gelukt om een profiel foto te uploaden!", + "Failed to verify email address: make sure you clicked the link in the email": "Niet gelukt om het e-mailadres te verifiëren: wees er zeker van dat je de link in de e-mail hebt aangeklikt", + "Failure to create room": "Het aanmaken van een ruimte is mislukt", + "favourite": "favoriet", + "Favourites": "Favorieten", + "Fill screen": "Scherm vullen", + "Filter room members": "Ruimte leden filteren", + "Forget room": "Ruimte vergeten", + "Forgot your password?": "Wachtwoord vergeten?", + "For security, this session has been signed out. Please sign in again.": "Voor veiligheidsredenen is deze sessie uitgelogd. Log alsjeblieft opnieuw in.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "In verband met veiligheidsredenen zullen alle eind-tot-eind versleutelingssleutels van deze browser verwijderd worden. Als je je gespreksgeschiedenis van toekomstige Riot sessies wilt kunnen ontsleutelen, exporteer en bewaar dan de ruimte sleutels.", + "Found a bug?": "Een fout gevonden?", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s van %(fromPowerLevel)s naar %(toPowerLevel)s", + "Guest access is disabled on this Home Server.": "Gast toegang is uitgeschakeld op deze thuisserver.", + "Guests can't set avatars. Please register.": "Gasten kunnen geen avatars instellen. Registreer je alsjeblieft.", + "Guest users can't create new rooms. Please register to create room and start a chat.": "Gast gebruikers kunnen geen nieuwe ruimtes aanmaken. Registreer je om een nieuwe ruimte aan te maken en een gesprek te starten.", + "Guest users can't upload files. Please register to upload.": "Gast gebruikers kunnen geen bestanden uploaden. Registreer je om te uploaden.", + "Guests can't use labs features. Please register.": "Gasten kunnen geen labs mogelijkheden gebruiken. Registreer je alsjeblieft.", + "Guests cannot join this room even if explicitly invited.": "Gasten kunnen niet tot deze ruimte toetreden, zelfs als ze expliciet uitgenodigd zijn.", + "had": "had", + "Hangup": "Ophangen", + "Hide read receipts": "Leesbewijzen verbergen", + "Hide Text Formatting Toolbar": "Tekst formaterings-gereedschapsbalk verbergen", + "Historical": "Historische", + "Home": "Home", + "Homeserver is": "Thuisserver is", + "Identity Server is": "Identiteitsserver is", + "I have verified my email address": "Ik heb mijn e-mailadres geverifieerd", + "Import": "Importeren", + "Import E2E room keys": "E2E ruimte sleutels importeren", + "Incoming call from %(name)s": "Inkomende oproep van %(name)s", + "Incoming video call from %(name)s": "Inkomende video-oproep van %(name)s", + "Incoming voice call from %(name)s": "Inkomende spraakoproep van %(name)s", + "Incorrect username and/or password.": "Incorrecte gebruikersnaam en/of wachtwoord.", + "Incorrect verification code": "Incorrecte verificatie code", + "Interface Language": "Interface Taal", + "Invalid alias format": "Ongeldig naam formaat", + "Invalid address format": "Ongeldig adres formaat", + "Invalid Email Address": "Ongeldig e-mailadres", + "Invalid file%(extra)s": "Ongeldig bestand%(extra)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s heeft %(targetName)s uitgenodigd.", + "Invite new room members": "Nieuwe ruimte leden uitnodigen", + "Invited": "Uitgenodigd", + "Invites": "Uitnodigingen", + "Invites user with given id to current room": "Nodigt de gebruiker met het gegeven id uit in de huidige ruimte", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' is niet een geldig formaat voor een adres", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' is niet een geldig formaat voor een naam", + "%(displayName)s is typing": "%(displayName)s is aan het typen", + "Sign in with": "Inloggen met", + "Join as voice or video.": "Toetreden als spraak of video.", + "Join Room": "Ruimte toetreden", + "joined and left": "Toegetreden en verlaten", + "joined": "Toegetreden", + "%(targetName)s joined the room.": "%(targetName)s in de ruimte toegetreden.", + "Joins room with given alias": "Treed de ruimte toe met een gegeven naam", + "Jump to first unread message.": "Spring naar het eerste ongelezen bericht.", + "Labs": "Labs", + "Last seen": "Laatst gezien", + "Leave room": "Ruimte verlaten", + "left and rejoined": "verlaten en opnieuw toegetreden", + "left": "verlaten", + "%(targetName)s left the room.": "%(targetName)s heeft de ruimte verlaten.", + "Level:": "Niveau:", + "List this room in %(domain)s's room directory?": "Deze ruimte in %(domain)s's ruimte catalogus vermelden?", + "Local addresses for this room:": "Lokale adressen voor deze ruimte:", + "Logged in as:": "Ingelogd als:", + "Login as guest": "Als gast inloggen", + "Logout": "Uitloggen", + "Low priority": "Lage prioriteit", + "%(senderName)s made future room history visible to": "%(senderName)s heeft de toekomstige ruimte geschiedenis zichtbaar gemaakt voor", + "Manage Integrations": "Integraties beheren", + "Markdown is disabled": "Opmaak is uitgeschakeld", + "Markdown is enabled": "Opmaak ingeschakeld", + "matrix-react-sdk version:": "matrix-react-sdk versie:", + "Members only": "Alleen leden", + "Message not sent due to unknown devices being present": "Bericht niet verzonden doordat er een onbekende apparaten aanwezig zijn", + "Missing room_id in request": "Het room_id mist in het verzoek", + "Missing user_id in request": "De user_id mist in het verzoek", + "Mobile phone number": "Mobiel telefoonnummer", + "Mobile phone number (optional)": "Mobiel telefoonnummer (optioneel)", + "Never send encrypted messages to unverified devices from this device": "Nooit versleutelde berichten vanaf dit apparaat naar niet geverifieerde apparaten versturen", + "Never send encrypted messages to unverified devices in this room": "Nooit versleutelde berichten naar niet geverifieerde apparaten sturen in deze ruimte", + "Never send encrypted messages to unverified devices in this room from this device": "Nooit vanaf dit apparaat versleutelde berichten naar niet geverifieerde apparaten in deze ruimte sturen", + "New address (e.g. #foo:%(localDomain)s)": "Nieuw adres (bijv. #foo:%(localDomain)s)", + "New Composer & Autocomplete": "Nieuwe Componist & Automatisch Aanvullen", + "New passwords don't match": "Nieuwe wachtwoorden komen niet overeen", + "New passwords must match each other.": "Nieuwe wachtwoorden moeten overeenkomen.", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Zodra versleuteling in een kamer is ingeschakeld kan het niet meer worden uitgeschakeld (voor nu)" } From 9d89bfe26437a52f96ea4443cb57082f53335aea Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Mon, 19 Jun 2017 11:36:15 +0100 Subject: [PATCH 137/481] Fix jitsi logo references --- src/components/structures/ModularWidgets.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/structures/ModularWidgets.js b/src/components/structures/ModularWidgets.js index 314d273103..7beeba157c 100644 --- a/src/components/structures/ModularWidgets.js +++ b/src/components/structures/ModularWidgets.js @@ -14,13 +14,13 @@ class ModularWidgets { }, { type: 'jitsi', - icon: 'http://localhost:8000/static/jitsi.png', + icon: 'http://localhost:8000/static/jitsi.svg', name: 'jitsi', description: 'Jitsi video conference', }, { type: 'vrdemo', - icon: 'http://localhost:8000/static/jitsi.png', + icon: 'http://localhost:8000/static/jitsi.svg', name: 'vrdemo', description: 'Matrix VR Demo', }, From f676b58c00d10f2865b035bee9744326e910f06c Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Mon, 19 Jun 2017 11:47:03 +0100 Subject: [PATCH 138/481] Add google ardboard logo --- src/components/structures/ModularWidgets.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/structures/ModularWidgets.js b/src/components/structures/ModularWidgets.js index 7beeba157c..7d08401d52 100644 --- a/src/components/structures/ModularWidgets.js +++ b/src/components/structures/ModularWidgets.js @@ -20,7 +20,7 @@ class ModularWidgets { }, { type: 'vrdemo', - icon: 'http://localhost:8000/static/jitsi.svg', + icon: 'http://localhost:8000/static/cardboard.png', name: 'vrdemo', description: 'Matrix VR Demo', }, From faeb40bc0fb1cd0790ae6c292a4d6e18ebf00e02 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 19 Jun 2017 12:00:53 +0100 Subject: [PATCH 139/481] Released js-sdk v0.7.12 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5c2e2048c9..8be2916a59 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "isomorphic-fetch": "^2.2.1", "linkifyjs": "^2.1.3", "lodash": "^4.13.1", - "matrix-js-sdk": "0.7.12-rc.1", + "matrix-js-sdk": "0.7.12", "optimist": "^0.6.1", "prop-types": "^15.5.8", "q": "^1.4.1", From 80c5a58fc3a74034bc1be3eb9b14b0ae73c777b1 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Mon, 19 Jun 2017 12:06:16 +0100 Subject: [PATCH 140/481] Fix custom widget form styling --- src/components/views/dialogs/AddAppDialog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/dialogs/AddAppDialog.js b/src/components/views/dialogs/AddAppDialog.js index 512570d9ad..35372009fc 100644 --- a/src/components/views/dialogs/AddAppDialog.js +++ b/src/components/views/dialogs/AddAppDialog.js @@ -74,7 +74,7 @@ export default React.createClass({
{appCards}
-
+
Or enter the URL of the widget to add.
Date: Mon, 19 Jun 2017 13:09:41 +0100 Subject: [PATCH 141/481] Prepare changelog for v0.9.5 --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bf2e67caa5..8b4210ac07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +Changes in [0.9.5](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.9.5) (2017-06-19) +=================================================================================================== +[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.9.5-rc.2...v0.9.5) + + * Don't peek when creating a room + [\#1113](https://github.com/matrix-org/matrix-react-sdk/pull/1113) + * More translations & translation fixes + + Changes in [0.9.5-rc.2](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.9.5-rc.2) (2017-06-16) ============================================================================================================= [Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.9.5-rc.1...v0.9.5-rc.2) From 66c3a6d9ca695780eb6b662e242e88323053ff33 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 19 Jun 2017 13:09:41 +0100 Subject: [PATCH 142/481] v0.9.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8be2916a59..0e8c948973 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "matrix-react-sdk", - "version": "0.9.5-rc.2", + "version": "0.9.5", "description": "SDK for matrix.org using React", "author": "matrix.org", "repository": { From 83d5822c85035a2507d90ed45dee1023780751ed Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 19 Jun 2017 13:17:12 +0100 Subject: [PATCH 143/481] Show a "Skip" button instead of "Cancel" in SetEmailDialog Fixes https://github.com/vector-im/riot-web/issues/4309 --- src/components/views/dialogs/SetEmailDialog.js | 2 +- src/i18n/strings/en_EN.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/views/dialogs/SetEmailDialog.js b/src/components/views/dialogs/SetEmailDialog.js index 82256970de..3c38064ee1 100644 --- a/src/components/views/dialogs/SetEmailDialog.js +++ b/src/components/views/dialogs/SetEmailDialog.js @@ -154,7 +154,7 @@ export default React.createClass({ />
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index ad00ea9275..9bd263c243 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -910,5 +910,6 @@ "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", "Disable Peer-to-Peer for 1:1 calls": "Disable Peer-to-Peer for 1:1 calls", "Do you want to set an email address?": "Do you want to set an email address?", - "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications." + "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications.", + "Skip":"Skip" } From 57f01b83becc0042887e7312a16290e3353b6e2b Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 19 Jun 2017 13:18:54 +0100 Subject: [PATCH 144/481] Revert "Save scroll state immediately before updating" This reverts commit 4124a8dcffe40287c3c2537d7cc2bbe3713d1f7a from PR https://github.com/matrix-org/matrix-react-sdk/pull/1076 --- src/components/structures/ScrollPanel.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/components/structures/ScrollPanel.js b/src/components/structures/ScrollPanel.js index 2daa6d2152..f035efee92 100644 --- a/src/components/structures/ScrollPanel.js +++ b/src/components/structures/ScrollPanel.js @@ -160,10 +160,6 @@ module.exports = React.createClass({ this.checkFillState(); }, - componentWillUpdate: function(nextProps, nextState) { - this._saveScrollState(); - }, - componentDidUpdate: function() { // after adding event tiles, we may need to tweak the scroll (either to // keep at the bottom of the timeline, or to maintain the view after From 05810fa83bbcef2c465c1486b6bc331607339eae Mon Sep 17 00:00:00 2001 From: daniel tygel Date: Mon, 19 Jun 2017 13:21:18 +0000 Subject: [PATCH 145/481] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (906 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/pt_BR/ --- src/i18n/strings/pt_BR.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 2c18b0507d..4485f67987 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -960,5 +960,14 @@ "Your home server does not support device management.": "O seu Servidor de Base não suporta o gerenciamento de dispositivos.", "(~%(count)s results).one": "(~%(count)s resultado)", "(~%(count)s results).other": "(~%(count)s resultados)", - "Device Name": "Nome do dispositivo" + "Device Name": "Nome do dispositivo", + "(could not connect media)": "(não foi possível conectar-se à mídia)", + "(no answer)": "(sem resposta)", + "(unknown failure: %(reason)s)": "(falha desconhecida: %(reason)s)", + "Your browser does not support the required cryptography extensions": "O seu navegador não suporta as extensões de criptografia necessárias", + "Not a valid Riot keyfile": "Não é um arquivo de chaves Riot válido", + "Authentication check failed: incorrect password?": "Falha ao checar a autenticação: senha incorreta?", + "Disable Peer-to-Peer for 1:1 calls": "Desabilitar as chamadas 1:1 par-a-par", + "Do you want to set an email address?": "Você deseja definir um endereço de e-mail?", + "This will allow you to reset your password and receive notifications.": "Isso permitirá que você redefina sua senha e receba notificações." } From b7fb2dee8308c1ea702eb48bee2eb6e473a84a74 Mon Sep 17 00:00:00 2001 From: russian Date: Mon, 19 Jun 2017 13:24:01 +0000 Subject: [PATCH 146/481] Translated using Weblate (Russian) Currently translated at 100.0% (906 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index d69282a07e..db3e3746c6 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -85,7 +85,7 @@ "Favourite": "Избранное", "favourite": "Избранное", "Favourites": "Избранное", - "Filter room members": "Фильтр участников комнаты", + "Filter room members": "Поиск участников комнаты", "Forget room": "Забыть комнату", "Forgot your password?": "Вы забыли пароль?", "For security, this session has been signed out. Please sign in again.": "Для обеспечения безопасности эта сессия была завершена. Войдите в систему еще раз.", @@ -100,14 +100,14 @@ "Invalid Email Address": "Недействительный адрес электронной почты", "invited": "invited", "Invite new room members": "Пригласить новых участников в комнату", - "Invites": "Приглашать", - "Invites user with given id to current room": "Пригласить пользователя с данным ID в текущую комнату", + "Invites": "Приглашает", + "Invites user with given id to current room": "Приглашает пользователя с этим ID в текущую комнату", "is a": "является", "Sign in with": "Я хочу регистрироваться с", - "joined and left": "присоединенный и оставленный", - "joined": "присоединенный", + "joined and left": "зашёл и ушёл", + "joined": "зашёл", "joined the room": "joined the room", - "Joins room with given alias": "Присоединяется к комнате с данным псевдонимом", + "Joins room with given alias": "зашёл в комнату с этим именем", "Kicks user with given id": "Выгнать пользователя с заданным id", "Labs": "Лаборатория", "Leave room": "Уйти из комнаты", @@ -116,7 +116,7 @@ "left the room": "left the room", "Logged in as": "Зарегистрированный как", "Login as guest": "Вход в систему как гость", - "Logout": "Выход из системы", + "Logout": "Выйти", "Low priority": "Низкий приоритет", "made future room history visible to": "made future room history visible to", "Manage Integrations": "Управление Интеграциями", @@ -128,7 +128,7 @@ "Never send encrypted messages to unverified devices from this device": "Никогда не отправлять зашифрованные сообщения на не верифицированные устройства с этого устройства", "Never send encrypted messages to unverified devices in this room from this device": "Никогда не отправляйте зашифрованные сообщения на непроверенные устройства в этой комнате из вашего устройства", "New password": "Новый пароль", - "New passwords must match each other.": "Новые пароли должны соответствовать друг другу.", + "New passwords must match each other.": "Новые пароли должны совпадать.", "none": "никто", "Notifications": "Уведомления", " (not supported by this browser)": " (not supported by this browser)", @@ -193,7 +193,7 @@ "(warning: cannot be disabled again!)": "(предупреждение: не может быть отключено!)", "Warning!": "Предупреждение!", "was banned": "запрещен", - "was invited": "приглашенный", + "was invited": "был приглашён", "was kicked": "выброшен", "was unbanned": "незапрещенный", "was": "был", @@ -246,7 +246,7 @@ "Failed to set up conference call": "Не удалось установить конференц-вызов", "Failed to verify email address: make sure you clicked the link in the email": "Не удалось подтвердить email-адрес: убедитесь что вы щелкнули по ссылке электронной почты", "Failure to create room": "Не удалось создать комнату", - "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s изменил %(fromPowerLevel)s на %(toPowerLevel)s", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId) изменил %(fromPowerLevel) на %(toPowerLevel)", "Guest users can't create new rooms. Please register to create room and start a chat.": "Гостевые пользователи не могут создавать новые комнаты. Зарегистрируйтесь для создания комнаты и чата.", "click to reveal": "нажать для открытия", "%(senderName)s invited %(targetName)s.": "%(senderName)s приглашает %(targetName)s.", @@ -355,7 +355,7 @@ "Friday": "Пятница", "Saturday": "Суббота", "Sunday": "Воскресенье", - "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName) %(time)", "Upload an avatar:": "Загрузите аватар:", "You need to be logged in.": "Вы должны быть авторизованы.", "You need to be able to invite users to do that.": "Вам необходимо пригласить пользователей чтобы сделать это.", @@ -524,7 +524,7 @@ "OK": "ОК", "Only people who have been invited": "Только приглашённые люди", "Passwords can't be empty": "Поля паролей не могут быть пустыми", - "%(senderName)s placed a %(callType)s call.": "%(senderName)s выполнил %(callType)s вызов.", + "%(senderName)s placed a %(callType)s call.": "%(senderName) выполнил %(callType) вызов.", "Please check your email and click on the link it contains. Once this is done, click continue.": "Пожалуйста, проверьте вашу электронную почту и нажмите в ней ссылку. По завершении нажмите продолжить.", "Power level must be positive integer.": "Уровень силы должен быть положительным числом.", "Press": "Нажать", @@ -700,7 +700,7 @@ "Import": "Импорт", "Incorrect username and/or password.": "Неверное имя пользователя и/или пароль.", "Invalid file%(extra)s": "Неправильный файл%(extra)s", - "Invited": "Приглашен", + "Invited": "Приглашён", "Jump to first unread message.": "Перейти к первому непрочитанному сообщению.", "List this room in %(domain)s's room directory?": "Показывать эту комнату в списке комнат %(domain)s?", "Message not sent due to unknown devices being present": "Сообщение не было отправлено из-за присутствия неизвестного устройства", @@ -896,7 +896,7 @@ "Admin tools": "Админ утилита", "And %(count)s more...": "И %(count)s больше...", "Alias (optional)": "Псевдоним (опционально)", - "Click here to join the discussion!": " Нажми здесь чтоб присоединиться к обсуждению!", + "Click here to join the discussion!": "Нажмите здесь, чтобы присоединиться к обсуждению!", "Close": "Закрыть", "Disable Notifications": "Отключить оповещение", "Drop File Here": "Вставить сюда файл", @@ -909,7 +909,7 @@ "Incoming call from %(name)s": "Входящий вызов от %(name)s", "Incoming video call from %(name)s": "Входящий видио вызов от %(name)s", "Incoming voice call from %(name)s": "Входящий голосовой вызов от %(name)s", - "Join as voice or video.": "Присоединен как голос или видио .", + "Join as voice or video.": "Войти как голос или видео.", "Last seen": "В последний раз видели", "Level:": "Уровень:", "No display name": "Нет отображаемое имя", @@ -946,8 +946,8 @@ "Would you like to accept or decline this invitation?": "Хотели бы вы подтвердить это приглашение или отклонить?", "(~%(count)s results).one": "(~%(count)s Результат)", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Не удается подключиться к домашнему серверу - проверьте подключение, убедитесь, что ваш сертификат SSL homeserver's SSL certificate действителен, и расширение браузера не блокирует запросы.", - "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s забанил Вас в %(roomName)s.", - "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s выгнал Вас из %(roomName)s.", + "You have been banned from %(roomName)s by %(userName)s.": "%(userName) забанил Вас в % (roomName).", + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName) выгнал Вас из %(roomName).", "You may wish to login with a different account, or add this email to this account.": "Вы можете войти в систему с другой учетной записью или добавить этот адрес email в эту учетную запись.", "Your home server does not support device management.": "Ваш домашний сервер не поддерживает управление устройствами.", "(could not connect media)": "(не удается подключиться к медиа)", From 27652e7e6e11e05d855e097e214cae8f067e03fd Mon Sep 17 00:00:00 2001 From: Nathan van Beelen Date: Mon, 19 Jun 2017 10:51:35 +0000 Subject: [PATCH 147/481] Translated using Weblate (Dutch) Currently translated at 55.8% (506 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nl/ --- src/i18n/strings/nl.json | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index e7a9f6e4b6..dadd8d8dbf 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -234,7 +234,7 @@ "Mute": "Dempen", "Notifications": "Meldingen", "Operation failed": "Actie mislukt", - "Please Register": "Registreer alstublieft", + "Please Register": "Registreer Alstublieft", "powered by Matrix": "mogelijk gemaakt door Matrix", "Remove": "Verwijderen", "Room directory": "Kamerlijst", @@ -279,10 +279,10 @@ "%(senderName)s placed a %(callType)s call.": "%(senderName)s heeft een %(callType)s-gesprek gestart.", "Press": "Druk", "Privacy warning": "Privacywaarschuwing", - "Private Chat": "Direct chatten", + "Private Chat": "Privégesprek", "Privileged Users": "Gebruikers met rechten", "Profile": "Profiel", - "Public Chat": "Publiek gesprek", + "Public Chat": "Publiek Gesprek", "Reason": "Reden", "Reason: %(reasonText)s": "Reden: %(reasonText)s", "Revoke Moderator": "Beheerder terugtrekken", @@ -291,9 +291,9 @@ "rejected": "verworpen", "%(targetName)s rejected the invitation.": "%(targetName)s heeft de uitnodiging geweigerd.", "Reject invitation": "Uitnodiging weigeren", - "Rejoin": "Opnieuw lid wordne", + "Rejoin": "Opnieuw toetreden", "Remote addresses for this room:": "Adres op afstand voor deze ruimte:", - "Remove Contact Information?": "Contactinformatie verwijderen?", + "Remove Contact Information?": "Contactinformatie Verwijderen?", "Send Invites": "Uitnodigingen versturen", "Start a chat": "Gesprek starten", "Start authentication": "Authenticatie starten", @@ -502,5 +502,12 @@ "New Composer & Autocomplete": "Nieuwe Componist & Automatisch Aanvullen", "New passwords don't match": "Nieuwe wachtwoorden komen niet overeen", "New passwords must match each other.": "Nieuwe wachtwoorden moeten overeenkomen.", - "Once encryption is enabled for a room it cannot be turned off again (for now)": "Zodra versleuteling in een kamer is ingeschakeld kan het niet meer worden uitgeschakeld (voor nu)" + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Zodra versleuteling in een kamer is ingeschakeld kan het niet meer worden uitgeschakeld (voor nu)", + "Once you've followed the link it contains, click below": "Zodra je de link dat het bevat hebt gevolgd, klik hieronder", + "Only people who have been invited": "Alleen personen die zijn uitgenodigd", + "Otherwise, click here to send a bug report.": "Klik anders hier om een foutmelding te versturen.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Bekijk je e-mail en klik op de link die het bevat. Zodra dit klaar is, klik op verder gaan.", + "Power level must be positive integer.": "Machtsniveau moet een positief heel getal zijn.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s heeft zijn of haar weergavenaam (%(oldDisplayName)s) verwijderd.", + "%(senderName)s removed their profile picture.": "%(senderName)s heeft zijn of haar profielfoto verwijderd." } From 02da6fdbd505b73c91c583b5fc4f03e38785ad68 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 19 Jun 2017 16:40:33 +0100 Subject: [PATCH 148/481] Fix infinite spinner on email registration Remove setTimeout on dialog display as it's no longer necessary and causes races. --- src/createRoom.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/createRoom.js b/src/createRoom.js index bf0c0fee1c..8f0f9bd148 100644 --- a/src/createRoom.js +++ b/src/createRoom.js @@ -76,10 +76,7 @@ function createRoom(opts) { } ]; - let modal; - setTimeout(()=>{ - modal = Modal.createDialog(Loader, null, 'mx_Dialog_spinner'); - }, 0); + const modal = Modal.createDialog(Loader, null, 'mx_Dialog_spinner'); let roomId; return client.createRoom(createOpts).finally(function() { From 640b7a74a2e117c024245b75ad8a0c9802c3eaeb Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 19 Jun 2017 16:45:40 +0100 Subject: [PATCH 149/481] Remove unnecessary if --- src/createRoom.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/createRoom.js b/src/createRoom.js index 8f0f9bd148..ce83f31c27 100644 --- a/src/createRoom.js +++ b/src/createRoom.js @@ -80,7 +80,7 @@ function createRoom(opts) { let roomId; return client.createRoom(createOpts).finally(function() { - if (modal) modal.close(); + modal.close(); }).then(function(res) { roomId = res.room_id; if (opts.dmUserId) { From a8165d1707c0ae495f660074560fe1d9bf76d17d Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 19 Jun 2017 16:40:33 +0100 Subject: [PATCH 150/481] Fix infinite spinner on email registration Remove setTimeout on dialog display as it's no longer necessary and causes races. --- src/createRoom.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/createRoom.js b/src/createRoom.js index bf0c0fee1c..8f0f9bd148 100644 --- a/src/createRoom.js +++ b/src/createRoom.js @@ -76,10 +76,7 @@ function createRoom(opts) { } ]; - let modal; - setTimeout(()=>{ - modal = Modal.createDialog(Loader, null, 'mx_Dialog_spinner'); - }, 0); + const modal = Modal.createDialog(Loader, null, 'mx_Dialog_spinner'); let roomId; return client.createRoom(createOpts).finally(function() { From 26cb1404c22445ad73f3e258d916980997df5eaf Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 19 Jun 2017 16:45:40 +0100 Subject: [PATCH 151/481] Remove unnecessary if --- src/createRoom.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/createRoom.js b/src/createRoom.js index 8f0f9bd148..ce83f31c27 100644 --- a/src/createRoom.js +++ b/src/createRoom.js @@ -80,7 +80,7 @@ function createRoom(opts) { let roomId; return client.createRoom(createOpts).finally(function() { - if (modal) modal.close(); + modal.close(); }).then(function(res) { roomId = res.room_id; if (opts.dmUserId) { From c418076c32f3a842cd558fbf944842f1b35fcc08 Mon Sep 17 00:00:00 2001 From: daniel tygel Date: Mon, 19 Jun 2017 13:20:16 -0300 Subject: [PATCH 152/481] add two strings to translation --- src/components/views/rooms/RoomList.js | 24 ++++++++++++++++++++---- src/i18n/strings/en_EN.json | 3 ++- src/i18n/strings/pt_BR.json | 3 ++- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js index f90d89c8c1..c898431d33 100644 --- a/src/components/views/rooms/RoomList.js +++ b/src/components/views/rooms/RoomList.js @@ -18,7 +18,7 @@ limitations under the License. 'use strict'; var React = require("react"); var ReactDOM = require("react-dom"); -import { _t } from '../../../languageHandler'; +import { _t, _tJsx } from '../../../languageHandler'; var GeminiScrollbar = require('react-gemini-scrollbar'); var MatrixClientPeg = require("../../../MatrixClientPeg"); var CallHandler = require('../../../CallHandler'); @@ -478,12 +478,28 @@ module.exports = React.createClass({ switch (section) { case 'im.vector.fake.direct': return
- Press - - to start a chat with someone + {_tJsx( + "Press to start a chat with someone", + [//], + [ + (sub) => + ] + )}
; case 'im.vector.fake.recent': return
+ {_tJsx( + "You're not in any rooms yet! Press to make a room or"+ + " to browse the directory", + [//, //], + [ + (sub) => , + (sub) => + ] + )} + + + You're not in any rooms yet! Press to make a room or diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index ad00ea9275..e7f8199f9c 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -440,6 +440,7 @@ "Please Register": "Please Register", "Power level must be positive integer.": "Power level must be positive integer.", "Press": "Press", + "Press to start a chat with someone": "Press to start a chat with someone", "Privacy warning": "Privacy warning", "Private Chat": "Private Chat", "Privileged Users": "Privileged Users", @@ -648,7 +649,7 @@ "Would you like to accept or decline this invitation?": "Would you like to accept or decline this invitation?", "You already have existing direct chats with this user:": "You already have existing direct chats with this user:", "You are already in a call.": "You are already in a call.", - "You're not in any rooms yet! Press": "You're not in any rooms yet! Press", + "You're not in any rooms yet! Press to make a room or to browse the directory": "You're not in any rooms yet! Press to make a room or to browse the directory", "You are trying to access %(roomName)s.": "You are trying to access %(roomName)s.", "You cannot place a call with yourself.": "You cannot place a call with yourself.", "You cannot place VoIP calls in this browser.": "You cannot place VoIP calls in this browser.", diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 2c18b0507d..b7ea693a50 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -356,6 +356,7 @@ "%(senderName)s placed a %(callType)s call.": "%(senderName)s fez uma chamada de %(callType)s.", "Power level must be positive integer.": "O nível de permissões tem que ser um número inteiro e positivo.", "Press": "Aperte", + "Press to start a chat with someone": "Clique em para iniciar a conversa com alguém", "Reason": "Razão", "%(targetName)s rejected the invitation.": "%(targetName)s recusou o convite.", "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removeu o seu nome público (%(oldDisplayName)s).", @@ -398,7 +399,7 @@ "VoIP is unsupported": "Chamada de voz não permitida", "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s desfez o convite a %(targetName)s.", "You are already in a call.": "Você já está em uma chamada.", - "You're not in any rooms yet! Press": "Você ainda não está em nenhuma sala! Pressione", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Você ainda não está em nenhuma sala! Clique em para criar uma sala ou em para navegar pela lista pública de salas", "You are trying to access %(roomName)s.": "Você está tentando acessar a sala %(roomName)s.", "You cannot place a call with yourself.": "Você não pode iniciar uma chamada.", "You cannot place VoIP calls in this browser.": "Você não pode fazer chamadas de voz neste navegador.", From aebe4fb88ffe9b563424c3e6a3d7ea27c892c4fd Mon Sep 17 00:00:00 2001 From: daniel tygel Date: Mon, 19 Jun 2017 13:21:23 -0300 Subject: [PATCH 153/481] add two strings to translation --- src/components/views/rooms/RoomList.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js index c898431d33..008d6d3a47 100644 --- a/src/components/views/rooms/RoomList.js +++ b/src/components/views/rooms/RoomList.js @@ -497,14 +497,6 @@ module.exports = React.createClass({ (sub) => ] )} - - - - You're not in any rooms yet! Press - - to make a room or - - to browse the directory
; } From 13c12811e7512140d75f9a3d21ee546134d9e7c6 Mon Sep 17 00:00:00 2001 From: daniel tygel Date: Mon, 19 Jun 2017 13:22:23 -0300 Subject: [PATCH 154/481] typo --- src/components/views/rooms/RoomList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js index 008d6d3a47..e1fe075f42 100644 --- a/src/components/views/rooms/RoomList.js +++ b/src/components/views/rooms/RoomList.js @@ -490,7 +490,7 @@ module.exports = React.createClass({ return
{_tJsx( "You're not in any rooms yet! Press to make a room or"+ - " to browse the directory", + " to browse the directory", [//, //], [ (sub) => , From b1ca83bb9d387dd8dc4940b4f4a040ba888ad112 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 19 Jun 2017 17:49:22 +0100 Subject: [PATCH 155/481] Internationalise the drop targets Unsure how these had got missed (and yet still had the translation strings in the json) --- src/components/views/rooms/RoomList.js | 29 ++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js index e1fe075f42..9f9f030c27 100644 --- a/src/components/views/rooms/RoomList.js +++ b/src/components/views/rooms/RoomList.js @@ -33,11 +33,28 @@ var Receipt = require('../../../utils/Receipt'); const HIDE_CONFERENCE_CHANS = true; -const VERBS = { - 'm.favourite': 'favourite', - 'im.vector.fake.direct': 'tag direct chat', - 'im.vector.fake.recent': 'restore', - 'm.lowpriority': 'demote', +function phraseForSection(section) { + // These would probably be better as individual strings, + // but for some reason we have translations for these strings + // as-is, so keeping it like this for now. + let verb; + switch (section) { + case 'm.favourite': + verb = _t('to favourite'); + break; + case 'im.vector.fake.direct': + verb = _t('to tag direct chat'); + break; + case 'im.vector.fake.recent': + verb = _t('to restore'); + break; + case 'm.lowpriority': + verb = _t('to demote'); + break; + default: + return _t('Drop here to tag %(section)s', {section: section}); + } + return _t('Drop here %(toAction)s', {toAction: verb}); }; module.exports = React.createClass({ @@ -505,7 +522,7 @@ module.exports = React.createClass({ return null; } - const labelText = 'Drop here to ' + (VERBS[section] || 'tag ' + section); + const labelText = phraseForSection(section); return ; }, From 5151d247319dce881fbad36f125047ee221193b6 Mon Sep 17 00:00:00 2001 From: Bamstam Date: Mon, 19 Jun 2017 16:12:50 +0000 Subject: [PATCH 156/481] Translated using Weblate (German) Currently translated at 100.0% (906 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index a4ac23581d..bcf7745a83 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -105,7 +105,7 @@ "Can't load user settings": "Benutzereinstellungen können nicht geladen werden", "changed name": "änderte Namen", "changed the power level of": "änderte Berechtigungslevel von", - "Clear Cache": "Leere Cache", + "Clear Cache": "Cache leeren", "Click here to fix": "Zum reparieren hier klicken", "*️⃣ Commands": "*️⃣ Befehle", "Default": "Standard", @@ -207,7 +207,7 @@ "since they joined": "ab dem Zeitpunkt, an dem sie beigetreten sind", "since they were invited": "ab dem Zeitpunkt, an dem sie eingeladen wurden", "Someone": "Jemand", - "Start a chat": "Starte einen Chat", + "Start a chat": "Chat starten", "Start Chat": "Chat beginnen", "Success": "Erfolg", "tag direct chat": "Zum kennzeichnen als direkten Chat", @@ -425,7 +425,7 @@ "to start a chat with someone": "um einen Chat mit jemandem zu starten", "to tag direct chat": "als Direkt-Chat markieren", "You're not in any rooms yet! Press": "Du bist noch keinem Raum beigetreten! Drücke", - "click to reveal": "Klicke zum anzeigen", + "click to reveal": "anzeigen", "To remove other users' messages": "Um Nachrichten anderer Nutzer zu verbergen", "You are trying to access %(roomName)s.": "Du versuchst, auf den Raum \"%(roomName)s\" zuzugreifen.", "af": "Afrikaans", @@ -710,7 +710,7 @@ "New passwords don't match": "Die neuen Passwörter stimmen nicht überein", "olm version:": "Version von olm:", "Passwords can't be empty": "Passwortfelder dürfen nicht leer sein", - "Report it": "Melde ihn", + "Report it": "Melden", "riot-web version:": "Version von riot-web:", "Scroll to bottom of page": "Zum Ende der Seite springen", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Zeitstempel im 12-Stunden-Format anzeigen (z. B. 2:30pm)", @@ -815,14 +815,14 @@ "Ongoing conference call%(supportedText)s.": "Laufendes Konferenzgespräch%(supportedText)s.", "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Du wirst jetzt auf die Website eines Drittanbieters weitergeleitet, damit du dein Konto für die Verwendung von %(integrationsUrl)s authentifizieren kannst. Möchtest du fortfahren?", "Disable URL previews for this room (affects only you)": "URL-Vorschau für diesen Raum deaktivieren (betrifft nur dich)", - "Start automatically after system login": "Starte automatisch nach System-Login", + "Start automatically after system login": "Nach System-Login automatisch starten", "Desktop specific": "Desktopspezifisch", "Jump to first unread message.": "Zur ersten ungelesenen Nachricht springen.", "Options": "Optionen", "disabled": "deaktiviert", "enabled": "aktiviert", "Invited": "Eingeladen", - "Set a Display Name": "Setze einen Anzeigenamen", + "Set a Display Name": "Anzeigenamen festlegen", "for %(amount)ss": "für %(amount)ss", "for %(amount)sm": "seit %(amount)smin", "for %(amount)sh": "für %(amount)sh", From fedbe00f4539773fec5dc62502ba0b2d130de491 Mon Sep 17 00:00:00 2001 From: Szimszon Date: Mon, 19 Jun 2017 16:53:07 +0000 Subject: [PATCH 157/481] Translated using Weblate (Hungarian) Currently translated at 60.2% (546 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 696a548b4a..b4c2f4a6ce 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -508,5 +508,42 @@ "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s képet küldött.", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s meghívót küldött %(targetDisplayName)s felhasználónak, hogy lépjen be a szobába.", "sent a video": "videó küldve", - "Server error": "Szerver hiba" + "Server error": "Szerver hiba", + "Server may be unavailable or overloaded": "A szerver elérhetetlen vagy túlterhelt", + "Server may be unavailable, overloaded, or search timed out :(": "A szerver elérhetetlen, túlterhelt vagy a keresés túllépte az időkorlátot :(", + "Server may be unavailable, overloaded, or the file too big": "A szerver elérhetetlen, túlterhelt vagy a fájl túl nagy", + "Server may be unavailable, overloaded, or you hit a bug.": "A szerver elérhetetlen, túlterhelt vagy hibára futott.", + "Server unavailable, overloaded, or something else went wrong.": "A szerver elérhetetlen, túlterhelt vagy valami más probléma van.", + "Session ID": "Kapcsolat azonosító", + "%(senderName)s set a profile picture.": "%(senderName)s profil képet állított be.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s a megjelenítési nevét megváltoztatta erre: %(displayName)s.", + "Set": "Beállít", + "Show panel": "Panel megjelenítése", + "Show Text Formatting Toolbar": "Szöveg formázási eszköztár megjelenítése", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Az időbélyegek 12 órás formátumban mutatása (pl.: 2:30pm)", + "Signed Out": "Kijelentkezett", + "Sign in": "Bejelentkezett", + "Sign out": "Kijelentkezés", + "since the point in time of selecting this option": "onnantól, hogy ez az opció kiválasztásra került", + "since they joined": "onnantól, hogy csatlakozott", + "since they were invited": "onnantól, hogy meg lett hívva", + "Some of your messages have not been sent.": "Néhány üzeneted nem lett elküldve.", + "Someone": "Valaki", + "Sorry, this homeserver is using a login which is not recognised ": "Bocs, ez a saját szerver olyan beléptetést használ ami nem ismert ", + "Start a chat": "Csevegés indítása", + "Start authentication": "Azonosítás indítása", + "Start Chat": "Csevegés indítása", + "Submit": "Elküld", + "Success": "Sikeres", + "tag as %(tagName)s": "címke beállítása: %(tagName)s", + "tag direct chat": "megjelölés közvetlen csevegésnek", + "Tagged as: ": "Címkék: ", + "The default role for new room members is": "Az alapértelmezett szerep új tagoknak:", + "The main address for this room is": "A szoba elsődleges címe:", + "The phone number entered looks invalid": "A megadott telefonszám érvénytelennek tűnik", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Az általad megadott aláíró kulcs megegyezik %(userId)s felhasználótól kapott kulccsal amit %(deviceId)s eszközhöz használ. Az eszköz ellenőrzöttnek jelölve.", + "This action cannot be performed by a guest user. Please register to be able to do this.": "Ezt nem teheti vendég felhasználó. Kérlek regisztrálj, hogy megtehesd.", + "This email address is already in use": "Ez az e-mail cím már használatban van", + "This email address was not found": "Az e-mail cím nem található", + "%(actionVerb)s this person?": "Ezt a felhasználót %(actionVerb)s?" } From b4e19d533ce1724e6f3eb9310a1e5648656d2ee9 Mon Sep 17 00:00:00 2001 From: IMIN <2reeseenmin@gmail.com> Date: Mon, 19 Jun 2017 16:35:43 +0000 Subject: [PATCH 158/481] Translated using Weblate (Korean) Currently translated at 73.0% (662 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ko/ --- src/i18n/strings/ko.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index f7f0654276..b80f1f133a 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -651,5 +651,14 @@ "(unknown failure: %(reason)s)": "(알 수 없는 오류: %(reason)s)", "(warning: cannot be disabled again!)": "(주의: 다시 끌 수 없어요!)", "Warning!": "주의!", - "WARNING: Device already verified, but keys do NOT MATCH!": "주의: 장치는 이미 인증했지만, 키가 맞지 않아요!" + "WARNING: Device already verified, but keys do NOT MATCH!": "주의: 장치는 이미 인증했지만, 키가 맞지 않아요!", + "Who can access this room?": "누가 이 방에 들어올 수 있나요?", + "Who can read history?": "누가 기록을 읽을 수 있나요?", + "Who would you like to add to this room?": "이 방에 누구를 초대하고 싶으세요?", + "Who would you like to communicate with?": "누구와 이야기하고 싶으세요?", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s님이 %(targetName)s니의 초대를 취소하셨어요.", + "Would you like to accept or decline this invitation?": "초대를 받아들이거나 거절하시겠어요?", + "You already have existing direct chats with this user:": "이미 이 사용자와 직접 이야기하는 중이에요:", + "You are already in a call.": "이미 자신이 통화 중이네요.", + "You're not in any rooms yet! Press": "어떤 방에도 들어가 있지 않으세요! 누르세요" } From 321236568beb7c2ca86eff167799a73aef8bce3f Mon Sep 17 00:00:00 2001 From: GrigRUSS Date: Mon, 19 Jun 2017 16:12:15 +0000 Subject: [PATCH 159/481] Translated using Weblate (Russian) Currently translated at 100.0% (906 of 906 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index db3e3746c6..1565446380 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -650,10 +650,10 @@ "%(oneUser)schanged their avatar": "%(oneUser)sизменил своё изображение", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Не возможно подключиться к серверу через HTTP, когда в строке браузера HTTPS. Используйте HTTPS или включив небезопасные скрипты.", "Dismiss": "Отказ", - "Custom Server Options": "Расширенные настройки сервера", + "Custom Server Options": "Собственные настройки сервера", "Mute": "Беззвучный", "Operation failed": "Действие не удалось", - "powered by Matrix": "управляемый с Matrix", + "powered by Matrix": "Основано на Matrix", "Add a topic": "Добавить тему", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Время отображать в 12 часовом формате (напр. 2:30pm)", "Use compact timeline layout": "Компактное отображение", From 09de50a80a8b5672f109e0842748d26394020af6 Mon Sep 17 00:00:00 2001 From: Brendan Abolivier Date: Mon, 19 Jun 2017 16:57:49 +0000 Subject: [PATCH 160/481] Translated using Weblate (French) Currently translated at 100.0% (907 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/ --- src/i18n/strings/fr.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 0d33ad711f..c04197361e 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -922,5 +922,7 @@ "Authentication check failed: incorrect password?": "Erreur d’identification: mot de passe incorrect ?", "Disable Peer-to-Peer for 1:1 calls": "Désactiver les appels 1:1 pair-à-pair", "Do you want to set an email address?": "Souhaitez-vous configurer une adresse e-mail ?", - "This will allow you to reset your password and receive notifications.": "Ceci va vous permettre de réinitialiser votre mot de passe et de recevoir des notifications." + "This will allow you to reset your password and receive notifications.": "Ceci va vous permettre de réinitialiser votre mot de passe et de recevoir des notifications.", + "Press to start a chat with someone": "Cliquez sur pour entamer une discussion avec quelqu'un", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Vous n'avez pas encore rejoint de salle ! Cliquez sur pour créer une salle ou sur pour explorer l'annuaire" } From 6bb22b618b3c171b87ebf52e2c484a507499579e Mon Sep 17 00:00:00 2001 From: Brendan Abolivier Date: Mon, 19 Jun 2017 17:00:17 +0000 Subject: [PATCH 161/481] Translated using Weblate (French) Currently translated at 100.0% (907 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/ --- src/i18n/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index c04197361e..039198f0cf 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -557,7 +557,7 @@ "You're not in any rooms yet! Press": "Vous n’êtes dans aucun salon ! Cliquez", "You are trying to access %(roomName)s.": "Vous essayez d'accéder à %(roomName)s.", "You cannot place a call with yourself.": "Vous ne pouvez pas passer d'appel avec vous-même.", - "You cannot place VoIP calls in this browser.": "Vous ne pouvez pas passer d'appel voix dans cet explorateur.", + "You cannot place VoIP calls in this browser.": "Vous ne pouvez pas passer d'appel vocal dans ce navigateur.", "You do not have permission to post to this room": "Vous n’avez pas la permission de poster dans ce salon", "You have been invited to join this room by %(inviterName)s": "Vous avez été invité à joindre ce salon par %(inviterName)s", "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Vous avez été déconnecté de tous vos appareils et ne recevrez plus de notifications. Pour réactiver les notifications, identifiez vous à nouveau sur tous les appareils", From 5e44c72952efd516b40e4c1fc5a9d9262e3b5fbb Mon Sep 17 00:00:00 2001 From: Szimszon Date: Mon, 19 Jun 2017 17:03:49 +0000 Subject: [PATCH 162/481] Translated using Weblate (Hungarian) Currently translated at 61.5% (558 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index b4c2f4a6ce..c746eea4b9 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -545,5 +545,17 @@ "This action cannot be performed by a guest user. Please register to be able to do this.": "Ezt nem teheti vendég felhasználó. Kérlek regisztrálj, hogy megtehesd.", "This email address is already in use": "Ez az e-mail cím már használatban van", "This email address was not found": "Az e-mail cím nem található", - "%(actionVerb)s this person?": "Ezt a felhasználót %(actionVerb)s?" + "%(actionVerb)s this person?": "Ezt a felhasználót %(actionVerb)s?", + "The email address linked to your account must be entered.": "A fiókodhoz kötött e-mail címet add meg.", + "Press to start a chat with someone": "Nyomd meg a gombot ha szeretnél csevegni valakivel", + "Privacy warning": "Magánéleti figyelmeztetés", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "'%(fileName)s' fájl túllépte az egyedi szerverben beállított feltöltési méret határt", + "The file '%(fileName)s' failed to upload": "'%(fileName)s' fájl feltöltése sikertelen", + "The remote side failed to pick up": "A hívott fél nem vette fel", + "This Home Server does not support login using email address.": "Az egyedi szerver nem támogatja a belépést e-mail címmel.", + "This invitation was sent to an email address which is not associated with this account:": "A meghívó olyan e-mail címre lett küldve ami nincs összekötve ezzel a fiókkal:", + "There was a problem logging in.": "Hiba történt a bejelentkezésnél.", + "This room has no local addresses": "Ennek a szobának nincs helyi címe", + "This room is not recognised.": "Ez a szoba nem ismerős.", + "These are experimental features that may break in unexpected ways": "Ezek kísérleti funkciók amik kiszámíthatatlanok lehetnek" } From f437784807148b2dc8fd677163bd04ac186c84f5 Mon Sep 17 00:00:00 2001 From: Szimszon Date: Mon, 19 Jun 2017 17:07:31 +0000 Subject: [PATCH 163/481] Translated using Weblate (Hungarian) Currently translated at 62.0% (563 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index c746eea4b9..d0bc76fe8a 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -557,5 +557,10 @@ "There was a problem logging in.": "Hiba történt a bejelentkezésnél.", "This room has no local addresses": "Ennek a szobának nincs helyi címe", "This room is not recognised.": "Ez a szoba nem ismerős.", - "These are experimental features that may break in unexpected ways": "Ezek kísérleti funkciók amik kiszámíthatatlanok lehetnek" + "These are experimental features that may break in unexpected ways": "Ezek kísérleti funkciók amik kiszámíthatatlanok lehetnek", + "The visibility of existing history will be unchanged": "A már meglévő csevegés előzmények láthatósága nem változik", + "This doesn't appear to be a valid email address": "Ez nem tűnik helyes e-mail címnek", + "This is a preview of this room. Room interactions have been disabled": "Ez a szoba előnézete. Minden tevékenység ezzel a szobával ki van kapcsolva", + "This phone number is already in use": "Ez a telefonszám már használatban van", + "This room": "Ez a szoba" } From d5a7ef525f7fb85b910de4216df22e095bc0e7b0 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 19 Jun 2017 17:14:09 +0000 Subject: [PATCH 164/481] Translated using Weblate (Russian) Currently translated at 99.7% (905 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 1565446380..b859ffcfa1 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -246,7 +246,7 @@ "Failed to set up conference call": "Не удалось установить конференц-вызов", "Failed to verify email address: make sure you clicked the link in the email": "Не удалось подтвердить email-адрес: убедитесь что вы щелкнули по ссылке электронной почты", "Failure to create room": "Не удалось создать комнату", - "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId) изменил %(fromPowerLevel) на %(toPowerLevel)", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s изменил %(fromPowerLevel)s на %(toPowerLevel)s", "Guest users can't create new rooms. Please register to create room and start a chat.": "Гостевые пользователи не могут создавать новые комнаты. Зарегистрируйтесь для создания комнаты и чата.", "click to reveal": "нажать для открытия", "%(senderName)s invited %(targetName)s.": "%(senderName)s приглашает %(targetName)s.", @@ -355,7 +355,7 @@ "Friday": "Пятница", "Saturday": "Суббота", "Sunday": "Воскресенье", - "%(weekDayName)s %(time)s": "%(weekDayName) %(time)", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", "Upload an avatar:": "Загрузите аватар:", "You need to be logged in.": "Вы должны быть авторизованы.", "You need to be able to invite users to do that.": "Вам необходимо пригласить пользователей чтобы сделать это.", @@ -946,8 +946,8 @@ "Would you like to accept or decline this invitation?": "Хотели бы вы подтвердить это приглашение или отклонить?", "(~%(count)s results).one": "(~%(count)s Результат)", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Не удается подключиться к домашнему серверу - проверьте подключение, убедитесь, что ваш сертификат SSL homeserver's SSL certificate действителен, и расширение браузера не блокирует запросы.", - "You have been banned from %(roomName)s by %(userName)s.": "%(userName) забанил Вас в % (roomName).", - "You have been kicked from %(roomName)s by %(userName)s.": "%(userName) выгнал Вас из %(roomName).", + "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s забанил Вас в %(roomName)s.", + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s выгнал Вас из %(roomName)s.", "You may wish to login with a different account, or add this email to this account.": "Вы можете войти в систему с другой учетной записью или добавить этот адрес email в эту учетную запись.", "Your home server does not support device management.": "Ваш домашний сервер не поддерживает управление устройствами.", "(could not connect media)": "(не удается подключиться к медиа)", From ec4d1de42f8bb00f60f1fa5634aa783642c5f60e Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 19 Jun 2017 17:16:48 +0000 Subject: [PATCH 165/481] Translated using Weblate (Russian) Currently translated at 99.7% (905 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index b859ffcfa1..005096bcaa 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -524,7 +524,7 @@ "OK": "ОК", "Only people who have been invited": "Только приглашённые люди", "Passwords can't be empty": "Поля паролей не могут быть пустыми", - "%(senderName)s placed a %(callType)s call.": "%(senderName) выполнил %(callType) вызов.", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s выполнил %(callType)s вызов.", "Please check your email and click on the link it contains. Once this is done, click continue.": "Пожалуйста, проверьте вашу электронную почту и нажмите в ней ссылку. По завершении нажмите продолжить.", "Power level must be positive integer.": "Уровень силы должен быть положительным числом.", "Press": "Нажать", From d29bc8546d535295566658bc3f4bc979de57513a Mon Sep 17 00:00:00 2001 From: Krombel Date: Mon, 19 Jun 2017 17:19:18 +0000 Subject: [PATCH 166/481] Translated using Weblate (German) Currently translated at 100.0% (907 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index bcf7745a83..6fc196fa94 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -974,5 +974,7 @@ "Authentication check failed: incorrect password?": "Authentifizierung fehlgeschlagen: Falsches Passwort?", "Disable Peer-to-Peer for 1:1 calls": "Peer-to-Peer-Verbindung für 1-zu-1-Anrufe deaktivieren", "Do you want to set an email address?": "Möchtest du eine E-Mail-Adresse setzen?", - "This will allow you to reset your password and receive notifications.": "Dies erlaubt dir dein Passwort zurückzusetzen und Benachrichtigungen zu empfangen." + "This will allow you to reset your password and receive notifications.": "Dies erlaubt dir dein Passwort zurückzusetzen und Benachrichtigungen zu empfangen.", + "Press to start a chat with someone": "Klicke auf um einen Chat mit jemanden zu starten", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Du bist bisher in keinem Raum! Klicke auf um einen Raum zu erstellen oder um das Verzeichnis zu durchsuchen" } From c5bc4d4542e4c4f95846d7aab21a4ea55b68f8c6 Mon Sep 17 00:00:00 2001 From: GrigRUSS Date: Mon, 19 Jun 2017 17:35:45 +0000 Subject: [PATCH 167/481] Translated using Weblate (Russian) Currently translated at 100.0% (907 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 005096bcaa..6b6eadf928 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -958,5 +958,7 @@ "Your browser does not support the required cryptography extensions": "Ваш браузер не поддерживает требуемые расширения для криптографии", "Authentication check failed: incorrect password?": "Ошибка авторизации: неверный пароль?", "Do you want to set an email address?": "Вы хотите указать адрес электронной почты?", - "This will allow you to reset your password and receive notifications.": "Это позволит вам сбросить пароль и получить уведомления." + "This will allow you to reset your password and receive notifications.": "Это позволит вам сбросить пароль и получить уведомления.", + "Press to start a chat with someone": "Нажмите для начала чата с кем либо", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Вы еще не в комнатах! Нажмите , чтобы создать комнату или , чтобы просмотреть каталог" } From 65474bfd4ca5cb538a6642fb60b9617e487e7079 Mon Sep 17 00:00:00 2001 From: Tom Tryfonidis Date: Mon, 19 Jun 2017 21:42:14 +0000 Subject: [PATCH 168/481] Translated using Weblate (Greek) Currently translated at 100.0% (907 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/el/ --- src/i18n/strings/el.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index cdfb558f3a..4e09fd7f2a 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -914,5 +914,7 @@ "were unbanned %(repeats)s times": "ξεμπλοκαρίστηκαν %(repeats)s φορές", "was unbanned %(repeats)s times": "ξεμπλοκαρίστηκε %(repeats)s φορές", "were unbanned": "ξεμπλοκαρίστηκαν", - "was unbanned": "ξεμπλοκαρίστηκε" + "was unbanned": "ξεμπλοκαρίστηκε", + "Press to start a chat with someone": "Πατήστε για να ξεκινήσετε μια συνομιλία", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Δεν είστε σε κανένα δωμάτιο! Πατήστε για να δημιουργήσετε ένα δωμάτιο ή για να δείτε το ευρετήριο" } From 09b91f4af9cc5d8a20291b22a55891981c9dbc5d Mon Sep 17 00:00:00 2001 From: daniel tygel Date: Mon, 19 Jun 2017 13:20:16 -0300 Subject: [PATCH 169/481] add two strings to translation --- src/components/views/rooms/RoomList.js | 24 ++++++++++++++++++++---- src/i18n/strings/en_EN.json | 3 ++- src/i18n/strings/pt_BR.json | 3 ++- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js index f90d89c8c1..c898431d33 100644 --- a/src/components/views/rooms/RoomList.js +++ b/src/components/views/rooms/RoomList.js @@ -18,7 +18,7 @@ limitations under the License. 'use strict'; var React = require("react"); var ReactDOM = require("react-dom"); -import { _t } from '../../../languageHandler'; +import { _t, _tJsx } from '../../../languageHandler'; var GeminiScrollbar = require('react-gemini-scrollbar'); var MatrixClientPeg = require("../../../MatrixClientPeg"); var CallHandler = require('../../../CallHandler'); @@ -478,12 +478,28 @@ module.exports = React.createClass({ switch (section) { case 'im.vector.fake.direct': return
- Press - - to start a chat with someone + {_tJsx( + "Press to start a chat with someone", + [//], + [ + (sub) => + ] + )}
; case 'im.vector.fake.recent': return
+ {_tJsx( + "You're not in any rooms yet! Press to make a room or"+ + " to browse the directory", + [//, //], + [ + (sub) => , + (sub) => + ] + )} + + + You're not in any rooms yet! Press to make a room or diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index ad00ea9275..e7f8199f9c 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -440,6 +440,7 @@ "Please Register": "Please Register", "Power level must be positive integer.": "Power level must be positive integer.", "Press": "Press", + "Press to start a chat with someone": "Press to start a chat with someone", "Privacy warning": "Privacy warning", "Private Chat": "Private Chat", "Privileged Users": "Privileged Users", @@ -648,7 +649,7 @@ "Would you like to accept or decline this invitation?": "Would you like to accept or decline this invitation?", "You already have existing direct chats with this user:": "You already have existing direct chats with this user:", "You are already in a call.": "You are already in a call.", - "You're not in any rooms yet! Press": "You're not in any rooms yet! Press", + "You're not in any rooms yet! Press to make a room or to browse the directory": "You're not in any rooms yet! Press to make a room or to browse the directory", "You are trying to access %(roomName)s.": "You are trying to access %(roomName)s.", "You cannot place a call with yourself.": "You cannot place a call with yourself.", "You cannot place VoIP calls in this browser.": "You cannot place VoIP calls in this browser.", diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 2c18b0507d..b7ea693a50 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -356,6 +356,7 @@ "%(senderName)s placed a %(callType)s call.": "%(senderName)s fez uma chamada de %(callType)s.", "Power level must be positive integer.": "O nível de permissões tem que ser um número inteiro e positivo.", "Press": "Aperte", + "Press to start a chat with someone": "Clique em para iniciar a conversa com alguém", "Reason": "Razão", "%(targetName)s rejected the invitation.": "%(targetName)s recusou o convite.", "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removeu o seu nome público (%(oldDisplayName)s).", @@ -398,7 +399,7 @@ "VoIP is unsupported": "Chamada de voz não permitida", "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s desfez o convite a %(targetName)s.", "You are already in a call.": "Você já está em uma chamada.", - "You're not in any rooms yet! Press": "Você ainda não está em nenhuma sala! Pressione", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Você ainda não está em nenhuma sala! Clique em para criar uma sala ou em para navegar pela lista pública de salas", "You are trying to access %(roomName)s.": "Você está tentando acessar a sala %(roomName)s.", "You cannot place a call with yourself.": "Você não pode iniciar uma chamada.", "You cannot place VoIP calls in this browser.": "Você não pode fazer chamadas de voz neste navegador.", From 7b82385084b599bea614a0380b3e7341be2155b8 Mon Sep 17 00:00:00 2001 From: daniel tygel Date: Mon, 19 Jun 2017 13:21:23 -0300 Subject: [PATCH 170/481] add two strings to translation --- src/components/views/rooms/RoomList.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js index c898431d33..008d6d3a47 100644 --- a/src/components/views/rooms/RoomList.js +++ b/src/components/views/rooms/RoomList.js @@ -497,14 +497,6 @@ module.exports = React.createClass({ (sub) => ] )} - - - - You're not in any rooms yet! Press - - to make a room or - - to browse the directory
; } From 17899dd3bf92ab804d17ed0628166a285a44efa0 Mon Sep 17 00:00:00 2001 From: daniel tygel Date: Mon, 19 Jun 2017 13:22:23 -0300 Subject: [PATCH 171/481] typo --- src/components/views/rooms/RoomList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js index 008d6d3a47..e1fe075f42 100644 --- a/src/components/views/rooms/RoomList.js +++ b/src/components/views/rooms/RoomList.js @@ -490,7 +490,7 @@ module.exports = React.createClass({ return
{_tJsx( "You're not in any rooms yet! Press to make a room or"+ - " to browse the directory", + " to browse the directory", [//, //], [ (sub) => , From 692b03f2e78e5db80270476ba53508552f69aa5f Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 19 Jun 2017 17:49:22 +0100 Subject: [PATCH 172/481] Internationalise the drop targets Unsure how these had got missed (and yet still had the translation strings in the json) --- src/components/views/rooms/RoomList.js | 29 ++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js index e1fe075f42..9f9f030c27 100644 --- a/src/components/views/rooms/RoomList.js +++ b/src/components/views/rooms/RoomList.js @@ -33,11 +33,28 @@ var Receipt = require('../../../utils/Receipt'); const HIDE_CONFERENCE_CHANS = true; -const VERBS = { - 'm.favourite': 'favourite', - 'im.vector.fake.direct': 'tag direct chat', - 'im.vector.fake.recent': 'restore', - 'm.lowpriority': 'demote', +function phraseForSection(section) { + // These would probably be better as individual strings, + // but for some reason we have translations for these strings + // as-is, so keeping it like this for now. + let verb; + switch (section) { + case 'm.favourite': + verb = _t('to favourite'); + break; + case 'im.vector.fake.direct': + verb = _t('to tag direct chat'); + break; + case 'im.vector.fake.recent': + verb = _t('to restore'); + break; + case 'm.lowpriority': + verb = _t('to demote'); + break; + default: + return _t('Drop here to tag %(section)s', {section: section}); + } + return _t('Drop here %(toAction)s', {toAction: verb}); }; module.exports = React.createClass({ @@ -505,7 +522,7 @@ module.exports = React.createClass({ return null; } - const labelText = 'Drop here to ' + (VERBS[section] || 'tag ' + section); + const labelText = phraseForSection(section); return ; }, From fdae1b4fef21259a1f1094783581948d8bdadefd Mon Sep 17 00:00:00 2001 From: Nathan van Beelen Date: Tue, 20 Jun 2017 08:51:41 +0000 Subject: [PATCH 173/481] Translated using Weblate (Dutch) Currently translated at 56.3% (511 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nl/ --- src/i18n/strings/nl.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index dadd8d8dbf..334855de8c 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -509,5 +509,10 @@ "Please check your email and click on the link it contains. Once this is done, click continue.": "Bekijk je e-mail en klik op de link die het bevat. Zodra dit klaar is, klik op verder gaan.", "Power level must be positive integer.": "Machtsniveau moet een positief heel getal zijn.", "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s heeft zijn of haar weergavenaam (%(oldDisplayName)s) verwijderd.", - "%(senderName)s removed their profile picture.": "%(senderName)s heeft zijn of haar profielfoto verwijderd." + "%(senderName)s removed their profile picture.": "%(senderName)s heeft zijn of haar profielfoto verwijderd.", + "Failed to kick": "Niet gelukt om te kicken", + "Press to start a chat with someone": "Druk op om een gesprek met iemand te starten", + "Remove %(threePid)s?": "%(threePid)s verwijderen?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s heeft een VoIP gesprek aangevraagd.", + "Report it": "Melden" } From 499d3b9438d7537e121baf0944ca9f8bdf896814 Mon Sep 17 00:00:00 2001 From: Bamstam Date: Mon, 19 Jun 2017 18:41:14 +0000 Subject: [PATCH 174/481] Translated using Weblate (German) Currently translated at 100.0% (907 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 6fc196fa94..a99671402b 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -671,7 +671,7 @@ "%(oneUser)srejected their invitation %(repeats)s times": "%(oneUser)shat die Einladung %(repeats)s mal abgelehnt", "%(severalUsers)srejected their invitations": "%(severalUsers)shaben ihre Einladung abgelehnt", "%(oneUser)srejected their invitation": "%(oneUser)shat die Einladung abgelehnt", - "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)szogen ihre Einladungen %(repeats)s mal zurück", + "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)swurden die ursprünglichen Einladungen %(repeats)s mal wieder entzogen", "%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)swurde die Einladung %(repeats)s mal wieder entzogen", "%(severalUsers)shad their invitations withdrawn": "%(severalUsers)szogen ihre Einladungen zurück", "%(oneUser)shad their invitation withdrawn": "%(oneUser)swurde die ursprüngliche Einladung wieder entzogen", From 59f6ab8c66854530948362dbfbfbef16ad426f78 Mon Sep 17 00:00:00 2001 From: Szimszon Date: Mon, 19 Jun 2017 19:48:07 +0000 Subject: [PATCH 175/481] Translated using Weblate (Hungarian) Currently translated at 74.8% (679 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 118 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 117 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index d0bc76fe8a..f2fa3bb63e 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -562,5 +562,121 @@ "This doesn't appear to be a valid email address": "Ez nem tűnik helyes e-mail címnek", "This is a preview of this room. Room interactions have been disabled": "Ez a szoba előnézete. Minden tevékenység ezzel a szobával ki van kapcsolva", "This phone number is already in use": "Ez a telefonszám már használatban van", - "This room": "Ez a szoba" + "This room": "Ez a szoba", + "This room is not accessible by remote Matrix servers": "Ez a szoba távoli Matrix szerverről nem érhető el", + "This room's internal ID is": "A szoba belső azonosítója:", + "times": "alkalommal", + "To ban users": "Felhasználó kizárásához", + "to browse the directory": "a könyvtárban való kereséshez", + "To configure the room": "A szoba beállításához", + "to favourite": "kedvencekhez", + "To invite users into the room": "Felhasználó szobába való meghívásához", + "To kick users": "Felhasználó kirúgásához", + "To link to a room it must have an address.": "Szobához való kötéshez szükséges egy cím.", + "to make a room or": "szoba létrehozásához vagy", + "To remove other users' messages": "Más felhasználók üzeneteinek törléséhez", + "To reset your password, enter the email address linked to your account": "A jelszó alaphelyzetbe állításához add meg a fiókodhoz kötött e-mail címet", + "to restore": "visszaállításhoz", + "To send events of type": "Az alábbi típusú üzenetek küldéséhez", + "To send messages": "Üzenetek küldéséhez", + "to start a chat with someone": "csevegés indításához valakivel", + "to tag as %(tagName)s": "megjelölni mint: %(tagName)s", + "to tag direct chat": "megjelölni közvetlen csevegésnek", + "To use it, just wait for autocomplete results to load and tab through them.": "A használatához csak várd meg az automatikus kiegészítéshez a találatok betöltését és TAB-bal választhatsz közülük.", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Megpróbáltam betölteni a szoba megadott időpontjának megfelelő adatait, de nincs jogod a kérdéses üzenetek megjelenítéséhez.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Megpróbáltam betölteni a szoba megadott időpontjának megfelelő adatait, de nem találom.", + "Turn Markdown off": "Markdown kikapcsolása", + "Turn Markdown on": "Markdown bekapcsolása", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s bekapcsolta a titkosítást végponttól végpontig (algoritmus %(algorithm)s).", + "Unable to add email address": "Az e-mail címet nem sikerült hozzáadni", + "Unable to remove contact information": "A névjegy információkat nem sikerült törölni", + "Unable to restore previous session": "Az előző kapcsolat visszaállítása sikertelen", + "Unable to verify email address.": "Az e-mail cím ellenőrzése sikertelen.", + "Unban": "Kitiltás visszavonása", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s visszaengedte %(targetName)s felhasználót.", + "Unable to capture screen": "A képernyő felvétele sikertelen", + "Unable to enable Notifications": "Az értesítések engedélyezése sikertelen", + "Unable to load device list": "Az eszközlista betöltése sikertelen", + "Undecryptable": "Visszafejthetetlen", + "Unencrypted room": "Titkosítatlan szoba", + "unencrypted": "titkosítatlan", + "Unencrypted message": "Titkosítatlan üzenet", + "unknown caller": "ismeretlen hívó", + "Unknown command": "Ismeretlen parancs", + "unknown device": "ismeretlen eszköz", + "Unknown room %(roomId)s": "Ismeretlen szoba %(roomId)s", + "Unknown (user, device) pair:": "Ismeretlen (felhasználó, eszköz) pár:", + "unknown": "ismeretlen", + "Unmute": "Némítás kikapcsolása", + "Unnamed Room": "Névtelen szoba", + "Unrecognised command:": "Ismeretlen parancs:", + "Unrecognised room alias:": "Ismeretlen szoba becenév:", + "Unverified": "Nem ellenőrzött", + "Uploading %(filename)s and %(count)s others.zero": "%(filename)s feltöltése", + "Uploading %(filename)s and %(count)s others.one": "%(filename)s és még %(count)s db másik feltöltése", + "Uploading %(filename)s and %(count)s others.other": "%(filename)s és még %(count)s db másik feltöltése", + "uploaded a file": "fájl feltöltése", + "Upload avatar": "Avatar kép feltöltése", + "Upload Failed": "Feltöltés sikertelen", + "Upload Files": "Fájlok feltöltése", + "Upload file": "Fájl feltöltése", + "Upload new:": "Új feltöltése:", + "Usage": "Használat", + "Use compact timeline layout": "Egyszerű idővonal séma használata", + "Use with caution": "Használd körültekintéssel", + "User ID": "Felhasználói azonosító", + "User Interface": "Felhasználói felület", + "%(user)s is a": "%(user)s egy", + "User name": "Felhasználói név", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (szint: %(powerLevelNumber)s)", + "Username invalid: %(errMessage)s": "Felhasználói név érvénytelen: %(errMessage)s", + "Users": "Felhasználók", + "User": "Felhasználó", + "Verification Pending": "Ellenőrzés függőben", + "Verification": "Ellenőrzés", + "verified": "ellenőrizve", + "Verified": "Ellenőrizve", + "Verified key": "Ellenőrzött kulcs", + "Video call": "Videó hívás", + "Voice call": "Hang hívás", + "VoIP conference finished.": "VoIP konferencia befejeződött.", + "VoIP conference started.": "VoIP konferencia elkezdődött.", + "VoIP is unsupported": "VoIP nem támogatott", + "(could not connect media)": "(média kapcsolat nem hozható létre)", + "(no answer)": "(nincs válasz)", + "(unknown failure: %(reason)s)": "(ismeretlen hiba: %(reason)s)", + "(warning: cannot be disabled again!)": "(figyelmeztetés: nem lehet újra kikapcsolni!)", + "Warning!": "Figyelem!", + "WARNING: Device already verified, but keys do NOT MATCH!": "Figyelem: Az eszköz már ellenőrzött, de a kulcsok NEM EGYEZNEK!", + "Who can access this room?": "Ki éri el ezt a szobát?", + "Who can read history?": "Ki olvashatja a régi üzeneteket?", + "Who would you like to add to this room?": "Kit szeretnél hozzáadni ehhez a szobához?", + "Who would you like to communicate with?": "Kivel szeretnél beszélgetni?", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s visszavonta %(targetName)s meghívóját.", + "Would you like to accept or decline this invitation?": "Ezt a meghívót szeretnéd elfogadni vagy elutasítani?", + "You already have existing direct chats with this user:": "Már van közvetlen csevegésed ezzel a felhasználóval:", + "You are already in a call.": "Már hívásban vagy.", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Még egyetlen szobába sem léptél be! Szoba létrehozáshoz nyomd meg: vagy a szobák közötti kereséshez nyomd meg: ", + "You are trying to access %(roomName)s.": "%(roomName)s szobába próbálsz belépni.", + "You cannot place a call with yourself.": "Nem hívhatod fel saját magadat.", + "You cannot place VoIP calls in this browser.": "Nem indíthatsz VoIP hívást ebben a böngészőben.", + "You do not have permission to post to this room": "Nincs jogod írni ebben a szobában", + "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s kitiltott a szobából: %(roomName)s.", + "You have been invited to join this room by %(inviterName)s": "%(inviterName)s meghívott ebbe a szobába", + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s kirúgott ebből a szobából: %(roomName)s.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Kijelentkeztél minden eszközről így nem fogsz \"push\" értesítéseket kapni. Az értesítések engedélyezéséhez jelentkezz vissza mindegyik eszközön", + "You have disabled URL previews by default.": "Az URL előnézet alapból tiltva van.", + "You have enabled URL previews by default.": "Az URL előnézet alapból engedélyezve van.", + "You have entered an invalid contact. Try using their Matrix ID or email address.": "Érvénytelen kapcsolatot adtál meg. Próbáld meg a Matrix azonosítóját vagy e-mail címét használni.", + "You have no visible notifications": "Nincsenek látható értesítéseid", + "You may wish to login with a different account, or add this email to this account.": "Lehet, hogy más fiókba szeretnél belépni vagy ezt az e-mail címet szeretnéd ehhez a fiókhoz kötni.", + "you must be a": "szükséges szerep:", + "You must register to use this functionality": "Regisztrálnod kell hogy ezt használhasd", + "You need to be able to invite users to do that.": "Hogy ezt csinálhasd meg kell tudnod hívni felhasználókat.", + "You need to be logged in.": "Be kell jelentkezz.", + "You need to enter a user name.": "Be kell írnod a felhasználói nevet.", + "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "Ahhoz, hogy kulcsot tudjál készíteni a végponttól végpontig való titkosításhoz ehhez az eszközhöz és elküld a kulcsot a egyéni szerverhez vissza kell jelentkezned. Ez egyszeri alkalom, elnézést a kellemetlenségér.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Ez az e-mail cím, úgy néz ki, nincs összekötve a Matrix azonosítóval ezen az egyedi szerveren.", + "Your password has been reset": "A jelszavad visszaállítottuk", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "A jelszavadat sikeresen megváltoztattuk. Nem kapsz \"push\" értesítéseket amíg a többi eszközön vissza nem jelentkezel" } From 42b26bd4e4c8ccd334ad5e16a694219743014af4 Mon Sep 17 00:00:00 2001 From: IMIN <2reeseenmin@gmail.com> Date: Tue, 20 Jun 2017 08:52:41 +0000 Subject: [PATCH 176/481] Translated using Weblate (Korean) Currently translated at 73.6% (668 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ko/ --- src/i18n/strings/ko.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index b80f1f133a..057c02c3eb 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -660,5 +660,12 @@ "Would you like to accept or decline this invitation?": "초대를 받아들이거나 거절하시겠어요?", "You already have existing direct chats with this user:": "이미 이 사용자와 직접 이야기하는 중이에요:", "You are already in a call.": "이미 자신이 통화 중이네요.", - "You're not in any rooms yet! Press": "어떤 방에도 들어가 있지 않으세요! 누르세요" + "You're not in any rooms yet! Press": "어떤 방에도 들어가 있지 않으세요! 누르세요", + "Press to start a chat with someone": "다른 사람과 이야기하려면 을 누르세요", + "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!": "주의: 키 확인 실패! %(userId)s와 장치 %(deviceId)s의 서명 키 \"%(fprint)s\"는 주어진 키 \"%(fingerprint)s\"와 맞지 않아요. 누가 이야기를 가로채는 중일 수도 있어요!", + "You're not in any rooms yet! Press to make a room or to browse the directory": "어떤 방에도 들어가 있지 않으세요! 을 눌러서 방을 만들거나 를 눌러 목록에서 방을 찾아보세요", + "You are trying to access %(roomName)s.": "%(roomName)s에 들어가려고 하는 중이에요.", + "You cannot place a call with yourself.": "자신에게 전화를 걸 수는 없어요.", + "You cannot place VoIP calls in this browser.": "이 브라우저에서는 인터넷전화를 걸 수 없어요.", + "You do not have permission to post to this room": "이 방에서 글을 올릴 권한이 없어요" } From 97e28a12c244f7d5eaabeb85a8b3f54192ec3721 Mon Sep 17 00:00:00 2001 From: Nathan van Beelen Date: Tue, 20 Jun 2017 08:59:55 +0000 Subject: [PATCH 177/481] Translated using Weblate (Dutch) Currently translated at 57.4% (521 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nl/ --- src/i18n/strings/nl.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 334855de8c..eae3d7bc87 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -514,5 +514,15 @@ "Press to start a chat with someone": "Druk op om een gesprek met iemand te starten", "Remove %(threePid)s?": "%(threePid)s verwijderen?", "%(senderName)s requested a VoIP conference.": "%(senderName)s heeft een VoIP gesprek aangevraagd.", - "Report it": "Melden" + "Report it": "Melden", + "Resetting 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.": "Het wachtwoord veranderen betekent momenteel dat alle eind-tot-eind versleutelingssleutels op alle apparaten veranderen waardoor versleutelde gespreksgeschiedenis onleesbaar wordt, behalve als je eerst de ruimte sleutels exporteert en daarna opnieuw importeert. Dit zal in de toekomst verbeterd worden.", + "restore": "herstellen", + "Results from DuckDuckGo": "Resultaten van DuckDuckGo", + "Return to app": "Naar de app terugkeren", + "Return to login screen": "Naar het inlogscherm terugkeren", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot heeft geen permissie om je notificaties te versturen - controleer je browser instellingen", + "Riot was not given permission to send notifications - please try again": "Riot heeft geen permissie gekregen om notificaties te versturen - probeer het opnieuw", + "riot-web version:": "riot-web versie:", + "Room %(roomId)s not visible": "Ruimte %(roomId)s is niet zichtbaar", + "Room Colour": "Ruimte Kleur" } From dcc9443918d9d0f55b9fda2aae46a448497f1bfb Mon Sep 17 00:00:00 2001 From: IMIN <2reeseenmin@gmail.com> Date: Tue, 20 Jun 2017 08:56:41 +0000 Subject: [PATCH 178/481] Translated using Weblate (Korean) Currently translated at 73.9% (671 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ko/ --- src/i18n/strings/ko.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index 057c02c3eb..c2969ad966 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -667,5 +667,8 @@ "You are trying to access %(roomName)s.": "%(roomName)s에 들어가려고 하는 중이에요.", "You cannot place a call with yourself.": "자신에게 전화를 걸 수는 없어요.", "You cannot place VoIP calls in this browser.": "이 브라우저에서는 인터넷전화를 걸 수 없어요.", - "You do not have permission to post to this room": "이 방에서 글을 올릴 권한이 없어요" + "You do not have permission to post to this room": "이 방에서 글을 올릴 권한이 없어요", + "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s님이 %(roomName)s에서 차단하셨어요.", + "You have been invited to join this room by %(inviterName)s": "%(inviterName)s님이 이 방에 초대하셨어요", + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s님이 %(roomName)s에서 추방하셨어요." } From 0e71918ba174d3d6a7e9aa4b78aebb27552b88ae Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 20 Jun 2017 10:05:50 +0100 Subject: [PATCH 179/481] Merge pull request #1119 from RiotTranslateBot/weblate-riot-web-matrix-react-sdk Update from Weblate. --- src/i18n/strings/de_DE.json | 18 ++-- src/i18n/strings/el.json | 4 +- src/i18n/strings/fr.json | 6 +- src/i18n/strings/hu.json | 172 +++++++++++++++++++++++++++++++++++- src/i18n/strings/ko.json | 21 ++++- src/i18n/strings/nl.json | 34 +++++-- src/i18n/strings/pt_BR.json | 11 ++- src/i18n/strings/ru.json | 32 +++---- 8 files changed, 263 insertions(+), 35 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index a4ac23581d..a99671402b 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -105,7 +105,7 @@ "Can't load user settings": "Benutzereinstellungen können nicht geladen werden", "changed name": "änderte Namen", "changed the power level of": "änderte Berechtigungslevel von", - "Clear Cache": "Leere Cache", + "Clear Cache": "Cache leeren", "Click here to fix": "Zum reparieren hier klicken", "*️⃣ Commands": "*️⃣ Befehle", "Default": "Standard", @@ -207,7 +207,7 @@ "since they joined": "ab dem Zeitpunkt, an dem sie beigetreten sind", "since they were invited": "ab dem Zeitpunkt, an dem sie eingeladen wurden", "Someone": "Jemand", - "Start a chat": "Starte einen Chat", + "Start a chat": "Chat starten", "Start Chat": "Chat beginnen", "Success": "Erfolg", "tag direct chat": "Zum kennzeichnen als direkten Chat", @@ -425,7 +425,7 @@ "to start a chat with someone": "um einen Chat mit jemandem zu starten", "to tag direct chat": "als Direkt-Chat markieren", "You're not in any rooms yet! Press": "Du bist noch keinem Raum beigetreten! Drücke", - "click to reveal": "Klicke zum anzeigen", + "click to reveal": "anzeigen", "To remove other users' messages": "Um Nachrichten anderer Nutzer zu verbergen", "You are trying to access %(roomName)s.": "Du versuchst, auf den Raum \"%(roomName)s\" zuzugreifen.", "af": "Afrikaans", @@ -671,7 +671,7 @@ "%(oneUser)srejected their invitation %(repeats)s times": "%(oneUser)shat die Einladung %(repeats)s mal abgelehnt", "%(severalUsers)srejected their invitations": "%(severalUsers)shaben ihre Einladung abgelehnt", "%(oneUser)srejected their invitation": "%(oneUser)shat die Einladung abgelehnt", - "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)szogen ihre Einladungen %(repeats)s mal zurück", + "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)swurden die ursprünglichen Einladungen %(repeats)s mal wieder entzogen", "%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)swurde die Einladung %(repeats)s mal wieder entzogen", "%(severalUsers)shad their invitations withdrawn": "%(severalUsers)szogen ihre Einladungen zurück", "%(oneUser)shad their invitation withdrawn": "%(oneUser)swurde die ursprüngliche Einladung wieder entzogen", @@ -710,7 +710,7 @@ "New passwords don't match": "Die neuen Passwörter stimmen nicht überein", "olm version:": "Version von olm:", "Passwords can't be empty": "Passwortfelder dürfen nicht leer sein", - "Report it": "Melde ihn", + "Report it": "Melden", "riot-web version:": "Version von riot-web:", "Scroll to bottom of page": "Zum Ende der Seite springen", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Zeitstempel im 12-Stunden-Format anzeigen (z. B. 2:30pm)", @@ -815,14 +815,14 @@ "Ongoing conference call%(supportedText)s.": "Laufendes Konferenzgespräch%(supportedText)s.", "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Du wirst jetzt auf die Website eines Drittanbieters weitergeleitet, damit du dein Konto für die Verwendung von %(integrationsUrl)s authentifizieren kannst. Möchtest du fortfahren?", "Disable URL previews for this room (affects only you)": "URL-Vorschau für diesen Raum deaktivieren (betrifft nur dich)", - "Start automatically after system login": "Starte automatisch nach System-Login", + "Start automatically after system login": "Nach System-Login automatisch starten", "Desktop specific": "Desktopspezifisch", "Jump to first unread message.": "Zur ersten ungelesenen Nachricht springen.", "Options": "Optionen", "disabled": "deaktiviert", "enabled": "aktiviert", "Invited": "Eingeladen", - "Set a Display Name": "Setze einen Anzeigenamen", + "Set a Display Name": "Anzeigenamen festlegen", "for %(amount)ss": "für %(amount)ss", "for %(amount)sm": "seit %(amount)smin", "for %(amount)sh": "für %(amount)sh", @@ -974,5 +974,7 @@ "Authentication check failed: incorrect password?": "Authentifizierung fehlgeschlagen: Falsches Passwort?", "Disable Peer-to-Peer for 1:1 calls": "Peer-to-Peer-Verbindung für 1-zu-1-Anrufe deaktivieren", "Do you want to set an email address?": "Möchtest du eine E-Mail-Adresse setzen?", - "This will allow you to reset your password and receive notifications.": "Dies erlaubt dir dein Passwort zurückzusetzen und Benachrichtigungen zu empfangen." + "This will allow you to reset your password and receive notifications.": "Dies erlaubt dir dein Passwort zurückzusetzen und Benachrichtigungen zu empfangen.", + "Press to start a chat with someone": "Klicke auf um einen Chat mit jemanden zu starten", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Du bist bisher in keinem Raum! Klicke auf um einen Raum zu erstellen oder um das Verzeichnis zu durchsuchen" } diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index cdfb558f3a..4e09fd7f2a 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -914,5 +914,7 @@ "were unbanned %(repeats)s times": "ξεμπλοκαρίστηκαν %(repeats)s φορές", "was unbanned %(repeats)s times": "ξεμπλοκαρίστηκε %(repeats)s φορές", "were unbanned": "ξεμπλοκαρίστηκαν", - "was unbanned": "ξεμπλοκαρίστηκε" + "was unbanned": "ξεμπλοκαρίστηκε", + "Press to start a chat with someone": "Πατήστε για να ξεκινήσετε μια συνομιλία", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Δεν είστε σε κανένα δωμάτιο! Πατήστε για να δημιουργήσετε ένα δωμάτιο ή για να δείτε το ευρετήριο" } diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 0d33ad711f..039198f0cf 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -557,7 +557,7 @@ "You're not in any rooms yet! Press": "Vous n’êtes dans aucun salon ! Cliquez", "You are trying to access %(roomName)s.": "Vous essayez d'accéder à %(roomName)s.", "You cannot place a call with yourself.": "Vous ne pouvez pas passer d'appel avec vous-même.", - "You cannot place VoIP calls in this browser.": "Vous ne pouvez pas passer d'appel voix dans cet explorateur.", + "You cannot place VoIP calls in this browser.": "Vous ne pouvez pas passer d'appel vocal dans ce navigateur.", "You do not have permission to post to this room": "Vous n’avez pas la permission de poster dans ce salon", "You have been invited to join this room by %(inviterName)s": "Vous avez été invité à joindre ce salon par %(inviterName)s", "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Vous avez été déconnecté de tous vos appareils et ne recevrez plus de notifications. Pour réactiver les notifications, identifiez vous à nouveau sur tous les appareils", @@ -922,5 +922,7 @@ "Authentication check failed: incorrect password?": "Erreur d’identification: mot de passe incorrect ?", "Disable Peer-to-Peer for 1:1 calls": "Désactiver les appels 1:1 pair-à-pair", "Do you want to set an email address?": "Souhaitez-vous configurer une adresse e-mail ?", - "This will allow you to reset your password and receive notifications.": "Ceci va vous permettre de réinitialiser votre mot de passe et de recevoir des notifications." + "This will allow you to reset your password and receive notifications.": "Ceci va vous permettre de réinitialiser votre mot de passe et de recevoir des notifications.", + "Press to start a chat with someone": "Cliquez sur pour entamer une discussion avec quelqu'un", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Vous n'avez pas encore rejoint de salle ! Cliquez sur pour créer une salle ou sur pour explorer l'annuaire" } diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 696a548b4a..f2fa3bb63e 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -508,5 +508,175 @@ "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s képet küldött.", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s meghívót küldött %(targetDisplayName)s felhasználónak, hogy lépjen be a szobába.", "sent a video": "videó küldve", - "Server error": "Szerver hiba" + "Server error": "Szerver hiba", + "Server may be unavailable or overloaded": "A szerver elérhetetlen vagy túlterhelt", + "Server may be unavailable, overloaded, or search timed out :(": "A szerver elérhetetlen, túlterhelt vagy a keresés túllépte az időkorlátot :(", + "Server may be unavailable, overloaded, or the file too big": "A szerver elérhetetlen, túlterhelt vagy a fájl túl nagy", + "Server may be unavailable, overloaded, or you hit a bug.": "A szerver elérhetetlen, túlterhelt vagy hibára futott.", + "Server unavailable, overloaded, or something else went wrong.": "A szerver elérhetetlen, túlterhelt vagy valami más probléma van.", + "Session ID": "Kapcsolat azonosító", + "%(senderName)s set a profile picture.": "%(senderName)s profil képet állított be.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s a megjelenítési nevét megváltoztatta erre: %(displayName)s.", + "Set": "Beállít", + "Show panel": "Panel megjelenítése", + "Show Text Formatting Toolbar": "Szöveg formázási eszköztár megjelenítése", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Az időbélyegek 12 órás formátumban mutatása (pl.: 2:30pm)", + "Signed Out": "Kijelentkezett", + "Sign in": "Bejelentkezett", + "Sign out": "Kijelentkezés", + "since the point in time of selecting this option": "onnantól, hogy ez az opció kiválasztásra került", + "since they joined": "onnantól, hogy csatlakozott", + "since they were invited": "onnantól, hogy meg lett hívva", + "Some of your messages have not been sent.": "Néhány üzeneted nem lett elküldve.", + "Someone": "Valaki", + "Sorry, this homeserver is using a login which is not recognised ": "Bocs, ez a saját szerver olyan beléptetést használ ami nem ismert ", + "Start a chat": "Csevegés indítása", + "Start authentication": "Azonosítás indítása", + "Start Chat": "Csevegés indítása", + "Submit": "Elküld", + "Success": "Sikeres", + "tag as %(tagName)s": "címke beállítása: %(tagName)s", + "tag direct chat": "megjelölés közvetlen csevegésnek", + "Tagged as: ": "Címkék: ", + "The default role for new room members is": "Az alapértelmezett szerep új tagoknak:", + "The main address for this room is": "A szoba elsődleges címe:", + "The phone number entered looks invalid": "A megadott telefonszám érvénytelennek tűnik", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Az általad megadott aláíró kulcs megegyezik %(userId)s felhasználótól kapott kulccsal amit %(deviceId)s eszközhöz használ. Az eszköz ellenőrzöttnek jelölve.", + "This action cannot be performed by a guest user. Please register to be able to do this.": "Ezt nem teheti vendég felhasználó. Kérlek regisztrálj, hogy megtehesd.", + "This email address is already in use": "Ez az e-mail cím már használatban van", + "This email address was not found": "Az e-mail cím nem található", + "%(actionVerb)s this person?": "Ezt a felhasználót %(actionVerb)s?", + "The email address linked to your account must be entered.": "A fiókodhoz kötött e-mail címet add meg.", + "Press to start a chat with someone": "Nyomd meg a gombot ha szeretnél csevegni valakivel", + "Privacy warning": "Magánéleti figyelmeztetés", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "'%(fileName)s' fájl túllépte az egyedi szerverben beállított feltöltési méret határt", + "The file '%(fileName)s' failed to upload": "'%(fileName)s' fájl feltöltése sikertelen", + "The remote side failed to pick up": "A hívott fél nem vette fel", + "This Home Server does not support login using email address.": "Az egyedi szerver nem támogatja a belépést e-mail címmel.", + "This invitation was sent to an email address which is not associated with this account:": "A meghívó olyan e-mail címre lett küldve ami nincs összekötve ezzel a fiókkal:", + "There was a problem logging in.": "Hiba történt a bejelentkezésnél.", + "This room has no local addresses": "Ennek a szobának nincs helyi címe", + "This room is not recognised.": "Ez a szoba nem ismerős.", + "These are experimental features that may break in unexpected ways": "Ezek kísérleti funkciók amik kiszámíthatatlanok lehetnek", + "The visibility of existing history will be unchanged": "A már meglévő csevegés előzmények láthatósága nem változik", + "This doesn't appear to be a valid email address": "Ez nem tűnik helyes e-mail címnek", + "This is a preview of this room. Room interactions have been disabled": "Ez a szoba előnézete. Minden tevékenység ezzel a szobával ki van kapcsolva", + "This phone number is already in use": "Ez a telefonszám már használatban van", + "This room": "Ez a szoba", + "This room is not accessible by remote Matrix servers": "Ez a szoba távoli Matrix szerverről nem érhető el", + "This room's internal ID is": "A szoba belső azonosítója:", + "times": "alkalommal", + "To ban users": "Felhasználó kizárásához", + "to browse the directory": "a könyvtárban való kereséshez", + "To configure the room": "A szoba beállításához", + "to favourite": "kedvencekhez", + "To invite users into the room": "Felhasználó szobába való meghívásához", + "To kick users": "Felhasználó kirúgásához", + "To link to a room it must have an address.": "Szobához való kötéshez szükséges egy cím.", + "to make a room or": "szoba létrehozásához vagy", + "To remove other users' messages": "Más felhasználók üzeneteinek törléséhez", + "To reset your password, enter the email address linked to your account": "A jelszó alaphelyzetbe állításához add meg a fiókodhoz kötött e-mail címet", + "to restore": "visszaállításhoz", + "To send events of type": "Az alábbi típusú üzenetek küldéséhez", + "To send messages": "Üzenetek küldéséhez", + "to start a chat with someone": "csevegés indításához valakivel", + "to tag as %(tagName)s": "megjelölni mint: %(tagName)s", + "to tag direct chat": "megjelölni közvetlen csevegésnek", + "To use it, just wait for autocomplete results to load and tab through them.": "A használatához csak várd meg az automatikus kiegészítéshez a találatok betöltését és TAB-bal választhatsz közülük.", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Megpróbáltam betölteni a szoba megadott időpontjának megfelelő adatait, de nincs jogod a kérdéses üzenetek megjelenítéséhez.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Megpróbáltam betölteni a szoba megadott időpontjának megfelelő adatait, de nem találom.", + "Turn Markdown off": "Markdown kikapcsolása", + "Turn Markdown on": "Markdown bekapcsolása", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s bekapcsolta a titkosítást végponttól végpontig (algoritmus %(algorithm)s).", + "Unable to add email address": "Az e-mail címet nem sikerült hozzáadni", + "Unable to remove contact information": "A névjegy információkat nem sikerült törölni", + "Unable to restore previous session": "Az előző kapcsolat visszaállítása sikertelen", + "Unable to verify email address.": "Az e-mail cím ellenőrzése sikertelen.", + "Unban": "Kitiltás visszavonása", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s visszaengedte %(targetName)s felhasználót.", + "Unable to capture screen": "A képernyő felvétele sikertelen", + "Unable to enable Notifications": "Az értesítések engedélyezése sikertelen", + "Unable to load device list": "Az eszközlista betöltése sikertelen", + "Undecryptable": "Visszafejthetetlen", + "Unencrypted room": "Titkosítatlan szoba", + "unencrypted": "titkosítatlan", + "Unencrypted message": "Titkosítatlan üzenet", + "unknown caller": "ismeretlen hívó", + "Unknown command": "Ismeretlen parancs", + "unknown device": "ismeretlen eszköz", + "Unknown room %(roomId)s": "Ismeretlen szoba %(roomId)s", + "Unknown (user, device) pair:": "Ismeretlen (felhasználó, eszköz) pár:", + "unknown": "ismeretlen", + "Unmute": "Némítás kikapcsolása", + "Unnamed Room": "Névtelen szoba", + "Unrecognised command:": "Ismeretlen parancs:", + "Unrecognised room alias:": "Ismeretlen szoba becenév:", + "Unverified": "Nem ellenőrzött", + "Uploading %(filename)s and %(count)s others.zero": "%(filename)s feltöltése", + "Uploading %(filename)s and %(count)s others.one": "%(filename)s és még %(count)s db másik feltöltése", + "Uploading %(filename)s and %(count)s others.other": "%(filename)s és még %(count)s db másik feltöltése", + "uploaded a file": "fájl feltöltése", + "Upload avatar": "Avatar kép feltöltése", + "Upload Failed": "Feltöltés sikertelen", + "Upload Files": "Fájlok feltöltése", + "Upload file": "Fájl feltöltése", + "Upload new:": "Új feltöltése:", + "Usage": "Használat", + "Use compact timeline layout": "Egyszerű idővonal séma használata", + "Use with caution": "Használd körültekintéssel", + "User ID": "Felhasználói azonosító", + "User Interface": "Felhasználói felület", + "%(user)s is a": "%(user)s egy", + "User name": "Felhasználói név", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (szint: %(powerLevelNumber)s)", + "Username invalid: %(errMessage)s": "Felhasználói név érvénytelen: %(errMessage)s", + "Users": "Felhasználók", + "User": "Felhasználó", + "Verification Pending": "Ellenőrzés függőben", + "Verification": "Ellenőrzés", + "verified": "ellenőrizve", + "Verified": "Ellenőrizve", + "Verified key": "Ellenőrzött kulcs", + "Video call": "Videó hívás", + "Voice call": "Hang hívás", + "VoIP conference finished.": "VoIP konferencia befejeződött.", + "VoIP conference started.": "VoIP konferencia elkezdődött.", + "VoIP is unsupported": "VoIP nem támogatott", + "(could not connect media)": "(média kapcsolat nem hozható létre)", + "(no answer)": "(nincs válasz)", + "(unknown failure: %(reason)s)": "(ismeretlen hiba: %(reason)s)", + "(warning: cannot be disabled again!)": "(figyelmeztetés: nem lehet újra kikapcsolni!)", + "Warning!": "Figyelem!", + "WARNING: Device already verified, but keys do NOT MATCH!": "Figyelem: Az eszköz már ellenőrzött, de a kulcsok NEM EGYEZNEK!", + "Who can access this room?": "Ki éri el ezt a szobát?", + "Who can read history?": "Ki olvashatja a régi üzeneteket?", + "Who would you like to add to this room?": "Kit szeretnél hozzáadni ehhez a szobához?", + "Who would you like to communicate with?": "Kivel szeretnél beszélgetni?", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s visszavonta %(targetName)s meghívóját.", + "Would you like to accept or decline this invitation?": "Ezt a meghívót szeretnéd elfogadni vagy elutasítani?", + "You already have existing direct chats with this user:": "Már van közvetlen csevegésed ezzel a felhasználóval:", + "You are already in a call.": "Már hívásban vagy.", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Még egyetlen szobába sem léptél be! Szoba létrehozáshoz nyomd meg: vagy a szobák közötti kereséshez nyomd meg: ", + "You are trying to access %(roomName)s.": "%(roomName)s szobába próbálsz belépni.", + "You cannot place a call with yourself.": "Nem hívhatod fel saját magadat.", + "You cannot place VoIP calls in this browser.": "Nem indíthatsz VoIP hívást ebben a böngészőben.", + "You do not have permission to post to this room": "Nincs jogod írni ebben a szobában", + "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s kitiltott a szobából: %(roomName)s.", + "You have been invited to join this room by %(inviterName)s": "%(inviterName)s meghívott ebbe a szobába", + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s kirúgott ebből a szobából: %(roomName)s.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Kijelentkeztél minden eszközről így nem fogsz \"push\" értesítéseket kapni. Az értesítések engedélyezéséhez jelentkezz vissza mindegyik eszközön", + "You have disabled URL previews by default.": "Az URL előnézet alapból tiltva van.", + "You have enabled URL previews by default.": "Az URL előnézet alapból engedélyezve van.", + "You have entered an invalid contact. Try using their Matrix ID or email address.": "Érvénytelen kapcsolatot adtál meg. Próbáld meg a Matrix azonosítóját vagy e-mail címét használni.", + "You have no visible notifications": "Nincsenek látható értesítéseid", + "You may wish to login with a different account, or add this email to this account.": "Lehet, hogy más fiókba szeretnél belépni vagy ezt az e-mail címet szeretnéd ehhez a fiókhoz kötni.", + "you must be a": "szükséges szerep:", + "You must register to use this functionality": "Regisztrálnod kell hogy ezt használhasd", + "You need to be able to invite users to do that.": "Hogy ezt csinálhasd meg kell tudnod hívni felhasználókat.", + "You need to be logged in.": "Be kell jelentkezz.", + "You need to enter a user name.": "Be kell írnod a felhasználói nevet.", + "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "Ahhoz, hogy kulcsot tudjál készíteni a végponttól végpontig való titkosításhoz ehhez az eszközhöz és elküld a kulcsot a egyéni szerverhez vissza kell jelentkezned. Ez egyszeri alkalom, elnézést a kellemetlenségér.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Ez az e-mail cím, úgy néz ki, nincs összekötve a Matrix azonosítóval ezen az egyedi szerveren.", + "Your password has been reset": "A jelszavad visszaállítottuk", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "A jelszavadat sikeresen megváltoztattuk. Nem kapsz \"push\" értesítéseket amíg a többi eszközön vissza nem jelentkezel" } diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index f7f0654276..c2969ad966 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -651,5 +651,24 @@ "(unknown failure: %(reason)s)": "(알 수 없는 오류: %(reason)s)", "(warning: cannot be disabled again!)": "(주의: 다시 끌 수 없어요!)", "Warning!": "주의!", - "WARNING: Device already verified, but keys do NOT MATCH!": "주의: 장치는 이미 인증했지만, 키가 맞지 않아요!" + "WARNING: Device already verified, but keys do NOT MATCH!": "주의: 장치는 이미 인증했지만, 키가 맞지 않아요!", + "Who can access this room?": "누가 이 방에 들어올 수 있나요?", + "Who can read history?": "누가 기록을 읽을 수 있나요?", + "Who would you like to add to this room?": "이 방에 누구를 초대하고 싶으세요?", + "Who would you like to communicate with?": "누구와 이야기하고 싶으세요?", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s님이 %(targetName)s니의 초대를 취소하셨어요.", + "Would you like to accept or decline this invitation?": "초대를 받아들이거나 거절하시겠어요?", + "You already have existing direct chats with this user:": "이미 이 사용자와 직접 이야기하는 중이에요:", + "You are already in a call.": "이미 자신이 통화 중이네요.", + "You're not in any rooms yet! Press": "어떤 방에도 들어가 있지 않으세요! 누르세요", + "Press to start a chat with someone": "다른 사람과 이야기하려면 을 누르세요", + "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!": "주의: 키 확인 실패! %(userId)s와 장치 %(deviceId)s의 서명 키 \"%(fprint)s\"는 주어진 키 \"%(fingerprint)s\"와 맞지 않아요. 누가 이야기를 가로채는 중일 수도 있어요!", + "You're not in any rooms yet! Press to make a room or to browse the directory": "어떤 방에도 들어가 있지 않으세요! 을 눌러서 방을 만들거나 를 눌러 목록에서 방을 찾아보세요", + "You are trying to access %(roomName)s.": "%(roomName)s에 들어가려고 하는 중이에요.", + "You cannot place a call with yourself.": "자신에게 전화를 걸 수는 없어요.", + "You cannot place VoIP calls in this browser.": "이 브라우저에서는 인터넷전화를 걸 수 없어요.", + "You do not have permission to post to this room": "이 방에서 글을 올릴 권한이 없어요", + "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s님이 %(roomName)s에서 차단하셨어요.", + "You have been invited to join this room by %(inviterName)s": "%(inviterName)s님이 이 방에 초대하셨어요", + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s님이 %(roomName)s에서 추방하셨어요." } diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index e7a9f6e4b6..eae3d7bc87 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -234,7 +234,7 @@ "Mute": "Dempen", "Notifications": "Meldingen", "Operation failed": "Actie mislukt", - "Please Register": "Registreer alstublieft", + "Please Register": "Registreer Alstublieft", "powered by Matrix": "mogelijk gemaakt door Matrix", "Remove": "Verwijderen", "Room directory": "Kamerlijst", @@ -279,10 +279,10 @@ "%(senderName)s placed a %(callType)s call.": "%(senderName)s heeft een %(callType)s-gesprek gestart.", "Press": "Druk", "Privacy warning": "Privacywaarschuwing", - "Private Chat": "Direct chatten", + "Private Chat": "Privégesprek", "Privileged Users": "Gebruikers met rechten", "Profile": "Profiel", - "Public Chat": "Publiek gesprek", + "Public Chat": "Publiek Gesprek", "Reason": "Reden", "Reason: %(reasonText)s": "Reden: %(reasonText)s", "Revoke Moderator": "Beheerder terugtrekken", @@ -291,9 +291,9 @@ "rejected": "verworpen", "%(targetName)s rejected the invitation.": "%(targetName)s heeft de uitnodiging geweigerd.", "Reject invitation": "Uitnodiging weigeren", - "Rejoin": "Opnieuw lid wordne", + "Rejoin": "Opnieuw toetreden", "Remote addresses for this room:": "Adres op afstand voor deze ruimte:", - "Remove Contact Information?": "Contactinformatie verwijderen?", + "Remove Contact Information?": "Contactinformatie Verwijderen?", "Send Invites": "Uitnodigingen versturen", "Start a chat": "Gesprek starten", "Start authentication": "Authenticatie starten", @@ -502,5 +502,27 @@ "New Composer & Autocomplete": "Nieuwe Componist & Automatisch Aanvullen", "New passwords don't match": "Nieuwe wachtwoorden komen niet overeen", "New passwords must match each other.": "Nieuwe wachtwoorden moeten overeenkomen.", - "Once encryption is enabled for a room it cannot be turned off again (for now)": "Zodra versleuteling in een kamer is ingeschakeld kan het niet meer worden uitgeschakeld (voor nu)" + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Zodra versleuteling in een kamer is ingeschakeld kan het niet meer worden uitgeschakeld (voor nu)", + "Once you've followed the link it contains, click below": "Zodra je de link dat het bevat hebt gevolgd, klik hieronder", + "Only people who have been invited": "Alleen personen die zijn uitgenodigd", + "Otherwise, click here to send a bug report.": "Klik anders hier om een foutmelding te versturen.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Bekijk je e-mail en klik op de link die het bevat. Zodra dit klaar is, klik op verder gaan.", + "Power level must be positive integer.": "Machtsniveau moet een positief heel getal zijn.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s heeft zijn of haar weergavenaam (%(oldDisplayName)s) verwijderd.", + "%(senderName)s removed their profile picture.": "%(senderName)s heeft zijn of haar profielfoto verwijderd.", + "Failed to kick": "Niet gelukt om te kicken", + "Press to start a chat with someone": "Druk op om een gesprek met iemand te starten", + "Remove %(threePid)s?": "%(threePid)s verwijderen?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s heeft een VoIP gesprek aangevraagd.", + "Report it": "Melden", + "Resetting 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.": "Het wachtwoord veranderen betekent momenteel dat alle eind-tot-eind versleutelingssleutels op alle apparaten veranderen waardoor versleutelde gespreksgeschiedenis onleesbaar wordt, behalve als je eerst de ruimte sleutels exporteert en daarna opnieuw importeert. Dit zal in de toekomst verbeterd worden.", + "restore": "herstellen", + "Results from DuckDuckGo": "Resultaten van DuckDuckGo", + "Return to app": "Naar de app terugkeren", + "Return to login screen": "Naar het inlogscherm terugkeren", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot heeft geen permissie om je notificaties te versturen - controleer je browser instellingen", + "Riot was not given permission to send notifications - please try again": "Riot heeft geen permissie gekregen om notificaties te versturen - probeer het opnieuw", + "riot-web version:": "riot-web versie:", + "Room %(roomId)s not visible": "Ruimte %(roomId)s is niet zichtbaar", + "Room Colour": "Ruimte Kleur" } diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index b7ea693a50..1e915a5491 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -961,5 +961,14 @@ "Your home server does not support device management.": "O seu Servidor de Base não suporta o gerenciamento de dispositivos.", "(~%(count)s results).one": "(~%(count)s resultado)", "(~%(count)s results).other": "(~%(count)s resultados)", - "Device Name": "Nome do dispositivo" + "Device Name": "Nome do dispositivo", + "(could not connect media)": "(não foi possível conectar-se à mídia)", + "(no answer)": "(sem resposta)", + "(unknown failure: %(reason)s)": "(falha desconhecida: %(reason)s)", + "Your browser does not support the required cryptography extensions": "O seu navegador não suporta as extensões de criptografia necessárias", + "Not a valid Riot keyfile": "Não é um arquivo de chaves Riot válido", + "Authentication check failed: incorrect password?": "Falha ao checar a autenticação: senha incorreta?", + "Disable Peer-to-Peer for 1:1 calls": "Desabilitar as chamadas 1:1 par-a-par", + "Do you want to set an email address?": "Você deseja definir um endereço de e-mail?", + "This will allow you to reset your password and receive notifications.": "Isso permitirá que você redefina sua senha e receba notificações." } diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index d69282a07e..6b6eadf928 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -85,7 +85,7 @@ "Favourite": "Избранное", "favourite": "Избранное", "Favourites": "Избранное", - "Filter room members": "Фильтр участников комнаты", + "Filter room members": "Поиск участников комнаты", "Forget room": "Забыть комнату", "Forgot your password?": "Вы забыли пароль?", "For security, this session has been signed out. Please sign in again.": "Для обеспечения безопасности эта сессия была завершена. Войдите в систему еще раз.", @@ -100,14 +100,14 @@ "Invalid Email Address": "Недействительный адрес электронной почты", "invited": "invited", "Invite new room members": "Пригласить новых участников в комнату", - "Invites": "Приглашать", - "Invites user with given id to current room": "Пригласить пользователя с данным ID в текущую комнату", + "Invites": "Приглашает", + "Invites user with given id to current room": "Приглашает пользователя с этим ID в текущую комнату", "is a": "является", "Sign in with": "Я хочу регистрироваться с", - "joined and left": "присоединенный и оставленный", - "joined": "присоединенный", + "joined and left": "зашёл и ушёл", + "joined": "зашёл", "joined the room": "joined the room", - "Joins room with given alias": "Присоединяется к комнате с данным псевдонимом", + "Joins room with given alias": "зашёл в комнату с этим именем", "Kicks user with given id": "Выгнать пользователя с заданным id", "Labs": "Лаборатория", "Leave room": "Уйти из комнаты", @@ -116,7 +116,7 @@ "left the room": "left the room", "Logged in as": "Зарегистрированный как", "Login as guest": "Вход в систему как гость", - "Logout": "Выход из системы", + "Logout": "Выйти", "Low priority": "Низкий приоритет", "made future room history visible to": "made future room history visible to", "Manage Integrations": "Управление Интеграциями", @@ -128,7 +128,7 @@ "Never send encrypted messages to unverified devices from this device": "Никогда не отправлять зашифрованные сообщения на не верифицированные устройства с этого устройства", "Never send encrypted messages to unverified devices in this room from this device": "Никогда не отправляйте зашифрованные сообщения на непроверенные устройства в этой комнате из вашего устройства", "New password": "Новый пароль", - "New passwords must match each other.": "Новые пароли должны соответствовать друг другу.", + "New passwords must match each other.": "Новые пароли должны совпадать.", "none": "никто", "Notifications": "Уведомления", " (not supported by this browser)": " (not supported by this browser)", @@ -193,7 +193,7 @@ "(warning: cannot be disabled again!)": "(предупреждение: не может быть отключено!)", "Warning!": "Предупреждение!", "was banned": "запрещен", - "was invited": "приглашенный", + "was invited": "был приглашён", "was kicked": "выброшен", "was unbanned": "незапрещенный", "was": "был", @@ -650,10 +650,10 @@ "%(oneUser)schanged their avatar": "%(oneUser)sизменил своё изображение", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Не возможно подключиться к серверу через HTTP, когда в строке браузера HTTPS. Используйте HTTPS или включив небезопасные скрипты.", "Dismiss": "Отказ", - "Custom Server Options": "Расширенные настройки сервера", + "Custom Server Options": "Собственные настройки сервера", "Mute": "Беззвучный", "Operation failed": "Действие не удалось", - "powered by Matrix": "управляемый с Matrix", + "powered by Matrix": "Основано на Matrix", "Add a topic": "Добавить тему", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Время отображать в 12 часовом формате (напр. 2:30pm)", "Use compact timeline layout": "Компактное отображение", @@ -700,7 +700,7 @@ "Import": "Импорт", "Incorrect username and/or password.": "Неверное имя пользователя и/или пароль.", "Invalid file%(extra)s": "Неправильный файл%(extra)s", - "Invited": "Приглашен", + "Invited": "Приглашён", "Jump to first unread message.": "Перейти к первому непрочитанному сообщению.", "List this room in %(domain)s's room directory?": "Показывать эту комнату в списке комнат %(domain)s?", "Message not sent due to unknown devices being present": "Сообщение не было отправлено из-за присутствия неизвестного устройства", @@ -896,7 +896,7 @@ "Admin tools": "Админ утилита", "And %(count)s more...": "И %(count)s больше...", "Alias (optional)": "Псевдоним (опционально)", - "Click here to join the discussion!": " Нажми здесь чтоб присоединиться к обсуждению!", + "Click here to join the discussion!": "Нажмите здесь, чтобы присоединиться к обсуждению!", "Close": "Закрыть", "Disable Notifications": "Отключить оповещение", "Drop File Here": "Вставить сюда файл", @@ -909,7 +909,7 @@ "Incoming call from %(name)s": "Входящий вызов от %(name)s", "Incoming video call from %(name)s": "Входящий видио вызов от %(name)s", "Incoming voice call from %(name)s": "Входящий голосовой вызов от %(name)s", - "Join as voice or video.": "Присоединен как голос или видио .", + "Join as voice or video.": "Войти как голос или видео.", "Last seen": "В последний раз видели", "Level:": "Уровень:", "No display name": "Нет отображаемое имя", @@ -958,5 +958,7 @@ "Your browser does not support the required cryptography extensions": "Ваш браузер не поддерживает требуемые расширения для криптографии", "Authentication check failed: incorrect password?": "Ошибка авторизации: неверный пароль?", "Do you want to set an email address?": "Вы хотите указать адрес электронной почты?", - "This will allow you to reset your password and receive notifications.": "Это позволит вам сбросить пароль и получить уведомления." + "This will allow you to reset your password and receive notifications.": "Это позволит вам сбросить пароль и получить уведомления.", + "Press to start a chat with someone": "Нажмите для начала чата с кем либо", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Вы еще не в комнатах! Нажмите , чтобы создать комнату или , чтобы просмотреть каталог" } From a449588c1cd225548a006bc0aaf8a41c6f635486 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 20 Jun 2017 10:54:41 +0100 Subject: [PATCH 180/481] Replace add app dialog with scalar interface --- src/components/views/dialogs/AddAppDialog.js | 91 ---------- src/components/views/rooms/AppsDrawer.js | 180 +++++++++++-------- 2 files changed, 109 insertions(+), 162 deletions(-) delete mode 100644 src/components/views/dialogs/AddAppDialog.js diff --git a/src/components/views/dialogs/AddAppDialog.js b/src/components/views/dialogs/AddAppDialog.js deleted file mode 100644 index 35372009fc..0000000000 --- a/src/components/views/dialogs/AddAppDialog.js +++ /dev/null @@ -1,91 +0,0 @@ -/* -Copyright 2016 OpenMarket 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 React from 'react'; -import sdk from '../../../index'; -import AppIconTile from '../elements/AppIconTile'; -import ModularWidgets from '../../structures/ModularWidgets'; - -/** - * Prompt the user for address of iframe widget - * - * On success, `onFinished(true, newAppWidget)` is called. - */ -export default React.createClass({ - displayName: 'AddAppDialog', - propTypes: { - onFinished: React.PropTypes.func.isRequired, - }, - - getInitialState: function() { - return { - value: "", - }; - }, - - componentDidMount: function() { - this.refs.input_value.select(); - }, - - onValueChange: function(ev) { - this.setState({ value: ev.target.value}); - }, - - onFormSubmit: function(ev) { - ev.preventDefault(); - this.props.onFinished(true, 'custom', this.state.value); - return false; - }, - - onTileClick: function(value) { - this.props.onFinished(true, value, null); - }, - - render: function() { - const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); - const appCards = ModularWidgets.widgetTypes.map((widgetType, index) => - , - ); - - return ( - -
- {appCards} -
- -
Or enter the URL of the widget to add.
- -
- -
- -
-
- ); - }, -}); diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 6daa4d98cf..3a9b456c99 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -16,12 +16,14 @@ limitations under the License. 'use strict'; -const React = require('react'); -const MatrixClientPeg = require('../../../MatrixClientPeg'); -const AddAppDialog = require('../dialogs/AddAppDialog'); -const AppTile = require('../elements/AppTile'); -const Modal = require("../../../Modal"); -const dis = require('../../../dispatcher'); +import React from 'react'; +import MatrixClientPeg from '../../../MatrixClientPeg'; +import AppTile from '../elements/AppTile'; +import Modal from '../../../Modal'; +import dis from '../../../dispatcher'; +import sdk from '../../../index'; +import SdkConfig from '../../../SdkConfig'; +import ScalarAuthClient from '../../../ScalarAuthClient'; module.exports = React.createClass({ displayName: 'AppsDrawer', @@ -35,8 +37,20 @@ module.exports = React.createClass({ }, componentDidMount: function() { - if (this.state.apps && this.state.apps.length < 1) { - this.onClickAddWidget(); + this.scalarClient = null; + const appsDrawer = this; + if (SdkConfig.get().integrations_ui_url && SdkConfig.get().integrations_rest_url) { + this.scalarClient = new ScalarAuthClient(); + this.scalarClient.connect().done(() => { + this.forceUpdate(); + if (appsDrawer.state.apps && appsDrawer.state.apps.length < 1) { + appsDrawer.onClickAddWidget(); + } + }, (err) => { + this.setState({ + scalar_error: err, + }); + }); } }, @@ -117,72 +131,96 @@ module.exports = React.createClass({ }); }, - onClickAddWidget: function() { - Modal.createDialog(AddAppDialog, { - onFinished: (proceed, type, value) => { - if (!proceed || !type) return; - if (type === 'custom' && !value) return; + onClickAddWidget: function(e) { + // Modal.createDialog(AddAppDialog, { + // onFinished: (proceed, type, value) => { + // if (!proceed || !type) return; + // if (type === 'custom' && !value) return; + // + // const appsStateEvents = this.props.room.currentState.getStateEvents('im.vector.modular.widgets', ''); + // let appsStateEvent = {}; + // if (appsStateEvents) { + // appsStateEvent = appsStateEvents.getContent(); + // } + // + // if (appsStateEvent[type]) { + // return; + // } + // + // switch (type) { + // case 'etherpad': + // appsStateEvent.etherpad = { + // type: type, + // url: 'http://localhost:8000/etherpad.html', + // }; + // break; + // case 'grafana': + // appsStateEvent.grafana = { + // type: type, + // url: 'http://localhost:8000/grafana.html', + // }; + // break; + // case 'jitsi': + // appsStateEvent.videoConf = { + // type: type, + // url: 'http://localhost:8000/jitsi.html', + // data: { + // confId: this.props.room.roomId.replace(/[^A-Za-z0-9]/g, '_') + Date.now(), + // }, + // }; + // break; + // case 'vrdemo': + // appsStateEvent.vrDemo = { + // type: type, + // url: 'http://localhost:8000/vrdemo.html', + // data: { + // roomAlias: '#vrvc' + this.props.room.roomId.replace(/[^A-Za-z0-9]/g, '_') + Date.now(), + // }, + // }; + // break; + // case 'custom': + // appsStateEvent.custom = { + // type: type, + // url: value, + // }; + // break; + // default: + // console.warn('Unsupported app type:', type); + // return; + // } + // + // MatrixClientPeg.get().sendStateEvent( + // this.props.room.roomId, + // 'im.vector.modular.widgets', + // appsStateEvent, + // '', + // ); + // }, + // }); - const appsStateEvents = this.props.room.currentState.getStateEvents('im.vector.modular.widgets', ''); - let appsStateEvent = {}; - if (appsStateEvents) { - appsStateEvent = appsStateEvents.getContent(); + if (e) { + e.preventDefault(); + } + + const IntegrationsManager = sdk.getComponent("views.settings.IntegrationsManager"); + console.warn("scalarClient: ", this.scalarClient); + console.warn("hasCredentials: ", this.scalarClient.hasCredentials()); + console.warn("roomId: ", this.props.room.roomId); + console.warn("Scalar interface: ", this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room.roomId)); + const src = (this.scalarClient !== null && this.scalarClient.hasCredentials()) ? + this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room.roomId) : + null; + console.warn("src: ", src); + Modal.createDialog(IntegrationsManager, { + src: src, + onFinished: ()=>{ + if (this._calcSavePromises().length === 0) { + if (e) { + this.props.onCancelClick(e); + } } - - if (appsStateEvent[type]) { - return; - } - - switch (type) { - case 'etherpad': - appsStateEvent.etherpad = { - type: type, - url: 'http://localhost:8000/etherpad.html', - }; - break; - case 'grafana': - appsStateEvent.grafana = { - type: type, - url: 'http://localhost:8000/grafana.html', - }; - break; - case 'jitsi': - appsStateEvent.videoConf = { - type: type, - url: 'http://localhost:8000/jitsi.html', - data: { - confId: this.props.room.roomId.replace(/[^A-Za-z0-9]/g, '_') + Date.now(), - }, - }; - break; - case 'vrdemo': - appsStateEvent.vrDemo = { - type: type, - url: 'http://localhost:8000/vrdemo.html', - data: { - roomAlias: '#vrvc' + this.props.room.roomId.replace(/[^A-Za-z0-9]/g, '_') + Date.now(), - }, - }; - break; - case 'custom': - appsStateEvent.custom = { - type: type, - url: value, - }; - break; - default: - console.warn('Unsupported app type:', type); - return; - } - - MatrixClientPeg.get().sendStateEvent( - this.props.room.roomId, - 'im.vector.modular.widgets', - appsStateEvent, - '', - ); }, - }); + }, "mx_IntegrationsManager"); }, render: function() { From e16d1b3cfb345fbef76dddb5210870c00fa3f44e Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 20 Jun 2017 11:22:07 +0100 Subject: [PATCH 181/481] Implement password nag warning in user settings account section "To return to your account in future you need to set a password" in the account section when a user has not yet set a password (is a PWLU). --- src/components/structures/UserSettings.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index fc13f0bdcf..58ae46e18a 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -21,6 +21,7 @@ const MatrixClientPeg = require("../../MatrixClientPeg"); const PlatformPeg = require("../../PlatformPeg"); const Modal = require('../../Modal'); const dis = require("../../dispatcher"); +import sessionStore from '../../stores/SessionStore'; const q = require('q'); const packageJson = require('../../../package.json'); const UserSettingsStore = require('../../UserSettingsStore'); @@ -243,6 +244,12 @@ module.exports = React.createClass({ this.setState({ language: languageHandler.getCurrentLanguage(), }); + + this._sessionStore = sessionStore; + this._sessionStoreToken = this._sessionStore.addListener( + this._setStateFromSessionStore, + ); + this._setStateFromSessionStore(); }, componentDidMount: function() { @@ -269,6 +276,12 @@ module.exports = React.createClass({ } }, + _setStateFromSessionStore: function() { + this.setState({ + userHasGeneratedPassword: Boolean(this._sessionStore.getCachedPassword()), + }); + }, + _electronSettings: function(ev, settings) { this.setState({ electron_settings: settings }); }, @@ -1201,7 +1214,12 @@ module.exports = React.createClass({

{ _t("Account") }

- + { this.state.userHasGeneratedPassword ? +
+ Warning + { _t("To return to your account in future you need to set a password") } +
: null + } { _t("Sign out") } From e15aedfeb2fad2f0d2b17b93aefa96eae1cdbd69 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 20 Jun 2017 12:03:37 +0100 Subject: [PATCH 182/481] Fix another infinite spin on register Don't set ready on logging_in, set it before we start the client, as commented --- src/components/structures/MatrixChat.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index e1a491d6f5..ef6260c5b9 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -533,12 +533,10 @@ module.exports = React.createClass({ break; case 'on_logging_in': // We are now logging in, so set the state to reflect that - // and also that we're not ready (we'll be marked as logged - // in once the login completes, then ready once the sync - // completes). + // NB. This does not touch 'ready' since if our dispatches + // are delayed, the sync could already have completed this.setStateForNewView({ view: VIEWS.LOGGING_IN, - ready: false, }); break; case 'on_logged_in': @@ -1012,6 +1010,10 @@ module.exports = React.createClass({ */ _onWillStartClient() { const self = this; + // if the client is about to start, we are, by definition, not ready. + // Set ready to false now, then it'll be set to true when the sync + // listener we set below fires. + this.setState({ready: false}); const cli = MatrixClientPeg.get(); // Allow the JS SDK to reap timeline events. This reduces the amount of From 61c538485548001aa44844fbc0258cd1a7d3345b Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 20 Jun 2017 12:03:37 +0100 Subject: [PATCH 183/481] Fix another infinite spin on register Don't set ready on logging_in, set it before we start the client, as commented --- src/components/structures/MatrixChat.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 7b1855b678..e5aefdf665 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -500,10 +500,9 @@ module.exports = React.createClass({ break; case 'on_logging_in': // We are now logging in, so set the state to reflect that - // and also that we're not ready (we'll be marked as logged - // in once the login completes, then ready once the sync - // completes). - this.setState({loggingIn: true, ready: false}); + // NB. This does not touch 'ready' since if our dispatches + // are delayed, the sync could already have completed + this.setState({loggingIn: true}); break; case 'on_logged_in': this._onLoggedIn(payload.teamToken); @@ -989,6 +988,10 @@ module.exports = React.createClass({ */ _onWillStartClient() { const self = this; + // if the client is about to start, we are, by definition, not ready. + // Set ready to false now, then it'll be set to true when the sync + // listener we set below fires. + this.setState({ready: false}); const cli = MatrixClientPeg.get(); // Allow the JS SDK to reap timeline events. This reduces the amount of From 3f5a6236bb0b31339417b3859753b393c6a466de Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 20 Jun 2017 13:08:05 +0100 Subject: [PATCH 184/481] Prepare changelog for v0.9.6 --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b4210ac07..22049b6af6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +Changes in [0.9.6](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.9.6) (2017-06-20) +=================================================================================================== +[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.9.5...v0.9.6) + + * Fix infinite spinner on email registration + [\#1120](https://github.com/matrix-org/matrix-react-sdk/pull/1120) + * Translate help promots in room list + [\#1121](https://github.com/matrix-org/matrix-react-sdk/pull/1121) + * Internationalise the drop targets + [\#1122](https://github.com/matrix-org/matrix-react-sdk/pull/1122) + * Fix another infinite spin on register + [\#1124](https://github.com/matrix-org/matrix-react-sdk/pull/1124) + + Changes in [0.9.5](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.9.5) (2017-06-19) =================================================================================================== [Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.9.5-rc.2...v0.9.5) From 529e014739da87e21448b3091a1fc92e037821a5 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 20 Jun 2017 13:08:06 +0100 Subject: [PATCH 185/481] v0.9.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0e8c948973..f49fc04661 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "matrix-react-sdk", - "version": "0.9.5", + "version": "0.9.6", "description": "SDK for matrix.org using React", "author": "matrix.org", "repository": { From 5b6daba18250c6ddf47209e28c6cea01351c4d42 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 20 Jun 2017 13:33:18 +0100 Subject: [PATCH 186/481] Add en_EN translations --- src/i18n/strings/en_EN.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index ad00ea9275..c01f5c1aad 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -910,5 +910,6 @@ "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", "Disable Peer-to-Peer for 1:1 calls": "Disable Peer-to-Peer for 1:1 calls", "Do you want to set an email address?": "Do you want to set an email address?", - "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications." + "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications.", + "To return to your account in future you need to set a password": "To return to your account in future you need to set a password" } From c337485d9081402bf0a2839daf48ae3f2922ba54 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 20 Jun 2017 15:01:53 +0100 Subject: [PATCH 187/481] Redesign the warning to be red text, move below "Sign out" --- src/components/structures/UserSettings.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index 58ae46e18a..686e63cd75 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -1214,15 +1214,14 @@ module.exports = React.createClass({

{ _t("Account") }

- { this.state.userHasGeneratedPassword ? -
- Warning - { _t("To return to your account in future you need to set a password") } -
: null - } { _t("Sign out") } + { this.state.userHasGeneratedPassword ? +
+ { _t("To return to your account in future you need to set a password") } +
: null + } {accountJsx}
From 8a0000675a19bd9d5c21c6e01456e2027c76a997 Mon Sep 17 00:00:00 2001 From: Nathan van Beelen Date: Tue, 20 Jun 2017 09:07:31 +0000 Subject: [PATCH 188/481] Translated using Weblate (Dutch) Currently translated at 60.5% (549 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nl/ --- src/i18n/strings/nl.json | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index eae3d7bc87..95c5e0ee78 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -524,5 +524,33 @@ "Riot was not given permission to send notifications - please try again": "Riot heeft geen permissie gekregen om notificaties te versturen - probeer het opnieuw", "riot-web version:": "riot-web versie:", "Room %(roomId)s not visible": "Ruimte %(roomId)s is niet zichtbaar", - "Room Colour": "Ruimte Kleur" + "Room Colour": "Ruimte Kleur", + "Room contains unknown devices": "De ruimte bevat onbekende apparaten", + "Room name (optional)": "Ruimtenaam (optioneel)", + "%(roomName)s does not exist.": "%(roomName)s bestaat niet.", + "%(roomName)s is not accessible at this time.": "%(roomName)s is niet toegankelijk op dit moment.", + "Rooms": "Ruimtes", + "Save": "Opslaan", + "Scroll to bottom of page": "Scroll naar de onderkant van de pagina", + "Scroll to unread messages": "Scroll naar ongelezen berichten", + "Search failed": "Zoeken mislukt", + "Searches DuckDuckGo for results": "Zoekt op DuckDuckGo voor resultaten", + "Searching known users": "Aan het zoeken naar bekende gebruikers", + "Seen by %(userName)s at %(dateTime)s": "Gezien bij %(userName)s op %(dateTime)s", + "Send a message (unencrypted)": "Stuur een bericht (onversleuteld)", + "Send an encrypted message": "Stuur een versleuteld bericht", + "Send anyway": "Alsnog versturen", + "Sender device information": "Afzender apparaat informatie", + "Send Reset Email": "Stuur Reset E-mail", + "sent an image": "stuurde een afbeelding", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s stuurde een afbeelding.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s stuurde een uitnodiging naar %(targetDisplayName)s om tot de ruimte toe te treden.", + "sent a video": "stuurde een video", + "Server error": "Server fout", + "Server may be unavailable or overloaded": "De server kan onbereikbaar of overbelast zijn", + "Server may be unavailable, overloaded, or search timed out :(": "De server is misschien onbereikbaar, overbelast of het zoeken duurde te lang :(", + "Server may be unavailable, overloaded, or the file too big": "De server is misschien onbereikbaar, overbelast of het bestand is te groot", + "Server may be unavailable, overloaded, or you hit a bug.": "De server is misschien onbereikbaar, overbelast of je bent tegen een fout aangelopen.", + "Server unavailable, overloaded, or something else went wrong.": "De server is onbereikbaar, overbelast of iets anders ging fout.", + "Session ID": "Sessie ID" } From 5efee2d1bf276a660e1d10390ebcc25f97aebe4d Mon Sep 17 00:00:00 2001 From: Brendan Abolivier Date: Tue, 20 Jun 2017 14:14:02 +0000 Subject: [PATCH 189/481] Translated using Weblate (French) Currently translated at 100.0% (907 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/ --- src/i18n/strings/fr.json | 80 ++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 039198f0cf..3c86349cfb 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -134,17 +134,17 @@ "Email Address": "Adresse e-mail", "Email, name or matrix ID": "E-mail, nom ou identifiant Matrix", "Emoji": "Emoticône", - "Enable encryption": "Activer l'encryption", - "Encrypted messages will not be visible on clients that do not yet implement encryption": "Les messages encryptés ne seront pas visibles dans les clients qui n’implémentent pas encore l’encryption", - "Encrypted room": "Salon encrypté", + "Enable encryption": "Activer le chiffrement", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Les messages chiffrés ne seront pas visibles dans les clients qui n’implémentent pas encore le chiffrement", + "Encrypted room": "Salon chiffré", "%(senderName)s ended the call.": "%(senderName)s a terminé l’appel.", - "End-to-end encryption information": "Information sur l'encryption bout-en-bout", - "End-to-end encryption is in beta and may not be reliable": "L’encryption bout-en-bout est en bêta et risque de ne pas être fiable", + "End-to-end encryption information": "Information sur le chiffrement bout-en-bout", + "End-to-end encryption is in beta and may not be reliable": "Le chiffrement de bout-en-bout est en bêta et risque de ne pas être fiable", "Enter Code": "Entrer le code", "Error": "Erreur", "Event information": "Information de l'événement", "Existing Call": "Appel en cours", - "Export E2E room keys": "Exporter les clés d'encryption du salon", + "Export E2E room keys": "Exporter les clés de chiffrement du salon", "Failed to ban user": "Échec lors du bannissement de l'utilisateur", "Failed to change password. Is your password correct?": "Échec du changement de mot de passe. Votre mot de passe est-il correct ?", "Failed to change power level": "Échec du changement de niveau d'autorité", @@ -234,7 +234,7 @@ "Commands": "Commandes", "Conference call failed.": "Échec de la conférence.", "Conference calling is in development and may not be reliable.": "Les appels en conférence sont encore en développement et sont potentiellement peu fiables.", - "Conference calls are not supported in encrypted rooms": "Les appels en conférence ne sont pas supportés dans les salons encryptés", + "Conference calls are not supported in encrypted rooms": "Les appels en conférence ne sont pas supportés dans les salons chiffrés", "Conference calls are not supported in this client": "Les appels en conférence ne sont pas supportés avec ce client", "Confirm password": "Confirmer le mot de passe", "Confirm your new password": "Confirmer votre nouveau mot de passe", @@ -242,21 +242,21 @@ "Could not connect to the integration server": "Impossible de se connecter au serveur d'intégration", "Create an account": "Créer un compte", "Create Room": "Créer un salon", - "Cryptography": "Encryption", + "Cryptography": "Chiffrement", "Current password": "Mot de passe actuel", "Curve25519 identity key": "Clé d’identité Curve25519", "/ddg is not a command": "/ddg n'est pas une commande", "Deactivate Account": "Supprimer le compte", "Deactivate my account": "Supprimer mon compte", "decline": "décliner", - "Decrypt %(text)s": "Décrypter %(text)s", - "Decryption error": "Erreur de décryptage", + "Decrypt %(text)s": "Déchiffrer %(text)s", + "Decryption error": "Erreur de déchiffrement", "Delete": "Supprimer", "demote": "rétrograder", "Deops user with given id": "Retire les privilèges d’opérateur d’un utilisateur avec un ID donné", "Device ID": "Identifiant de l'appareil", "Devices": "Appareils", - "Devices will not yet be able to decrypt history from before they joined the room": "Les appareils ne seront pas capables de décrypter l’historique précédant leur adhésion au salon", + "Devices will not yet be able to decrypt history from before they joined the room": "Les appareils ne seront pas capables de déchiffrer l’historique précédant leur adhésion au salon", "ml": "Malayalam", "Failed to join room": "Échec lors de l’adhésion au salon", "Failed to kick": "Échec lors de l'expulsion", @@ -302,7 +302,7 @@ "Homeserver is": "Le homeserver est", "Identity Server is": "Le serveur d'identité est", "I have verified my email address": "J’ai vérifié mon adresse e-mail", - "Import E2E room keys": "Importer les clés d’encryption bout-en-bout", + "Import E2E room keys": "Importer les clés de chiffrement de bout-en-bout", "Incorrect verification code": "Code de vérification incorrect", "Interface Language": "Langue de l'interface", "Invalid alias format": "Format de l'alias invalide", @@ -351,9 +351,9 @@ "Must be viewing a room": "Doit être en train de visualiser un salon", "my Matrix ID": "mon identifiant Matrix", "Name": "Nom", - "Never send encrypted messages to unverified devices from this device": "Ne jamais envoyer de message encryptés aux appareils non-vérifiés depuis cet appareil", - "Never send encrypted messages to unverified devices in this room": "Ne jamais envoyer de message encryptés aux appareils non-vérifiés dans ce salon", - "Never send encrypted messages to unverified devices in this room from this device": "Ne jamais envoyer de message encryptés aux appareils non-vérifiés dans ce salon depuis cet appareil", + "Never send encrypted messages to unverified devices from this device": "Ne jamais envoyer de message chiffré aux appareils non-vérifiés depuis cet appareil", + "Never send encrypted messages to unverified devices in this room": "Ne jamais envoyer de message chiffré aux appareils non-vérifiés dans ce salon", + "Never send encrypted messages to unverified devices in this room from this device": "Ne jamais envoyer de message chiffré aux appareils non-vérifiés dans ce salon depuis cet appareil", "New address (e.g. #foo:%(localDomain)s)": "Nouvelle adresse (par ex. #foo:%(localDomain)s)", "New Composer & Autocomplete": "Nouveau compositeur & Autocomplétion", "New password": "Nouveau mot de passe", @@ -365,7 +365,7 @@ "(not supported by this browser)": "(non supporté par cet explorateur)", "": "", "NOT verified": "NON vérifié", - "No devices with registered encryption keys": "Pas d’appareil avec des clés d’encryption enregistrées", + "No devices with registered encryption keys": "Pas d’appareil avec des clés de chiffrement enregistrées", "No more results": "Fin des résultats", "No results": "Pas de résultats", "unknown error code": "Code erreur inconnu", @@ -380,12 +380,12 @@ "Phone": "Numéro de téléphone", "Operation failed": "L'opération a échoué", "Bulk Options": "Options de masse", - "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.": "Changer le mot de passe actuellement réinitialise les clés d’encryption sur tous les appareils, rendant l’historique encrypté illisible, à moins d’exporter les clés du salon en avance de phase puis de les ré-importer. Ceci sera amélioré prochainement.", + "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.": "Changer le mot de passe actuellement réinitialise les clés de chiffrement sur tous les appareils, rendant l’historique chiffré illisible, à moins d’exporter les clés du salon en avance de phase puis de les ré-importer. Ceci sera amélioré prochainement.", "Default": "Défaut", "Email address": "Adresse e-mail", "Error decrypting attachment": "Erreur lors du déchiffrement de la pièce jointe", "Failed to set avatar.": "Erreur lors de la définition de la photo de profil.", - "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Par sécurité une déconnexion supprimera toutes les clés d’encryption de ce navigateur. Si vous voulez être capable de décrypter l’historique de votre conversation lors de sessions futures de Riot, merci d’exporter les clés pour le salon.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Par sécurité une déconnexion supprimera toutes les clés de chiffrement de ce navigateur. Si vous voulez être capable de déchiffrer l’historique de votre conversation lors de sessions futures de Riot, merci d’exporter les clés pour le salon.", "Guests can't set avatars. Please register.": "Les visiteurs ne peuvent définir de photo de profil. Merci de vous enregistrer.", "Guests can't use labs features. Please register.": "Les visiteurs ne peuvent utiliser les fonctionalités du laboratoire. Merci de vous enregistrer.", "Guests cannot join this room even if explicitly invited.": "Les visiteurs ne peuvent rejoindre ce salon, même si explicitement invités.", @@ -413,7 +413,7 @@ "Remove %(threePid)s?": "Supprimer %(threePid)s ?", "%(senderName)s requested a VoIP conference.": "%(senderName)s a demandé une conférence audio.", "Report it": "Le rapporter", - "Resetting 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.": "Réinitialiser le mot de passe va réinitialiser les clés d’encryption sur tous les appareils, rendant l’historique encrypté illisible, à moins que vous ayez exporté les clés du salon en avance de phase puis que vous les ayez ré-importées. Cela sera amélioré prochainement.", + "Resetting 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.": "Réinitialiser le mot de passe va réinitialiser les clés de chiffrement sur tous les appareils, rendant l’historique chiffré illisible, à moins que vous ayez exporté les clés du salon en avance de phase puis que vous les ayez ré-importées. Cela sera amélioré prochainement.", "restore": "restorer", "Return to app": "Retourner à l’application", "Return to login screen": "Retourner à l’écran d’identification", @@ -429,8 +429,8 @@ "Search": "Rechercher", "Search failed": "Erreur lors de la recherche", "Searches DuckDuckGo for results": "Recherche des résultats dans DuckDuckGo", - "Send a message (unencrypted)": "Envoyer un message (non-encrypté)", - "Send an encrypted message": "Envoyer un message non-encrypté", + "Send a message (unencrypted)": "Envoyer un message (non-chiffré)", + "Send an encrypted message": "Envoyer un message non chiffré", "Sender device information": "Information de l'appareil de l'expéditeur", "Send Invites": "Envoyer les invitations", "Send Reset Email": "Envoyer l'e-mail de réinitialisation", @@ -508,7 +508,7 @@ "Tried to load a specific point in this room's timeline, but was unable to find it.": "Un instant donné de la chronologie n’a pu être chargé car il n’a pas pu être trouvé.", "Turn Markdown off": "Désactiver le formatage ’Markdown’", "Turn Markdown on": "Activer le formatage ’Markdown’", - "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s a activé l’encryption bout-en-bout (algorithme %(algorithm)s).", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s a activé le chiffrement de bout-en-bout (algorithme %(algorithm)s).", "Unable to add email address": "Impossible d'ajouter l'adresse e-mail", "Unable to remove contact information": "Impossible de supprimer les informations du contact", "Unable to restore previous session": "Impossible de rétablir la session précédente", @@ -518,8 +518,8 @@ "Unable to capture screen": "Impossible de capturer l'écran", "Unable to enable Notifications": "Impossible d'activer les notifications", "Unable to load device list": "Impossible de charger la liste d'appareils", - "Unencrypted room": "Salon non-encrypté", - "unencrypted": "non-encrypté", + "Unencrypted room": "Salon non chiffré", + "unencrypted": "non chiffré", "Unknown command": "Commande inconnue", "unknown device": "appareil inconnu", "Unknown room %(roomId)s": "Salon inconnu %(roomId)s", @@ -566,7 +566,7 @@ "You need to be able to invite users to do that.": "Vous devez être capable d’inviter des utilisateurs pour faire ça.", "You need to be logged in.": "Vous devez être connecté.", "You need to enter a user name.": "Vous devez entrer un nom d’utilisateur.", - "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "Vous devez vous connecter à nouveau pour générer les clés d’encryption pour cet appareil, et soumettre la clé publique à votre homeserver. Cette action ne se reproduira pas ; veuillez nous excuser pour la gêne occasionnée.", + "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "Vous devez vous connecter à nouveau pour générer les clés de chiffrement pour cet appareil, et soumettre la clé publique à votre homeserver. Cette action ne se reproduira pas ; veuillez nous excuser pour la gêne occasionnée.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Votre adresse e-mail ne semble pas associée à un identifiant Matrix sur ce homeserver.", "Your password has been reset": "Votre mot de passe a été réinitialisé", "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Votre mot de passe a été mis à jour avec succès. Vous ne recevrez plus de notification sur vos appareils jusqu’à ce que vous vous identifiez à nouveau", @@ -613,7 +613,7 @@ "Make Moderator": "Nommer modérateur", "Make this room private": "Rendre ce salon privé", "Share message history with new users": "Partager l’historique des messages avec les nouveaux utilisateurs", - "Encrypt room": "Encrypter le salon", + "Encrypt room": "Chiffrer le salon", "There are no visible files in this room": "Il n'y a pas de fichier visible dans ce salon", "Room": "Salon", "Connectivity to the server has been lost.": "La connectivité au serveur a été perdue.", @@ -685,10 +685,10 @@ "Confirm passphrase": "Confirmer la phrase secrète", "Import room keys": "Importer les clés du salon", "File to import": "Fichier à importer", - "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Ce processus vous permet d’exporter dans un fichier local les clés pour les messages que vous avez reçus dans des salons encryptés. Il sera ensuite possible d’importer ce fichier dans un autre client Matrix, afin de permettre à ce client de pouvoir décrypter ces messages.", - "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Le fichier exporté permettra à tout ceux qui peuvent le lire de décrypter tous les messages encrypté auxquels vous avez accès, vous devez donc être vigilant et le stocker dans un endroit sûr. Afin de protéger ce fichier, entrez ci-dessous une phrase secrète qui sera utilisée pour encrypter les données exportées. Seule l’utilisation de la même phrase secrète permettra de décrypter et importer les données.", - "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Ce processus vous permet d’importer les clés d’encryption que vous avez précédemment exportées depuis un autre client Matrix. Vous serez alors capable de décrypter n’importe quel messages que l’autre client peut décrypter.", - "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Le fichier exporté est protégé par une phrase secrète. Vous devez entrer cette phrase secrète ici pour décrypter le fichier.", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Ce processus vous permet d’exporter dans un fichier local les clés pour les messages que vous avez reçus dans des salons chiffrés. Il sera ensuite possible d’importer ce fichier dans un autre client Matrix, afin de permettre à ce client de pouvoir déchiffrer ces messages.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Le fichier exporté permettra à tout ceux qui peuvent le lire de déchiffrer tous les messages chiffrés auxquels vous avez accès, vous devez donc être vigilant et le stocker dans un endroit sûr. Afin de protéger ce fichier, entrez ci-dessous une phrase secrète qui sera utilisée pour chiffrer les données exportées. Seule l’utilisation de la même phrase secrète permettra de déchiffrer et importer les données.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Ce processus vous permet d’importer les clés de chiffrement que vous avez précédemment exportées depuis un autre client Matrix. Vous serez alors capable de déchiffrer n’importe quel messages que l’autre client peut déchiffer.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Le fichier exporté est protégé par une phrase secrète. Vous devez entrer cette phrase secrète ici pour déchiffrer le fichier.", "You must join the room to see its files": "Vous devez joindre le salon pour voir ses fichiers", "Reject all %(invitedRooms)s invites": "Rejeter la totalité des %(invitedRooms)s invitations", "Start new chat": "Démarrer une nouvelle conversation", @@ -710,7 +710,7 @@ "In future this verification process will be more sophisticated.": "À l’avenir ce processus de vérification sera simplifié et plus sophistiqué.", "Verify device": "Vérifier cet appareil", "I verify that the keys match": "J’ai vérifié que les clés correspondaient", - "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.": "Nous avons rencontré une erreur en essayant de rétablir votre session précédente. Si vous continuez, vous devrez vous identifier à nouveau et l’historique encrypté de vos conversations sera illisible.", + "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.": "Nous avons rencontré une erreur en essayant de rétablir votre session précédente. Si vous continuez, vous devrez vous identifier à nouveau et l’historique chiffré de vos conversations sera illisible.", "Unable to restore session": "Impossible de restaurer la session", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Si vous avez utilisé une version plus récente de Riot précédemment, votre session risque d’être incompatible avec cette version. Fermez cette fenêtre et retournez à la version plus récente.", "Continue anyway": "Continuer quand même", @@ -745,11 +745,11 @@ "Home server URL": "URL du homeserver", "Identity server URL": "URL du serveur d’identité", "What does this mean?": "Qu’est ce que cela signifie ?", - "Error decrypting audio": "Erreur lors de la décryption de l’audio", - "Error decrypting image": "Erreur lors de la décryption de l’image", + "Error decrypting audio": "Erreur lors du déchiffrement de l’audio", + "Error decrypting image": "Erreur lors du déchiffrement de l’image", "Image '%(Body)s' cannot be displayed.": "L'image '%(Body)s' ne peut être affichée.", "This image cannot be displayed.": "Cette image ne peut être affichée.", - "Error decrypting video": "Erreur lors de la décryption de la vidéo", + "Error decrypting video": "Erreur lors du déchiffrement de la vidéo", "Add an Integration": "Ajouter une intégration", "URL Previews": "Aperçus d'URL", "Disable URL previews by default for participants in this room": "Désactiver les aperçus d'URL par défaut pour les participants de ce salon", @@ -884,8 +884,8 @@ "This invitation was sent to an email address which is not associated with this account:": "Cette invitation a été envoyée à une adresse e-mail qui n'est pas associée avec ce compte :", "This room": "Ce salon", "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Impossible de vérifier que l'adresse à qui cette invitation a été envoyée correspond à celle associée à votre compte.", - "Undecryptable": "Indécryptable", - "Unencrypted message": "Message non-encrypté", + "Undecryptable": "Indéchiffrable", + "Unencrypted message": "Message non chiffré", "unknown caller": "appelant inconnu", "Unnamed Room": "Salon sans nom", "Unverified": "Non verifié", @@ -900,10 +900,10 @@ "(~%(count)s results).one": "(~%(count)s résultat)", "(~%(count)s results).other": "(~%(count)s résultats)", "Device Name": "Nom de l'appareil", - "Encrypted by a verified device": "Encrypté par un appareil verifié", - "Encrypted by an unverified device": "Encrypté par un appareil non verifié", - "Encryption is enabled in this room": "L'encryption est activée sur ce salon", - "Encryption is not enabled in this room": "L'encryption n'est pas activée sur ce salon", + "Encrypted by a verified device": "Chiffré par un appareil verifié", + "Encrypted by an unverified device": "Chiffré par un appareil non verifié", + "Encryption is enabled in this room": "Le chiffrement est activée sur ce salon", + "Encryption is not enabled in this room": "Le chiffrement n'est pas activée sur ce salon", "Home": "Accueil", "To link to a room it must have an address.": "Pour récupérer le lien vers un salon celui-ci doit avoir une adresse.", "Upload new:": "Télécharger un nouveau :", From 1b8e5f8a05d5e397a8a7e6eb8337af3363653ebf Mon Sep 17 00:00:00 2001 From: Szimszon Date: Tue, 20 Jun 2017 14:21:32 +0000 Subject: [PATCH 190/481] Translated using Weblate (Hungarian) Currently translated at 77.7% (705 of 907 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index f2fa3bb63e..cdda080dd9 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -678,5 +678,31 @@ "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "Ahhoz, hogy kulcsot tudjál készíteni a végponttól végpontig való titkosításhoz ehhez az eszközhöz és elküld a kulcsot a egyéni szerverhez vissza kell jelentkezned. Ez egyszeri alkalom, elnézést a kellemetlenségér.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Ez az e-mail cím, úgy néz ki, nincs összekötve a Matrix azonosítóval ezen az egyedi szerveren.", "Your password has been reset": "A jelszavad visszaállítottuk", - "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "A jelszavadat sikeresen megváltoztattuk. Nem kapsz \"push\" értesítéseket amíg a többi eszközön vissza nem jelentkezel" + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "A jelszavadat sikeresen megváltoztattuk. Nem kapsz \"push\" értesítéseket amíg a többi eszközön vissza nem jelentkezel", + "to demote": "a hozzáférési szint csökkentéséhez", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "A címről amire a meghívót elküldtük nem állapítható meg, hogy a fiókoddal összeköttetésben áll-e.", + "You seem to be in a call, are you sure you want to quit?": "Úgy tűnik hívásban vagy, biztosan kilépsz?", + "You seem to be uploading files, are you sure you want to quit?": "Úgy tűnik fájlokat töltesz fel, biztosan kilépsz?", + "You should not yet trust it to secure data": "Még ne bízz meg a titkosításban", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Nem leszel képes visszavonni ezt a változtatást mivel a felhasználót ugyanarra a szintre emeled amin te vagy.", + "Your home server does not support device management.": "Az egyedi szervered nem támogatja az eszközök kezelését.", + "Sun": "Vas", + "Mon": "Hé", + "Tue": "K", + "Wed": "Sze", + "Thu": "Csüt", + "Fri": "Pé", + "Sat": "Szo", + "Jan": "Jan", + "Feb": "Feb", + "Mar": "Már", + "Apr": "Ápr", + "May": "Máj", + "Jun": "Jún", + "Jul": "Júl", + "Aug": "Aug", + "Sep": "Szept", + "Oct": "Okt", + "Nov": "Nov", + "Dec": "Dec" } From 5460b0f5b2fb963d5a7c44a9fbf1df177ae33be1 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 20 Jun 2017 15:31:12 +0100 Subject: [PATCH 191/481] reset page subtitle on_logged_out Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/structures/MatrixChat.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index ab937c07ac..21c76fb70f 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -968,6 +968,7 @@ module.exports = React.createClass({ * Called when the session is logged out */ _onLoggedOut: function() { + this._setPageSubtitle(); this.notifyNewScreen('login'); this.setStateForNewScreen({ loggedIn: false, @@ -1267,6 +1268,10 @@ module.exports = React.createClass({ }); }, + _setPageSubtitle: function(subtitle='') { + document.title = `Riot ${subtitle}`; + }, + updateStatusIndicator: function(state, prevState) { let notifCount = 0; @@ -1287,15 +1292,15 @@ module.exports = React.createClass({ PlatformPeg.get().setNotificationCount(notifCount); } - let title = "Riot "; + let subtitle = ''; if (state === "ERROR") { - title += `[${_t("Offline")}] `; + subtitle += `[${_t("Offline")}] `; } if (notifCount > 0) { - title += `[${notifCount}]`; + subtitle += `[${notifCount}]`; } - document.title = title; + this._setPageSubtitle(subtitle); }, onUserSettingsClose: function() { From 2c2091438e6c4d2dee4c5d25d37e2f2621f43d16 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 20 Jun 2017 15:46:54 +0100 Subject: [PATCH 192/481] Fix ability to invite users with caps in their user IDs By lowercasing only when testing against local user IDs/display names. The user_directory shouldn't care. And when we make the placeholder "We didn't get any results, but here's the user with the exact mxid you typed in", use the original query. --- src/components/views/dialogs/ChatInviteDialog.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/views/dialogs/ChatInviteDialog.js b/src/components/views/dialogs/ChatInviteDialog.js index 9a14cb91d3..a85efadef7 100644 --- a/src/components/views/dialogs/ChatInviteDialog.js +++ b/src/components/views/dialogs/ChatInviteDialog.js @@ -178,7 +178,7 @@ module.exports = React.createClass({ }, onQueryChanged: function(ev) { - const query = ev.target.value.toLowerCase(); + const query = ev.target.value; if (this.queryChangedDebouncer) { clearTimeout(this.queryChangedDebouncer); } @@ -271,10 +271,11 @@ module.exports = React.createClass({ query, searchError: null, }); + const queryLowercase = query.toLowerCase(); const results = []; MatrixClientPeg.get().getUsers().forEach((user) => { - if (user.userId.toLowerCase().indexOf(query) === -1 && - user.displayName.toLowerCase().indexOf(query) === -1 + if (user.userId.toLowerCase().indexOf(queryLowercase) === -1 && + user.displayName.toLowerCase().indexOf(queryLowercase) === -1 ) { return; } From b712a15a149b95b874c4922250c9c79e48d7aca4 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 20 Jun 2017 16:15:42 +0100 Subject: [PATCH 193/481] move in case it is racey ---- somehow? Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/structures/MatrixChat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 108a94cba2..17df3172df 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -993,7 +993,6 @@ module.exports = React.createClass({ * Called when the session is logged out */ _onLoggedOut: function() { - this._setPageSubtitle(); this.notifyNewScreen('login'); this.setStateForNewView({ view: VIEWS.LOGIN, @@ -1004,6 +1003,7 @@ module.exports = React.createClass({ page_type: PageTypes.RoomDirectory, }); this._teamToken = null; + this._setPageSubtitle(); }, /** From 3320df4cdd8d2af88e5da277bc2d976225c07b50 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 20 Jun 2017 17:11:17 +0100 Subject: [PATCH 194/481] Don't allow UserSettings to render if !MatrixClientPeg.get() Now that it has state that updates following the nulling of the MCP (userHasGeneratedPassword) we need to stop it from rendering if the MCP is null. Fixes https://github.com/vector-im/riot-web/issues/4319 --- src/components/structures/UserSettings.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index 686e63cd75..c4cc60f077 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -276,6 +276,16 @@ module.exports = React.createClass({ } }, + // `UserSettings` assumes that the client peg will not be null, so give it some + // sort of assurance here by only allowing a re-render if the client is truthy. + // + // This is required because `UserSettings` maintains its own state and if this state + // updates (e.g. during _setStateFromSessionStore) after the client peg has been made + // null (during logout), then it will attempt to re-render and throw errors. + shouldComponentUpdate: function() { + return Boolean(MatrixClientPeg.get()); + }, + _setStateFromSessionStore: function() { this.setState({ userHasGeneratedPassword: Boolean(this._sessionStore.getCachedPassword()), From 4fbe688f5372456b796535d5d3a7084785d1cc6f Mon Sep 17 00:00:00 2001 From: Krombel Date: Tue, 20 Jun 2017 16:19:59 +0000 Subject: [PATCH 195/481] Translated using Weblate (German) Currently translated at 100.0% (915 of 915 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index a99671402b..b9578d1d87 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -976,5 +976,13 @@ "Do you want to set an email address?": "Möchtest du eine E-Mail-Adresse setzen?", "This will allow you to reset your password and receive notifications.": "Dies erlaubt dir dein Passwort zurückzusetzen und Benachrichtigungen zu empfangen.", "Press to start a chat with someone": "Klicke auf um einen Chat mit jemanden zu starten", - "You're not in any rooms yet! Press to make a room or to browse the directory": "Du bist bisher in keinem Raum! Klicke auf um einen Raum zu erstellen oder um das Verzeichnis zu durchsuchen" + "You're not in any rooms yet! Press to make a room or to browse the directory": "Du bist bisher in keinem Raum! Klicke auf um einen Raum zu erstellen oder um das Verzeichnis zu durchsuchen", + "To return to your account in future you need to set a password": "Um in Zukunft zu deinem Konto zurückzukehren, musst du ein Passwort setzen", + "Skip": "Überspringen", + "Start verification": "Verifikation starten", + "Share without verifying": "Teile ohne Verifizierung", + "Ignore request": "Anfrage ignorieren", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Du hast das neue Gerät '%(displayName)s' hinzugefügt, welches nun Verschlüsselungs-Schlüssel anfragt.", + "Encryption key request": "Verschlüsselungs-Schlüssel-Anfrage", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Dein nicht verifiziertes Gerät '%(displayName)s' fragt nach Verschlüsselungs-Schlüsseln." } From cd73139af5769f99c6776fe24258dceee8f1c781 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Tue, 20 Jun 2017 17:38:02 +0100 Subject: [PATCH 196/481] Various logging cleanups * don't just log errors without any context as to where they came from or what they mean * avoid the use of '%s' and multi-argument console.log because it looks awful under karma. --- src/Lifecycle.js | 16 ++++++++-------- src/MatrixClientPeg.js | 4 +++- src/components/structures/MatrixChat.js | 2 +- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/Lifecycle.js b/src/Lifecycle.js index 59580e7cb6..424c58249c 100644 --- a/src/Lifecycle.js +++ b/src/Lifecycle.js @@ -156,7 +156,7 @@ export function attemptTokenLogin(queryParams, defaultDeviceDisplayName) { } function _registerAsGuest(hsUrl, isUrl, defaultDeviceDisplayName) { - console.log("Doing guest login on %s", hsUrl); + console.log(`Doing guest login on ${hsUrl}`); // TODO: we should probably de-duplicate this and Login.loginAsGuest. // Not really sure where the right home for it is. @@ -171,7 +171,7 @@ function _registerAsGuest(hsUrl, isUrl, defaultDeviceDisplayName) { initial_device_display_name: defaultDeviceDisplayName, }, }).then((creds) => { - console.log("Registered as guest: %s", creds.user_id); + console.log(`Registered as guest: ${creds.user_id}`); return _doSetLoggedIn({ userId: creds.user_id, deviceId: creds.device_id, @@ -215,7 +215,7 @@ function _restoreFromLocalStorage() { } if (accessToken && userId && hsUrl) { - console.log("Restoring session for %s", userId); + console.log(`Restoring session for ${userId}`); try { return _doSetLoggedIn({ userId: userId, @@ -315,10 +315,10 @@ async function _doSetLoggedIn(credentials, clearStorage) { credentials.guest = Boolean(credentials.guest); console.log( - "setLoggedIn: mxid:", credentials.userId, - "deviceId:", credentials.deviceId, - "guest:", credentials.guest, - "hs:", credentials.homeserverUrl, + "setLoggedIn: mxid: " + credentials.userId + + " deviceId: " + credentials.deviceId + + " guest: " + credentials.guest + + " hs: " + credentials.homeserverUrl, ); // This is dispatched to indicate that the user is still in the process of logging in @@ -395,7 +395,7 @@ function _persistCredentialsToLocalStorage(credentials) { localStorage.setItem("mx_device_id", credentials.deviceId); } - console.log("Session persisted for %s", credentials.userId); + console.log(`Session persisted for ${credentials.userId}`); } /** diff --git a/src/MatrixClientPeg.js b/src/MatrixClientPeg.js index 47370e2142..03716be2da 100644 --- a/src/MatrixClientPeg.js +++ b/src/MatrixClientPeg.js @@ -84,7 +84,9 @@ class MatrixClientPeg { let promise = this.matrixClient.store.startup(); // log any errors when starting up the database (if one exists) - promise.catch((err) => { console.error(err); }); + promise.catch((err) => { + 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. diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 97a0962741..87799640bd 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -330,7 +330,7 @@ module.exports = React.createClass({ defaultDeviceDisplayName: this.props.defaultDeviceDisplayName, }); }).catch((e) => { - console.error("Unable to load session", e); + console.error(`Error attempting to load session from token params: ${e}`); return false; }).then((loadedSession) => { if (!loadedSession) { From 4aea5908c5660abe2f043f6289f0d272d7a10e81 Mon Sep 17 00:00:00 2001 From: Walter Date: Tue, 20 Jun 2017 16:42:47 +0000 Subject: [PATCH 197/481] Translated using Weblate (Russian) Currently translated at 100.0% (915 of 915 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 6b6eadf928..0daa92fbb1 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -960,5 +960,13 @@ "Do you want to set an email address?": "Вы хотите указать адрес электронной почты?", "This will allow you to reset your password and receive notifications.": "Это позволит вам сбросить пароль и получить уведомления.", "Press to start a chat with someone": "Нажмите для начала чата с кем либо", - "You're not in any rooms yet! Press to make a room or to browse the directory": "Вы еще не в комнатах! Нажмите , чтобы создать комнату или , чтобы просмотреть каталог" + "You're not in any rooms yet! Press to make a room or to browse the directory": "Вы еще не в комнатах! Нажмите , чтобы создать комнату или , чтобы просмотреть каталог", + "To return to your account in future you need to set a password": "Чтобы в будущем к этой учётной записи вернутся, вы должны ввести пароль", + "Skip": "Пропуск", + "Start verification": "Запуск проверки", + "Share without verifying": "Поделиться без проверки", + "Ignore request": "Игнорировать запрос", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Вы добавили новое устройство '%(displayName)s', который запрашивает ключи шифрования.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Ваше непроверенное устройство '%(displayName)s' запрашивает ключи шифрования.", + "Encryption key request": "Запрос ключа шифрования" } From 68473e118f09b8d34ea2dc010b315fb5bab0e267 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 20 Jun 2017 17:56:45 +0100 Subject: [PATCH 198/481] Ensure that Scalar Messaging is started and stopped on component mount / unmount --- src/components/views/rooms/AppsDrawer.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 3a9b456c99..c7b5ddbee6 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -24,6 +24,7 @@ import dis from '../../../dispatcher'; import sdk from '../../../index'; import SdkConfig from '../../../SdkConfig'; import ScalarAuthClient from '../../../ScalarAuthClient'; +import ScalarMessaging from '../../../ScalarMessaging'; module.exports = React.createClass({ displayName: 'AppsDrawer', @@ -33,6 +34,7 @@ module.exports = React.createClass({ }, componentWillMount: function() { + ScalarMessaging.startListening(); MatrixClientPeg.get().on("RoomState.events", this.onRoomStateEvents); }, @@ -55,6 +57,7 @@ module.exports = React.createClass({ }, componentWillUnmount: function() { + ScalarMessaging.startListening(); if (MatrixClientPeg.get()) { MatrixClientPeg.get().removeListener("RoomState.events", this.onRoomStateEvents); } @@ -214,10 +217,8 @@ module.exports = React.createClass({ Modal.createDialog(IntegrationsManager, { src: src, onFinished: ()=>{ - if (this._calcSavePromises().length === 0) { - if (e) { - this.props.onCancelClick(e); - } + if (e) { + this.props.onCancelClick(e); } }, }, "mx_IntegrationsManager"); From 2cb2c44bd86332e8cfe6a26d9a32d070dc8da75c Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 20 Jun 2017 17:57:48 +0100 Subject: [PATCH 199/481] Remove unused logging --- src/components/views/rooms/AppsDrawer.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index c7b5ddbee6..0047e2fddc 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -206,14 +206,9 @@ module.exports = React.createClass({ } const IntegrationsManager = sdk.getComponent("views.settings.IntegrationsManager"); - console.warn("scalarClient: ", this.scalarClient); - console.warn("hasCredentials: ", this.scalarClient.hasCredentials()); - console.warn("roomId: ", this.props.room.roomId); - console.warn("Scalar interface: ", this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room.roomId)); const src = (this.scalarClient !== null && this.scalarClient.hasCredentials()) ? this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room.roomId) : null; - console.warn("src: ", src); Modal.createDialog(IntegrationsManager, { src: src, onFinished: ()=>{ From 0c43a46198e1df64b629651f997e0d7bb0701c16 Mon Sep 17 00:00:00 2001 From: Szimszon Date: Tue, 20 Jun 2017 17:08:25 +0000 Subject: [PATCH 200/481] Translated using Weblate (Hungarian) Currently translated at 100.0% (915 of 915 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 212 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 211 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index cdda080dd9..6c2198dcf8 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -704,5 +704,215 @@ "Sep": "Szept", "Oct": "Okt", "Nov": "Nov", - "Dec": "Dec" + "Dec": "Dec", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "Set a display name:": "Megjelenítési név beállítása:", + "Set a Display Name": "Megjelenítési név beállítása", + "Upload an avatar:": "Avatar kép feltöltése:", + "This server does not support authentication with a phone number.": "Ez a szerver nem támogatja a telefonszámmal való azonosítást.", + "Missing password.": "Hiányzó jelszó.", + "Passwords don't match.": "A jelszavak nem egyeznek meg.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "A jelszó túl rövid (min. %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Ez nem tűnik érvényes e-mail címnek.", + "This doesn't look like a valid phone number.": "Ez nem tűnik érvényes telefonszámnak.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "A felhasználói név csak betűket, számokat, pontokat, kötőjeleket és aláhúzás jeleket tartalmazhat.", + "An unknown error occurred.": "Ismeretlen hiba történt.", + "I already have an account": "Már van fiókom", + "An error occurred: %(error_string)s": "Hiba történt: %(error_string)s", + "Topic": "Téma", + "Make Moderator": "Legyen moderátor", + "Make this room private": "Ez a szoba legyen privát", + "Share message history with new users": "Régi üzenetek megosztása új felhasználókkal", + "Encrypt room": "Szoba titkosítása", + "There are no visible files in this room": "Ebben a szobában láthatólag nincsenek fájlok", + "Room": "Szoba", + "Connectivity to the server has been lost.": "A szerverrel a kapcsolat megszakadt.", + "Sent messages will be stored until your connection has returned.": "Az elküldött üzenetek addig lesznek tárolva amíg a kapcsolatod újra elérhető lesz.", + "Auto-complete": "Automatikus kiegészítés", + "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Most újraküldöd mind vagy eldobod mind. Újraküldésre vagy eldobásra egyenként is kiválaszthatod az üzeneteket.", + "(~%(count)s results).one": "(~%(count)s db eredmény)", + "(~%(count)s results).other": "(~%(count)s db eredmény)", + "or": "vagy", + "Active call": "Folyamatban lévő hívás", + "bold": "félkövér", + "italic": "dőlt", + "strike": "áthúzott", + "underline": "aláhúzott", + "code": "kód", + "quote": "idézet", + "bullet": "lista", + "numbullet": "számozott lista", + "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)s %(repeats)s alkalommal lépett be", + "%(oneUser)sjoined %(repeats)s times": "%(oneUser)s %(repeats)s alkalommal lépett be", + "%(severalUsers)sjoined": "%(severalUsers)s csatlakozott", + "%(oneUser)sjoined": "%(oneUser)s csatlakozott", + "%(severalUsers)sleft %(repeats)s times": "%(severalUsers)s %(repeats)s alkalommal lépett ki", + "%(oneUser)sleft %(repeats)s times": "%(oneUser)s %(repeats)s alkalommal lépett ki", + "%(severalUsers)sleft": "%(severalUsers)s kilépett", + "%(oneUser)sleft": "%(oneUser)s kilépett", + "%(severalUsers)sjoined and left %(repeats)s times": "%(severalUsers)s %(repeats)s alkalommal lépett be és ki", + "%(oneUser)sjoined and left %(repeats)s times": "%(oneUser)s %(repeats)s alkalommal lépett be és ki", + "%(severalUsers)sjoined and left": "%(severalUsers)s be-, és kilépett", + "%(oneUser)sjoined and left": "%(oneUser)s be-, és kilépett", + "%(severalUsers)sleft and rejoined %(repeats)s times": "%(severalUsers)s %(repeats)s alkalommal ki-, és belépett", + "%(oneUser)sleft and rejoined %(repeats)s times": "%(oneUser)s %(repeats)s alkalommal ki-, és belépett", + "%(severalUsers)sleft and rejoined": "%(severalUsers)s ki-, és belépett", + "%(oneUser)sleft and rejoined": "%(oneUser)s ki-, és belépett", + "%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)s %(repeats)s alkalommal utasította el a meghívót", + "%(oneUser)srejected their invitation %(repeats)s times": "%(oneUser)s %(repeats)s alkalommal utasította el a meghívót", + "%(severalUsers)srejected their invitations": "%(severalUsers)s elutasította a meghívót", + "%(oneUser)srejected their invitation": "%(oneUser)s elutasította a meghívót", + "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)s %(repeats)s alkalommal visszavonta a meghívókat", + "%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)s %(repeats)s alkalommal visszavonta a meghívót", + "%(severalUsers)shad their invitations withdrawn": "%(severalUsers)s visszavonták a meghívókat", + "%(oneUser)shad their invitation withdrawn": "%(oneUser)s visszavonta a meghívót", + "were invited %(repeats)s times": "%(repeats)s alkalommal lettek meghívva", + "was invited %(repeats)s times": "%(repeats)s alkalommal lett meghívva", + "were invited": "lettek meghívva", + "was invited": "lett meghívva", + "were banned %(repeats)s times": "%(repeats)s alkalommal lettek kitiltva", + "was banned %(repeats)s times": "%(repeats)s alkalommal lett kitiltva", + "were banned": "lettek kitiltva", + "was banned": "lett kitiltva", + "were unbanned %(repeats)s times": "%(repeats)s alkalommal lettek visszaengedve", + "was unbanned %(repeats)s times": "%(repeats)s alkalommal lett visszaengedve", + "were unbanned": "lettek visszaengedve", + "was unbanned": "lett visszaengedve", + "were kicked %(repeats)s times": "%(repeats)s alkalommal lettek kirúgva", + "was kicked %(repeats)s times": "%(repeats)s alkalommal lett kirúgva", + "were kicked": "lettek kirúgva", + "was kicked": "lett kirúgva", + "%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)s %(repeats)s alkalommal változtatták meg a nevüket", + "%(oneUser)schanged their name %(repeats)s times": "%(oneUser)s %(repeats)s alkalommal változtatta meg a nevét", + "%(severalUsers)schanged their name": "%(severalUsers)s változtatták meg a nevüket", + "%(oneUser)schanged their name": "%(oneUser)s megváltoztatta a nevét", + "%(severalUsers)schanged their avatar %(repeats)s times": "%(severalUsers)s %(repeats)s alkalommal változtatták meg az avatar képüket", + "%(oneUser)schanged their avatar %(repeats)s times": "%(oneUser)s %(repeats)s alkalommal változtatta meg az avatar képét", + "%(severalUsers)schanged their avatar": "%(severalUsers)s változtatták meg az avatar képüket", + "%(oneUser)schanged their avatar": "%(oneUser)s megváltoztatta az avatar képét", + "Please select the destination room for this message": "Kérlek add meg az üzenet cél szobáját", + "New Password": "Új jelszó", + "Start automatically after system login": "Rendszerindításkor automatikus elindítás", + "Desktop specific": "Asztali használatra jellemző", + "Analytics": "Analitika", + "Opt out of analytics": "Ne gyűjtsön analitikai adatokat", + "Options": "Opciók", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot személytelen analitikai adatokat gyűjt annak érdekében, hogy fejleszteni tudjuk az alkalmazást.", + "Passphrases must match": "A jelmondatoknak meg kell egyezniük", + "Passphrase must not be empty": "A jelmondat nem lehet üres", + "Export room keys": "Szoba kulcsok mentése", + "Confirm passphrase": "Jelmondat megerősítése", + "Import room keys": "Szoba kulcsok betöltése", + "File to import": "Fájl betöltése", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "A kimentett fájl jelmondattal van védve. A kibontáshoz add meg a jelmondatot.", + "You must join the room to see its files": "Ahhoz hogy lásd a fájlokat be kell lépned a szobába", + "Reject all %(invitedRooms)s invites": "Minden %(invitedRooms)s meghívó elutasítása", + "Start new chat": "Új csevegés indítása", + "Guest users can't invite users. Please register.": "Vendég felhasználók nem tudnak másokat meghívni. Kérlek regisztrálj.", + "Failed to invite": "Meghívás sikertelen", + "Failed to invite user": "Felhasználó meghívása sikertelen", + "Failed to invite the following users to the %(roomName)s room:": "Az alábbi felhasználókat nem sikerült meghívni a(z) %(roomName)s szobába:", + "Confirm Removal": "Törlés megerősítése", + "Unknown error": "Ismeretlen hiba", + "Incorrect password": "Helytelen jelszó", + "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "A fiókodat véglegesen használhatatlanná teszi. Ez után ugyanazzal az azonosítóval már nem fogsz tudni vissza regisztrálni.", + "This action is irreversible.": "Ez a művelet visszafordíthatatlan.", + "To continue, please enter your password.": "A folytatáshoz, kérlek add meg a jelszavadat.", + "Device name": "Eszköz neve", + "Device Name": "Eszköz neve", + "Device key": "Eszköz kulcsa", + "In future this verification process will be more sophisticated.": "A jövőben ez az ellenőrzési folyamat egyszerűsödni fog.", + "Verify device": "Eszköz ellenőrzése", + "I verify that the keys match": "Megerősítem, hogy a kulcsok egyeznek", + "Unable to restore session": "A kapcsolatot nem lehet visszaállítani", + "Continue anyway": "Mindenképpen tovább", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" szobában olyan eszközök vannak amiket még nem láttál.", + "Unknown devices": "Ismeretlen eszköz", + "Unknown Address": "Ismeretlen cím", + "Unblacklist": "Tiltólistáról kivesz", + "Blacklist": "Tiltólistára", + "Unverify": "Azonosítás visszavonása", + "Verify...": "Ellenőrzés...", + "ex. @bob:example.com": "pl.: @bob:example.com", + "Add User": "Felhasználó hozzáadás", + "This Home Server would like to make sure you are not a robot": "Az egyedi szerver meg szeretne győződni arról, hogy nem vagy robot", + "Sign in with CAS": "Belépés CAS-sal", + "Please check your email to continue registration.": "Ellenőrizd az e-mailedet a regisztráció folytatásához.", + "Token incorrect": "Helytelen token", + "A text message has been sent to": "A szöveg üzenetet elküldtük ide:", + "Please enter the code it contains:": "Add meg a benne lévő kódot:", + "You are registering with %(SelectedTeamName)s": "%(SelectedTeamName)s névvel regisztrálsz", + "Default server": "Alapértelmezett szerver", + "Custom server": "Egyedi szerver", + "Home server URL": "Egyedi szerver URL", + "Identity server URL": "Azonosítási szerver URL", + "What does this mean?": "Ez mit jelent?", + "Error decrypting audio": "Hiba a hang visszafejtésénél", + "Error decrypting image": "Hiba a kép visszafejtésénél", + "Image '%(Body)s' cannot be displayed.": "'%(Body)s' képet nem lehet megjeleníteni.", + "This image cannot be displayed.": "Ezt a képet nem lehet megjeleníteni.", + "Error decrypting video": "Hiba a videó visszafejtésénél", + "Add an Integration": "Integráció hozzáadása", + "Removed or unknown message type": "Eltávolított üzenet vagy ismeretlen üzenet típus", + "Disable URL previews by default for participants in this room": "URL előnézet alapértelmezett tiltása a szoba résztvevőinek", + "Disable URL previews for this room (affects only you)": "URL előnézet tiltása ebben a szobában (csak téged érint)", + "URL Previews": "URL előnézet", + "Enable URL previews for this room (affects only you)": "URL előnézet engedélyezése ebben a szobában (csak téged érint)", + "Drop file here to upload": "Feltöltéshez húzz ide egy fájlt", + " (unsupported)": " (nem támogatott)", + "Ongoing conference call%(supportedText)s.": "Folyamatban lévő konferencia hívás %(supportedText)s.", + "for %(amount)ss": "%(amount)s mperce", + "for %(amount)sm": "%(amount)s perce", + "for %(amount)sh": "%(amount)s órája", + "for %(amount)sd": "%(amount)s napja", + "Online": "Elérhető", + "Idle": "Várakozik", + "Offline": "Nem érhető el", + "Start chatting": "Csevegés indítása", + "Start Chatting": "Csevegés indítása", + "Click on the button below to start chatting!": "Csevegés indításához kattints a gombra alább!", + "$senderDisplayName changed the room avatar to ": "$senderDisplayName megváltoztatta a szoba avatar képét: ", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s törölte a szoba avatar képét.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s megváltoztatta %(roomName)s szoba avatar képét", + "Username available": "Szabad felhasználói név", + "Username not available": "A felhasználói név foglalt", + "Something went wrong!": "Valami tönkrement!", + "If you already have a Matrix account you can log in instead.": "Ha már van Matrix fiókod akkor beléphetsz helyette.", + "Your browser does not support the required cryptography extensions": "A böngésződ nem támogatja a szükséges titkosítási kiterjesztést", + "Not a valid Riot keyfile": "Nem érvényes Riot kulcsfájl", + "Authentication check failed: incorrect password?": "Azonosítás sikertelen: hibás jelszó?", + "Do you want to set an email address?": "Meg szeretnéd adni az e-mail címet?", + "This will allow you to reset your password and receive notifications.": "Ezzel alaphelyzetbe tudod állítani a jelszavad és értesítéseket fogadhatsz.", + "Deops user with given id": "A megadott azonosítójú felhasználó lefokozása", + "Resetting 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.": "A jelszó lecserélése megújítja a végponttól végpontig való titkosításhoz használt kulcsokat minden eszközön ezzel a titkosított szobák régi üzenetei olvashatatlanok lesznek hacsak nem mented el a kulcsokat és utána visszatöltöd. A jövőben ezen javítunk.", + "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!": "FIGYELEM: A KULCS ELLENŐRZÉS SIKERTELEN! A %(userId)s felhasználóhoz és %(deviceId)s eszközhöz tartozó \"%(fprint)s\" ujjlenyomat nem egyezik meg az ismert \"%(fingerprint)s\" ujjlenyomattal. Ez azt jelenti hogy a kapcsolatot lehallgathatják!", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Ezzel a folyamattal kimentheted a titkosított szobák üzeneteihez tartozó kulcsokat egy helyi fájlba. Ez után be tudod tölteni ezt a fájlt egy másik Matrix kliensbe, így az a kliens is vissza tudja fejteni az üzeneteket.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "A kimentett fájlal bárki el tudja olvasni a titkosított üzeneteket amiket te is, ezért tartsd biztonságban. Ehhez segítségül írj be egy jelmondatot amivel a kimentett adatok titkosításra kerülnek. Az adatok betöltése csak a jelmondat megadásával lehetséges később.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Ezzel a folyamattal lehetőséged van betölteni a titkosítási kulcsokat amiket egy másik Matrix kliensből mentettél ki. Ez után minden üzenetet vissza tudsz fejteni amit a másik kliens tudott.", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Biztos hogy eltávolítod (törlöd) ezt az eseményt? Figyelem, ha törlöd vagy megváltoztatod a szoba nevét vagy a témát ez a változtatás érvényét vesztheti.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Az eszköz megbízhatóságának ellenőrzéséhez, lépj kapcsolatba a tulajdonossal valami más csatornán (pl. személyesen vagy telefon hívással) és kérdezd meg, hogy a kulcs amit a Felhasználói Beállításoknál látnak az eszközhöz megegyezik-e a kulccsal itt:", + "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.": "Ha megegyezik, nyomd meg az megerősítő gombot alul. Ha nem akkor valaki más használja az eszközt és inkább a Feketelista gombot szeretnéd használni.", + "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.": "Az előző kapcsolat visszaállításánál hibára akadtunk. Ha folytatod újra be kell jelentkezned és a titkosított csevegések olvashatatlanok lesznek.", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ha egy újabb Riot verziót használtál valószínűleg ez kapcsolat nem lesz kompatibilis vele. Zárd be az ablakot és térj vissza az újabb verzióhoz.", + "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "A megjelenítési neved az ahogy a többiek látják amikor a szobában csevegsz. Mit szeretnél mi legyen?", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Jelenleg fekete listára teszel minden ismeretlen eszközt. Ha üzenetet szeretnél küldeni ezekre az eszközökre először ellenőrizned kell őket.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Azt javasoljuk, hogy menj végig ellenőrző folyamaton minden eszköznél, hogy meg megerősítsd minden eszköz a jogos tulajdonosához tartozik, de újraküldheted az üzenetet ellenőrzés nélkül, ha úgy szeretnéd.", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Használhatod az egyedi szerver opciót hogy más Matrix szerverre csatlakozz egyedi szerver URL megadásával.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Ezzel használhatod ezt az alkalmazást a meglévő Matrix fiókoddal és másik egyedi szerveren.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Beállíthatsz egy egyedi azonosító szervert is de ez tulajdonképpen meggátolja az együttműködést e-mail címmel azonosított felhasználókkal.", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Ha nem állítasz be e-mail címet nem fogod tudni a jelszavadat alaphelyzetbe állítani. Biztos vagy benne?", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Azonosítás céljából egy harmadik félhez leszel irányítva (%(integrationsUrl)s). Folytatod?", + "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "URL előnézet alapból %(globalDisableUrlPreview)s van a szoba résztvevői számára.", + "This will be your account name on the homeserver, or you can pick a different server.": "Ez lesz a felhasználói neved az egyedi szerveren, vagy választhatsz egy másik szervert.", + "Disable Peer-to-Peer for 1:1 calls": "Közvetlen kapcsolat tiltása az 1:1 hívásoknál", + "To return to your account in future you need to set a password": "Ahhoz hogy később visszatérj a fiókodba be kell állítanod egy jelszót", + "Skip": "Kihagy", + "Start verification": "Ellenőrzés megkezdése", + "Share without verifying": "Megosztás ellenőrzés nélkül", + "Ignore request": "Kérés figyelmen kívül hagyása", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Hozzáadtál egy új eszközt '%(displayName)s', ami titkosítási kulcsokat kér.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Az ellenőrizetlen eszközöd '%(displayName)s' titkosítási kulcsokat kér.", + "Encryption key request": "Titkosítási kulcs kérés" } From 36d10e7bb68bfb38aac13d25184f1244e3606d6d Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 20 Jun 2017 18:47:35 +0100 Subject: [PATCH 201/481] move favicon reset stuff here where its more general Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/BasePlatform.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/BasePlatform.js b/src/BasePlatform.js index d0d8e0c74e..e45f4a57b9 100644 --- a/src/BasePlatform.js +++ b/src/BasePlatform.js @@ -17,6 +17,8 @@ See the License for the specific language governing permissions and limitations under the License. */ +import dis from 'dispatcher'; + /** * Base class for classes that provide platform-specific functionality * eg. Setting an application badge or displaying notifications @@ -27,6 +29,16 @@ export default class BasePlatform { constructor() { this.notificationCount = 0; this.errorDidOccur = false; + + dis.register(this._onAction.bind(this)); + } + + _onAction(payload: Object) { + switch (payload.action) { + case 'on_logged_out': + this.setNotificationCount(0); + break; + } } // Used primarily for Analytics From a5fffe4afa8367b6522036eb7a144a5ad506157a Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@googlemail.com> Date: Tue, 20 Jun 2017 20:15:25 +0100 Subject: [PATCH 202/481] fix ambiguity --- src/BasePlatform.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BasePlatform.js b/src/BasePlatform.js index e45f4a57b9..a920479823 100644 --- a/src/BasePlatform.js +++ b/src/BasePlatform.js @@ -17,7 +17,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import dis from 'dispatcher'; +import dis from './dispatcher'; /** * Base class for classes that provide platform-specific functionality From 7c3742682e559de7cb62310864e2ecbdc13f45f4 Mon Sep 17 00:00:00 2001 From: Tom Tryfonidis Date: Tue, 20 Jun 2017 20:21:37 +0000 Subject: [PATCH 203/481] Translated using Weblate (Greek) Currently translated at 100.0% (915 of 915 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/el/ --- src/i18n/strings/el.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index 4e09fd7f2a..d5b31baaf5 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -916,5 +916,13 @@ "were unbanned": "ξεμπλοκαρίστηκαν", "was unbanned": "ξεμπλοκαρίστηκε", "Press to start a chat with someone": "Πατήστε για να ξεκινήσετε μια συνομιλία", - "You're not in any rooms yet! Press to make a room or to browse the directory": "Δεν είστε σε κανένα δωμάτιο! Πατήστε για να δημιουργήσετε ένα δωμάτιο ή για να δείτε το ευρετήριο" + "You're not in any rooms yet! Press to make a room or to browse the directory": "Δεν είστε σε κανένα δωμάτιο! Πατήστε για να δημιουργήσετε ένα δωμάτιο ή για να δείτε το ευρετήριο", + "To return to your account in future you need to set a password": "Για να επιστρέψετε στον λογαριασμό σας μελλοντικα πρέπει να ορίσετε έναν κωδικό πρόσβασης", + "Skip": "Παράβλεψη", + "Start verification": "Έναρξη επιβεβαίωσης", + "Share without verifying": "Κοινή χρήση χωρίς επιβεβαίωση", + "Ignore request": "Παράβλεψη αιτήματος", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Έχετε προσθέσει μια νέα συσκευή '%(displayName)s', η οποία ζητά κλειδιά κρυπτογράφησης.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Η ανεπιβεβαίωτη συσκευή σας '%(displayName)s' ζητά κλειδιά κρυπτογράφησης.", + "Encryption key request": "Αίτημα κλειδιού κρυπτογράφησης" } From 9ef9d09d44548c066b0186b87eeac2015922dc7f Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 21 Jun 2017 11:27:18 +0100 Subject: [PATCH 204/481] Fix another race with first-sync Set the first sync variables in onWillStartClient, as they race if set on logged in (similar fix to https://github.com/matrix-org/matrix-react-sdk/pull/1124) --- src/components/structures/MatrixChat.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 87799640bd..4b85ae1722 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -942,10 +942,6 @@ module.exports = React.createClass({ dis.dispatch({action: 'view_home_page'}); } else if (this._is_registered) { this._is_registered = false; - // reset the 'have completed first sync' flag, - // since we've just logged in and will be about to sync - this.firstSyncComplete = false; - this.firstSyncPromise = q.defer(); // Set the display name = user ID localpart MatrixClientPeg.get().setDisplayName( @@ -1015,6 +1011,12 @@ module.exports = React.createClass({ // Set ready to false now, then it'll be set to true when the sync // listener we set below fires. this.setState({ready: false}); + + // reset the 'have completed first sync' flag, + // since we're about to start the client and therefore about + // to do the first sync + this.firstSyncComplete = false; + this.firstSyncPromise = q.defer(); const cli = MatrixClientPeg.get(); // Allow the JS SDK to reap timeline events. This reduces the amount of From e43eacb1e56a897b627d83ecda2b0abac56cb1a7 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 21 Jun 2017 12:43:37 +0000 Subject: [PATCH 205/481] Added translation using Weblate (Turkish) --- src/i18n/strings/tr.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/i18n/strings/tr.json diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/tr.json @@ -0,0 +1 @@ +{} \ No newline at end of file From 57f97a58af627256cbba77495b2bf9ae36cc8fdb Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 21 Jun 2017 12:48:18 +0000 Subject: [PATCH 206/481] Added translation using Weblate (Esperanto) --- src/i18n/strings/eo.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/i18n/strings/eo.json diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/eo.json @@ -0,0 +1 @@ +{} \ No newline at end of file From 7aabc7e352eb8dde42e9e05aaf332e6ad642466c Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 21 Jun 2017 12:48:48 +0000 Subject: [PATCH 207/481] Added translation using Weblate (Polish) --- src/i18n/strings/pl.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/i18n/strings/pl.json diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/pl.json @@ -0,0 +1 @@ +{} \ No newline at end of file From 71b65078fc3c71e364a27a27ba379cd7c6cc9d68 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 21 Jun 2017 12:50:18 +0000 Subject: [PATCH 208/481] =?UTF-8?q?Added=20translation=20using=20Weblate?= =?UTF-8?q?=20(Norwegian=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/i18n/strings/nb_NO.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/i18n/strings/nb_NO.json diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/nb_NO.json @@ -0,0 +1 @@ +{} \ No newline at end of file From a0de81a008d3301ed25b6fbd2d8418de14ff93f7 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 21 Jun 2017 12:54:31 +0000 Subject: [PATCH 209/481] Added translation using Weblate (Belarusian) --- src/i18n/strings/be.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/i18n/strings/be.json diff --git a/src/i18n/strings/be.json b/src/i18n/strings/be.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/be.json @@ -0,0 +1 @@ +{} \ No newline at end of file From 0fffd367c022525699150d0db7cb24728ed52b9b Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 21 Jun 2017 12:55:00 +0000 Subject: [PATCH 210/481] Added translation using Weblate (Italian) --- src/i18n/strings/it.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/i18n/strings/it.json diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/it.json @@ -0,0 +1 @@ +{} \ No newline at end of file From e193fa5be5f128a7ee0fb83d877992ce9cfe9013 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 21 Jun 2017 14:04:43 +0100 Subject: [PATCH 211/481] Make the indexeddb worker script work again Removed in https://github.com/matrix-org/matrix-react-sdk/commit/939f6d07984cd51241357a5e61bf76bd46179fcf --- src/MatrixClientPeg.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/MatrixClientPeg.js b/src/MatrixClientPeg.js index 03716be2da..307e65e861 100644 --- a/src/MatrixClientPeg.js +++ b/src/MatrixClientPeg.js @@ -1,5 +1,6 @@ /* Copyright 2015, 2016 OpenMarket Ltd +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. @@ -129,7 +130,7 @@ class MatrixClientPeg { timelineSupport: true, }; - this.matrixClient = createMatrixClient(opts); + this.matrixClient = createMatrixClient(opts, this.indexedDbWorkerScript); // we're going to add eventlisteners for each matrix event tile, so the // potential number of event listeners is quite high. From a62f6d109431eeddea55043fca06fb4819c9942a Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 21 Jun 2017 14:04:43 +0100 Subject: [PATCH 212/481] Make the indexeddb worker script work again Removed in https://github.com/matrix-org/matrix-react-sdk/commit/939f6d07984cd51241357a5e61bf76bd46179fcf --- src/MatrixClientPeg.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/MatrixClientPeg.js b/src/MatrixClientPeg.js index 47370e2142..ba372add13 100644 --- a/src/MatrixClientPeg.js +++ b/src/MatrixClientPeg.js @@ -1,5 +1,6 @@ /* Copyright 2015, 2016 OpenMarket Ltd +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. @@ -127,7 +128,7 @@ class MatrixClientPeg { timelineSupport: true, }; - this.matrixClient = createMatrixClient(opts); + this.matrixClient = createMatrixClient(opts, this.indexedDbWorkerScript); // we're going to add eventlisteners for each matrix event tile, so the // potential number of event listeners is quite high. From 2db24f373ce0a568047e25fddd4206f18e551528 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 21 Jun 2017 11:27:18 +0100 Subject: [PATCH 213/481] Fix another race with first-sync Set the first sync variables in onWillStartClient, as they race if set on logged in (similar fix to https://github.com/matrix-org/matrix-react-sdk/pull/1124) --- src/components/structures/MatrixChat.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index e5aefdf665..39a8225b8a 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -919,10 +919,6 @@ module.exports = React.createClass({ dis.dispatch({action: 'view_home_page'}); } else if (this._is_registered) { this._is_registered = false; - // reset the 'have completed first sync' flag, - // since we've just logged in and will be about to sync - this.firstSyncComplete = false; - this.firstSyncPromise = q.defer(); // Set the display name = user ID localpart MatrixClientPeg.get().setDisplayName( @@ -992,6 +988,12 @@ module.exports = React.createClass({ // Set ready to false now, then it'll be set to true when the sync // listener we set below fires. this.setState({ready: false}); + + // reset the 'have completed first sync' flag, + // since we're about to start the client and therefore about + // to do the first sync + this.firstSyncComplete = false; + this.firstSyncPromise = q.defer(); const cli = MatrixClientPeg.get(); // Allow the JS SDK to reap timeline events. This reduces the amount of From dcd0103acb8198fddfb3b7262b8c406729ddc137 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 20 Jun 2017 15:46:54 +0100 Subject: [PATCH 214/481] Fix ability to invite users with caps in their user IDs By lowercasing only when testing against local user IDs/display names. The user_directory shouldn't care. And when we make the placeholder "We didn't get any results, but here's the user with the exact mxid you typed in", use the original query. --- src/components/views/dialogs/ChatInviteDialog.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/views/dialogs/ChatInviteDialog.js b/src/components/views/dialogs/ChatInviteDialog.js index 9a14cb91d3..a85efadef7 100644 --- a/src/components/views/dialogs/ChatInviteDialog.js +++ b/src/components/views/dialogs/ChatInviteDialog.js @@ -178,7 +178,7 @@ module.exports = React.createClass({ }, onQueryChanged: function(ev) { - const query = ev.target.value.toLowerCase(); + const query = ev.target.value; if (this.queryChangedDebouncer) { clearTimeout(this.queryChangedDebouncer); } @@ -271,10 +271,11 @@ module.exports = React.createClass({ query, searchError: null, }); + const queryLowercase = query.toLowerCase(); const results = []; MatrixClientPeg.get().getUsers().forEach((user) => { - if (user.userId.toLowerCase().indexOf(query) === -1 && - user.displayName.toLowerCase().indexOf(query) === -1 + if (user.userId.toLowerCase().indexOf(queryLowercase) === -1 && + user.displayName.toLowerCase().indexOf(queryLowercase) === -1 ) { return; } From e9ab667d292dade3233e5bb35b04fc4ee4c5b158 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Wed, 21 Jun 2017 17:43:34 +0100 Subject: [PATCH 215/481] Use the web worker when clearing js-sdk stores It turns out that Firefox doesn't let you use indexeddb from private tabs, *unless* you are *also* in a webworker. We need to either consistently use it or not use it - so let's use it. --- src/MatrixClientPeg.js | 3 +-- src/utils/createMatrixClient.js | 10 ++++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/MatrixClientPeg.js b/src/MatrixClientPeg.js index ba372add13..774a1e598c 100644 --- a/src/MatrixClientPeg.js +++ b/src/MatrixClientPeg.js @@ -48,7 +48,6 @@ class MatrixClientPeg { this.opts = { initialSyncLimit: 20, }; - this.indexedDbWorkerScript = null; } /** @@ -59,7 +58,7 @@ class MatrixClientPeg { * @param {string} script href to the script to be passed to the web worker */ setIndexedDbWorkerScript(script) { - this.indexedDbWorkerScript = script; + createMatrixClient.indexedDbWorkerScript = script; } get(): MatrixClient { diff --git a/src/utils/createMatrixClient.js b/src/utils/createMatrixClient.js index 5effd63f2a..b95a9f111f 100644 --- a/src/utils/createMatrixClient.js +++ b/src/utils/createMatrixClient.js @@ -25,13 +25,13 @@ const localStorage = window.localStorage; * @param {Object} opts options to pass to Matrix.createClient. This will be * extended with `sessionStore` and `store` members. * - * @param {string} indexedDbWorkerScript Optional URL for a web worker script - * for IndexedDB store operations. If not given, indexeddb ops are done on + * @property {string} indexedDbWorkerScript Optional URL for a web worker script + * for IndexedDB store operations. By default, indexeddb ops are done on * the main thread. * * @returns {MatrixClient} the newly-created MatrixClient */ -export default function createMatrixClient(opts, indexedDbWorkerScript) { +export default function createMatrixClient(opts) { const storeOpts = {}; if (localStorage) { @@ -45,7 +45,7 @@ export default function createMatrixClient(opts, indexedDbWorkerScript) { indexedDB: window.indexedDB, dbName: "riot-web-sync", localStorage: localStorage, - workerScript: indexedDbWorkerScript, + workerScript: createMatrixClient.indexedDbWorkerScript, }); } @@ -53,3 +53,5 @@ export default function createMatrixClient(opts, indexedDbWorkerScript) { return Matrix.createClient(opts); } + +createMatrixClient.indexedDbWorkerScript = null; From efc5cf28893c79847b97fed8f99c9ad91d1e0109 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Wed, 21 Jun 2017 21:49:41 +0100 Subject: [PATCH 216/481] Remove dead special-casing for OLM.BAD_LEGACY_ACCOUNT_PICKLE We used to show a special error message when we got this error; however https://github.com/matrix-org/matrix-react-sdk/pull/783 made that not work. You'll only hit it if you're upgrading from some ancient version of Olm, and I'm quite happy for us to fall back to the generic 'couldn't restore: vape your storage?' flow in that case. (In any case that's preferable to dumping you at the login prompt with no warning that we've just vaped your storage). --- src/Lifecycle.js | 18 +----------------- src/i18n/strings/de_DE.json | 1 - src/i18n/strings/el.json | 1 - src/i18n/strings/en_EN.json | 1 - src/i18n/strings/en_US.json | 1 - src/i18n/strings/fr.json | 1 - src/i18n/strings/hu.json | 1 - src/i18n/strings/pt.json | 1 - src/i18n/strings/pt_BR.json | 1 - src/i18n/strings/ru.json | 1 - 10 files changed, 1 insertion(+), 26 deletions(-) diff --git a/src/Lifecycle.js b/src/Lifecycle.js index 424c58249c..06f5d9ef00 100644 --- a/src/Lifecycle.js +++ b/src/Lifecycle.js @@ -29,7 +29,6 @@ import DMRoomMap from './utils/DMRoomMap'; import RtsClient from './RtsClient'; import Modal from './Modal'; import sdk from './index'; -import { _t } from './languageHandler'; /** * Called at startup, to attempt to build a logged-in Matrix session. It tries @@ -237,27 +236,12 @@ function _restoreFromLocalStorage() { function _handleRestoreFailure(e) { console.log("Unable to restore session", e); - let msg = e.message; - if (msg == "OLM.BAD_LEGACY_ACCOUNT_PICKLE") { - msg = _t( - 'You need to log back in to generate end-to-end encryption keys' - + ' for this device and submit the public key to your homeserver.' - + ' This is a once off; sorry for the inconvenience.', - ); - - _clearStorage(); - - return q.reject(new Error( - _t('Unable to restore previous session') + ': ' + msg, - )); - } - const def = q.defer(); const SessionRestoreErrorDialog = sdk.getComponent('views.dialogs.SessionRestoreErrorDialog'); Modal.createDialog(SessionRestoreErrorDialog, { - error: msg, + error: e.message, onFinished: (success) => { def.resolve(success); }, diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index a99671402b..f328c364ce 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -305,7 +305,6 @@ "You are already in a call.": "Du bist bereits in einem Gespräch.", "You cannot place a call with yourself.": "Du kannst keinen Anruf mit dir selbst starten.", "You cannot place VoIP calls in this browser.": "VoIP-Gespräche werden von diesem Browser nicht unterstützt.", - "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "Du musst dich erneut anmelden, um Ende-zu-Ende-Verschlüsselungs-Schlüssel für dieses Gerät zu generieren und um den öffentlichen Schlüssel auf deinem Homeserver zu hinterlegen. Dies muss nur einmal durchgeführt werden, bitte entschuldige die Unannehmlichkeiten.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Deine E-Mail-Adresse scheint nicht mit einer Matrix-ID auf diesem Heimserver verbunden zu sein.", "Sun": "So", "Mon": "Mo", diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index 4e09fd7f2a..6ca1fafc29 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -861,7 +861,6 @@ "since the point in time of selecting this option": "από το χρονικό σημείο επιλογής αυτής της ρύθμισης", "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Το κλειδί υπογραφής που δώσατε αντιστοιχεί στο κλειδί υπογραφής που λάβατε από τη συσκευή %(userId)s %(deviceId)s. Η συσκευή έχει επισημανθεί ως επιβεβαιωμένη.", "To link to a room it must have an address.": "Για να συνδεθείτε σε ένα δωμάτιο πρέπει να έχετε μια διεύθυνση.", - "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "Πρέπει να συνδεθείτε ξανά για να δημιουργήσετε τα κλειδιά κρυπτογράφησης από άκρο σε άκρο για αυτήν τη συσκευή και να υποβάλετε το δημόσιο κλειδί στον διακομιστή σας. Αυτό θα χρειαστεί να γίνει μόνο μια φορά.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Η διεύθυνση ηλεκτρονικής αλληλογραφίας σας δεν φαίνεται να συσχετίζεται με Matrix ID σε αυτόν τον διακομιστή.", "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Ο κωδικός πρόσβασής σας άλλαξε επιτυχώς. Δεν θα λάβετε ειδοποιήσεις push σε άλλες συσκευές μέχρι να συνδεθείτε ξανά σε αυτές", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Δεν θα μπορέσετε να αναιρέσετε αυτήν την αλλαγή καθώς προωθείτε τον χρήστη να έχει το ίδιο επίπεδο δύναμης με τον εαυτό σας.", diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 6334c797e8..7eb8beeafd 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -668,7 +668,6 @@ "You need to be able to invite users to do that.": "You need to be able to invite users to do that.", "You need to be logged in.": "You need to be logged in.", "You need to enter a user name.": "You need to enter a user name.", - "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.", "Your password has been reset": "Your password has been reset", "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them", diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json index 5233111065..e060add84f 100644 --- a/src/i18n/strings/en_US.json +++ b/src/i18n/strings/en_US.json @@ -601,7 +601,6 @@ "You need to be able to invite users to do that.": "You need to be able to invite users to do that.", "You need to be logged in.": "You need to be logged in.", "You need to enter a user name.": "You need to enter a user name.", - "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a one-off; sorry for the inconvenience.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.", "Your password has been reset": "Your password has been reset", "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them", diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 039198f0cf..5ba39d730b 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -566,7 +566,6 @@ "You need to be able to invite users to do that.": "Vous devez être capable d’inviter des utilisateurs pour faire ça.", "You need to be logged in.": "Vous devez être connecté.", "You need to enter a user name.": "Vous devez entrer un nom d’utilisateur.", - "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "Vous devez vous connecter à nouveau pour générer les clés d’encryption pour cet appareil, et soumettre la clé publique à votre homeserver. Cette action ne se reproduira pas ; veuillez nous excuser pour la gêne occasionnée.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Votre adresse e-mail ne semble pas associée à un identifiant Matrix sur ce homeserver.", "Your password has been reset": "Votre mot de passe a été réinitialisé", "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Votre mot de passe a été mis à jour avec succès. Vous ne recevrez plus de notification sur vos appareils jusqu’à ce que vous vous identifiez à nouveau", diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index f2fa3bb63e..6b0d03900c 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -675,7 +675,6 @@ "You need to be able to invite users to do that.": "Hogy ezt csinálhasd meg kell tudnod hívni felhasználókat.", "You need to be logged in.": "Be kell jelentkezz.", "You need to enter a user name.": "Be kell írnod a felhasználói nevet.", - "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "Ahhoz, hogy kulcsot tudjál készíteni a végponttól végpontig való titkosításhoz ehhez az eszközhöz és elküld a kulcsot a egyéni szerverhez vissza kell jelentkezned. Ez egyszeri alkalom, elnézést a kellemetlenségér.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Ez az e-mail cím, úgy néz ki, nincs összekötve a Matrix azonosítóval ezen az egyedi szerveren.", "Your password has been reset": "A jelszavad visszaállítottuk", "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "A jelszavadat sikeresen megváltoztattuk. Nem kapsz \"push\" értesítéseket amíg a többi eszközön vissza nem jelentkezel" diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json index a8dd8758d4..d48f1a914f 100644 --- a/src/i18n/strings/pt.json +++ b/src/i18n/strings/pt.json @@ -404,7 +404,6 @@ "You cannot place VoIP calls in this browser.": "Você não pode fazer chamadas de voz neste navegador.", "You need to be able to invite users to do that.": "Para fazer isso, você tem que ter permissão para convidar outras pessoas.", "You need to be logged in.": "Você tem que estar logado.", - "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "É necessário que você faça login novamente para poder gerar as chaves de criptografia ponta-a-ponta para este dispositivo e então enviar sua chave pública para o servidor. Pedimos desculpas pela inconveniência, é preciso fazer isso apenas única uma vez.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "O seu endereço de email não parece estar associado a uma conta de usuária/o Matrix neste servidor.", "Set a display name:": "Defina um nome público para você:", "Upload an avatar:": "Envie uma imagem de perfil para identificar você:", diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 1e915a5491..0dc732ebaa 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -405,7 +405,6 @@ "You cannot place VoIP calls in this browser.": "Você não pode fazer chamadas de voz neste navegador.", "You need to be able to invite users to do that.": "Para fazer isso, você tem que ter permissão para convidar outras pessoas.", "You need to be logged in.": "Você tem que estar logado.", - "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "É necessário que você faça login novamente para poder gerar as chaves de criptografia ponta-a-ponta para este dispositivo e então enviar sua chave pública para o servidor. Pedimos desculpas pela inconveniência, é preciso fazer isso apenas única uma vez.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "O seu endereço de email não parece estar associado a uma conta de usuária/o Matrix neste servidor.", "Set a display name:": "Defina um nome público para você:", "Upload an avatar:": "Envie uma imagem de perfil para identificar você:", diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 6b6eadf928..30daf9d807 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -385,7 +385,6 @@ "Thu": "Чт", "Fri": "Пя", "Sat": "Сб", - "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "Вам необходимо снова войти в генерировать сквозное шифрование (е2е) ключей для этого устройства и предоставить публичный ключ Вашему домашнему серверу. Это после выключения; приносим извинения за причиненные неудобства.", "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Ваш адрес электронной почты, кажется, не связан с Matrix ID на этом Homeserver.", "to start a chat with someone": "Начать чат с кем-то", "to tag direct chat": "отметить прямой чат", From fcc42c7b60054afeecd6ec796e95708c4a807b5b Mon Sep 17 00:00:00 2001 From: daniel tygel Date: Thu, 22 Jun 2017 09:57:05 +0000 Subject: [PATCH 217/481] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (915 of 915 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/pt_BR/ --- src/i18n/strings/pt_BR.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 1e915a5491..1b5ba0fa71 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -970,5 +970,13 @@ "Authentication check failed: incorrect password?": "Falha ao checar a autenticação: senha incorreta?", "Disable Peer-to-Peer for 1:1 calls": "Desabilitar as chamadas 1:1 par-a-par", "Do you want to set an email address?": "Você deseja definir um endereço de e-mail?", - "This will allow you to reset your password and receive notifications.": "Isso permitirá que você redefina sua senha e receba notificações." + "This will allow you to reset your password and receive notifications.": "Isso permitirá que você redefina sua senha e receba notificações.", + "To return to your account in future you need to set a password": "Para poder futuramente voltar à sua conta, você precisa definir uma senha", + "Skip": "Pular", + "Start verification": "Iniciar a verificação", + "Share without verifying": "Compartilhar sem verificar", + "Ignore request": "Ignorar o pedido", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Você adicionou um novo dispositivo '%(displayName)s', que está solicitando chaves de criptografia.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Seu dispositivo não verificado '%(displayName)s' está solicitando chaves de criptografia.", + "Encryption key request": "Solicitação de chave de criptografia" } From 6881fdf1025e735411e3a65fb77cb15118531a5c Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 22 Jun 2017 11:52:13 +0100 Subject: [PATCH 218/481] js-sdk 0.7.13 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f49fc04661..5d6aebe52f 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "isomorphic-fetch": "^2.2.1", "linkifyjs": "^2.1.3", "lodash": "^4.13.1", - "matrix-js-sdk": "0.7.12", + "matrix-js-sdk": "0.7.13", "optimist": "^0.6.1", "prop-types": "^15.5.8", "q": "^1.4.1", From 5700c179252b20a5cd4e87f776f69a8818f7258e Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 22 Jun 2017 11:57:27 +0100 Subject: [PATCH 219/481] Prepare changelog for v0.9.7 --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22049b6af6..8bc4bbcfce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +Changes in [0.9.7](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.9.7) (2017-06-22) +=================================================================================================== +[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.9.6...v0.9.7) + + * Fix ability to invite users with caps in their user IDs + [\#1128](https://github.com/matrix-org/matrix-react-sdk/pull/1128) + * Fix another race with first-sync + [\#1131](https://github.com/matrix-org/matrix-react-sdk/pull/1131) + * Make the indexeddb worker script work again + [\#1132](https://github.com/matrix-org/matrix-react-sdk/pull/1132) + * Use the web worker when clearing js-sdk stores + [\#1133](https://github.com/matrix-org/matrix-react-sdk/pull/1133) + Changes in [0.9.6](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.9.6) (2017-06-20) =================================================================================================== [Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.9.5...v0.9.6) From f7aad3c422f83459cf4657ce260d4bf050d30c4b Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 22 Jun 2017 11:57:27 +0100 Subject: [PATCH 220/481] v0.9.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5d6aebe52f..cbc06c9771 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "matrix-react-sdk", - "version": "0.9.6", + "version": "0.9.7", "description": "SDK for matrix.org using React", "author": "matrix.org", "repository": { From b124ac21fd9bc79119148f57314c557e53e7e507 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Thu, 22 Jun 2017 15:07:54 +0100 Subject: [PATCH 221/481] Fix load failure in firefox when indexedDB is disabled --- src/utils/createMatrixClient.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/utils/createMatrixClient.js b/src/utils/createMatrixClient.js index b95a9f111f..2d294e262b 100644 --- a/src/utils/createMatrixClient.js +++ b/src/utils/createMatrixClient.js @@ -18,6 +18,13 @@ import Matrix from 'matrix-js-sdk'; const localStorage = window.localStorage; +// just *accessing* indexedDB throws an exception in firefox with +// indexeddb disabled. +let indexedDB; +try { + indexedDB = window.indexedDB; +} catch(e) {} + /** * Create a new matrix client, with the persistent stores set up appropriately * (using localstorage/indexeddb, etc) @@ -37,12 +44,13 @@ export default function createMatrixClient(opts) { if (localStorage) { storeOpts.sessionStore = new Matrix.WebStorageSessionStore(localStorage); } - if (window.indexedDB && localStorage) { + + if (indexedDB && localStorage) { // FIXME: bodge to remove old database. Remove this after a few weeks. - window.indexedDB.deleteDatabase("matrix-js-sdk:default"); + indexedDB.deleteDatabase("matrix-js-sdk:default"); storeOpts.store = new Matrix.IndexedDBStore({ - indexedDB: window.indexedDB, + indexedDB: indexedDB, dbName: "riot-web-sync", localStorage: localStorage, workerScript: createMatrixClient.indexedDbWorkerScript, From fcd945afc2e9c563a8f20c5bac3d7cffff6078ca Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Thu, 22 Jun 2017 15:08:30 +0100 Subject: [PATCH 222/481] Fix an incorrect console error ... this error is thrown when registering as guest or loading from localstorage, not when using tokenparams. --- src/components/structures/MatrixChat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 019446ae84..7773f4f38c 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -330,7 +330,7 @@ module.exports = React.createClass({ defaultDeviceDisplayName: this.props.defaultDeviceDisplayName, }); }).catch((e) => { - console.error(`Error attempting to load session from token params: ${e}`); + console.error(`Error attempting to load session: ${e}`); return false; }).then((loadedSession) => { if (!loadedSession) { From a22f14e9101fb91dc619d1506611aeb2c33a3019 Mon Sep 17 00:00:00 2001 From: turt2live Date: Thu, 22 Jun 2017 08:53:58 -0600 Subject: [PATCH 223/481] Use 12h timestamps when enabled in RR Fixes vector-im/riot-web#4393 Signed-off-by: Travis Ralston --- src/DateUtils.js | 6 +++--- src/components/views/rooms/EventTile.js | 1 + src/components/views/rooms/ReadReceiptMarker.js | 5 ++++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/DateUtils.js b/src/DateUtils.js index 0bce7c8a16..545d92dd3b 100644 --- a/src/DateUtils.js +++ b/src/DateUtils.js @@ -60,7 +60,7 @@ function twelveHourTime(date) { } module.exports = { - formatDate: function(date) { + formatDate: function(date, showTwelveHour=false) { var now = new Date(); const days = getDaysArray(); const months = getMonthsArray(); @@ -69,7 +69,7 @@ module.exports = { } 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)}); + 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 @@ -80,7 +80,7 @@ module.exports = { time: this.formatTime(date), }); } - return this.formatFullDate(date); + return this.formatFullDate(date, showTwelveHour); }, formatFullDate: function(date, showTwelveHour=false) { diff --git a/src/components/views/rooms/EventTile.js b/src/components/views/rooms/EventTile.js index 5c970a0966..170925999d 100644 --- a/src/components/views/rooms/EventTile.js +++ b/src/components/views/rooms/EventTile.js @@ -336,6 +336,7 @@ module.exports = WithMatrixClient(React.createClass({ suppressAnimation={this._suppressReadReceiptAnimation} onClick={this.toggleAllReadAvatars} timestamp={receipt.ts} + showTwelveHour={this.props.isTwelveHour} /> ); } diff --git a/src/components/views/rooms/ReadReceiptMarker.js b/src/components/views/rooms/ReadReceiptMarker.js index 7565b0741d..64b54fe1e1 100644 --- a/src/components/views/rooms/ReadReceiptMarker.js +++ b/src/components/views/rooms/ReadReceiptMarker.js @@ -66,6 +66,9 @@ module.exports = React.createClass({ // Timestamp when the receipt was read timestamp: React.PropTypes.number, + + // True to show twelve hour format, false otherwise + showTwelveHour: React.PropTypes.bool, }, getDefaultProps: function() { @@ -172,7 +175,7 @@ module.exports = React.createClass({ if (this.props.timestamp) { title = _t( "Seen by %(userName)s at %(dateTime)s", - {userName: this.props.member.userId, dateTime: DateUtils.formatDate(new Date(this.props.timestamp))} + {userName: this.props.member.userId, dateTime: DateUtils.formatDate(new Date(this.props.timestamp), this.props.showTwelveHour)} ); } From cc53c6776dd87aee1965a8a2ffed63916b761770 Mon Sep 17 00:00:00 2001 From: Elia Date: Thu, 22 Jun 2017 19:52:59 +0000 Subject: [PATCH 224/481] Translated using Weblate (Turkish) Currently translated at 100.0% (915 of 915 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/tr/ --- src/i18n/strings/tr.json | 918 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 917 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index 9e26dfeeb6..a0f7ca5db1 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -1 +1,917 @@ -{} \ No newline at end of file +{ + "af": "Afrikanca (Taal)", + "ar-ae": "Arapça (B.A.E)", + "ar-bh": "Arapça (Bahreyn)", + "ar-dz": "Arapça (Cezayir)", + "ar-eg": "Arapça (Mısır)", + "ar-iq": "Arapça (Irak)", + "ar-jo": "Arapça (Ürdün)", + "ar-kw": "Arapça (Kuveyt)", + "ar-lb": "Arapça (Lübnan)", + "ar-ly": "Arapça (Libya)", + "ar-ma": "Arapça (Fas)", + "ar-om": "Arapça (Umman)", + "ar-qa": "Arapça (Katar)", + "ar-sa": "Arapça (Suudi Arabistan)", + "ar-sy": "Arapça (Suriye)", + "ar-tn": "Arapça (Tunus)", + "ar-ye": "Arapça (Yemen)", + "be": "Beyaz Rusça", + "bg": "Bulgarca", + "ca": "Katalanca", + "cs": "Çek Dili", + "da": "Danimarkaca", + "de-at": "Almanca (Avusturya)", + "de-ch": "Almanca (İsviçre)", + "de": "Almanca", + "de-li": "Almanca (Liechtenstein)", + "de-lu": "Almanca (Lüksemburg)", + "el": "Yunanca", + "en-au": "İngilizce (Avustralya)", + "en-bz": "İngilizce (Belize)", + "en-ca": "İngilizce (Kanada)", + "en": "İngilizce", + "en-gb": "İngilizce (İngiltere)", + "en-ie": "İngilizce (İrlanda)", + "en-jm": "İngilizce (Jamaika)", + "en-nz": "İngilizce (Yeni Zellanda)", + "en-tt": "İngilizce (Trinidad)", + "en-us": "İngilizce (Amerika)", + "en-za": "İngilizce (Güney Afrika)", + "es-ar": "İspanyolca (Arjantin)", + "es-bo": "İspanyolca (Bolivya)", + "es-cl": "İspanyolca (Şili)", + "es-co": "İspanyolca (Kolombiya)", + "es-cr": "İspanyolca (Kosta Rika)", + "es-do": "İspanyolca (Dominik Cumhuriyeti)", + "es-ec": "İspanyolca (Ekvador)", + "es-gt": "İspanyolca (Guatemala)", + "es-hn": "İspanyolca (Honduras)", + "es-mx": "İspanyolca (Meksika)", + "es-ni": "İspanyolca (Nikaragua)", + "es-pa": "İspanyolca (Panama)", + "es-pe": "İspanyolca (Peru)", + "es-pr": "İspanyolca (Porto Riko)", + "es-py": "İspanyolca (Paraguay)", + "es": "İspanyolca (İspanya)", + "es-sv": "İspanyolca (El Salvador)", + "es-uy": "İspanyolca (Uruguay)", + "es-ve": "İspanyolca (Venezuela)", + "et": "Estonya Dili", + "eu": "Baskça", + "fa": "Farsça", + "fi": "Fince", + "fo": "Faroe", + "fr-be": "Fransızca (Belçika)", + "fr-ca": "Fransızca (Kanada)", + "fr-ch": "Fransızca (İsviçre)", + "fr": "Fransızca", + "fr-lu": "Fransızca (Lüxemburg)", + "ga": "İrlandaca", + "gd": "Gaelik (İskoçya)", + "he": "İbranice", + "hi": "Hintçe", + "hr": "Hırvatça", + "hu": "Macarca", + "id": "Endonezya Dili", + "is": "İzlandaca", + "it-ch": "İtalyanca (İsviçre)", + "it": "İtalyanca", + "ja": "Japonca", + "ji": "Eskenazi Dili", + "ko": "Korece", + "lt": "Litvanya Dili", + "lv": "Letonya Dili", + "mk": "Makedonca (FYROM)", + "ms": "Malezyanca", + "mt": "Malta Dili", + "nl-be": "Hollandaca (Belçika)", + "nl": "Hollandaca", + "no": "Norveççe", + "pl": "Polonya Dili", + "pt-br": "Brezilya Portekizcesi", + "pt": "Portekizce", + "rm": "Reto-Latince", + "ro-mo": "Romence (Moldova Cumhuriyeti)", + "ro": "Romence", + "ru-mo": "Rusça (Moldova Cumhuriyeti)", + "ru": "Rusça", + "sb": "Sorbca", + "sk": "Slovakça", + "sl": "Slovence", + "sq": "Arnavutça", + "sr": "Sırpça", + "sv-fi": "İsveççe (Finlandiya)", + "sv": "İsveççe", + "sx": "Sutu Dili", + "sz": "Sami Dili", + "th": "Tayland Dili", + "tn": "Setsvana", + "tr": "Türkçe", + "ts": "Tsonga Dili", + "uk": "Ukraynaca", + "ur": "Urduca", + "ve": "Venda Dili", + "vi": "Vietnam Dili", + "xh": "Xhosa Dili", + "zh-cn": "Çince (PRC)", + "zh-hk": "Çince (Hong Kong)", + "zh-sg": "Çince (Singapur)", + "zh-tw": "Çince (Tayvan)", + "zu": "Zulu Dili", + "a room": "bir oda", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "+%(msisdn) 'ye bir kısa mesaj gönderildi . Lütfen içerdiği doğrulama kodunu girin", + "Accept": "Kabul Et", + "%(targetName)s accepted an invitation.": "%(targetName) bir davetiyeyi kabul etti.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName) %(displayName) için davetiyeyi kabul etti.", + "Account": "Hesap", + "Access Token:": "Erişim Anahtarı:", + "Active call (%(roomName)s)": "Aktif çağrı (%(roomName)s)", + "Add": "Ekle", + "Add a topic": "Bir konu(topic) ekle", + "Add email address": "E-posta adresi ekle", + "Add phone number": "Telefon numarası ekle", + "Admin": "Admin", + "Admin tools": "Admin araçları", + "And %(count)s more...": "Ve %(count)s fazlası...", + "VoIP": "VoIP", + "Missing Media Permissions, click here to request.": "Medya İzinleri Yok , talep etmek için burayı tıklayın.", + "No Microphones detected": "Hiçbir Mikrofon bulunamadı", + "No Webcams detected": "Hiçbir Web kamerası bulunamadı", + "No media permissions": "Medya izinleri yok", + "You may need to manually permit Riot to access your microphone/webcam": "Riot'un mikrofonunuza / web kameranıza el le erişmesine izin vermeniz gerekebilir", + "Default Device": "Varsayılan Cihaz", + "Microphone": "Mikrofon", + "Camera": "Kamera", + "Advanced": "Gelişmiş", + "Algorithm": "Algoritma", + "Hide removed messages": "Kaldırılan mesajları gizle", + "Always show message timestamps": "Her zaman mesaj zaman dalgalarını (timestamps) gösterin", + "Authentication": "Doğrulama", + "Alias (optional)": "Diğer ad (isteğe bağlı)", + "all room members": "Tüm oda üyeleri", + "all room members, from the point they are invited": "Tüm oda üyeleri , davet edildiği noktadan", + "all room members, from the point they joined": "Tüm oda üyeleri , katıldıkları noktalardan", + "and": "ve", + "%(items)s and %(remaining)s others": "%(items) ve %(remaining) diğerleri", + "%(items)s and one other": "%(items) ve bir başkası", + "%(items)s and %(lastItem)s": "%(items) ve %(lastItem)", + "and %(overflowCount)s others...": "ve %(overflowCount) diğerleri...", + "and one other...": "ve bir diğeri...", + "%(names)s and %(lastPerson)s are typing": "%(names) ve %(lastPerson) yazıyorlar", + "%(names)s and one other are typing": "%(names)s ve birisi yazıyor", + "%(names)s and %(count)s others are typing": "%(names)s ve %(count)s diğeri yazıyor", + "An email has been sent to": "Bir e-posta gönderildi", + "A new password must be entered.": "Yeni bir şifre girilmelidir.", + "%(senderName)s answered the call.": "%(senderName)s aramayı cevapladı.", + "anyone": "herhangi biri", + "An error has occurred.": "Bir hata oluştu.", + "Anyone": "Kimse", + "Anyone who knows the room's link, apart from guests": "Misafirler dışında odanın bağlantısını bilen herkes", + "Anyone who knows the room's link, including guests": "Misafirler dahil , odanın bağlantısını bilen herkes", + "Are you sure?": "Emin misiniz ?", + "Are you sure you want to leave the room '%(roomName)s'?": "'%(roomName)s' odasından ayrılmak istediğinize emin misiniz ?", + "Are you sure you want to reject the invitation?": "Daveti reddetmek istediğinizden emin misiniz ?", + "Are you sure you want to upload the following files?": "Aşağıdaki dosyaları yüklemek istediğinizden emin misiniz ?", + "Attachment": "Ek Dosya", + "Autoplay GIFs and videos": "GIF'leri ve Videoları otomatik olarak oynat", + "%(senderName)s banned %(targetName)s.": "%(senderName) %(targetName)'i banladı.", + "Ban": "Yasak", + "Banned users": "Yasaklanan(Banlanan) Kullanıcılar", + "Bans user with given id": "Yasaklanan(Banlanan) Kullanıcılar , ID'leri ile birlikte", + "Blacklisted": "Kara listeye alınanlar", + "Bug Report": "Hata Raporu", + "Bulk Options": "Toplu Seçenekler", + "Call Timeout": "Arama Zaman Aşımı", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Ana Sunucu'ya bağlanılamıyor - lütfen bağlantınızı kontrol edin , Ana Sunucu SSL sertifikanızın güvenilir olduğundan ve bir tarayıcı uzantısının istekleri engellemiyor olduğundan emin olun.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Tarayıcı çubuğunuzda bir HTTPS URL'si olduğunda Ana Sunusuna HTTP üzerinden bağlanılamıyor . Ya HTTPS kullanın veya güvensiz komut dosyalarını etkinleştirin.", + "Can't load user settings": "Kullanıcı ayarları yüklenemiyor", + "Change Password": "Şifre Değiştir", + "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName) görüntülenen ismini %(oldDisplayName)s dan %(displayName) 'a değiştirdi.", + "%(senderName)s changed their profile picture.": "%(senderName) profil resmini değiştirdi.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName) %(powerLevelDiffText)'nin güç düzeyini değiştirdi.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName) odanın ismini %(roomName) olarak değiştirdi.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName) oda adını kaldırdı.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName) konuyu \"%(topic)\" olarak değiştirdi.", + "Changes to who can read history will only apply to future messages in this room": "Geçmişi kimlerin okuyabileceğine ait değişiklikler yalnızca bu odada gelecekteki iletiler için geçerli olur", + "Changes your display nickname": "Görünen takma adınızı değiştirir", + "changing room on a RoomView is not supported": "Oda Ekranında oda değiştirme desteklenmiyor", + "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.": "Şifre değiştirme eğer oda anahtarlarınızı dışa aktarmaz ve daha sonra tekrar içe aktarmazsanız , şu anda tüm cihazlarda uçtan uca şifreleme anahtarlarını sıfırlayacak ve geçmişi okunamaz hale getirecek . Gelecekte bu geliştirilecek.", + "Claimed Ed25519 fingerprint key": "Ed25519 parmak izi anahtarı istendi", + "Clear Cache and Reload": "Önbelleği Temizle ve Yeniden Yükle", + "Clear Cache": "Önbelleği Temizle", + "Click here to join the discussion!": "Tartışmaya katılmak için Buraya tıklayın !", + "Click here to fix": "Düzeltmek için buraya tıklayın", + "Click to mute audio": "Sesi kapatmak için tıklayın", + "Click to mute video": "Videoyu kapatmak için tıklayın", + "click to reveal": "Ortaya çıkarmak için tıklayın", + "Click to unmute video": "Videoyu açmak için tıklayın", + "Click to unmute audio": "Sesi açmak için tıklayın", + "Close": "Kapat", + "Command error": "Komut Hatası", + "Commands": "Komutlar", + "Conference call failed.": "Konferans araması başarısız oldu.", + "Conference calling is in development and may not be reliable.": "Konferans araması geliştirme sürecinde ve güvenilir olmayabilir.", + "Conference calls are not supported in encrypted rooms": "Konferans aramaları şifreli odalarda desteklenmiyor", + "Conference calls are not supported in this client": "Konferans aramaları bu istemcide desteklenmiyor", + "Confirm password": "Şifreyi Onayla", + "Confirm your new password": "Yeni Şifrenizi Onaylayın", + "Continue": "Devam Et", + "Could not connect to the integration server": "Bütünleştirme (Integration) Sunucusuna bağlanamadı", + "%(count)s new messages.one": "%(count) yeni mesaj", + "%(count)s new messages.other": "%(count) yeni mesajlar", + "Create a new chat or reuse an existing one": "Yeni sohbet oluştur veya mevcut sohbetinizi tekrar kullanın", + "Create an account": "Hesap Oluştur", + "Create Room": "Oda Oluştur", + "Cryptography": "Kriptografi", + "Current password": "Şimdiki Şifre", + "Curve25519 identity key": "Curve25519 kimlik anahtarı", + "Custom": "Özel", + "Custom level": "Özel seviye", + "/ddg is not a command": "/ddg bir komut değildir", + "Deactivate Account": "Hesabı Devre Dışı Bırakma", + "Deactivate my account": "Hesabımı Devre Dışı Bırak", + "Decline": "Reddet", + "Decrypt %(text)s": "%(text) metninin şifresini çöz", + "Decryption error": "Şifre çözme hatası", + "Delete": "Sil", + "demote": "Rütbesini İndir", + "Deops user with given id": "ID'leriyle birlikte , düşürülmüş kullanıcılar", + "Default": "Varsayılan", + "Device already verified!": "Cihaz zaten doğrulandı!", + "Device ID": "Cihaz ID", + "Device ID:": "Cihaz ID:", + "device id: ": "cihaz id: ", + "Device key:": "Cihaz anahtarı:", + "Devices": "Cihazlar", + "Devices will not yet be able to decrypt history from before they joined the room": "Cihazlar odaya girdiğinden önceki geçmişin şifresini çözemez", + "Direct Chat": "Doğrudan Sohbet", + "Direct chats": "Doğrudan Sohbetler", + "Disable Notifications": "Bildirimleri Devre Dışı Bırak", + "disabled": "Devre Dışı Bırakıldı", + "Disable inline URL previews by default": "Satır için URL önizlemelerini varsayılan olarak devre dışı bırak", + "Disable markdown formatting": "Markdown formatlamayı devre dışı bırak", + "Disinvite": "Daveti İptal Et", + "Display name": "Görünür İsim", + "Displays action": "Görünür eylem", + "Don't send typing notifications": "Yazarken bildirim gönderme", + "Download %(text)s": "%(text) metnini indir", + "Drop File Here": "Dosyayı Buraya Bırak", + "Drop here %(toAction)s": "%(toAction)'ı buraya bırak", + "Drop here to tag %(section)s": "Etiket %(section) ' ı buraya bırak", + "Ed25519 fingerprint": "Ed25519 parmak izi", + "Email": "E-posta", + "Email address": "E-posta Adresi", + "Email address (optional)": "E-posta Adresi (isteğe bağlı)", + "Email, name or matrix ID": "E-posta , isim veya matrix ID", + "Emoji": "Emoji (Karakter)", + "Enable encryption": "Şifrelemeyi Etkinleştir", + "Enable Notifications": "Bildirimleri Etkinleştir", + "enabled": "etkinleştirildi", + "Encrypted by a verified device": "Doğrulanmış bir cihaz tarafından şifrelendi", + "Encrypted by an unverified device": "Doğrulanmamış bir cihaz tarafından şifrelendi", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Şifrelenmiş mesajlar , henüz şifreleme sağlamayan istemcilerde görünür olmayacaktır", + "Encrypted room": "Şifrelenmiş Oda", + "Encryption is enabled in this room": "Şifreleme bu oda için etkin", + "Encryption is not enabled in this room": "Şifreleme bu oda için etkin değil", + "%(senderName)s ended the call.": "%(senderName)s çağrıyı bitirdi.", + "End-to-end encryption information": "Uçtan-uca şifreleme bilgileri", + "End-to-end encryption is in beta and may not be reliable": "Uçtan uca şifreleme beta sürümünde ve güvenilir olmayabilir", + "Enter Code": "Kodu Girin", + "Enter passphrase": "Şifre deyimi Girin", + "Error": "Hata", + "Error decrypting attachment": "Ek şifresini çözme hatası", + "Error: Problem communicating with the given homeserver.": "Hata: verilen Ana Sunucu ile iletişim kurulamıyor.", + "Event information": "Etkinlik bilgileri", + "Existing Call": "Mevcut Çağrı", + "Export": "Dışa Aktar", + "Export E2E room keys": "Uçtan uca Oda anahtarlarını Dışa Aktar", + "Failed to ban user": "Kullanıcı yasaklama(Ban) başarısız", + "Failed to change password. Is your password correct?": "Şifreniz değiştirilemedi . Şifreniz doğru mu ?", + "Failed to change power level": "Güç seviyesini değiştirme başarısız oldu", + "Failed to delete device": "Cihazı silmek başarısız oldu", + "Failed to fetch avatar URL": "Avatar URL'i alınamadı", + "Failed to forget room %(errCode)s": "Oda unutulması başarısız oldu %(errCode)", + "Failed to join room": "Odaya girme hatası", + "Failed to join the room": "Odaya girme başarısız oldu", + "Failed to kick": "Atma(Kick) işlemi başarısız oldu", + "Failed to leave room": "Odadan ayrılma başarısız oldu", + "Failed to load timeline position": "Zaman çizelgesi konumu yüklenemedi", + "Failed to lookup current room": "Geçerli odayı aramak başarısız oldu", + "Failed to mute user": "Kullanıcıyı sessize almak başarısız oldu", + "Failed to register as guest:": "Misafir olarak kayıt yapılamadı :", + "Failed to reject invite": "Daveti reddetme başarısız oldu", + "Failed to reject invitation": "Davetiyeyi reddetme başarısız oldu", + "Failed to save settings": "Ayarlar kaydetme başarısız oldu", + "Failed to send email": "E-posta gönderimi başarısız oldu", + "Failed to send request.": "İstek gönderimi başarısız oldu.", + "Failed to set avatar.": "Avatar ayarlama başarısız oldu.", + "Failed to set display name": "Görünür ismi ayarlama başarısız oldu", + "Failed to set up conference call": "Konferans görüşmesi ayarlama başarısız oldu", + "Failed to toggle moderator status": "Moderatör durumunu değiştirmek başarısız oldu", + "Failed to unban": "Yasağı kaldırmak başarısız oldu", + "Failed to upload file": "Dosya yükleme başarısız oldu", + "Failed to upload profile picture!": "Profil resmi yükleme başarısız oldu!", + "Failed to verify email address: make sure you clicked the link in the email": "E-posta adresini doğrulama başarısız : e-postadaki bağlantıya tıkladığınızdan emin olun", + "Failure to create room": "Oda oluşturulamadı", + "Favourite": "Favori", + "favourite": "favori", + "Favourites": "Favoriler", + "Fill screen": "Ekranı Doldur", + "Filter room members": "Oda üyelerini Filtrele", + "Forget room": "Odayı Unut", + "Forgot your password?": "Şifrenizi mi unuttunuz ?", + "For security, this session has been signed out. Please sign in again.": "Güvenlik için , bu oturuma çıkış yapıldı . Lütfen tekrar oturum açın.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Güvenlik için , çıkış yaparsanız bu tarayıcıdan tüm uçtan uca şifreleme anahtarları silinecek . Konuşma geçmişinizi çözebilmek isterseniz gelecekteki Riot oturumlarında , lütfen Oda Anahtarlarını güvenlik amaçlı Dışa Aktarın.", + "Found a bug?": "Hata buldunuz mu ?", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId) %(fromPowerLevel)s den %(toPowerLevel) ' ye", + "Guest access is disabled on this Home Server.": "Misafir erişimi bu Ana Sunucu için devre dışı.", + "Guests can't set avatars. Please register.": "Misafirler Avatarlarını ayarlayamazlar . Lütfen kayıt olun.", + "Guest users can't create new rooms. Please register to create room and start a chat.": "Misafir kullanıcılar yeni oda oluşturamazlar. Yeni oda oluşturmak ve sohbet başlatmak için lütfen kayıt olun.", + "Guest users can't upload files. Please register to upload.": "Misafir kullanıcılar dosya yükleyemezler . Lütfen yüklemek için kayıt olun.", + "Guests can't use labs features. Please register.": "Misafirler laboratuar özelliklerini kullanamazlar . Lütfen kayıt olun.", + "Guests cannot join this room even if explicitly invited.": "Misafirler açıkca davet edilseler bile bu odaya katılamazlar.", + "had": "vardı", + "Hangup": "Sorun", + "Hide read receipts": "Okundu bilgilerini gizle", + "Hide Text Formatting Toolbar": "Metin Biçimlendirme Araç Çubuğunu Gizle", + "Historical": "Tarihi", + "Home": "Ev", + "Homeserver is": "Ana Sunucusu", + "Identity Server is": "Kimlik Sunucusu", + "I have verified my email address": "E-posta adresimi doğruladım", + "Import": "İçe Aktar", + "Import E2E room keys": "Uçtan uca Oda Anahtarlarını İçe Aktar", + "Incoming call from %(name)s": "%(name) ' den gelen çağrı", + "Incoming video call from %(name)s": "%(name) ' den görüntülü arama", + "Incoming voice call from %(name)s": "%(name)' den gelen sesli arama", + "Incorrect username and/or password.": "Yanlış kullanıcı adı ve / veya şifre.", + "Incorrect verification code": "Yanlış doğrulama kodu", + "Interface Language": "Arayüz Dili", + "Invalid alias format": "Geçersiz Takma Ad(nickname) Formatı", + "Invalid address format": "Geçersiz adres formatı", + "Invalid Email Address": "Geçersiz E-posta Adresi", + "Invalid file%(extra)s": "Geçersiz dosya %(extra)'ı", + "%(senderName)s invited %(targetName)s.": "%(senderName) %(targetName) ' ı davet etti.", + "Invite new room members": "Yeni oda üyelerini davet et", + "Invited": "Davet Edildi", + "Invites": "Davetler", + "Invites user with given id to current room": "Mevcut odaya verilen kimliği olan kullanıcıyı davet eder", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' bir adres için geçerli format değil", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' bir takma ad(nickname) için geçerli değil", + "%(displayName)s is typing": "%(displayName) yazıyor", + "Sign in with": "Şununla giriş yap", + "Join as voice or video.": " ses veya video olarak katılın.", + "Join Room": "Odaya Katıl", + "joined and left": "katıldı ve ayrıldı", + "joined": "katıldı", + "%(targetName)s joined the room.": "%(targetName) odaya katıldı.", + "Joins room with given alias": "Verilen takma ad (nick name) ile odaya katıl", + "Jump to first unread message.": "İlk okunmamış iletiye atla.", + "%(senderName)s kicked %(targetName)s.": "%(senderName) %(targetName)' ı attı.", + "Kick": "Atmak (Odadan atmak vs.)", + "Kicks user with given id": "Verilen ID ' li kullanıcıyı at", + "Labs": "Laboratuarlar", + "Last seen": "Son görülme", + "Leave room": "Odadan ayrıl", + "left and rejoined": "ayrıldı ve yeniden katıldı", + "left": "ayrıldı", + "%(targetName)s left the room.": "%(targetName) odadan ayrıldı.", + "Level:": "Seviye :", + "List this room in %(domain)s's room directory?": "Bu oda %(domain)' in oda dizininde listelensin mi ?", + "Local addresses for this room:": "Bu oda için yerel adresler :", + "Logged in as:": "Olarak giriş yaptı :", + "Login as guest": "Misafir olarak giriş yaptı", + "Logout": "Çıkış Yap", + "Low priority": "Düşük öncelikli", + "%(senderName)s made future room history visible to": "%(senderName) gelecekte oda geçmişini görünür yaptı", + "Manage Integrations": "Entegrasyonları Yönet", + "Markdown is disabled": "Markdown devre dışı", + "Markdown is enabled": "Markdown aktif", + "matrix-react-sdk version:": "matrix-react-sdk versiyon:", + "Members only": "Sadece üyeler", + "Message not sent due to unknown devices being present": "Bilinmeyen cihazlar bulunduğundan mesaj gönderilemedi", + "Missing room_id in request": "İstekte eksik room_id", + "Missing user_id in request": "İstekte user_id eksik", + "Mobile phone number": "Cep telefonu numarası", + "Mobile phone number (optional)": "Cep telefonu numarası (isteğe bağlı)", + "Moderator": "Moderatör", + "Must be viewing a room": "Bir oda görüntülemeli olmalı", + "Mute": "Sessiz", + "my Matrix ID": "Benim Matrix ID'm", + "Name": "İsim", + "Never send encrypted messages to unverified devices from this device": "Bu cihazdan doğrulanmamış cihazlara asla şifrelenmiş mesajlar göndermeyin", + "Never send encrypted messages to unverified devices in this room": "Bu odada doğrulanmamış cihazlara asla şifreli mesajlar göndermeyin", + "Never send encrypted messages to unverified devices in this room from this device": "Bu odada bu cihazdan doğrulanmamış cihazlara asla şifrelenmiş mesajlar göndermeyin", + "New address (e.g. #foo:%(localDomain)s)": "Yeni adres (e.g. #foo:%(localDomain))", + "New Composer & Autocomplete": "Yeni Besteci & Otomatik Tamamlama", + "New password": "Yeni Şifre", + "New passwords don't match": "Yeni şifreler uyuşmuyor", + "New passwords must match each other.": "Yeni şifreler birbirleriyle eşleşmelidir.", + "none": "Hiç (Yok)", + "not set": "Ayarlanmadı", + "not specified": "Belirtilmemiş", + "Notifications": "Bildirimler", + "(not supported by this browser)": "(Bu tarayıcı tarafından desteklenmiyor)", + "": "", + "NOT verified": "Doğrulanmadı", + "No devices with registered encryption keys": "Kayıtlı şifreleme anahtarlı cihazlar yok", + "No display name": "Görünür isim yok", + "No more results": "Başka sonuç yok", + "No results": "Sonuç yok", + "No users have specific privileges in this room": "Bu odada hiçbir kullanıcının belirli ayrıcalıkları yoktur", + "OK": "Tamam", + "olm version:": "olm versiyon:", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Bu oda için şifreleme etkinleştirildikten sonra tekrar kapatılamaz (şimdilik)", + "Once you've followed the link it contains, click below": "Bir kere ' içerdiği bağlantıyı takip ettikten sonra , aşağıya tıklayın", + "Only people who have been invited": "Sadece davet edilmiş insanlar", + "Operation failed": "Operasyon başarısız oldu", + "Otherwise, click here to send a bug report.": "Aksi taktirde , bir hata raporu göndermek için buraya tıklayın .", + "Password": "Şifre", + "Password:": "Şifre:", + "Passwords can't be empty": "Şifreler boş olamaz", + "People": "İnsanlar", + "Permissions": "İzinler", + "Phone": "Telefon", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s bir %(callType)s çağrısı yerleştirdi.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Lütfen e-postanızı kontrol edin ve içerdiği bağlantıya tıklayın . Bu işlem tamamlandıktan sonra , 'devam et' e tıklayın .", + "Please Register": "Lütfen Kaydolun", + "Power level must be positive integer.": "Güç seviyesi pozitif tamsayı olmalıdır.", + "Press": "Basın", + "Press to start a chat with someone": "Birisiyle sohbet başlatmak için tuşuna basın", + "Privacy warning": "Gizlilik uyarısı", + "Private Chat": "Özel Sohbet", + "Privileged Users": "Ayrıcalıklı Kullanıcılar", + "Profile": "Profil", + "Public Chat": "Genel Sohbet", + "Reason": "Sebep", + "Reason: %(reasonText)s": "Sebep: %(reasonText)", + "Revoke Moderator": "Moderatörü İptal Et", + "Refer a friend to Riot:": "Riot'tan bir arkadaşa bakın :", + "Register": "Kaydolun", + "rejected": "reddedildi", + "%(targetName)s rejected the invitation.": "%(targetName) daveti reddetti.", + "Reject invitation": "Daveti Reddet", + "Rejoin": "Yeniden Katıl", + "Remote addresses for this room:": "Bu oda için uzak adresler:", + "Remove Contact Information?": "İletişim Bilgilerini Kaldır ?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName) görünen adı (%(oldDisplayName)) kaldırdı.", + "%(senderName)s removed their profile picture.": "%(senderName)s profil resmini kaldırdı.", + "Remove": "Kaldır", + "Remove %(threePid)s?": "%(threePid)s 'i kaldır ?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s bir VoIP konferansı talep etti.", + "Report it": "Bunu rapor et", + "Resetting 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.": "Şifrenizi sıfırlamak , eğer Oda Anahtarlarınızı dışa aktarmaz ve daha sonra içe aktarmaz iseniz , şu anda tüm cihazlarda uçtan uca şifreleme anahtarlarını sıfırlayarak şifreli sohbetleri okunamaz hale getirecek . Gelecekte bu iyileştirilecek.", + "restore": "geri yükle", + "Results from DuckDuckGo": "DuckDuckGo Sonuçları", + "Return to app": "Uygulamaya dön", + "Return to login screen": "Giriş ekranına dön", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot size bildirim gönderme iznine sahip değil - lütfen tarayıcı ayarlarınızı kontrol edin", + "Riot was not given permission to send notifications - please try again": "Riot'a bildirim gönderme izni verilmedi - lütfen tekrar deneyin", + "riot-web version:": "riot-web versiyon:", + "Room %(roomId)s not visible": "%(roomId) odası görünür değil", + "Room Colour": "Oda Rengi", + "Room contains unknown devices": "Oda bilinmeyen cihazlar içeriyor", + "Room name (optional)": "Oda ismi (İsteğe Bağlı)", + "%(roomName)s does not exist.": "%(roomName) mevcut değil.", + "%(roomName)s is not accessible at this time.": "%(roomName) şu anda erişilebilir değil.", + "Rooms": "Odalar", + "Save": "Kaydet", + "Scroll to bottom of page": "Sayfanın altına kaydır", + "Scroll to unread messages": "Okunmamış mesajlara kaydır", + "Search": "Ara", + "Search failed": "Arama başarısız", + "Searches DuckDuckGo for results": "Sonuçlar için DuckDuckGo'yu arar", + "Searching known users": "Bilinen kullanıcıları arama", + "Seen by %(userName)s at %(dateTime)s": "%(dateTime) ' de %(userName) tarafından görüldü", + "Send a message (unencrypted)": "Bir mesaj gönder (Şifrelenmemiş)", + "Send an encrypted message": "Şifrelenmiş bir mesaj gönder", + "Send anyway": "Her durumda gönder", + "Sender device information": "Gönderen cihaz bilgileri", + "Send Invites": "Davetiye Gönder", + "Send Reset Email": "E-posta Sıfırlama Gönder", + "sent an image": "bir resim gönderildi", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName) bir resim gönderdi.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName) %(targetDisplayName)' a odaya katılması için bir davet gönderdi.", + "sent a video": "bir video gönderildi", + "Server error": "Sunucu Hatası", + "Server may be unavailable or overloaded": "Sunucu kullanılamıyor veya aşırı yüklenmiş olabilir", + "Server may be unavailable, overloaded, or search timed out :(": "Sunucu kullanılamıyor , aşırı yüklenmiş veya arama zaman aşımına uğramış olabilir :(", + "Server may be unavailable, overloaded, or the file too big": "Sunucu kullanılamıyor , aşırı yüklenmiş , veya dosya çok büyük olabilir", + "Server may be unavailable, overloaded, or you hit a bug.": "Sunucu kullanılamıyor , aşırı yüklenmiş , veya bir hatayla karşılaşmış olabilirsiniz.", + "Server unavailable, overloaded, or something else went wrong.": "Sunucu kullanılamıyor , aşırı yüklenmiş veya başka bir şey ters gitmiş olabilir.", + "Session ID": "Oturum ID", + "%(senderName)s set a profile picture.": "%(senderName) bir profil resmi ayarladı.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName) görünür ismini %(displayName) ' a ayarladı.", + "Set": "Ayarla", + "Settings": "Ayarlar", + "Show panel": "Paneli göster", + "Show Text Formatting Toolbar": "Metin Biçimlendirme Araç Çubuğunu Göster", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Zaman damgalarını 12 biçiminde göster (örn. 2:30 pm)", + "Signed Out": "Oturum Kapatıldı", + "Sign in": "Giriş Yap", + "Sign out": "Çıkış Yap", + "since the point in time of selecting this option": "Bu seçeneği seçmekten itibaren", + "since they joined": "Katıldıklarından beri", + "since they were invited": "davet edildiklerinden beri", + "Some of your messages have not been sent.": "Bazı mesajlarınız gönderilemedi.", + "Someone": "Birisi", + "Sorry, this homeserver is using a login which is not recognised ": "Maalesef , bu Ana Sunucu tanımlanmamış bir Giriş kullanıyor ", + "Start a chat": "Bir Sohbet Başlat", + "Start authentication": "Kimlik Doğrulamayı başlatın", + "Start Chat": "Sohbet Başlat", + "Submit": "Gönder", + "Success": "Başarı", + "tag as %(tagName)s": "%(tagName) olarak etiketle", + "tag direct chat": "Doğrudan sohbeti etiketle", + "Tagged as: ": "Olarak etiketlendi : ", + "The default role for new room members is": "Yeni oda üyelerinin varsayılan rolü", + "The main address for this room is": "Bu oda için ana adres", + "The phone number entered looks invalid": "Girilen telefon numarası geçersiz görünüyor", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Sağladığınız imza anahtarı %(userId)s aygıtından %(deviceId) ile eşleşiyor . Aygıt doğrulanmış olarak işaretlendi.", + "This action cannot be performed by a guest user. Please register to be able to do this.": "Bu eylem bir Misafir Kullanıcı tarafından yapılamaz . Lütfen bunu yapabilmek için Kaydolun .", + "This email address is already in use": "Bu e-posta adresi zaten kullanımda", + "This email address was not found": "Bu e-posta adresi bulunamadı", + "%(actionVerb)s this person?": "Bu kişi %(actionVerb)s yapılsın mı ?", + "The email address linked to your account must be entered.": "Hesabınıza bağlı e-posta adresi girilmelidir.", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "'%(fileName)s' dosyası bu Ana Sunucu'nun yükleme için boyutunu aşıyor", + "The file '%(fileName)s' failed to upload": "'%(fileName)s' dosyası yüklenemedi", + "The remote side failed to pick up": "Uzak taraf toplanamadı(alınamadı)", + "This Home Server does not support login using email address.": "Bu Ana Sunucu E-posta adresi kullanarak giriş yapmayı desteklemiyor.", + "This invitation was sent to an email address which is not associated with this account:": "Bu davet bu hesapla ilişkili olmayan bir e-posta adresine gönderildi :", + "There was a problem logging in.": "Oturum açarken bir sorun oluştu.", + "This room has no local addresses": "Bu oda hiçbir yerel adrese sahip değil", + "This room is not recognised.": "Bu oda tanınmıyor.", + "These are experimental features that may break in unexpected ways": "Bunlar beklenmedik yollarla bozulabilecek deneysel özellikler", + "The visibility of existing history will be unchanged": "Mevcut tarihin görünürlüğü değişmeyecek", + "This doesn't appear to be a valid email address": "Bu geçerli bir e-posta adresi olarak gözükmüyor", + "This is a preview of this room. Room interactions have been disabled": "Bu odanın bir önizlemesidir . Oda etkileşimleri devre dışı bırakıldı", + "This phone number is already in use": "Bu telefon numarası zaten kullanımda", + "This room": "Bu oda", + "This room is not accessible by remote Matrix servers": "Bu oda uzak Matrix Sunucuları tarafından erişilebilir değil", + "This room's internal ID is": "Bu odanın Dahili ID'si", + "times": "kere", + "To ban users": "Kullanıcıları yasaklamak(Ban) için", + "to browse the directory": "Dizine göz atmak için", + "To configure the room": "Odayı yapılandırmak için", + "to demote": "indirgemek için", + "to favourite": "favorilemek", + "To invite users into the room": "Kullanıcıları odaya davet etmek", + "To kick users": "Kullanıcıları atmak", + "To link to a room it must have an address.": "Bir odaya bağlanmak için oda bir adrese sahip olmalı.", + "to make a room or": "bir oda oluşturmak için ya da", + "To remove other users' messages": "Diğer kullanıcıların mesajlarını silmek için", + "To reset your password, enter the email address linked to your account": "Parolanızı sıfırlamak için hesabınıza bağlı e-posta adresinizi girin", + "to restore": "yenilemek için", + "To send events of type": "Tip olayını göndermek için", + "To send messages": "Mesaj göndermek için", + "to start a chat with someone": "birisiyle sohbet başlatmak için", + "to tag as %(tagName)s": "%(tagName)s olarak etiketlemek için", + "to tag direct chat": "doğrudan sohbeti etiketlemek için", + "To use it, just wait for autocomplete results to load and tab through them.": "Kullanmak için , otomatik tamamlama sonuçlarının yüklenmesini ve sekmelerden geçmesini bekleyin.", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Bu odanın zaman çizelgesinde belirli bir nokta yüklemeye çalışıldı , ama geçerli mesajı görüntülemeye izniniz yok.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Bu odanın akışında belirli bir noktaya yüklemeye çalışıldı , ancak bulunamadı.", + "Turn Markdown off": "Markdown'u kapat", + "Turn Markdown on": "Markdown'u Aç", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s uçtanuca şifrelemeyi açtı (algoritma -> %(algorithm)s).", + "Unable to add email address": "E-posta adresi eklenemiyor", + "Unable to remove contact information": "Kişi bilgileri kaldırılamıyor", + "Unable to restore previous session": "Önceki oturumlar geri yüklenemiyor", + "Unable to verify email address.": "E-posta adresi doğrulanamıyor.", + "Unban": "Yasağı Kaldır", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s %(targetName)s 'in yasağını kaldırdı.", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Bu davetiyenin gönderildiği adresin hesabınızla ilişkili bir adresle eşleştiğini tespit etmek mümkün değil.", + "Unable to capture screen": "Ekran yakalanamadı", + "Unable to enable Notifications": "Bildirimler aktif edilemedi", + "Unable to load device list": "Cihaz listesi yüklenemedi", + "Undecryptable": "Şifresi çözülemez", + "Unencrypted room": "Şifrelenmemiş oda", + "unencrypted": "şifrelenmemiş", + "Unencrypted message": "Şifrelenmemiş mesaj", + "unknown caller": "bilinmeyen arayıcı", + "Unknown command": "Bilinmeyen komut", + "unknown device": "bilinmeyen cihaz", + "unknown error code": "bilinmeyen hata kodu", + "Unknown room %(roomId)s": "Bilinmeyen oda %(roomId)s", + "Unknown (user, device) pair:": "Bilinmeyen (kullanıcı , cihaz) çifti :", + "unknown": "bilinmeyen", + "Unmute": "Sesi aç", + "Unnamed Room": "İsimsiz Oda", + "Unrecognised command:": "Tanınmayan komut :", + "Unrecognised room alias:": "Tanınmayan oda isimleri :", + "Unverified": "Doğrulanmamış", + "Uploading %(filename)s and %(count)s others.zero": "%(filename)s yükleniyor", + "Uploading %(filename)s and %(count)s others.one": "%(filename)s ve %(count)s kadarı yükleniyor", + "Uploading %(filename)s and %(count)s others.other": "%(filename)s ve %(count)s kadarları yükleniyor", + "uploaded a file": "bir dosya yüklendi", + "Upload avatar": "Avatar yükle", + "Upload Failed": "Yükleme Başarısız", + "Upload Files": "Dosyaları Yükle", + "Upload file": "Dosya yükle", + "Upload new:": "Yeni yükle :", + "Usage": "Kullanım", + "Use compact timeline layout": "Kompakt zaman akışı düzenini kullan", + "Use with caution": "Dikkatli kullan", + "User ID": "Kullanıcı ID", + "User Interface": "Kullanıcı Arayüzü", + "%(user)s is a": "%(user)s bir", + "User name": "Kullanıcı ismi", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (güç %(powerLevelNumber)s)", + "Username invalid: %(errMessage)s": "Kullanıcı ismi geçersiz : %(errMessage)s", + "Users": "Kullanıcılar", + "User": "Kullanıcı", + "Verification Pending": "Doğrulama Boyunca", + "Verification": "Doğrulama", + "verified": "doğrulanmış", + "Verified": "Doğrulanmış", + "Verified key": "Doğrulama anahtarı", + "Video call": "Görüntülü arama", + "Voice call": "Sesli arama", + "VoIP conference finished.": "VoIP konferansı bitti.", + "VoIP conference started.": "VoIP konferansı başladı.", + "VoIP is unsupported": "VoIP desteklenmiyor", + "(could not connect media)": "(medya bağlanamadı)", + "(no answer)": "(cevap yok)", + "(unknown failure: %(reason)s)": "(bilinmeyen hata : %(reason)s)", + "(warning: cannot be disabled again!)": "(Uyarı : tekrar devre dışı bırakılamaz!)", + "Warning!": "Uyarı!", + "WARNING: Device already verified, but keys do NOT MATCH!": "UYARI: Cihaz zaten doğrulandı , ancak anahtarlar UYUŞMUYOR!", + "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!": "UYARI: ANAHTAR DOĞRULAMA BAŞARISIZ! (key verification failure). %(userId)s ve %(deviceId)s imza anahtarı sağlanan imza anahtarı \"%(fingerprint)s\" ile uyuşmayan \"%(fprint)s\". Bu iletişiminizin kesiliyor olabileceği anlamına geliyor!", + "Who can access this room?": "Bu odaya kimler erişebilir ?", + "Who can read history?": "Geçmişi kimler okuyabilir ?", + "Who would you like to add to this room?": "Bu odaya kimi eklemek istersiniz ?", + "Who would you like to communicate with?": "Kimlerle iletişim kurmak istersiniz ?", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s %(targetName)s'nin davetinden çekildi.", + "Would you like to accept or decline this invitation?": "Bu daveti kabul etmek veya reddetmek ister misiniz ?", + "You already have existing direct chats with this user:": "Bu kullanıcıyla var olan doğrudan sohbetleriniz var :", + "You are already in a call.": "Zaten bir çağrıdasınız.", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Henüz hiçbir odada değilsiniz ! Oda oluşturmak için ' a basın veya Dizine göz atmak için ' e basın", + "You are trying to access %(roomName)s.": "%(roomName)s 'e erişmeye çalışıyorsunuz.", + "You cannot place a call with yourself.": "Kendinizle görüşme yapamazsınız .", + "You cannot place VoIP calls in this browser.": "Bu tarayıcıda VoIP çağrısı yapamazsınız.", + "You do not have permission to post to this room": "Bu odaya paylaşım yapma izniniz yok", + "You have been banned from %(roomName)s by %(userName)s.": "%(roomName)s odasından %(userName)s tarafından banlandınız.", + "You have been invited to join this room by %(inviterName)s": "Bu odaya %(inviterName)s tarafından davet edildiniz", + "You have been kicked from %(roomName)s by %(userName)s.": "%(roomName)s 'dan %(userName)s tarafından atıldınız.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Tüm cihazlardan çıkış yaptınız ve artık bildirimler almayacaksınız . Bildirimleri yeniden etkinleştirmek için , her cihazda tekrar giriş yapın", + "You have disabled URL previews by default.": "URL önizlemelerini varsayılan olarak devre dışı bıraktınız.", + "You have enabled URL previews by default.": "URL önizlemelerini varsayılan olarak etkinleştirdiniz .", + "You have entered an invalid contact. Try using their Matrix ID or email address.": "Geçersiz bir kişi girdiniz . Matrix ID veya e-posta adresini kullanarak tekrar deneyin.", + "You have no visible notifications": "Hiçbir görünür bildiriminiz yok", + "You may wish to login with a different account, or add this email to this account.": "Farklı bir hesap ile giriş yapmak veya bu e-postayı bu hesaba eklemek istemiş olabilirsiniz.", + "you must be a": "olabilirsiniz", + "You must register to use this functionality": "Bu işlevi kullanmak için Kayıt Olun ", + "You need to be able to invite users to do that.": "Bunu yapmak için kullanıcıları davet etmeye ihtiyacınız var.", + "You need to be logged in.": "Oturum açmanız gerekiyor.", + "You need to enter a user name.": "Bir kullanıcı ismi girmeniz gerekiyor.", + "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "Bu cihaz için uçtan uca şifreleme anahtarları oluşturmak için yeniden giriş yapmanız ve genel anahtarı Ana Sunucu'nuza göndermeniz gerekir . Bu bir kez kapalı ; rahatsızlıktan dolayı özür dileriz.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "E-posta adresiniz bu Ana Sunucu'da ki Matrix ID'si ile ilişkili gözükmüyor.", + "Your password has been reset": "Şifreniz sıfırlandı", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Şifreniz başarıyla değiştirildi . Diğer cihazlara girene kadar onlara bildirim almayacaksınız", + "You seem to be in a call, are you sure you want to quit?": "Bir çağrıda gözüküyorsunuz , çıkmak istediğinizden emin misiniz ?", + "You seem to be uploading files, are you sure you want to quit?": "Dosya yüklüyorsunuz gibi görünüyor , çıkmak istediğinizden emin misiniz ?", + "You should not yet trust it to secure data": "Verilerin güvenliğini sağlamak için henüz güvenmemelisiniz", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Kullanıcıyı sizinle aynı güç seviyesine yükseltirken , bu değişikliği geri alamazsınız.", + "Your home server does not support device management.": "Ana Sunucunuz cihaz yönetimini desteklemiyor.", + "Sun": "Pzt", + "Mon": "Pazartesi", + "Tue": "Salı", + "Wed": "Çarşamba", + "Thu": "Perşembe", + "Fri": "Cuma", + "Sat": "Cumartesi", + "Jan": "Ocak", + "Feb": "Şubat", + "Mar": "Mart", + "Apr": "Nisan", + "May": "Mayıs", + "Jun": "Haziran", + "Jul": "Temmuz", + "Aug": "Ağustos", + "Sep": "Eylül", + "Oct": "Ekim", + "Nov": "Kasım", + "Dec": "Aralık", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s , %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "Hafta - %(weekDayName)s , %(day)s -%(monthName)s -%(fullYear)s , %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "Set a display name:": "Görünür isim ayarla :", + "Set a Display Name": "Görünür bir isim Ayarla", + "Upload an avatar:": "Bir Avatar yükle :", + "This server does not support authentication with a phone number.": "Bu sunucu bir telefon numarası ile kimlik doğrulamayı desteklemez.", + "Missing password.": "Şifre eksik.", + "Passwords don't match.": "Şifreler eşleşmiyor.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Şifre çok kısa (minimum %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Bu geçerli bir e-posta adresi gibi gözükmüyor.", + "This doesn't look like a valid phone number.": "Bu geçerli bir telefon numarası gibi gözükmüyor.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Kullanıcı isimleri yalnızca harfler , sayılar , noktalar , tire ve altçizgiler içerebilir.", + "An unknown error occurred.": "Bilinmeyen bir hata meydana geldi.", + "I already have an account": "Zaten bir hesabım var", + "An error occurred: %(error_string)s": "Bir hata oluştu : %(error_string)s", + "Topic": "Konu", + "Make Moderator": "Moderatör Yap", + "Make this room private": "Bu odayı özel yap", + "Share message history with new users": "İleti geçmişini yeni kullanıcılarla paylaş", + "Encrypt room": "Odayı Şifrele", + "There are no visible files in this room": "Bu odada görünür hiçbir dosya yok", + "Room": "Oda", + "Connectivity to the server has been lost.": "Sunucuyla olan bağlantı kesildi.", + "Sent messages will be stored until your connection has returned.": "Gönderilen iletiler bağlantınız geri gelene kadar saklanacak.", + "Auto-complete": "Otomatik tamamlama", + "Resend all or cancel all now. You can also select individual messages to resend or cancel.": " Hepsini yeniden gönderin veya Hepsini iptal edin şimdi . Ayrıca yeniden göndermek veya iptal etmek için özel iletiler seçebilirsin.", + "(~%(count)s results).one": "(~%(count)s sonuç)", + "(~%(count)s results).other": "(~%(count)s sonuçlar)", + "Cancel": "İptal Et", + "or": "veya", + "Active call": "Aktif çağrı", + "Monday": "Pazartesi", + "Tuesday": "Salı", + "Wednesday": "Çarşamba", + "Thursday": "Perşembe", + "Friday": "Cuma", + "Saturday": "Cumartesi", + "Sunday": "Pazar", + "bold": "kalın", + "italic": "italik", + "strike": "eğik", + "underline": "altı çizili", + "code": "kod", + "quote": "alıntı", + "bullet": "Madde (bullet)", + "numbullet": "Sayı madde işareti (numbullet)", + "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)s %(repeats)s kere katıldı", + "%(oneUser)sjoined %(repeats)s times": "%(oneUser)s %(repeats)s kez katıldı", + "%(severalUsers)sjoined": "%(severalUsers)s katıldı", + "%(oneUser)sjoined": "%(oneUser)s katıldı", + "%(severalUsers)sleft %(repeats)s times": "%(severalUsers)s %(repeats)s kez ayrıldı", + "%(oneUser)sleft %(repeats)s times": "%(oneUser)s %(repeats)s kez ayrıldı", + "%(severalUsers)sleft": "%(severalUsers)s ayrıldı", + "%(oneUser)sleft": "%(oneUser)s ayrıldı", + "%(severalUsers)sjoined and left %(repeats)s times": "%(severalUsers)s %(repeats)s kere katıldı ve ayrıldı", + "%(oneUser)sjoined and left %(repeats)s times": "%(oneUser)s %(repeats)s kez katıldı ve ayrıldı", + "%(severalUsers)sjoined and left": "%(severalUsers)s katıldı ve ayrıldı", + "%(oneUser)sjoined and left": "%(oneUser)s katıldı ve ayrıldı", + "%(severalUsers)sleft and rejoined %(repeats)s times": "%(severalUsers)s %(repeats)s kere ayrıldı ve tekrar katıldı", + "%(oneUser)sleft and rejoined %(repeats)s times": "%(oneUser)s ayrıldı ve %(repeats)s kere yeniden katıldı", + "%(severalUsers)sleft and rejoined": "%(severalUsers)s ayrıldı ve yeniden katıldı", + "%(oneUser)sleft and rejoined": "%(oneUser)s ayrıldı ve tekrar katıldı", + "%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)s %(repeats)s kere davetiyelerini reddetti", + "%(oneUser)srejected their invitation %(repeats)s times": "%(oneUser)s %(repeats)s kere davetiyeleri reddetti", + "%(severalUsers)srejected their invitations": "%(severalUsers)s davetiyelerini reddetti", + "%(oneUser)srejected their invitation": "%(oneUser)s davetiyeyi reddetti", + "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)s %(repeats)s kere davetiyelerinden çekildi", + "%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)s %(repeats)s kere davetiyesinden çekildi", + "%(severalUsers)shad their invitations withdrawn": "%(severalUsers)s davetiyelerinden çekildi", + "%(oneUser)shad their invitation withdrawn": "%(oneUser)s davetiyesini geri çekti", + "were invited %(repeats)s times": "%(repeats)s kere davet edildi/edildiler", + "was invited %(repeats)s times": "%(repeats)s kere davet edildi", + "were invited": "davet edildi", + "was invited": "davet edildi", + "were banned %(repeats)s times": "%(repeats)s kere engellendi (banlandı)", + "was banned %(repeats)s times": "%(repeats)s kere engellendi (banlandı)", + "were banned": "engellendi (banlandı)", + "was banned": "engellendi (banlandı)", + "were unbanned %(repeats)s times": "%(repeats)s kere engelleri kaldırıldı", + "was unbanned %(repeats)s times": "%(repeats)s kere engelleri kaldırıldı", + "were unbanned": "engeli kaldırıldı", + "was unbanned": "engeli kaldırıldı", + "were kicked %(repeats)s times": "%(repeats)s kere atıldı", + "was kicked %(repeats)s times": "%(repeats)s kere atıldı", + "were kicked": "atıldı", + "was kicked": "atıldı", + "%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)s %(repeats)s kere isimlerini değiştirdi", + "%(oneUser)schanged their name %(repeats)s times": "%(oneUser)s %(repeats)s kere ismini değiştirdi", + "%(severalUsers)schanged their name": "%(severalUsers)s isminlerini değiştirdi", + "%(oneUser)schanged their name": "%(oneUser)s ismini değiştirdi", + "%(severalUsers)schanged their avatar %(repeats)s times": "%(severalUsers)s %(repeats)s kere Avatarlarını değiştirdi", + "%(oneUser)schanged their avatar %(repeats)s times": "%(oneUser)s %(repeats)s kere Avatarını değiştirdi", + "%(severalUsers)schanged their avatar": "%(severalUsers)s Avatarını değiştirdi", + "%(oneUser)schanged their avatar": "%(oneUser)s Avatarını değiştirdi", + "Please select the destination room for this message": "Bu ileti için lütfen hedef oda seçin", + "Create new room": "Yeni Oda Oluştur", + "Welcome page": "Karşılama sayfası", + "Room directory": "Oda Rehberi", + "Start chat": "Sohbet Başlat", + "New Password": "Yeni Şifre", + "Start automatically after system login": "Sisteme giriş yaptıktan sonra otomatik başlat", + "Desktop specific": "Masaüstüne özgü", + "Analytics": "Analitik", + "Opt out of analytics": "Analytics'ten çıkmak", + "Options": "Seçenekler", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot , uygulamayı iyileştirmemize izin vermek için anonim analitik toplar.", + "Passphrases must match": "Şifrenin eşleşmesi gerekir", + "Passphrase must not be empty": "Şifrenin boş olmaması gerekir", + "Export room keys": "Oda anahtarlarını dışa aktar", + "Confirm passphrase": "Şifreyi onayla", + "Import room keys": "Oda anahtarlarını içe aktar", + "File to import": "Alınacak Dosya", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Bu işlem şifreli odalarda aldığınız iletilerin anahtarlarını yerel dosyaya vermenizi sağlar . Bundan sonra dosyayı ileride başka bir Matrix istemcisine de aktarabilirsiniz , böylece istemci bu mesajların şifresini çözebilir (decryption).", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Dışa aktarılan dosya , onu okuyabilen herkesin sizin görebildiğiniz iletilerin şifresini çözmesine olanak tanır , bu nedenle güvenliğini korumaya özen göstermelisiniz. Buna yardımcı olmak için , dışa aktarılan verileri şifrelemek için kullanılacak bir şifre girmelisiniz . Verileri yalnızca aynı şifreyi kullanarak içe aktarmak mümkün olacaktır.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Bu işlem , geçmişte başka Matrix istemcisinden dışa aktardığınız şifreleme anahtarlarınızı içe aktarmanızı sağlar . Böylece diğer istemcinin çözebileceği tüm iletilerin şifresini çözebilirsiniz.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Dışa aktarma dosyası bir şifre ile korunacaktır . Dosyanın şifresini çözmek için buraya şifre girmelisiniz.", + "You must join the room to see its files": "Dosyalarını görmek için odaya katılmalısınız", + "Reject all %(invitedRooms)s invites": "Tüm %(invitedRooms)s davetlerini reddet", + "Start new chat": "Yeni sohbet başlat", + "Guest users can't invite users. Please register.": "Misafir Kullanıcılar kullanıcıları davet edemez . Lütfen kaydolun .", + "Failed to invite": "Davet edilemedi", + "Failed to invite user": "Kullanıcı davet edilemedi", + "Failed to invite the following users to the %(roomName)s room:": "Aşağıdaki kullanıcılar %(roomName)s odasına davet edilemedi :", + "Confirm Removal": "Kaldırma İşlemini Onayla", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Bu etkinliği kaldırmak(silmek) istediğinizden emin misiniz ? Bir odayı ismini silmeniz veya konu değiştirmeniz , geri alınabilir bir durumdur.", + "Unknown error": "Bilinmeyen Hata", + "Incorrect password": "Yanlış Şifre", + "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Bu hesabınızı kalıcı olarak kullanılamaz yapılacak . Aynı kullanıcı ID ile yeniden Kayıt olamazsınız .", + "This action is irreversible.": "Bu eylem geri döndürülemez.", + "To continue, please enter your password.": "Devam etmek için , lütfen şifrenizi girin.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Bu cihazın güvenilir olabileceğini doğrulamak için , lütfen sahibiyle başka yollarla iletişim kurun (örn. şahsen veya telefon görüşmesi) ve bu cihazın Kullanıcı Ayarları'nda gördükleri anahtarın aşağıdaki anahtarla eşleşip eşleşmediğini sorun :", + "Device name": "Cihaz ismi", + "Device Name": "Cihaz İsmi", + "Device key": "Cihaz anahtarı", + "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.": "Eğer eşleşirse , aşağıdaki doğrulama butonuna basın . Eğer eşleşmezse , o zaman başkası bir bu cihazı tutuyor ve bunun yerine kara liste butonuna basmak istiyor olabilirsiniz.", + "In future this verification process will be more sophisticated.": "Gelecekte bu doğrulama işlemi daha gelişmiş olacak.", + "Verify device": "Cihazı Doğrula", + "I verify that the keys match": "Anahtarların uyuştuğunu doğruluyorum", + "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.": "Önceki oturumunuzu geri getirmeye çalışırken bir hata ile karşılaşdık . Devam ederseniz , tekrar oturum açmanız gerekecek , ve şifreli sohbet geçmişi okunamıyor hale gelecek.", + "Unable to restore session": "Oturum geri yüklenemiyor", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Eğer daha önce Riot'un daha yeni bir versiyonunu kullandıysanız , oturumunuz bu sürümle uyumsuz olabilir . Bu pencereyi kapatın ve daha yeni sürüme geri dönün.", + "Continue anyway": "Her halükarda devam et", + "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "Görünür isminiz , odalarda konuşurken başkalarına nasıl görüneceğinizdir . İsminizin ne olmasını istersiniz ?", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Şu anda doğrulanmamış cihazları kara listeye alıyorsunuz , bu cihazlara mesaj göndermek için onları doğrulamanız gerekir.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Her cihazın yasal sahiplerine ait olduklarını doğrulamak için doğrulama işlemini gerçekleştirmenizi öneririz, ancak tercih edip onaylamadan iletiyi tekrar gönderebilirsiniz.", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" daha önce görmediğiniz cihazları içeriyor.", + "Unknown devices": "Bilinmeyen cihazlar", + "Unknown Address": "Bilinmeyen Adres", + "Unblacklist": "Karaliste Dışı", + "Blacklist": "Kara Liste", + "Unverify": "Doğrulamasını İptal Et", + "Verify...": "Doğrulama...", + "ex. @bob:example.com": "örn. @bob:example.com", + "Add User": "Kullanıcı Ekle", + "This Home Server would like to make sure you are not a robot": "Bu Ana Sunucu robot olmadığınızdan emin olmak istiyor", + "Sign in with CAS": "CAS ile oturum açın", + "Custom Server Options": "Özel Sunucu Seçenekleri", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Özel Sunucu Seçeneklerini diğer Matrix sunucularına giriş yapmak için farklı bir Ana Sunucu URL'si belirleyerek kullanabilirsiniz.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Bu, sizin bu uygulamayı varolan Matrix hesabınızla farklı Ana Sunucularda kullanmanıza izin verir.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Ayrıca özel bir kimlik sunucusu da ayarlayabilirsiniz ancak bu e-posta adresine dayalı olarak kullanıcılarla olan etkileşimi engeller.", + "Dismiss": "Uzaklaştır", + "Please check your email to continue registration.": "Kayıt işlemine devam etmek için lütfen e-postanızı kontrol edin.", + "Token incorrect": "Belirteç(Token) hatalı", + "A text message has been sent to": "Kısa mesaj gönderildi", + "Please enter the code it contains:": "Lütfen içerdiği kodu girin:", + "powered by Matrix": "Matrix tarafından desteklenmektedir", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Eğer bir e-posta adresi belirtmezseniz , şifrenizi sıfırlayamazsınız . Emin misiniz ?", + "You are registering with %(SelectedTeamName)s": "%(SelectedTeamName)s ile kayıt oluyorsunuz", + "Default server": "Varsayılan sunucu", + "Custom server": "Özel sunucu", + "Home server URL": "Ana Sunucu URL'i", + "Identity server URL": "Kimlik Sunucusu URL'i", + "What does this mean?": "Bu ne anlama geliyor ?", + "Error decrypting audio": "Ses şifre çözme hatası", + "Error decrypting image": "Resim şifre çözme hatası", + "Image '%(Body)s' cannot be displayed.": "'%(Body)s' Resmi görüntülenemiyor.", + "This image cannot be displayed.": "Bu görüntü görüntülenemiyor.", + "Error decrypting video": "Video şifre çözme hatası", + "Add an Integration": "Entegrasyon ekleyin", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Hesabınızı %(integrationsUrl)s ile kullanmak üzere doğrulayabilmeniz için üçüncü taraf bir siteye götürülmek üzeresiniz. Devam etmek istiyor musunuz ?", + "Removed or unknown message type": "Kaldırılmış veya bilinmeyen ileti tipi", + "Disable URL previews by default for participants in this room": "Bu odadaki katılımcılar için varsayılan olarak URL önizlemelerini devre dışı bırak", + "Disable URL previews for this room (affects only you)": "Bu oda için URL önizlemelerini devre dışı bırak (sadece sizi etkiler)", + "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "URL önizlemeleri , bu odadaki katılımcılar için varsayılan olarak %(globalDisableUrlPreview)s dir.", + "URL Previews": "URL önizlemeleri", + "Enable URL previews for this room (affects only you)": "URL önizlemelerini bu oda için etkinleştirin (sadece sizi etkiler)", + "Drop file here to upload": "Yüklemek için dosyaları buraya bırakın", + " (unsupported)": " (desteklenmeyen)", + "Ongoing conference call%(supportedText)s.": "Devam eden konferans görüşmesi %(supportedText)s.", + "for %(amount)ss": "%(amount)s", + "for %(amount)sm": "%(amount)s", + "for %(amount)sh": "%(amount)s", + "for %(amount)sd": "%(amount)s", + "Online": "Çevrimiçi", + "Idle": "Boş", + "Offline": "Çevrimdışı", + "Start chatting": "Sohbeti başlat", + "Start Chatting": "Sohbeti Başlat", + "Click on the button below to start chatting!": "Sohbeti başlatmak için aşağıdaki butona tıklayın!", + "$senderDisplayName changed the room avatar to ": "$senderDisplayName odanın avatarını olarak çevirdi", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s odanın avatarını kaldırdı.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s %(roomName)s için avatarı değiştirdi", + "Username available": "Kullanıcı ismi uygun", + "Username not available": "Kullanıcı ismi uygun değil", + "Something went wrong!": "Bir şeyler yanlış gitti!", + "This will be your account name on the homeserver, or you can pick a different server.": "Bu sizin Ana Sunucunuzdaki hesap adınız olacak , veya farklı sunucu seçebilirsiniz.", + "If you already have a Matrix account you can log in instead.": "Eğer Matrix hesabınız varsa , bunun yerine Giriş Yapabilirsiniz .", + "Your browser does not support the required cryptography extensions": "Tarayıcınız gerekli şifreleme uzantılarını desteklemiyor", + "Not a valid Riot keyfile": "Geçersiz bir Riot anahtar dosyası", + "Authentication check failed: incorrect password?": "Kimlik doğrulama denetimi başarısız oldu : yanlış şifre ?", + "Disable Peer-to-Peer for 1:1 calls": "1:1 Eşler arası (P2P) görüşmeyi Devre Dışı Bırak", + "Do you want to set an email address?": "Bir e-posta adresi ayarlamak ister misiniz ?", + "This will allow you to reset your password and receive notifications.": "Bu şifrenizi sıfırlamanızı ve bildirimler almanızı sağlayacak.", + "To return to your account in future you need to set a password": "Gelecekte hesabınıza dönmek için , bir şifre ayarlamanız gerekiyor", + "Skip": "Atla", + "Start verification": "Doğrulamayı başlat", + "Share without verifying": "Doğrulamadan paylaş", + "Ignore request": "İsteği yoksay", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Şifreleme anahtarları isteyen , '%(displayName)s' isminde yeni bir cihaz eklediniz .", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Tanımlanmamış cihazınız '%(displayName)s' , şifreleme anahtarlarını istiyor.", + "Encryption key request": "Şifreleme anahtarı isteği" +} From 81dadc9e05c24b1cc76d307704eb4300163fcc6e Mon Sep 17 00:00:00 2001 From: zottel Date: Thu, 22 Jun 2017 08:10:08 +0000 Subject: [PATCH 225/481] Translated using Weblate (German) Currently translated at 100.0% (915 of 915 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index b9578d1d87..9dadc611d1 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -418,7 +418,7 @@ "Press": "Drücke", "tag as %(tagName)s": "als %(tagName)s markieren", "to browse the directory": "um das Raum-Verzeichnis zu durchsuchen", - "to demote": "um das Berechtigungslevel herabzusetzen", + "to demote": "um die Priorität herabzusetzen", "to favourite": "zum Favorisieren", "to make a room or": "um einen Raum zu erstellen, oder", "to restore": "zum wiederherstellen", @@ -791,7 +791,7 @@ "Opt out of analytics": "Zustimmung zur Übermittlung von anonymisierten Analysedaten verweigern", "Riot collects anonymous analytics to allow us to improve the application.": "Riot sammelt anonymisierte Analysedaten, um die Anwendung kontinuierlich verbessern zu können.", "Add an Integration": "Eine Integration hinzufügen", - "Removed or unknown message type": "Gelöschte oder unbekannter Nachrichten-Typ", + "Removed or unknown message type": "Gelöschte Nachricht oder unbekannter Nachrichten-Typ", "Disable URL previews by default for participants in this room": "URL-Vorschau für Teilnehmer dieses Raumes standardmäßig deaktivieren", "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "URL-Vorschau ist standardmäßig %(globalDisableUrlPreview)s für Teilnehmer dieses Raumes.", "URL Previews": "URL-Vorschau", From f079e238fc58b486ba0cf6f7b9eec39fa0ea2576 Mon Sep 17 00:00:00 2001 From: Szimszon Date: Tue, 20 Jun 2017 20:24:15 +0000 Subject: [PATCH 226/481] Translated using Weblate (Hungarian) Currently translated at 100.0% (915 of 915 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 6c2198dcf8..94977071a7 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -217,8 +217,8 @@ "Bug Report": "Hiba jelentés", "Bulk Options": "Tömeges beállítások", "Call Timeout": "Hívás időtúllépés", - "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Nem lehet kapcsolódni a saját szerverhez - ellenőrizd a kapcsolatot, biztosítsd, hogy a saját szerver tanúsítványa hiteles legyen, és a böngésző kiterjesztések ne blokkolják a kéréseket.", - "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Nem lehet csatlakozni a saját szerverhez HTTP-n keresztül ha HTTPS van a böngésző címsorában. Vagy használj HTTPS-t vagy engedélyezd a nem biztonságos script-et.", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Nem lehet kapcsolódni az egyedi szerverhez - ellenőrizd a kapcsolatot, biztosítsd, hogy a egyedi szerver tanúsítványa hiteles legyen, és a böngésző kiterjesztések ne blokkolják a kéréseket.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Nem lehet csatlakozni az egyedi szerverhez HTTP-n keresztül ha HTTPS van a böngésző címsorában. Vagy használj HTTPS-t vagy engedélyezd a nem biztonságos script-et.", "Can't load user settings": "A felhasználói beállítások nem tölthetők be", "Change Password": "Jelszó megváltoztatása", "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s megváltoztatta a nevét erről: %(oldDisplayName)s erre: %(displayName)s.", @@ -309,7 +309,7 @@ "Enter Code": "Kód megadása", "Enter passphrase": "Jelmondat megadása", "Error decrypting attachment": "Csatolmány visszafejtése sikertelen", - "Error: Problem communicating with the given homeserver.": "Hiba: Probléma van a saját szerverrel való kommunikációval.", + "Error: Problem communicating with the given homeserver.": "Hiba: Probléma van az egyedi szerverrel való kommunikációval.", "Event information": "Esemény információ", "Existing Call": "Hívás folyamatban", "Export": "Mentés", @@ -349,7 +349,7 @@ "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "A biztonság érdekében a kilépéskor a végponttól végpontig való (E2E) titkosításhoz szükséges kulcsok törlésre kerülnek a böngészőből. Ha a régi üzeneteket továbbra is el szeretnéd olvasni, kérlek mentsed ki a szobákhoz tartozó kulcsot.", "Found a bug?": "Hibát találtál?", "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s : %(fromPowerLevel)s -> %(toPowerLevel)s", - "Guest access is disabled on this Home Server.": "Vendég belépés tiltva van a saját szerveren.", + "Guest access is disabled on this Home Server.": "Vendég belépés tiltva van az egydi szerveren.", "Guests can't set avatars. Please register.": "A vendégek nem tudnak avatar képet beállítani. Kérlek regisztrálj.", "Guest users can't create new rooms. Please register to create room and start a chat.": "Vendégek nem készíthetnek szobákat. Kérlek regisztrálj, hogy szobát tudják nyitni és el tudj kezdeni csevegni.", "Guest users can't upload files. Please register to upload.": "Vendégek nem tölthetnek fel fájlokat. A feltöltéshez kérlek regisztrálj.", @@ -361,7 +361,7 @@ "Hide Text Formatting Toolbar": "Szövegformázási menü elrejtése", "Historical": "Archív", "Home": "Kezdőlap", - "Homeserver is": "Saját szerver:", + "Homeserver is": "Egyedi szerver:", "Identity Server is": "Azonosítási szerver:", "I have verified my email address": "Ellenőriztem az e-mail címemet", "Import": "Betöltés", @@ -393,8 +393,8 @@ "Joins room with given alias": "A megadott becenévvel belépett a szobába", "Jump to first unread message.": "Ugrás az első olvasatlan üzenetre.", "%(senderName)s kicked %(targetName)s.": "%(senderName)s kizárta: %(targetName)s.", - "Kick": "Kizár", - "Kicks user with given id": "Az adott azonosítójú felhasználó kizárása", + "Kick": "Kirúg", + "Kicks user with given id": "Az adott azonosítójú felhasználó kirúgása", "Labs": "Labor", "Last seen": "Utoljára láttuk", "Leave room": "Szoba elhagyása", @@ -529,7 +529,7 @@ "since they were invited": "onnantól, hogy meg lett hívva", "Some of your messages have not been sent.": "Néhány üzeneted nem lett elküldve.", "Someone": "Valaki", - "Sorry, this homeserver is using a login which is not recognised ": "Bocs, ez a saját szerver olyan beléptetést használ ami nem ismert ", + "Sorry, this homeserver is using a login which is not recognised ": "Bocs, ez az egyedi szerver olyan beléptetést használ ami nem ismert ", "Start a chat": "Csevegés indítása", "Start authentication": "Azonosítás indítása", "Start Chat": "Csevegés indítása", @@ -562,7 +562,7 @@ "This doesn't appear to be a valid email address": "Ez nem tűnik helyes e-mail címnek", "This is a preview of this room. Room interactions have been disabled": "Ez a szoba előnézete. Minden tevékenység ezzel a szobával ki van kapcsolva", "This phone number is already in use": "Ez a telefonszám már használatban van", - "This room": "Ez a szoba", + "This room": "Ebben a szobában", "This room is not accessible by remote Matrix servers": "Ez a szoba távoli Matrix szerverről nem érhető el", "This room's internal ID is": "A szoba belső azonosítója:", "times": "alkalommal", From 50a5bc6b4f3d66246de811306d1f8b2ca53e1169 Mon Sep 17 00:00:00 2001 From: IMIN <2reeseenmin@gmail.com> Date: Thu, 22 Jun 2017 07:41:36 +0000 Subject: [PATCH 227/481] Translated using Weblate (Korean) Currently translated at 91.9% (841 of 915 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ko/ --- src/i18n/strings/ko.json | 176 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 173 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index c2969ad966..93cd72e8d9 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -177,7 +177,7 @@ "Autoplay GIFs and videos": "GIF와 동영상을 자동으로 재생하기", "Ban": "차단", "Banned users": "차단한 사용자", - "Blacklisted": "요주인물들", + "Blacklisted": "요주의", "Bug Report": "오류 보고", "Can't load user settings": "사용사 설정을 불러올 수 없어요", "Change Password": "비밀번호 바꾸기", @@ -461,7 +461,7 @@ "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "사용자를 자신과 같은 권한 등급으로 승급시키면 되돌릴 수 없어요.", "Press": "누르세요", "Privacy warning": "개인정보 경고", - "Private Chat": "은밀한 이야기", + "Private Chat": "비공개 이야기", "Privileged Users": "권한 있는 사용자", "Profile": "자기 소개", "%(senderName)s removed their profile picture.": "%(senderName)s님이 자기 소개 사진을 지우셨어요.", @@ -670,5 +670,175 @@ "You do not have permission to post to this room": "이 방에서 글을 올릴 권한이 없어요", "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s님이 %(roomName)s에서 차단하셨어요.", "You have been invited to join this room by %(inviterName)s": "%(inviterName)s님이 이 방에 초대하셨어요", - "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s님이 %(roomName)s에서 추방하셨어요." + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s님이 %(roomName)s에서 추방하셨어요.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "모든 장치에서 로그아웃되었고 더 이상 알림을 받지 않으실 거에요. 다시 알림을 받으시려면, 각 장치에 로그인해주세요", + "You have disabled URL previews by default.": "사이트 미리보기 쓰지 않기를 기본으로 하셨어요.", + "You have enabled URL previews by default.": "사이트 미리보기 쓰기를 기본으로 하셨어요.", + "You have entered an invalid contact. Try using their Matrix ID or email address.": "잘못된 연락처를 입력하셨어요. 매트릭스 ID나 이메일 주소를 써보세요.", + "You have no visible notifications": "보여드릴 알림이 없어요", + "You may wish to login with a different account, or add this email to this account.": "다른 계정으로 로그인하거나, 이 이메일을 이 계정에 추가할 수도 있어요.", + "you must be a": "해야해요", + "You must register to use this functionality": "이 기능을 쓰시려면 계정을 등록하셔야 해요", + "You need to be able to invite users to do that.": "그러려면 사용자를 초대하실 수 있어야 해요.", + "You need to be logged in.": "로그인하셔야 해요.", + "You need to enter a user name.": "사용자 이름을 입력하셔야 해요.", + "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience.": "이 장치에 종단간 암호화 키를 만들고 공개 키를 홈 서버에 보내려면 다시 로그인해야해요. 한 번만 하시면 돼요. 불편을 드려 죄송합니다.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "이메일 주소가 이 홈 서버의 매트릭스 ID와 관련이 없어요.", + "Your password has been reset": "비밀번호를 다시 설정했어요", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "비밀번호를 바꾸었어요. 다른 장치에서 다시 로그인할 때까지 알림을 받지 않을 거에요", + "You seem to be in a call, are you sure you want to quit?": "전화 중인데, 끊으시겠어요?", + "You seem to be uploading files, are you sure you want to quit?": "파일을 올리는 중인데, 그만두시겠어요?", + "You should not yet trust it to secure data": "안전한 자료를 위해서는 아직 믿으시면 안돼요", + "Your home server does not support device management.": "홈 서버가 장치 관리를 지원하지 않아요.", + "Sun": "일", + "Mon": "월", + "Tue": "화", + "Wed": "수", + "Thu": "목", + "Fri": "금", + "Sat": "토", + "Jan": "1월", + "Feb": "2월", + "Mar": "3월", + "Apr": "4월", + "May": "5월", + "Jun": "6월", + "Jul": "7월", + "Aug": "8월", + "Sep": "9월", + "Oct": "10월", + "Nov": "11월", + "Dec": "12월", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s일 %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s일 %(fullYear)s년 %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "Set a display name:": "별명 설정:", + "Set a Display Name": "별명 설정", + "Upload an avatar:": "아바타 올리기:", + "This server does not support authentication with a phone number.": "이 서버는 전화번호 인증을 지원하지 않아요.", + "Missing password.": "비밀번호를 틀렸어요.", + "Passwords don't match.": "비밀번호가 맞지 않아요.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "비밀번호가 너무 짧아요 (min %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "유효한 이메일 주소가 아니에요.", + "This doesn't look like a valid phone number.": "유효한 전화번호가 아니에요.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "사용자 이름은 문자, 숫자, 점, -(붙임표), _(밑줄 문자)만 쓸 수 있어요.", + "An unknown error occurred.": "알 수 없는 오류가 일어났어요.", + "I already have an account": "이미 계정이 있어요", + "An error occurred: %(error_string)s": "오류가 일어났어요: %(error_string)s", + "Topic": "주제", + "Make Moderator": "조정자 임명하기", + "Make this room private": "이 방을 비공개로 만들기", + "Share message history with new users": "메시지 기록을 새 사용자와 공유하기", + "Encrypt room": "암호화한 방", + "There are no visible files in this room": "이 방에서 보여드릴 파일이 없어요", + "Room": "방", + "Connectivity to the server has been lost.": "서버 연결이 끊어졌어요.", + "Sent messages will be stored until your connection has returned.": "보내신 메시지는 다시 연결될 때까지 저장할 거에요.", + "Auto-complete": "자동 완성", + "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "전부 다시 보내거나 취소하세요. 다시 보내거나 취소할 메시지를 하나씩 고르실 수도 있어요.", + "(~%(count)s results).one": "(~%(count)s 결과)", + "(~%(count)s results).other": "(~%(count)s 결과)", + "or": "혹은", + "Active call": "전화 중", + "bold": "굵은 획", + "italic": "기울임꼴", + "strike": "취소선", + "underline": "밑줄", + "code": "코드", + "quote": "인용", + "bullet": "글머리 기호", + "numbullet": "번호 매기기", + "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)s님이 %(repeats)s 번 들어오셨어요", + "%(oneUser)sjoined %(repeats)s times": "%(oneUser)s님이 %(repeats)s 번 들어오셨어요", + "%(severalUsers)sjoined": "%(severalUsers)s님이 들어오셨어요", + "%(oneUser)sjoined": "%(oneUser)s님이 들어오셨어요", + "%(severalUsers)sleft %(repeats)s times": "%(severalUsers)s님이 %(repeats)s 번 떠나셨어요", + "%(oneUser)sleft %(repeats)s times": "%(oneUser)s 님이 %(repeats)s 번 떠나셨어요", + "%(severalUsers)sleft": "%(severalUsers)s님이 떠나셨어요", + "%(oneUser)sleft": "%(oneUser)s님이 떠나셨어요", + "%(severalUsers)sjoined and left %(repeats)s times": "%(severalUsers)s님이 %(repeats)s번 들어오셨다 떠나셨어요", + "%(oneUser)sjoined and left %(repeats)s times": "%(oneUser)s님이 %(repeats)s번 들어오셨다 떠나셨어요", + "%(severalUsers)sjoined and left": "%(severalUsers)s님이 들어오셨다 떠나셨어요", + "%(oneUser)sjoined and left": "%(oneUser)s님이 들어오셨다 떠나셨어요", + "%(severalUsers)sleft and rejoined %(repeats)s times": "%(severalUsers)s님이 %(repeats)s 번 떠나셨다 다시 오셨어요", + "%(oneUser)sleft and rejoined %(repeats)s times": "%(oneUser)s님이 %(repeats)s 번 떠나셨다 다시 오셨어요", + "%(severalUsers)sleft and rejoined": "%(severalUsers)s님이 떠나셨다 다시 오셨어요", + "%(oneUser)sleft and rejoined": "%(oneUser)s님이 떠나셨다 다시 오셨어요", + "%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)s님이 %(repeats)s 번 초대를 거절하셨어요", + "%(oneUser)srejected their invitation %(repeats)s times": "%(oneUser)s님이 %(repeats)s 번 초대를 거절하셨어요", + "%(severalUsers)srejected their invitations": "%(severalUsers)s님이 초대를 거절하셨어요", + "%(oneUser)srejected their invitation": "%(oneUser)s님이 초대를 거절하셨어요", + "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)s님이 %(repeats)s 번 초대를 취소하셨어요", + "%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)s님이 %(repeats)s 번 초대를 취소하셨어요", + "%(severalUsers)shad their invitations withdrawn": "%(severalUsers)s님이 초대를 취소하셨어요", + "%(oneUser)shad their invitation withdrawn": "%(oneUser)s님이 초대를 취소하셨어요", + "were invited %(repeats)s times": "%(repeats)s 번 초대받으셨어요", + "was invited %(repeats)s times": "%(repeats)s 번 초대받으셨어요", + "were invited": "초대받으셨어요", + "was invited": "초대받으셨어요", + "were banned %(repeats)s times": "%(repeats)s 번 차단당하셨어요", + "was banned %(repeats)s times": "%(repeats)s 번 차단당하셨어요", + "were banned": "차단당하셨어요", + "was banned": "차단당하셨어요", + "were unbanned %(repeats)s times": "%(repeats)s 번 차단이 풀리셨어요", + "was unbanned %(repeats)s times": "%(repeats)s 번 차단의 풀리셨어요", + "were unbanned": "차단이 풀리셨어요", + "was unbanned": "차단이 풀리셨어요", + "were kicked %(repeats)s times": "%(repeats)s 번 내쫓기셨어요", + "was kicked %(repeats)s times": "%(repeats)s 번 내쫓기셨어요", + "were kicked": "내쫓기셨어요", + "was kicked": "내쫓기셨어요", + "%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)s님이 이름을 %(repeats)s 번 바꾸셨어요", + "%(oneUser)schanged their name %(repeats)s times": "%(oneUser)s님이 이름을 %(repeats)s 번 바꾸셨어요", + "%(severalUsers)schanged their name": "%(severalUsers)s님이 이름을 바꾸셨어요", + "%(oneUser)schanged their name": "%(oneUser)s님이 이름을 바꾸셨어요", + "%(severalUsers)schanged their avatar %(repeats)s times": "%(severalUsers)s님이 아바타를 %(repeats)s 번 바꾸셨어요", + "%(oneUser)schanged their avatar %(repeats)s times": "%(oneUser)s님이 아바타를 %(repeats)s 번 바꾸셨어요", + "%(severalUsers)schanged their avatar": "%(severalUsers)s님이 아바타를 바꾸셨어요", + "%(oneUser)schanged their avatar": "%(oneUser)s님이 아바타를 바꾸셨어요", + "Please select the destination room for this message": "이 메시지를 보낼 방을 골라주세요", + "New Password": "새 비밀번호", + "Start automatically after system login": "컴퓨터를 시작할 때 자동으로 실행하기", + "Desktop specific": "컴퓨터 설정", + "Analytics": "정보 수집", + "Opt out of analytics": "정보 수집 거부", + "Options": "선택권", + "Riot collects anonymous analytics to allow us to improve the application.": "라이엇은 익명의 정보를 수집해 응용 프로그램을 개선한답니다.", + "Passphrases must match": "암호가 일치해야 해요", + "Passphrase must not be empty": "암호를 비우시면 안돼요", + "Export room keys": "방 키를 내보내기", + "Confirm passphrase": "암호 확인", + "File to import": "가져올 파일", + "You must join the room to see its files": "파일을 보려면 방에 들어가야만 해요", + "Reject all %(invitedRooms)s invites": "모든 %(invitedRooms)s의 초대를 거절하기", + "Start new chat": "새로 이야기하기", + "Guest users can't invite users. Please register.": "손님은 사용자를 초대할 수 없어요. 계정을 등록해주세요.", + "Failed to invite": "초대하지 못했어요", + "Failed to invite user": "사용자를 초대하지 못했어요", + "Failed to invite the following users to the %(roomName)s room:": "다음 사용자들을 %(roomName)s 방으로 초대하지 못했어요:", + "Confirm Removal": "삭제 확인", + "Unknown error": "알 수 없는 오류", + "Incorrect password": "맞지 않는 비밀번호", + "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "계정을 영원히 쓸 수 없게 할 거에요. 같은 사용자 ID를 다시 등록하실 수 없을 거고요.", + "This action is irreversible.": "되돌릴 수 없는 일이에요.", + "To continue, please enter your password.": "계속하시려면, 비밀번호를 입력해주세요.", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "이 과정으로 암호화한 방에서 받은 메시지의 키를 로컬 파일로 내보낼 수 있어요. 너중에 다른 매트릭스 클라이언트로 파일을 불러올 수 있기 때문에, 그 클라이언트에서 메시지를 해독할 수도 있지요.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "내보낸 파일은 누구든지 암호화한 메시지를 해독해서 읽을 수 있게 하므로, 보안에 신경 써 주세요. 이를 위해, 내보낸 파일을 암호화하려하니, 아래에 암호를 입력해주세요. 같은 암호를 쓰셔야만 자료를 불러올 수 있어요.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "이 과정으로 전에 다른 매트릭스 클라이언트에서 내보낸 암호화 키를 불러올 수 있어요. 그 다음에는 다른 클라이언트에서 해독할 수 있던 어떤 메시지라도 해독할 수 있을 거에요.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "내보낸 파일은 암호로 보호하고 있어요. 파일을 해독하려면, 여기에 암호를 입력해주세요.", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "이 사건을 지우길 (없애길) 원하세요? 방 이름을 지우거나 주제를 바꾸시면, 되돌릴 수 없다는 걸 명심해주세요.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "이 장치를 믿을 수 있는지 확인하시려면, 몇 가지 방법(예를 들자면 직접 만나거나 전화를 걸어서)으로 소유자에게 연락하시고 그들이 사용자 설정에서 보는 키와 아래 키가 같은지 물어보세요:", + "Device name": "장치 이름", + "Device Name": "장치 이름", + "Device key": "장치 키", + "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.": "앞으로는 이 확인 과정이 더 정교해질 거에요.", + "Verify device": "인증한 장치", + "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.": "이전 세션을 복구하는 도중 오류가 일어났어요. 계속하시려면, 다시 로그인하셔야 하고, 암호화한 기록은 읽을 수 없게 될 거에요.", + "Unable to restore session": "세션을 복구할 수 없어요", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "이전에 더 최근 버전의 라이엇을 쓰셨다면, 이 버전과 맞지 않을 거에요. 창을 닫고 더 최근 버전으로 돌아가세요.", + "Continue anyway": "무시하고 계속하기", + "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "별명은 방에서 말할 때 다른 사람에게 보일 이름을 정하는 거에요. 어떤 게 좋으세요?", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "현재 인증하지 않은 장치를 요주의로 지정하셨어요. 이 장치들에 메시지를 보내려면 인증을 해야 해요." } From eb76b1ae2408378b68fa923f7bb9c34f9ede18dd Mon Sep 17 00:00:00 2001 From: Walter Date: Tue, 20 Jun 2017 17:43:21 +0000 Subject: [PATCH 228/481] Translated using Weblate (Russian) Currently translated at 100.0% (915 of 915 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 0daa92fbb1..a23eff43fd 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -110,7 +110,7 @@ "Joins room with given alias": "зашёл в комнату с этим именем", "Kicks user with given id": "Выгнать пользователя с заданным id", "Labs": "Лаборатория", - "Leave room": "Уйти из комнаты", + "Leave room": "Выйти из комнаты", "left and rejoined": "Покинуть и пере подключится", "left": "покинуть", "left the room": "left the room", From e5ecd168d7a10957e234461dd03c5ea26630c5e5 Mon Sep 17 00:00:00 2001 From: Pitchaya Boonsarngsuk Date: Thu, 22 Jun 2017 17:46:35 +0000 Subject: [PATCH 229/481] Translated using Weblate (Thai) Currently translated at 64.6% (592 of 915 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/th/ --- src/i18n/strings/th.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/th.json b/src/i18n/strings/th.json index edc197a1af..fd83354b72 100644 --- a/src/i18n/strings/th.json +++ b/src/i18n/strings/th.json @@ -339,7 +339,7 @@ "Export E2E room keys": "ส่งออกกุญแจถอดรหัส E2E", "Failed to change power level": "การเปลี่ยนระดับอำนาจล้มเหลว", "Import E2E room keys": "นำเข้ากุญแจถอดรหัส E2E", - "to favourite": "ไปยังรายการโปรด", + "to favourite": "เพื่อเพิ่มไปยังรายการโปรด", "to demote": "เพื่อลดขั้น", "The default role for new room members is": "บทบาทเริ่มต้นของสมาชิกใหม่คือ", "The phone number entered looks invalid": "ดูเหมือนว่าหมายเลขโทรศัพท์ที่กรอกรมาไม่ถูกต้อง", @@ -384,7 +384,7 @@ "Who can access this room?": "ใครสามารถเข้าถึงห้องนี้ได้?", "Who can read history?": "ใครสามารถอ่านประวัติแชทได้?", "Who would you like to add to this room?": "คุณต้องการเพิ่มใครเข้าห้องนี้?", - "Who would you like to communicate with?": "คุณต้องการสื่อสารกับใคร?", + "Who would you like to communicate with?": "คุณต้องการคุยกับใคร?", "You're not in any rooms yet! Press": "คุณยังไม่ได้อยู่ในห้องใดเลย! กด", "You are trying to access %(roomName)s.": "คุณกำลังพยายามเข้าสู่ %(roomName)s", "You have disabled URL previews by default.": "ค่าเริ่มต้นของคุณปิดใช้งานตัวอย่าง URL เอาไว้", From 7bf10760e760419c3f0545665a2ecf14ab024dd0 Mon Sep 17 00:00:00 2001 From: Elia Date: Thu, 22 Jun 2017 19:57:55 +0000 Subject: [PATCH 230/481] Translated using Weblate (Turkish) Currently translated at 100.0% (915 of 915 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/tr/ --- src/i18n/strings/tr.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index a0f7ca5db1..1610b5131f 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -235,7 +235,7 @@ "Decrypt %(text)s": "%(text) metninin şifresini çöz", "Decryption error": "Şifre çözme hatası", "Delete": "Sil", - "demote": "Rütbesini İndir", + "demote": "Terfiyi Geri Al", "Deops user with given id": "ID'leriyle birlikte , düşürülmüş kullanıcılar", "Default": "Varsayılan", "Device already verified!": "Cihaz zaten doğrulandı!", @@ -511,7 +511,7 @@ "Signed Out": "Oturum Kapatıldı", "Sign in": "Giriş Yap", "Sign out": "Çıkış Yap", - "since the point in time of selecting this option": "Bu seçeneği seçmekten itibaren", + "since the point in time of selecting this option": "Bu seçenek seçildiğinden beri", "since they joined": "Katıldıklarından beri", "since they were invited": "davet edildiklerinden beri", "Some of your messages have not been sent.": "Bazı mesajlarınız gönderilemedi.", @@ -568,7 +568,7 @@ "to start a chat with someone": "birisiyle sohbet başlatmak için", "to tag as %(tagName)s": "%(tagName)s olarak etiketlemek için", "to tag direct chat": "doğrudan sohbeti etiketlemek için", - "To use it, just wait for autocomplete results to load and tab through them.": "Kullanmak için , otomatik tamamlama sonuçlarının yüklenmesini ve sekmelerden geçmesini bekleyin.", + "To use it, just wait for autocomplete results to load and tab through them.": "Kullanmak için , otomatik tamamlama sonuçlarının yüklenmesini ve bitmesini bekleyin.", "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Bu odanın zaman çizelgesinde belirli bir nokta yüklemeye çalışıldı , ama geçerli mesajı görüntülemeye izniniz yok.", "Tried to load a specific point in this room's timeline, but was unable to find it.": "Bu odanın akışında belirli bir noktaya yüklemeye çalışıldı , ancak bulunamadı.", "Turn Markdown off": "Markdown'u kapat", @@ -620,7 +620,7 @@ "Username invalid: %(errMessage)s": "Kullanıcı ismi geçersiz : %(errMessage)s", "Users": "Kullanıcılar", "User": "Kullanıcı", - "Verification Pending": "Doğrulama Boyunca", + "Verification Pending": "Bekleyen doğrulama", "Verification": "Doğrulama", "verified": "doğrulanmış", "Verified": "Doğrulanmış", @@ -649,7 +649,7 @@ "You are trying to access %(roomName)s.": "%(roomName)s 'e erişmeye çalışıyorsunuz.", "You cannot place a call with yourself.": "Kendinizle görüşme yapamazsınız .", "You cannot place VoIP calls in this browser.": "Bu tarayıcıda VoIP çağrısı yapamazsınız.", - "You do not have permission to post to this room": "Bu odaya paylaşım yapma izniniz yok", + "You do not have permission to post to this room": "Bu odaya göndermeye izniniz yok", "You have been banned from %(roomName)s by %(userName)s.": "%(roomName)s odasından %(userName)s tarafından banlandınız.", "You have been invited to join this room by %(inviterName)s": "Bu odaya %(inviterName)s tarafından davet edildiniz", "You have been kicked from %(roomName)s by %(userName)s.": "%(roomName)s 'dan %(userName)s tarafından atıldınız.", @@ -733,7 +733,7 @@ "Sunday": "Pazar", "bold": "kalın", "italic": "italik", - "strike": "eğik", + "strike": "vurgulu", "underline": "altı çizili", "code": "kod", "quote": "alıntı", From cc89d8318ea7c0f9b551273a91c73d8d2791ef0a Mon Sep 17 00:00:00 2001 From: Walter Date: Wed, 21 Jun 2017 19:40:21 +0000 Subject: [PATCH 231/481] Translated using Weblate (Ukrainian) Currently translated at 18.3% (168 of 915 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/uk/ --- src/i18n/strings/uk.json | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index 4af2a6e311..fab2148c47 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -155,5 +155,16 @@ "a room": "кімната", "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Текстове повідомлення було надіслано +%(msisdn)s. Введіть, будь ласка, код підтвердження з цього повідомлення", "Accept": "Прийняти", - "Account": "Обліковка" + "Account": "Обліковка", + "%(targetName)s accepted an invitation.": "%(targetName)s прийняв запрошення.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s прийняв запрошення від %(displayName)s.", + "Access Token:": "Токен:", + "Active call (%(roomName)s)": "Активний виклик (%(roomName)s)", + "Add": "Добавити", + "Add a topic": "Добавити тему", + "Add email address": "Добавити email адресу", + "Add phone number": "Добавити телефонний номер", + "Admin": "Адмін", + "Admin tools": "Адмін утиліта", + "And %(count)s more...": "І %(count)s більше..." } From ae053e88c789acae01fa88a68f15c69f48d9b540 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 22 Jun 2017 21:59:33 +0100 Subject: [PATCH 232/481] fix broken vars --- src/i18n/strings/ru.json | 2 +- src/i18n/strings/tr.json | 102 +++++++++++++++++++-------------------- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index a666de60aa..93c35e32f4 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -920,7 +920,7 @@ "Set": "Вводить", "Start authentication": "Начать идентификацию", "This room": "Эта комната", - "(~%(count)s results).other": "(~%(count) найдено)", + "(~%(count)s results).other": "(~%(count)s найдено)", "Device Name": "Имя устройства", "Custom": "Пользователь", "Decline": "Отклонить", diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index 1610b5131f..15b2958e2b 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -120,10 +120,10 @@ "zh-tw": "Çince (Tayvan)", "zu": "Zulu Dili", "a room": "bir oda", - "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "+%(msisdn) 'ye bir kısa mesaj gönderildi . Lütfen içerdiği doğrulama kodunu girin", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "+%(msisdn)s 'ye bir kısa mesaj gönderildi . Lütfen içerdiği doğrulama kodunu girin", "Accept": "Kabul Et", - "%(targetName)s accepted an invitation.": "%(targetName) bir davetiyeyi kabul etti.", - "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName) %(displayName) için davetiyeyi kabul etti.", + "%(targetName)s accepted an invitation.": "%(targetName)s bir davetiyeyi kabul etti.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s %(displayName)s için davetiyeyi kabul etti.", "Account": "Hesap", "Access Token:": "Erişim Anahtarı:", "Active call (%(roomName)s)": "Aktif çağrı (%(roomName)s)", @@ -153,12 +153,12 @@ "all room members, from the point they are invited": "Tüm oda üyeleri , davet edildiği noktadan", "all room members, from the point they joined": "Tüm oda üyeleri , katıldıkları noktalardan", "and": "ve", - "%(items)s and %(remaining)s others": "%(items) ve %(remaining) diğerleri", - "%(items)s and one other": "%(items) ve bir başkası", - "%(items)s and %(lastItem)s": "%(items) ve %(lastItem)", - "and %(overflowCount)s others...": "ve %(overflowCount) diğerleri...", + "%(items)s and %(remaining)s others": "%(items)s ve %(remaining)s diğerleri", + "%(items)s and one other": "%(items)s ve bir başkası", + "%(items)s and %(lastItem)s": "%(items)s ve %(lastItem)s", + "and %(overflowCount)s others...": "ve %(overflowCount)s diğerleri...", "and one other...": "ve bir diğeri...", - "%(names)s and %(lastPerson)s are typing": "%(names) ve %(lastPerson) yazıyorlar", + "%(names)s and %(lastPerson)s are typing": "%(names)s ve %(lastPerson)s yazıyorlar", "%(names)s and one other are typing": "%(names)s ve birisi yazıyor", "%(names)s and %(count)s others are typing": "%(names)s ve %(count)s diğeri yazıyor", "An email has been sent to": "Bir e-posta gönderildi", @@ -175,7 +175,7 @@ "Are you sure you want to upload the following files?": "Aşağıdaki dosyaları yüklemek istediğinizden emin misiniz ?", "Attachment": "Ek Dosya", "Autoplay GIFs and videos": "GIF'leri ve Videoları otomatik olarak oynat", - "%(senderName)s banned %(targetName)s.": "%(senderName) %(targetName)'i banladı.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s %(targetName)s'i banladı.", "Ban": "Yasak", "Banned users": "Yasaklanan(Banlanan) Kullanıcılar", "Bans user with given id": "Yasaklanan(Banlanan) Kullanıcılar , ID'leri ile birlikte", @@ -187,12 +187,12 @@ "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Tarayıcı çubuğunuzda bir HTTPS URL'si olduğunda Ana Sunusuna HTTP üzerinden bağlanılamıyor . Ya HTTPS kullanın veya güvensiz komut dosyalarını etkinleştirin.", "Can't load user settings": "Kullanıcı ayarları yüklenemiyor", "Change Password": "Şifre Değiştir", - "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName) görüntülenen ismini %(oldDisplayName)s dan %(displayName) 'a değiştirdi.", - "%(senderName)s changed their profile picture.": "%(senderName) profil resmini değiştirdi.", - "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName) %(powerLevelDiffText)'nin güç düzeyini değiştirdi.", - "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName) odanın ismini %(roomName) olarak değiştirdi.", - "%(senderDisplayName)s removed the room name.": "%(senderDisplayName) oda adını kaldırdı.", - "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName) konuyu \"%(topic)\" olarak değiştirdi.", + "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s görüntülenen ismini %(oldDisplayName)s dan %(displayName)s 'a değiştirdi.", + "%(senderName)s changed their profile picture.": "%(senderName)s profil resmini değiştirdi.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s %(powerLevelDiffText)s'nin güç düzeyini değiştirdi.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s odanın ismini %(roomName)s olarak değiştirdi.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s oda adını kaldırdı.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s konuyu \"%(topic)s\" olarak değiştirdi.", "Changes to who can read history will only apply to future messages in this room": "Geçmişi kimlerin okuyabileceğine ait değişiklikler yalnızca bu odada gelecekteki iletiler için geçerli olur", "Changes your display nickname": "Görünen takma adınızı değiştirir", "changing room on a RoomView is not supported": "Oda Ekranında oda değiştirme desteklenmiyor", @@ -218,8 +218,8 @@ "Confirm your new password": "Yeni Şifrenizi Onaylayın", "Continue": "Devam Et", "Could not connect to the integration server": "Bütünleştirme (Integration) Sunucusuna bağlanamadı", - "%(count)s new messages.one": "%(count) yeni mesaj", - "%(count)s new messages.other": "%(count) yeni mesajlar", + "%(count)s new messages.one": "%(count)s yeni mesaj", + "%(count)s new messages.other": "%(count)s yeni mesajlar", "Create a new chat or reuse an existing one": "Yeni sohbet oluştur veya mevcut sohbetinizi tekrar kullanın", "Create an account": "Hesap Oluştur", "Create Room": "Oda Oluştur", @@ -232,7 +232,7 @@ "Deactivate Account": "Hesabı Devre Dışı Bırakma", "Deactivate my account": "Hesabımı Devre Dışı Bırak", "Decline": "Reddet", - "Decrypt %(text)s": "%(text) metninin şifresini çöz", + "Decrypt %(text)s": "%(text)s metninin şifresini çöz", "Decryption error": "Şifre çözme hatası", "Delete": "Sil", "demote": "Terfiyi Geri Al", @@ -255,10 +255,10 @@ "Display name": "Görünür İsim", "Displays action": "Görünür eylem", "Don't send typing notifications": "Yazarken bildirim gönderme", - "Download %(text)s": "%(text) metnini indir", + "Download %(text)s": "%(text)s metnini indir", "Drop File Here": "Dosyayı Buraya Bırak", - "Drop here %(toAction)s": "%(toAction)'ı buraya bırak", - "Drop here to tag %(section)s": "Etiket %(section) ' ı buraya bırak", + "Drop here %(toAction)s": "%(toAction)s'ı buraya bırak", + "Drop here to tag %(section)s": "Etiket %(section)s ' ı buraya bırak", "Ed25519 fingerprint": "Ed25519 parmak izi", "Email": "E-posta", "Email address": "E-posta Adresi", @@ -291,7 +291,7 @@ "Failed to change power level": "Güç seviyesini değiştirme başarısız oldu", "Failed to delete device": "Cihazı silmek başarısız oldu", "Failed to fetch avatar URL": "Avatar URL'i alınamadı", - "Failed to forget room %(errCode)s": "Oda unutulması başarısız oldu %(errCode)", + "Failed to forget room %(errCode)s": "Oda unutulması başarısız oldu %(errCode)s", "Failed to join room": "Odaya girme hatası", "Failed to join the room": "Odaya girme başarısız oldu", "Failed to kick": "Atma(Kick) işlemi başarısız oldu", @@ -324,7 +324,7 @@ "For security, this session has been signed out. Please sign in again.": "Güvenlik için , bu oturuma çıkış yapıldı . Lütfen tekrar oturum açın.", "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Güvenlik için , çıkış yaparsanız bu tarayıcıdan tüm uçtan uca şifreleme anahtarları silinecek . Konuşma geçmişinizi çözebilmek isterseniz gelecekteki Riot oturumlarında , lütfen Oda Anahtarlarını güvenlik amaçlı Dışa Aktarın.", "Found a bug?": "Hata buldunuz mu ?", - "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId) %(fromPowerLevel)s den %(toPowerLevel) ' ye", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s %(fromPowerLevel)s den %(toPowerLevel)s ' ye", "Guest access is disabled on this Home Server.": "Misafir erişimi bu Ana Sunucu için devre dışı.", "Guests can't set avatars. Please register.": "Misafirler Avatarlarını ayarlayamazlar . Lütfen kayıt olun.", "Guest users can't create new rooms. Please register to create room and start a chat.": "Misafir kullanıcılar yeni oda oluşturamazlar. Yeni oda oluşturmak ve sohbet başlatmak için lütfen kayıt olun.", @@ -342,33 +342,33 @@ "I have verified my email address": "E-posta adresimi doğruladım", "Import": "İçe Aktar", "Import E2E room keys": "Uçtan uca Oda Anahtarlarını İçe Aktar", - "Incoming call from %(name)s": "%(name) ' den gelen çağrı", - "Incoming video call from %(name)s": "%(name) ' den görüntülü arama", - "Incoming voice call from %(name)s": "%(name)' den gelen sesli arama", + "Incoming call from %(name)s": "%(name)s ' den gelen çağrı", + "Incoming video call from %(name)s": "%(name)s ' den görüntülü arama", + "Incoming voice call from %(name)s": "%(name)s ' den gelen sesli arama", "Incorrect username and/or password.": "Yanlış kullanıcı adı ve / veya şifre.", "Incorrect verification code": "Yanlış doğrulama kodu", "Interface Language": "Arayüz Dili", "Invalid alias format": "Geçersiz Takma Ad(nickname) Formatı", "Invalid address format": "Geçersiz adres formatı", "Invalid Email Address": "Geçersiz E-posta Adresi", - "Invalid file%(extra)s": "Geçersiz dosya %(extra)'ı", - "%(senderName)s invited %(targetName)s.": "%(senderName) %(targetName) ' ı davet etti.", + "Invalid file%(extra)s": "Geçersiz dosya %(extra)s'ı", + "%(senderName)s invited %(targetName)s.": "%(senderName)s %(targetName)s ' ı davet etti.", "Invite new room members": "Yeni oda üyelerini davet et", "Invited": "Davet Edildi", "Invites": "Davetler", "Invites user with given id to current room": "Mevcut odaya verilen kimliği olan kullanıcıyı davet eder", "'%(alias)s' is not a valid format for an address": "'%(alias)s' bir adres için geçerli format değil", "'%(alias)s' is not a valid format for an alias": "'%(alias)s' bir takma ad(nickname) için geçerli değil", - "%(displayName)s is typing": "%(displayName) yazıyor", + "%(displayName)s is typing": "%(displayName)s yazıyor", "Sign in with": "Şununla giriş yap", "Join as voice or video.": " ses veya video olarak katılın.", "Join Room": "Odaya Katıl", "joined and left": "katıldı ve ayrıldı", "joined": "katıldı", - "%(targetName)s joined the room.": "%(targetName) odaya katıldı.", + "%(targetName)s joined the room.": "%(targetName)s odaya katıldı.", "Joins room with given alias": "Verilen takma ad (nick name) ile odaya katıl", "Jump to first unread message.": "İlk okunmamış iletiye atla.", - "%(senderName)s kicked %(targetName)s.": "%(senderName) %(targetName)' ı attı.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s %(targetName)s' ı attı.", "Kick": "Atmak (Odadan atmak vs.)", "Kicks user with given id": "Verilen ID ' li kullanıcıyı at", "Labs": "Laboratuarlar", @@ -376,15 +376,15 @@ "Leave room": "Odadan ayrıl", "left and rejoined": "ayrıldı ve yeniden katıldı", "left": "ayrıldı", - "%(targetName)s left the room.": "%(targetName) odadan ayrıldı.", + "%(targetName)s left the room.": "%(targetName)s odadan ayrıldı.", "Level:": "Seviye :", - "List this room in %(domain)s's room directory?": "Bu oda %(domain)' in oda dizininde listelensin mi ?", + "List this room in %(domain)s's room directory?": "Bu oda %(domain)s' in oda dizininde listelensin mi ?", "Local addresses for this room:": "Bu oda için yerel adresler :", "Logged in as:": "Olarak giriş yaptı :", "Login as guest": "Misafir olarak giriş yaptı", "Logout": "Çıkış Yap", "Low priority": "Düşük öncelikli", - "%(senderName)s made future room history visible to": "%(senderName) gelecekte oda geçmişini görünür yaptı", + "%(senderName)s made future room history visible to": "%(senderName)s gelecekte oda geçmişini görünür yaptı", "Manage Integrations": "Entegrasyonları Yönet", "Markdown is disabled": "Markdown devre dışı", "Markdown is enabled": "Markdown aktif", @@ -403,7 +403,7 @@ "Never send encrypted messages to unverified devices from this device": "Bu cihazdan doğrulanmamış cihazlara asla şifrelenmiş mesajlar göndermeyin", "Never send encrypted messages to unverified devices in this room": "Bu odada doğrulanmamış cihazlara asla şifreli mesajlar göndermeyin", "Never send encrypted messages to unverified devices in this room from this device": "Bu odada bu cihazdan doğrulanmamış cihazlara asla şifrelenmiş mesajlar göndermeyin", - "New address (e.g. #foo:%(localDomain)s)": "Yeni adres (e.g. #foo:%(localDomain))", + "New address (e.g. #foo:%(localDomain)s)": "Yeni adres (e.g. #foo:%(localDomain)s)", "New Composer & Autocomplete": "Yeni Besteci & Otomatik Tamamlama", "New password": "Yeni Şifre", "New passwords don't match": "Yeni şifreler uyuşmuyor", @@ -445,17 +445,17 @@ "Profile": "Profil", "Public Chat": "Genel Sohbet", "Reason": "Sebep", - "Reason: %(reasonText)s": "Sebep: %(reasonText)", + "Reason: %(reasonText)s": "Sebep: %(reasonText)s", "Revoke Moderator": "Moderatörü İptal Et", "Refer a friend to Riot:": "Riot'tan bir arkadaşa bakın :", "Register": "Kaydolun", "rejected": "reddedildi", - "%(targetName)s rejected the invitation.": "%(targetName) daveti reddetti.", + "%(targetName)s rejected the invitation.": "%(targetName)s daveti reddetti.", "Reject invitation": "Daveti Reddet", "Rejoin": "Yeniden Katıl", "Remote addresses for this room:": "Bu oda için uzak adresler:", "Remove Contact Information?": "İletişim Bilgilerini Kaldır ?", - "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName) görünen adı (%(oldDisplayName)) kaldırdı.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s görünen adı (%(oldDisplayName)s) kaldırdı.", "%(senderName)s removed their profile picture.": "%(senderName)s profil resmini kaldırdı.", "Remove": "Kaldır", "Remove %(threePid)s?": "%(threePid)s 'i kaldır ?", @@ -469,12 +469,12 @@ "Riot does not have permission to send you notifications - please check your browser settings": "Riot size bildirim gönderme iznine sahip değil - lütfen tarayıcı ayarlarınızı kontrol edin", "Riot was not given permission to send notifications - please try again": "Riot'a bildirim gönderme izni verilmedi - lütfen tekrar deneyin", "riot-web version:": "riot-web versiyon:", - "Room %(roomId)s not visible": "%(roomId) odası görünür değil", + "Room %(roomId)s not visible": "%(roomId)s odası görünür değil", "Room Colour": "Oda Rengi", "Room contains unknown devices": "Oda bilinmeyen cihazlar içeriyor", "Room name (optional)": "Oda ismi (İsteğe Bağlı)", - "%(roomName)s does not exist.": "%(roomName) mevcut değil.", - "%(roomName)s is not accessible at this time.": "%(roomName) şu anda erişilebilir değil.", + "%(roomName)s does not exist.": "%(roomName)s mevcut değil.", + "%(roomName)s is not accessible at this time.": "%(roomName)s şu anda erişilebilir değil.", "Rooms": "Odalar", "Save": "Kaydet", "Scroll to bottom of page": "Sayfanın altına kaydır", @@ -483,7 +483,7 @@ "Search failed": "Arama başarısız", "Searches DuckDuckGo for results": "Sonuçlar için DuckDuckGo'yu arar", "Searching known users": "Bilinen kullanıcıları arama", - "Seen by %(userName)s at %(dateTime)s": "%(dateTime) ' de %(userName) tarafından görüldü", + "Seen by %(userName)s at %(dateTime)s": "%(dateTime)s ' de %(userName)s tarafından görüldü", "Send a message (unencrypted)": "Bir mesaj gönder (Şifrelenmemiş)", "Send an encrypted message": "Şifrelenmiş bir mesaj gönder", "Send anyway": "Her durumda gönder", @@ -491,8 +491,8 @@ "Send Invites": "Davetiye Gönder", "Send Reset Email": "E-posta Sıfırlama Gönder", "sent an image": "bir resim gönderildi", - "%(senderDisplayName)s sent an image.": "%(senderDisplayName) bir resim gönderdi.", - "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName) %(targetDisplayName)' a odaya katılması için bir davet gönderdi.", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s bir resim gönderdi.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s %(targetDisplayName)s' a odaya katılması için bir davet gönderdi.", "sent a video": "bir video gönderildi", "Server error": "Sunucu Hatası", "Server may be unavailable or overloaded": "Sunucu kullanılamıyor veya aşırı yüklenmiş olabilir", @@ -501,8 +501,8 @@ "Server may be unavailable, overloaded, or you hit a bug.": "Sunucu kullanılamıyor , aşırı yüklenmiş , veya bir hatayla karşılaşmış olabilirsiniz.", "Server unavailable, overloaded, or something else went wrong.": "Sunucu kullanılamıyor , aşırı yüklenmiş veya başka bir şey ters gitmiş olabilir.", "Session ID": "Oturum ID", - "%(senderName)s set a profile picture.": "%(senderName) bir profil resmi ayarladı.", - "%(senderName)s set their display name to %(displayName)s.": "%(senderName) görünür ismini %(displayName) ' a ayarladı.", + "%(senderName)s set a profile picture.": "%(senderName)s bir profil resmi ayarladı.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s görünür ismini %(displayName)s ' a ayarladı.", "Set": "Ayarla", "Settings": "Ayarlar", "Show panel": "Paneli göster", @@ -522,13 +522,13 @@ "Start Chat": "Sohbet Başlat", "Submit": "Gönder", "Success": "Başarı", - "tag as %(tagName)s": "%(tagName) olarak etiketle", + "tag as %(tagName)s": "%(tagName)s olarak etiketle", "tag direct chat": "Doğrudan sohbeti etiketle", "Tagged as: ": "Olarak etiketlendi : ", "The default role for new room members is": "Yeni oda üyelerinin varsayılan rolü", "The main address for this room is": "Bu oda için ana adres", "The phone number entered looks invalid": "Girilen telefon numarası geçersiz görünüyor", - "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Sağladığınız imza anahtarı %(userId)s aygıtından %(deviceId) ile eşleşiyor . Aygıt doğrulanmış olarak işaretlendi.", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Sağladığınız imza anahtarı %(userId)s aygıtından %(deviceId)s ile eşleşiyor . Aygıt doğrulanmış olarak işaretlendi.", "This action cannot be performed by a guest user. Please register to be able to do this.": "Bu eylem bir Misafir Kullanıcı tarafından yapılamaz . Lütfen bunu yapabilmek için Kaydolun .", "This email address is already in use": "Bu e-posta adresi zaten kullanımda", "This email address was not found": "Bu e-posta adresi bulunamadı", @@ -892,14 +892,14 @@ "Start chatting": "Sohbeti başlat", "Start Chatting": "Sohbeti Başlat", "Click on the button below to start chatting!": "Sohbeti başlatmak için aşağıdaki butona tıklayın!", - "$senderDisplayName changed the room avatar to ": "$senderDisplayName odanın avatarını olarak çevirdi", + "$senderDisplayName changed the room avatar to ": "$senderDisplayName odanın avatarını olarak çevirdi", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s odanın avatarını kaldırdı.", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s %(roomName)s için avatarı değiştirdi", "Username available": "Kullanıcı ismi uygun", "Username not available": "Kullanıcı ismi uygun değil", "Something went wrong!": "Bir şeyler yanlış gitti!", - "This will be your account name on the homeserver, or you can pick a different server.": "Bu sizin Ana Sunucunuzdaki hesap adınız olacak , veya farklı sunucu seçebilirsiniz.", - "If you already have a Matrix account you can log in instead.": "Eğer Matrix hesabınız varsa , bunun yerine Giriş Yapabilirsiniz .", + "This will be your account name on the homeserver, or you can pick a different server.": "Bu sizin Ana Sunucunuzdaki hesap adınız olacak , veya farklı sunucu seçebilirsiniz.", + "If you already have a Matrix account you can log in instead.": "Eğer Matrix hesabınız varsa , bunun yerine Giriş Yapabilirsiniz .", "Your browser does not support the required cryptography extensions": "Tarayıcınız gerekli şifreleme uzantılarını desteklemiyor", "Not a valid Riot keyfile": "Geçersiz bir Riot anahtar dosyası", "Authentication check failed: incorrect password?": "Kimlik doğrulama denetimi başarısız oldu : yanlış şifre ?", From 8f3eb89f8b0fc7568b4f5c087818fe2beac52748 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 23 Jun 2017 10:48:21 +0100 Subject: [PATCH 233/481] Fix potential race in setting client listeners --- src/components/structures/MatrixChat.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 0992d486f6..b618caa1c9 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -548,7 +548,12 @@ module.exports = React.createClass({ this._onLoggedOut(); break; case 'will_start_client': - this._onWillStartClient(); + this.setState({ready: false}, () => { + // if the client is about to start, we are, by definition, not ready. + // Set ready to false now, then it'll be set to true when the sync + // listener we set below fires. + this._onWillStartClient(); + }); break; case 'new_version': this.onVersion( @@ -1012,10 +1017,6 @@ module.exports = React.createClass({ */ _onWillStartClient() { const self = this; - // if the client is about to start, we are, by definition, not ready. - // Set ready to false now, then it'll be set to true when the sync - // listener we set below fires. - this.setState({ready: false}); // reset the 'have completed first sync' flag, // since we're about to start the client and therefore about From f5353fcdc54a09cf94e2fca51a70d2733acf24f3 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 23 Jun 2017 13:43:52 +0100 Subject: [PATCH 234/481] Only submit phone number when phone loginType is selected Otherwise submit a phoneNumber and phoneCountry of `null` (when logging in with email or username). Fixes https://github.com/vector-im/riot-web/issues/4000 --- src/components/views/login/PasswordLogin.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/components/views/login/PasswordLogin.js b/src/components/views/login/PasswordLogin.js index 46a48d14a0..54237bec19 100644 --- a/src/components/views/login/PasswordLogin.js +++ b/src/components/views/login/PasswordLogin.js @@ -69,10 +69,19 @@ class PasswordLogin extends React.Component { onSubmitForm(ev) { ev.preventDefault(); + if (this.state.loginType === PasswordLogin.LOGIN_FIELD_PHONE) { + this.props.onSubmit( + this.state.username, + this.state.phoneCountry, + this.state.phoneNumber, + this.state.password, + ); + return; + } this.props.onSubmit( this.state.username, - this.state.phoneCountry, - this.state.phoneNumber, + null, + null, this.state.password, ); } From c51255da40f2cf69ca1a2d9dc54189621a9a4958 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 23 Jun 2017 14:34:19 +0100 Subject: [PATCH 235/481] Submit empty string username when on phone number login --- src/components/views/login/PasswordLogin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/login/PasswordLogin.js b/src/components/views/login/PasswordLogin.js index 54237bec19..2c125be378 100644 --- a/src/components/views/login/PasswordLogin.js +++ b/src/components/views/login/PasswordLogin.js @@ -71,7 +71,7 @@ class PasswordLogin extends React.Component { ev.preventDefault(); if (this.state.loginType === PasswordLogin.LOGIN_FIELD_PHONE) { this.props.onSubmit( - this.state.username, + '', this.state.phoneCountry, this.state.phoneNumber, this.state.password, From ec36a348be008c84fbd13b80d2c2b2eeab983d4c Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 23 Jun 2017 14:48:15 +0100 Subject: [PATCH 236/481] comment why we send the empty string --- src/components/views/login/PasswordLogin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/login/PasswordLogin.js b/src/components/views/login/PasswordLogin.js index 2c125be378..9f855616fc 100644 --- a/src/components/views/login/PasswordLogin.js +++ b/src/components/views/login/PasswordLogin.js @@ -71,7 +71,7 @@ class PasswordLogin extends React.Component { ev.preventDefault(); if (this.state.loginType === PasswordLogin.LOGIN_FIELD_PHONE) { this.props.onSubmit( - '', + '', // XXX: Synapse breaks if you send null here: this.state.phoneCountry, this.state.phoneNumber, this.state.password, From 738f261d5da568c7b2c656a9885f0de3b490da68 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 23 Jun 2017 16:14:22 +0100 Subject: [PATCH 237/481] Add missing translations for RTE ops --- src/i18n/strings/en_EN.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index a4dcb2873f..ced98127a2 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -240,6 +240,7 @@ "demote": "demote", "Deops user with given id": "Deops user with given id", "Default": "Default", + "Define the power level of a user": "Define the power level of a user", "Device already verified!": "Device already verified!", "Device ID": "Device ID", "Device ID:": "Device ID:", @@ -581,6 +582,7 @@ "Unable to restore previous session": "Unable to restore previous session", "Unable to verify email address.": "Unable to verify email address.", "Unban": "Unban", + "Unbans user with given id": "Unbans user with given id", "%(senderName)s unbanned %(targetName)s.": "%(senderName)s unbanned %(targetName)s.", "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Unable to ascertain that the address this invite was sent to matches one associated with your account.", "Unable to capture screen": "Unable to capture screen", From 2efa099de28ffd1217e7287e5cbee17ed87de495 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 23 Jun 2017 17:02:54 +0100 Subject: [PATCH 238/481] Use function from HTMLUtils for sanitizing Encapsulates things a little nicer --- src/HtmlUtils.js | 12 +++++++++++- src/components/structures/GroupView.js | 26 ++++++++++---------------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/HtmlUtils.js b/src/HtmlUtils.js index aec32092ed..5c1c2881e5 100644 --- a/src/HtmlUtils.js +++ b/src/HtmlUtils.js @@ -107,7 +107,17 @@ export function stripParagraphs(html: string): string { return contentHTML; } -var sanitizeHtmlParams = { +/* + * Given an untrusted HTML string, return a React node with an sanitized version + * of that HTML. + */ +export function sanitizedHtmlNode(insaneHtml) { + const saneHtml = sanitizeHtml(insaneHtml, sanitizeHtmlParams); + + return
; +} + +const sanitizeHtmlParams = { allowedTags: [ 'font', // custom to matrix for IRC-style font coloring 'del', // for markdown diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 2368c44319..5c049b93be 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -16,8 +16,7 @@ limitations under the License. import MatrixClientPeg from '../../MatrixClientPeg'; import sdk from '../../index'; -import sanitizeHtml from "sanitize-html"; -import { sanitizeHtmlParams } from '../../HtmlUtils'; +import { sanitizedHtmlNode } from '../../HtmlUtils'; module.exports = React.createClass({ @@ -53,14 +52,13 @@ module.exports = React.createClass({ }, _loadGroupFromServer: function(groupId) { - const self = this; - MatrixClientPeg.get().getGroupSummary(groupId).done(function(res) { - self.setState({ + MatrixClientPeg.get().getGroupSummary(groupId).done((res) => { + this.setState({ phase: "GroupView.DISPLAY", summary: res, }); - }, function(err) { - self.setState({ + }, (err) => { + this.setState({ phase: err.errcode == 404 ? "GroupView.NOT_FOUND" :"GroupView.ERROR", summary: null, }); @@ -68,15 +66,11 @@ module.exports = React.createClass({ }, render: function() { - var BaseAvatar = sdk.getComponent("avatars.BaseAvatar"); - var Loader = sdk.getComponent("elements.Spinner"); + const BaseAvatar = sdk.getComponent("avatars.BaseAvatar"); + const Loader = sdk.getComponent("elements.Spinner"); if (this.state.phase == "GroupView.LOADING") { - return ( -
- -
- ); + return ; } else if (this.state.phase == "GroupView.DISPLAY") { const summary = this.state.summary; let avatar_url = null; @@ -85,7 +79,7 @@ module.exports = React.createClass({ } let description = null; if (summary.profile.long_description) { - description = sanitizeHtml(summary.profile.long_description); + description = sanitizedHtmlNode(summary.profile.long_description); } return (
@@ -112,7 +106,7 @@ module.exports = React.createClass({
-
+ {description}
); } else if (this.state.phase == "GroupView.NOT_FOUND") { From 004d4828f883ddbd30ac0c8f9dd52e68ad2a5bb4 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 23 Jun 2017 17:08:37 +0100 Subject: [PATCH 239/481] Make the tests pass sendTextMessage is not called when RTE Markdown is enabled, but rather sendHtmlMessage --- test/components/views/rooms/MessageComposerInput-test.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/components/views/rooms/MessageComposerInput-test.js b/test/components/views/rooms/MessageComposerInput-test.js index 67e788e2eb..e2e2836a50 100644 --- a/test/components/views/rooms/MessageComposerInput-test.js +++ b/test/components/views/rooms/MessageComposerInput-test.js @@ -99,17 +99,18 @@ describe('MessageComposerInput', () => { }); it('should not change content unnecessarily on Markdown -> RTE conversion', () => { - const spy = sinon.spy(client, 'sendTextMessage'); + const spy = sinon.spy(client, 'sendHtmlMessage'); mci.enableRichtext(false); addTextToDraft('a'); mci.handleKeyCommand('toggle-mode'); mci.handleReturn(sinon.stub()); + expect(spy.calledOnce).toEqual(true); expect(spy.args[0][1]).toEqual('a'); }); it('should send emoji messages in rich text', () => { - const spy = sinon.spy(client, 'sendTextMessage'); + const spy = sinon.spy(client, 'sendHtmlMessage'); mci.enableRichtext(true); addTextToDraft('☹'); mci.handleReturn(sinon.stub()); From 89afcfd897775e8a0b664c2e8782ba85be814adf Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 23 Jun 2017 17:35:07 +0100 Subject: [PATCH 240/481] Linting --- src/ComposerHistoryManager.js | 4 ++-- src/RichText.js | 2 +- src/autocomplete/CommandProvider.js | 4 ++-- src/autocomplete/FuzzyMatcher.js | 14 ++++++++------ src/autocomplete/QueryMatcher.js | 4 +++- src/components/structures/UserSettings.js | 8 +++++--- src/components/views/rooms/MessageComposerInput.js | 4 ++-- 7 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/ComposerHistoryManager.js b/src/ComposerHistoryManager.js index face75ea8a..ef9232c684 100644 --- a/src/ComposerHistoryManager.js +++ b/src/ComposerHistoryManager.js @@ -21,14 +21,14 @@ class HistoryItem { let {message} = this; if (format === 'markdown') { if (this.format === 'html') { - message = _flow([RichText.HTMLtoContentState, RichText.stateToMarkdown])(message); + message = _flow([RichText.htmlToContentState, RichText.stateToMarkdown])(message); } return ContentState.createFromText(message); } else { if (this.format === 'markdown') { message = new Markdown(message).toHTML(); } - return RichText.HTMLtoContentState(message); + return RichText.htmlToContentState(message); } } } diff --git a/src/RichText.js b/src/RichText.js index 6edde23129..f2f2d533a8 100644 --- a/src/RichText.js +++ b/src/RichText.js @@ -50,7 +50,7 @@ export const contentStateToHTML = (contentState: ContentState) => { }); }; -export function HTMLtoContentState(html: string): ContentState { +export function htmlToContentState(html: string): ContentState { return ContentState.createFromBlockArray(convertFromHTML(html)); } diff --git a/src/autocomplete/CommandProvider.js b/src/autocomplete/CommandProvider.js index c54d0fd49e..9ae3a7badb 100644 --- a/src/autocomplete/CommandProvider.js +++ b/src/autocomplete/CommandProvider.js @@ -77,7 +77,7 @@ const COMMANDS = [ command: '/op', args: ' []', description: 'Define the power level of a user', - } + }, ]; const COMMAND_RE = /(^\/\w*)/g; @@ -96,7 +96,7 @@ export default class CommandProvider extends AutocompleteProvider { let completions = []; const {command, range} = this.getCurrentCommand(query, selection); if (command) { - completions = this.matcher.match(command[0]).map(result => { + completions = this.matcher.match(command[0]).map((result) => { return { completion: result.command + ' ', component: (, keys: Array): KeyMap { const keyMap = new KeyMap(); @@ -48,7 +50,7 @@ class FuzzyMatcher { keyMap.objectMap = map; keyMap.priorityMap = priorities; - keyMap.keys = _sortBy(_keys(map), [value => priorities[value]]); + keyMap.keys = _sortBy(_keys(map), [(value) => priorities[value]]); return keyMap; } @@ -74,15 +76,15 @@ class FuzzyMatcher { match(query: String): Array { const candidates = this.matcher.transduce(query, this.options.distance || DEFAULT_DISTANCE); // TODO FIXME This is hideous. Clean up when possible. - const val = _sortedUniq(_sortBy(_flatMap(candidates, candidate => { - return this.keyMap.objectMap[candidate[0]].map(value => { + const val = _sortedUniq(_sortBy(_flatMap(candidates, (candidate) => { + return this.keyMap.objectMap[candidate[0]].map((value) => { return { distance: candidate[1], ...value, }; }); }), - [candidate => candidate.distance, candidate => this.keyMap.priorityMap[candidate]])); + [(candidate) => candidate.distance, (candidate) => this.keyMap.priorityMap[candidate]])); console.log(val); return val; } diff --git a/src/autocomplete/QueryMatcher.js b/src/autocomplete/QueryMatcher.js index b4c27a7179..ead7ea8047 100644 --- a/src/autocomplete/QueryMatcher.js +++ b/src/autocomplete/QueryMatcher.js @@ -14,13 +14,15 @@ class KeyMap { export default class QueryMatcher { /** - * Given an array of objects and keys, returns a KeyMap + * @param {object[]} objects the objects to perform a match on + * @param {string[]} keys an array of keys within each object to match on * Keys can refer to object properties by name and as in JavaScript (for nested properties) * * To use, simply presort objects by required criteria, run through this function and create a QueryMatcher with the * resulting KeyMap. * * TODO: Handle arrays and objects (Fuse did this, RoomProvider uses it) + * @return {KeyMap} */ static valuesToKeyMap(objects: Array, keys: Array): KeyMap { const keyMap = new KeyMap(); diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index d31bd7fc7c..9171b081ab 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -642,6 +642,10 @@ module.exports = React.createClass({ }, _renderUserInterfaceSettings: function() { + // TODO: this ought to be a separate component so that we don't need + // to rebind the onChange each time we render + const onChange = (e) => + UserSettingsStore.setLocalSetting('autocompleteDelay', + e.target.value); return (

{ _t("User Interface") }

@@ -657,9 +661,7 @@ module.exports = React.createClass({ UserSettingsStore.setLocalSetting('autocompleteDelay', + e.target.value) - } + onChange={onChange} /> diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 09183bfab6..4d7c0f7a80 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -201,7 +201,7 @@ export default class MessageComposerInput extends React.Component { let {body, formatted_body} = payload.event.getContent(); formatted_body = formatted_body || escape(body); if (formatted_body) { - let content = RichText.HTMLtoContentState(`
${formatted_body}
`); + let content = RichText.htmlToContentState(`
${formatted_body}
`); if (!this.state.isRichtextEnabled) { content = ContentState.createFromText(RichText.stateToMarkdown(content)); } @@ -350,7 +350,7 @@ export default class MessageComposerInput extends React.Component { let contentState = null; if (enabled) { const md = new Markdown(this.state.editorState.getCurrentContent().getPlainText()); - contentState = RichText.HTMLtoContentState(md.toHTML()); + contentState = RichText.htmlToContentState(md.toHTML()); } else { let markdown = RichText.stateToMarkdown(this.state.editorState.getCurrentContent()); if (markdown[markdown.length - 1] === '\n') { From ddb84f034e5d435769e5ba11afaa5b145871f4d9 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 23 Jun 2017 17:52:50 +0100 Subject: [PATCH 241/481] Update tab-complete state onRoom received after joining As opposed to doing it when the component mounts. Fixes https://github.com/vector-im/riot-web/issues/3700 (hopefully) --- src/components/structures/RoomView.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index da9778cd12..67b523bfaf 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -234,8 +234,6 @@ module.exports = React.createClass({ // making it impossible to indicate a newly joined room. const room = this.state.room; if (room) { - UserProvider.getInstance().setUserListFromRoom(room); - this.tabComplete.loadEntries(room); this.setState({ unsentMessageError: this._getUnsentMessageError(room), }); @@ -523,6 +521,8 @@ module.exports = React.createClass({ this._warnAboutEncryption(room); this._calculatePeekRules(room); this._updatePreviewUrlVisibility(room); + this.tabComplete.loadEntries(room); + UserProvider.getInstance().setUserListFromRoom(room); }, _warnAboutEncryption: function(room) { From c0e48c72fc51e2aea73d4d409bfe04e285610a61 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 23 Jun 2017 18:03:32 +0100 Subject: [PATCH 242/481] Remove dep on liblevenstein While we don't actually use it --- package.json | 1 - src/autocomplete/FuzzyMatcher.js | 170 +++++++++++++++---------------- 2 files changed, 85 insertions(+), 86 deletions(-) diff --git a/package.json b/package.json index 76323685ac..8d638a5928 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,6 @@ "glob": "^5.0.14", "highlight.js": "^8.9.1", "isomorphic-fetch": "^2.2.1", - "liblevenshtein": "^2.0.4", "linkifyjs": "^2.1.3", "lodash": "^4.13.1", "matrix-js-sdk": "matrix-org/matrix-js-sdk#develop", diff --git a/src/autocomplete/FuzzyMatcher.js b/src/autocomplete/FuzzyMatcher.js index 291e63d604..230cb1dbd2 100644 --- a/src/autocomplete/FuzzyMatcher.js +++ b/src/autocomplete/FuzzyMatcher.js @@ -1,91 +1,91 @@ -import Levenshtein from 'liblevenshtein'; -import _at from 'lodash/at'; -import _flatMap from 'lodash/flatMap'; -import _sortBy from 'lodash/sortBy'; -import _sortedUniq from 'lodash/sortedUniq'; -import _keys from 'lodash/keys'; - -class KeyMap { - keys: Array; - objectMap: {[String]: Array}; - priorityMap: {[String]: number} -} - -const DEFAULT_RESULT_COUNT = 10; -const DEFAULT_DISTANCE = 5; +//import Levenshtein from 'liblevenshtein'; +//import _at from 'lodash/at'; +//import _flatMap from 'lodash/flatMap'; +//import _sortBy from 'lodash/sortBy'; +//import _sortedUniq from 'lodash/sortedUniq'; +//import _keys from 'lodash/keys'; +// +//class KeyMap { +// keys: Array; +// objectMap: {[String]: Array}; +// priorityMap: {[String]: number} +//} +// +//const DEFAULT_RESULT_COUNT = 10; +//const DEFAULT_DISTANCE = 5; // FIXME Until Fuzzy matching works better, we use prefix matching. import PrefixMatcher from './QueryMatcher'; export default PrefixMatcher; -class FuzzyMatcher { // eslint-disable-line no-unused-vars - /** - * @param {object[]} objects the objects to perform a match on - * @param {string[]} keys an array of keys within each object to match on - * Keys can refer to object properties by name and as in JavaScript (for nested properties) - * - * To use, simply presort objects by required criteria, run through this function and create a FuzzyMatcher with the - * resulting KeyMap. - * - * TODO: Handle arrays and objects (Fuse did this, RoomProvider uses it) - * @return {KeyMap} - */ - static valuesToKeyMap(objects: Array, keys: Array): KeyMap { - const keyMap = new KeyMap(); - const map = {}; - const priorities = {}; - - objects.forEach((object, i) => { - const keyValues = _at(object, keys); - console.log(object, keyValues, keys); - for (const keyValue of keyValues) { - if (!map.hasOwnProperty(keyValue)) { - map[keyValue] = []; - } - map[keyValue].push(object); - } - priorities[object] = i; - }); - - keyMap.objectMap = map; - keyMap.priorityMap = priorities; - keyMap.keys = _sortBy(_keys(map), [(value) => priorities[value]]); - return keyMap; - } - - constructor(objects: Array, options: {[Object]: Object} = {}) { - this.options = options; - this.keys = options.keys; - this.setObjects(objects); - } - - setObjects(objects: Array) { - this.keyMap = FuzzyMatcher.valuesToKeyMap(objects, this.keys); - console.log(this.keyMap.keys); - this.matcher = new Levenshtein.Builder() - .dictionary(this.keyMap.keys, true) - .algorithm('transposition') - .sort_candidates(false) - .case_insensitive_sort(true) - .include_distance(true) - .maximum_candidates(this.options.resultCount || DEFAULT_RESULT_COUNT) // result count 0 doesn't make much sense - .build(); - } - - match(query: String): Array { - const candidates = this.matcher.transduce(query, this.options.distance || DEFAULT_DISTANCE); - // TODO FIXME This is hideous. Clean up when possible. - const val = _sortedUniq(_sortBy(_flatMap(candidates, (candidate) => { - return this.keyMap.objectMap[candidate[0]].map((value) => { - return { - distance: candidate[1], - ...value, - }; - }); - }), - [(candidate) => candidate.distance, (candidate) => this.keyMap.priorityMap[candidate]])); - console.log(val); - return val; - } -} +//class FuzzyMatcher { // eslint-disable-line no-unused-vars +// /** +// * @param {object[]} objects the objects to perform a match on +// * @param {string[]} keys an array of keys within each object to match on +// * Keys can refer to object properties by name and as in JavaScript (for nested properties) +// * +// * To use, simply presort objects by required criteria, run through this function and create a FuzzyMatcher with the +// * resulting KeyMap. +// * +// * TODO: Handle arrays and objects (Fuse did this, RoomProvider uses it) +// * @return {KeyMap} +// */ +// static valuesToKeyMap(objects: Array, keys: Array): KeyMap { +// const keyMap = new KeyMap(); +// const map = {}; +// const priorities = {}; +// +// objects.forEach((object, i) => { +// const keyValues = _at(object, keys); +// console.log(object, keyValues, keys); +// for (const keyValue of keyValues) { +// if (!map.hasOwnProperty(keyValue)) { +// map[keyValue] = []; +// } +// map[keyValue].push(object); +// } +// priorities[object] = i; +// }); +// +// keyMap.objectMap = map; +// keyMap.priorityMap = priorities; +// keyMap.keys = _sortBy(_keys(map), [(value) => priorities[value]]); +// return keyMap; +// } +// +// constructor(objects: Array, options: {[Object]: Object} = {}) { +// this.options = options; +// this.keys = options.keys; +// this.setObjects(objects); +// } +// +// setObjects(objects: Array) { +// this.keyMap = FuzzyMatcher.valuesToKeyMap(objects, this.keys); +// console.log(this.keyMap.keys); +// this.matcher = new Levenshtein.Builder() +// .dictionary(this.keyMap.keys, true) +// .algorithm('transposition') +// .sort_candidates(false) +// .case_insensitive_sort(true) +// .include_distance(true) +// .maximum_candidates(this.options.resultCount || DEFAULT_RESULT_COUNT) // result count 0 doesn't make much sense +// .build(); +// } +// +// match(query: String): Array { +// const candidates = this.matcher.transduce(query, this.options.distance || DEFAULT_DISTANCE); +// // TODO FIXME This is hideous. Clean up when possible. +// const val = _sortedUniq(_sortBy(_flatMap(candidates, (candidate) => { +// return this.keyMap.objectMap[candidate[0]].map((value) => { +// return { +// distance: candidate[1], +// ...value, +// }; +// }); +// }), +// [(candidate) => candidate.distance, (candidate) => this.keyMap.priorityMap[candidate]])); +// console.log(val); +// return val; +// } +//} From 9404dd30c5bd72861488f23260b08028d8a0c8e5 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 23 Jun 2017 18:19:06 +0100 Subject: [PATCH 243/481] Use for strikeout We've swapped to commonmark, which uses instead of ~~ for strikeout, so make the RTE insert when we apply strikeout. Also, when ~~ is inserted, transform them into for simplicity. This means giving an input of ~~test~~ is effectively the same as giving an input of test. --- src/Markdown.js | 3 +++ src/components/views/rooms/MessageComposerInput.js | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Markdown.js b/src/Markdown.js index 4a46ce4f24..134520b775 100644 --- a/src/Markdown.js +++ b/src/Markdown.js @@ -62,6 +62,9 @@ function is_multi_line(node) { */ export default class Markdown { constructor(input) { + // Support GH-style strikeout + input = input.replace(/~~(.*?)~~/g, '$1'); + this.input = input; const parser = new commonmark.Parser(); diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 4d7c0f7a80..5ea92d18ce 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -397,7 +397,7 @@ export default class MessageComposerInput extends React.Component { 'bold': (text) => `**${text}**`, 'italic': (text) => `*${text}*`, 'underline': (text) => `_${text}_`, // there's actually no valid underline in Markdown, but *shrug* - 'strike': (text) => `~~${text}~~`, + 'strike': (text) => `${text}`, 'code-block': (text) => `\`\`\`\n${text}\n\`\`\``, 'blockquote': (text) => text.split('\n').map((line) => `> ${line}\n`).join(''), 'unordered-list-item': (text) => text.split('\n').map((line) => `\n- ${line}`).join(''), From f0f4a16e979b5c595ae77638a557852e27a0ce43 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 23 Jun 2017 18:28:02 +0100 Subject: [PATCH 244/481] Translate autocomplete delay --- src/components/structures/UserSettings.js | 2 +- src/i18n/strings/en_EN.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index 9171b081ab..ef574d2ed6 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -656,7 +656,7 @@ module.exports = React.createClass({ - +
Autocomplete Delay (ms): {_t('Autocomplete Delay (ms):')} Date: Fri, 23 Jun 2017 18:30:16 +0100 Subject: [PATCH 245/481] Add copyright headers --- src/ComposerHistoryManager.js | 15 +++++++++++++++ src/autocomplete/FuzzyMatcher.js | 16 ++++++++++++++++ src/autocomplete/QueryMatcher.js | 15 +++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/src/ComposerHistoryManager.js b/src/ComposerHistoryManager.js index ef9232c684..3e19a78bfe 100644 --- a/src/ComposerHistoryManager.js +++ b/src/ComposerHistoryManager.js @@ -1,4 +1,19 @@ //@flow +/* +Copyright 2017 Aviral Dasgupta + +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 {ContentState} from 'draft-js'; import * as RichText from './RichText'; diff --git a/src/autocomplete/FuzzyMatcher.js b/src/autocomplete/FuzzyMatcher.js index 230cb1dbd2..1aa0782c22 100644 --- a/src/autocomplete/FuzzyMatcher.js +++ b/src/autocomplete/FuzzyMatcher.js @@ -1,3 +1,19 @@ +/* +Copyright 2017 Aviral Dasgupta + +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 Levenshtein from 'liblevenshtein'; //import _at from 'lodash/at'; //import _flatMap from 'lodash/flatMap'; diff --git a/src/autocomplete/QueryMatcher.js b/src/autocomplete/QueryMatcher.js index ead7ea8047..01fc251318 100644 --- a/src/autocomplete/QueryMatcher.js +++ b/src/autocomplete/QueryMatcher.js @@ -1,4 +1,19 @@ //@flow +/* +Copyright 2017 Aviral Dasgupta + +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 _at from 'lodash/at'; import _flatMap from 'lodash/flatMap'; From d4034105a413bd012ada2c7a56a08c8f3544716a Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 26 Jun 2017 10:10:31 +0100 Subject: [PATCH 246/481] Revert support for ~~gh strikeout~~ --- src/Markdown.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/Markdown.js b/src/Markdown.js index 134520b775..4a46ce4f24 100644 --- a/src/Markdown.js +++ b/src/Markdown.js @@ -62,9 +62,6 @@ function is_multi_line(node) { */ export default class Markdown { constructor(input) { - // Support GH-style strikeout - input = input.replace(/~~(.*?)~~/g, '$1'); - this.input = input; const parser = new commonmark.Parser(); From edae66fd3a96d1a77cd68b13e5584c44cb57a570 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Mon, 26 Jun 2017 14:28:56 +0100 Subject: [PATCH 247/481] fix one major cause of stuck unread notifications --- src/Unread.js | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/Unread.js b/src/Unread.js index 67166dc24f..8a70291cf2 100644 --- a/src/Unread.js +++ b/src/Unread.js @@ -37,7 +37,26 @@ module.exports = { }, doesRoomHaveUnreadMessages: function(room) { - var readUpToId = room.getEventReadUpTo(MatrixClientPeg.get().credentials.userId); + var myUserId = MatrixClientPeg.get().credentials.userId; + + // get the most recent read receipt sent by our account. + // N.B. this is NOT a read marker (RM, aka "read up to marker"), + // despite the name of the method :(( + var readUpToId = room.getEventReadUpTo(myUserId); + + // as we don't send RRs for our own messages, make sure we special case that + // if *we* sent the last message into the room, we consider it not unread! + // Should fix: https://github.com/vector-im/riot-web/issues/3263 + // https://github.com/vector-im/riot-web/issues/2427 + // ...and possibly some of the others at + // https://github.com/vector-im/riot-web/issues/3363 + if (room.timeline.length && + room.timeline[room.timeline.length - 1].sender && + room.timeline[room.timeline.length - 1].sender.userId === myUserId) + { + return false; + } + // this just looks at whatever history we have, which if we've only just started // up probably won't be very much, so if the last couple of events are ones that // don't count, we don't know if there are any events that do count between where From 661e6a6d01c1d760d1ee5192b3ba521d9cc568c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20L=C3=B6thberg?= Date: Mon, 12 Jun 2017 02:03:38 +0200 Subject: [PATCH 248/481] HtmlUtils: Allow language- classes on code blocks through the sanitizer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is required to be able to specify the highlight language in fenced blocks like the following: ```python print("foo") ``` Signed-off-by: Johannes Löthberg --- src/HtmlUtils.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/HtmlUtils.js b/src/HtmlUtils.js index aec32092ed..a32d05e4ff 100644 --- a/src/HtmlUtils.js +++ b/src/HtmlUtils.js @@ -124,6 +124,7 @@ var sanitizeHtmlParams = { // would make sense if we did img: ['src'], ol: ['start'], + code: ['class'], // We don't actually allow all classes, we filter them in transformTags }, // Lots of these won't come up by default because we don't allow them selfClosing: ['img', 'br', 'hr', 'area', 'base', 'basefont', 'input', 'link', 'meta'], @@ -165,6 +166,19 @@ var sanitizeHtmlParams = { attribs.rel = 'noopener'; // https://mathiasbynens.github.io/rel-noopener/ return { tagName: tagName, attribs : attribs }; }, + 'code': function(tagName, attribs) { + if (typeof attribs.class !== 'undefined') { + // Filter out all classes other than ones starting with language- for syntax highlighting. + let classes = attribs.class.split(/\s+/).filter(function(cl) { + return cl.startsWith('language-'); + }); + attribs.class = classes.join(' '); + } + return { + tagName: tagName, + attribs: attribs, + }; + }, '*': function(tagName, attribs) { // Delete any style previously assigned, style is an allowedTag for font and span // because attributes are stripped after transforming From 48c32172fd10d9fc2109cde4013300e420cbc0e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20L=C3=B6thberg?= Date: Mon, 12 Jun 2017 02:13:10 +0200 Subject: [PATCH 249/481] TextualBody: only highlight code block if language was specified MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The highlight.js autodetection is finicky and often wrong, so disable highlighting unless the language was explicitly specified, or if the user has explicitly enabled it in the settings. Fixes vector-im/riot-web#508. Signed-off-by: Johannes Löthberg --- src/components/structures/UserSettings.js | 4 ++++ src/components/views/messages/TextualBody.js | 14 +++++++++++++- src/i18n/strings/en_EN.json | 1 + 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index ef574d2ed6..bfbb9831b0 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -93,6 +93,10 @@ const SETTINGS_LABELS = [ id: 'disableMarkdown', label: 'Disable markdown formatting', }, + { + id: 'enableSyntaxHighlightLanguageDetection', + label: 'Enable automatic language detection for syntax highlighting', + }, /* { id: 'useFixedWidthFont', diff --git a/src/components/views/messages/TextualBody.js b/src/components/views/messages/TextualBody.js index d5a1977cdd..190b1341c3 100644 --- a/src/components/views/messages/TextualBody.js +++ b/src/components/views/messages/TextualBody.js @@ -29,6 +29,7 @@ import Modal from '../../../Modal'; import SdkConfig from '../../../SdkConfig'; import dis from '../../../dispatcher'; import { _t } from '../../../languageHandler'; +import UserSettingsStore from "../../../UserSettingsStore"; linkifyMatrix(linkify); @@ -90,7 +91,18 @@ module.exports = React.createClass({ setTimeout(() => { if (this._unmounted) return; for (let i = 0; i < blocks.length; i++) { - highlight.highlightBlock(blocks[i]); + if (UserSettingsStore.getSyncedSetting("enableSyntaxHighlightLanguageDetection", false)) { + highlight.highlightBlock(blocks[i]) + } else { + // Only syntax highlight if there's a class starting with language- + let classes = blocks[i].className.split(/\s+/).filter(function (cl) { + return cl.startsWith('language-'); + }); + + if (classes.length != 0) { + highlight.highlightBlock(blocks[i]); + } + } } }, 10); } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 59853b6e93..6cf2c63785 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -268,6 +268,7 @@ "Email address (optional)": "Email address (optional)", "Email, name or matrix ID": "Email, name or matrix ID", "Emoji": "Emoji", + "Enable automatic language detection for syntax highlighting": "Enable automatic language detection for syntax highlighting", "Enable encryption": "Enable encryption", "Enable Notifications": "Enable Notifications", "enabled": "enabled", From a26498bc6c17cfffb0f0bff0cfb69f6b81b785d7 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 26 Jun 2017 17:38:10 +0100 Subject: [PATCH 250/481] Make 'group not found' work --- src/components/structures/GroupView.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 5c049b93be..94d7f1c422 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -59,7 +59,7 @@ module.exports = React.createClass({ }); }, (err) => { this.setState({ - phase: err.errcode == 404 ? "GroupView.NOT_FOUND" :"GroupView.ERROR", + phase: err.httpStatus == 404 ? "GroupView.NOT_FOUND" :"GroupView.ERROR", summary: null, }); }); @@ -110,9 +110,11 @@ module.exports = React.createClass({ ); } else if (this.state.phase == "GroupView.NOT_FOUND") { -
- Group {this.props.groupId} not found -
+ return ( +
+ Group {this.props.groupId} not found +
+ ); } else { return (
From 812b3643dee3003f698138949b2a0a563aa59612 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 26 Jun 2017 17:47:17 +0100 Subject: [PATCH 251/481] Add message for HSes that don't support groups Also add an unrelated missed translation --- src/components/structures/GroupView.js | 8 ++++++++ src/i18n/strings/en_EN.json | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 94d7f1c422..a212fe336f 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -17,6 +17,7 @@ limitations under the License. import MatrixClientPeg from '../../MatrixClientPeg'; import sdk from '../../index'; import { sanitizedHtmlNode } from '../../HtmlUtils'; +import { _t } from '../../languageHandler'; module.exports = React.createClass({ @@ -30,6 +31,7 @@ module.exports = React.createClass({ return { phase: "GroupView.LOADING", // LOADING / DISPLAY / ERROR / NOT_FOUND summary: null, + error: null, }; }, @@ -61,6 +63,7 @@ module.exports = React.createClass({ this.setState({ phase: err.httpStatus == 404 ? "GroupView.NOT_FOUND" :"GroupView.ERROR", summary: null, + error: err, }); }); }, @@ -116,9 +119,14 @@ module.exports = React.createClass({
); } else { + let extraText; + if (this.state.error.errcode === 'M_UNRECOGNIZED') { + extraText =
{_t('This Home server does not support groups')}
; + } return (
Failed to load {this.props.groupId} + {extraText}
); } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index a4dcb2873f..c6bd304428 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -920,5 +920,7 @@ "Ignore request": "Ignore request", "You added a new device '%(displayName)s', which is requesting encryption keys.": "You added a new device '%(displayName)s', which is requesting encryption keys.", "Your unverified device '%(displayName)s' is requesting encryption keys.": "Your unverified device '%(displayName)s' is requesting encryption keys.", - "Encryption key request": "Encryption key request" + "Encryption key request": "Encryption key request", + "This Home server does not support groups": "This Home server does not support groups", + "Loading device info...": "Loading device info..." } From fbaa3de28b74d45eed197e15e30437c884f97a04 Mon Sep 17 00:00:00 2001 From: lukebarnard Date: Mon, 26 Jun 2017 22:22:03 +0100 Subject: [PATCH 252/481] Null-guard m.video info Fixes https://github.com/vector-im/riot-web/issues/4423 --- src/components/views/messages/MVideoBody.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/messages/MVideoBody.js b/src/components/views/messages/MVideoBody.js index 46d8366592..f31b94df80 100644 --- a/src/components/views/messages/MVideoBody.js +++ b/src/components/views/messages/MVideoBody.js @@ -79,7 +79,7 @@ module.exports = React.createClass({ const content = this.props.mxEvent.getContent(); if (content.file !== undefined) { return this.state.decryptedThumbnailUrl; - } else if (content.info.thumbnail_url) { + } else if (content.info && content.info.thumbnail_url) { return MatrixClientPeg.get().mxcUrlToHttp(content.info.thumbnail_url); } else { return null; From c033d5defd02aafad7ba292f6d8648fdf3065111 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 27 Jun 2017 09:58:29 +0100 Subject: [PATCH 253/481] Missing React import --- src/components/structures/GroupView.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index a212fe336f..fcb1885261 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -14,6 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +import React from 'react'; import MatrixClientPeg from '../../MatrixClientPeg'; import sdk from '../../index'; import { sanitizedHtmlNode } from '../../HtmlUtils'; From f0aaca0a31166379461c625e71dbca8c47722a27 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 27 Jun 2017 10:05:05 +0100 Subject: [PATCH 254/481] Fix some PR feedback --- src/components/structures/GroupView.js | 14 +++++--------- src/components/structures/LoggedInView.js | 3 +-- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index fcb1885261..9140ee2c71 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -37,10 +37,6 @@ module.exports = React.createClass({ }, componentWillMount: function() { - this.setState({ - phase: "GroupView.LOADING", - summary: null, - }) this._loadGroupFromServer(this.props.groupId) }, @@ -62,7 +58,7 @@ module.exports = React.createClass({ }); }, (err) => { this.setState({ - phase: err.httpStatus == 404 ? "GroupView.NOT_FOUND" :"GroupView.ERROR", + phase: err.httpStatus === 404 ? "GroupView.NOT_FOUND" : "GroupView.ERROR", summary: null, error: err, }); @@ -77,9 +73,9 @@ module.exports = React.createClass({ return ; } else if (this.state.phase == "GroupView.DISPLAY") { const summary = this.state.summary; - let avatar_url = null; - if (summary.profile.avatar_url) { - avatar_url = MatrixClientPeg.get().mxcUrlToHttp(summary.profile.avatar_url); + let avatarUrl = null; + if (summary.profile.avatarUrl) { + avatarUrl = MatrixClientPeg.get().mxcUrlToHttp(summary.profile.avatarUrl); } let description = null; if (summary.profile.long_description) { @@ -90,7 +86,7 @@ module.exports = React.createClass({
-
diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js index 988c0f5ccc..aef7fe9cce 100644 --- a/src/components/structures/LoggedInView.js +++ b/src/components/structures/LoggedInView.js @@ -282,10 +282,9 @@ export default React.createClass({ right_panel = ; break; case PageTypes.GroupView: - // TODO page_element = + />; break; } From 867b47f4a21ccc26ed4f51b66e0f0763222b7682 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 27 Jun 2017 10:28:46 +0100 Subject: [PATCH 255/481] PR feedback: remove phases --- src/components/structures/GroupView.js | 46 +++++++++++++------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 9140ee2c71..8a28a31001 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -30,21 +30,20 @@ module.exports = React.createClass({ getInitialState: function() { return { - phase: "GroupView.LOADING", // LOADING / DISPLAY / ERROR / NOT_FOUND summary: null, error: null, }; }, componentWillMount: function() { - this._loadGroupFromServer(this.props.groupId) + this._loadGroupFromServer(this.props.groupId); }, componentWillReceiveProps: function(new_props) { if (this.props.groupId != new_props.groupId) { this.setState({ - phase: "GroupView.LOADING", summary: null, + error: null, }) this._loadGroupFromServer(new_props.groupId); } @@ -53,12 +52,11 @@ module.exports = React.createClass({ _loadGroupFromServer: function(groupId) { MatrixClientPeg.get().getGroupSummary(groupId).done((res) => { this.setState({ - phase: "GroupView.DISPLAY", summary: res, + error: null, }); }, (err) => { this.setState({ - phase: err.httpStatus === 404 ? "GroupView.NOT_FOUND" : "GroupView.ERROR", summary: null, error: err, }); @@ -69,9 +67,9 @@ module.exports = React.createClass({ const BaseAvatar = sdk.getComponent("avatars.BaseAvatar"); const Loader = sdk.getComponent("elements.Spinner"); - if (this.state.phase == "GroupView.LOADING") { + if (this.state.summary === null && this.state.error === null) { return ; - } else if (this.state.phase == "GroupView.DISPLAY") { + } else if (this.state.summary) { const summary = this.state.summary; let avatarUrl = null; if (summary.profile.avatarUrl) { @@ -109,23 +107,25 @@ module.exports = React.createClass({ {description}
); - } else if (this.state.phase == "GroupView.NOT_FOUND") { - return ( -
- Group {this.props.groupId} not found -
- ); - } else { - let extraText; - if (this.state.error.errcode === 'M_UNRECOGNIZED') { - extraText =
{_t('This Home server does not support groups')}
; + } else if (this.state.error) { + if (this.state.error.httpStatus === 404) { + return ( +
+ Group {this.props.groupId} not found +
+ ); + } else { + let extraText; + if (this.state.error.errcode === 'M_UNRECOGNIZED') { + extraText =
{_t('This Home server does not support groups')}
; + } + return ( +
+ Failed to load {this.props.groupId} + {extraText} +
+ ); } - return ( -
- Failed to load {this.props.groupId} - {extraText} -
- ); } }, }); From 971f7ad0453bbdd8f33e7541339a0f43b52725a6 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 27 Jun 2017 10:32:21 +0100 Subject: [PATCH 256/481] Fix avatars --- src/components/structures/GroupView.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 8a28a31001..1a45c2ff3c 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -72,8 +72,8 @@ module.exports = React.createClass({ } else if (this.state.summary) { const summary = this.state.summary; let avatarUrl = null; - if (summary.profile.avatarUrl) { - avatarUrl = MatrixClientPeg.get().mxcUrlToHttp(summary.profile.avatarUrl); + if (summary.profile.avatar_url) { + avatarUrl = MatrixClientPeg.get().mxcUrlToHttp(summary.profile.avatar_url); } let description = null; if (summary.profile.long_description) { From e343e993557f3cc3651967611a846efc29c35899 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 27 Jun 2017 11:28:38 +0100 Subject: [PATCH 257/481] Cleaned up unused files and removed commented code --- src/components/structures/AppWidget.js | 28 ------ src/components/structures/ModularWidgets.js | 35 ------- src/components/views/elements/AppIconTile.js | 58 ------------ src/components/views/elements/AppTile.js | 14 +-- src/components/views/elements/MemberTile.js | 97 -------------------- src/components/views/rooms/AppsDrawer.js | 2 +- 6 files changed, 3 insertions(+), 231 deletions(-) delete mode 100644 src/components/structures/AppWidget.js delete mode 100644 src/components/structures/ModularWidgets.js delete mode 100644 src/components/views/elements/AppIconTile.js delete mode 100644 src/components/views/elements/MemberTile.js diff --git a/src/components/structures/AppWidget.js b/src/components/structures/AppWidget.js deleted file mode 100644 index 283efb9fcd..0000000000 --- a/src/components/structures/AppWidget.js +++ /dev/null @@ -1,28 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket 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 ModularWidgets from './ModularWidgets'; - -class AppWidget { - constructor(type, url, options) { - if(!ModularWidgets.widgetTypes.includes(type) || url === "") { - return null; - } - this.type = type; - this.url = url; - this.options = options || {}; - } -} -export default AppWidget; diff --git a/src/components/structures/ModularWidgets.js b/src/components/structures/ModularWidgets.js deleted file mode 100644 index 7d08401d52..0000000000 --- a/src/components/structures/ModularWidgets.js +++ /dev/null @@ -1,35 +0,0 @@ -class ModularWidgets { - static widgetTypes = [ - { - type: 'etherpad', - icon: 'http://localhost:8000/static/etherpad.svg', - name: 'Etherpad', - description: 'Collaborative text editor', - }, - { - type: 'grafana', - icon: 'http://localhost:8000/static/grafana.svg', - name: 'Grafana', - description: 'Graph and monitor all the things!', - }, - { - type: 'jitsi', - icon: 'http://localhost:8000/static/jitsi.svg', - name: 'jitsi', - description: 'Jitsi video conference', - }, - { - type: 'vrdemo', - icon: 'http://localhost:8000/static/cardboard.png', - name: 'vrdemo', - description: 'Matrix VR Demo', - }, - { - type: 'custom', - icon: 'http://localhost:8000/static/blocks.png', - name: 'Custom Widget', - description: 'Add your own custom widget', - }, - ]; -} -export default ModularWidgets; diff --git a/src/components/views/elements/AppIconTile.js b/src/components/views/elements/AppIconTile.js deleted file mode 100644 index 32fcd74111..0000000000 --- a/src/components/views/elements/AppIconTile.js +++ /dev/null @@ -1,58 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket 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. -*/ - -'use strict'; -import React from 'react'; - -class AppIconTile extends React.Component { - constructor(props) { - super(props); - this._onTileClick = this._onTileClick.bind(this); - } - - _onTileClick(props) { - this.props.onClick(this.props.type); - } - - render() { - const contentClasses = ['mx_AppIconTile']; - // if(this.props.type == 'custom') { - // contentClasses.push('mx_AppIconTile_active'); - // } - - return ( -
-
- {this.props.name} -
-
-

{this.props.name}

-

{this.props.description}

-
-
- ); - } -} - -AppIconTile.propTypes = { - type: React.PropTypes.string.isRequired, - icon: React.PropTypes.string.isRequired, - name: React.PropTypes.string.isRequired, - description: React.PropTypes.string.isRequired, - onClick: React.PropTypes.func.isRequired, -}; - -export default AppIconTile; diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 3bf99dbddd..62463e5426 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -35,16 +35,6 @@ export default React.createClass({ }; }, - componentDidMount: function() { - console.log("App component %s mounted", this.props.id); - // setInterval(() => { - // const msg = "Message from riot"; - // const domain = 'http://localhost:8000'; - // this.refs.appFrame.contentWindow.postMessage(msg, domain); - // console.log("Sending message"); - // }, 3000); - }, - _onEditClick: function() { console.log("Edit widget %s", this.props.id); }, @@ -78,12 +68,12 @@ export default React.createClass({ {this.props.name} {/* Edit widget */} - Edit + /> */} {/* Delete widget */} - ); - - if (member.user) { - this.user_last_modified_time = member.user.getLastModifiedTime(); - } - this.member_last_modified_time = member.getLastModifiedTime(); - - return ( - - ); - } -}); diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 0047e2fddc..fbff785ba4 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -57,7 +57,7 @@ module.exports = React.createClass({ }, componentWillUnmount: function() { - ScalarMessaging.startListening(); + ScalarMessaging.stopListening(); if (MatrixClientPeg.get()) { MatrixClientPeg.get().removeListener("RoomState.events", this.onRoomStateEvents); } From 18ea76b864ad641057884be0922a5a98343b9089 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 27 Jun 2017 11:31:00 +0100 Subject: [PATCH 258/481] Removed commented code --- src/components/views/rooms/AppsDrawer.js | 66 ------------------------ 1 file changed, 66 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index fbff785ba4..ca56391cc3 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -135,72 +135,6 @@ module.exports = React.createClass({ }, onClickAddWidget: function(e) { - // Modal.createDialog(AddAppDialog, { - // onFinished: (proceed, type, value) => { - // if (!proceed || !type) return; - // if (type === 'custom' && !value) return; - // - // const appsStateEvents = this.props.room.currentState.getStateEvents('im.vector.modular.widgets', ''); - // let appsStateEvent = {}; - // if (appsStateEvents) { - // appsStateEvent = appsStateEvents.getContent(); - // } - // - // if (appsStateEvent[type]) { - // return; - // } - // - // switch (type) { - // case 'etherpad': - // appsStateEvent.etherpad = { - // type: type, - // url: 'http://localhost:8000/etherpad.html', - // }; - // break; - // case 'grafana': - // appsStateEvent.grafana = { - // type: type, - // url: 'http://localhost:8000/grafana.html', - // }; - // break; - // case 'jitsi': - // appsStateEvent.videoConf = { - // type: type, - // url: 'http://localhost:8000/jitsi.html', - // data: { - // confId: this.props.room.roomId.replace(/[^A-Za-z0-9]/g, '_') + Date.now(), - // }, - // }; - // break; - // case 'vrdemo': - // appsStateEvent.vrDemo = { - // type: type, - // url: 'http://localhost:8000/vrdemo.html', - // data: { - // roomAlias: '#vrvc' + this.props.room.roomId.replace(/[^A-Za-z0-9]/g, '_') + Date.now(), - // }, - // }; - // break; - // case 'custom': - // appsStateEvent.custom = { - // type: type, - // url: value, - // }; - // break; - // default: - // console.warn('Unsupported app type:', type); - // return; - // } - // - // MatrixClientPeg.get().sendStateEvent( - // this.props.room.roomId, - // 'im.vector.modular.widgets', - // appsStateEvent, - // '', - // ); - // }, - // }); - if (e) { e.preventDefault(); } From 1f1352786f193ec5761f90f8bbd43ae7eb7816e7 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 27 Jun 2017 11:38:14 +0100 Subject: [PATCH 259/481] Temporarily disable Jitsi default --- src/components/views/rooms/MessageComposer.js | 70 +++++++++++-------- 1 file changed, 41 insertions(+), 29 deletions(-) diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index 8d9feccf7e..63c7f8c00a 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -152,41 +152,53 @@ export default class MessageComposer extends React.Component { }); } - _startCallApp(isAudioConf) { - dis.dispatch({ - action: 'appsDrawer', - show: true, - }); + // _startCallApp(isAudioConf) { + // dis.dispatch({ + // action: 'appsDrawer', + // show: true, + // }); - const appsStateEvents = this.props.room.currentState.getStateEvents('im.vector.modular.widgets', ''); - let appsStateEvent = {}; - if (appsStateEvents) { - appsStateEvent = appsStateEvents.getContent(); - } - if (!appsStateEvent.videoConf) { - appsStateEvent.videoConf = { - type: 'jitsi', - url: 'http://localhost:8000/jitsi.html', - data: { - confId: this.props.room.roomId.replace(/[^A-Za-z0-9]/g, '_') + Date.now(), - isAudioConf: isAudioConf, - }, - }; - MatrixClientPeg.get().sendStateEvent( - this.props.room.roomId, - 'im.vector.modular.widgets', - appsStateEvent, - '', - ).then(() => console.log('Sent state'), (e) => console.error(e)); - } - } + // const appsStateEvents = this.props.room.currentState.getStateEvents('im.vector.modular.widgets', ''); + // let appsStateEvent = {}; + // if (appsStateEvents) { + // appsStateEvent = appsStateEvents.getContent(); + // } + // if (!appsStateEvent.videoConf) { + // appsStateEvent.videoConf = { + // type: 'jitsi', + // url: 'http://localhost:8000/jitsi.html', + // data: { + // confId: this.props.room.roomId.replace(/[^A-Za-z0-9]/g, '_') + Date.now(), + // isAudioConf: isAudioConf, + // }, + // }; + // MatrixClientPeg.get().sendStateEvent( + // this.props.room.roomId, + // 'im.vector.modular.widgets', + // appsStateEvent, + // '', + // ).then(() => console.log('Sent state'), (e) => console.error(e)); + // } + // } onCallClick(ev) { - this._startCallApp(false); + // NOTE -- Will be replaced by Jitsi code (currently commented) + dis.dispatch({ + action: 'place_call', + type: ev.shiftKey ? "screensharing" : "video", + room_id: this.props.room.roomId, + }); + // this._startCallApp(false); } onVoiceCallClick(ev) { - this._startCallApp(true); + // NOTE -- Will be replaced by Jitsi code (currently commented) + dis.dispatch({ + action: 'place_call', + type: "voice", + room_id: this.props.room.roomId, + }); + // this._startCallApp(true); } onShowAppsClick(ev) { From 63b12503859ddd7d07021821bab699246699052b Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 27 Jun 2017 11:39:20 +0100 Subject: [PATCH 260/481] Add comment --- src/components/views/rooms/MessageComposer.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index 63c7f8c00a..eb7a00389f 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -166,6 +166,7 @@ export default class MessageComposer extends React.Component { // if (!appsStateEvent.videoConf) { // appsStateEvent.videoConf = { // type: 'jitsi', + // // FIXME -- This should not be localhost // url: 'http://localhost:8000/jitsi.html', // data: { // confId: this.props.room.roomId.replace(/[^A-Za-z0-9]/g, '_') + Date.now(), From 2aeaaf26ca5fb70e92e05d1b6fb95dbb17f5f0fc Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 27 Jun 2017 11:52:23 +0100 Subject: [PATCH 261/481] remove inline css --- src/components/structures/GroupView.js | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 1a45c2ff3c..6e873a9b59 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -80,7 +80,7 @@ module.exports = React.createClass({ description = sanitizedHtmlNode(summary.profile.long_description); } return ( -
+
@@ -90,11 +90,7 @@ module.exports = React.createClass({
{summary.profile.name} - + ({this.props.groupId})
@@ -110,7 +106,7 @@ module.exports = React.createClass({ } else if (this.state.error) { if (this.state.error.httpStatus === 404) { return ( -
+
Group {this.props.groupId} not found
); @@ -120,7 +116,7 @@ module.exports = React.createClass({ extraText =
{_t('This Home server does not support groups')}
; } return ( -
+
Failed to load {this.props.groupId} {extraText}
From 89f051e693393704ef23bc3d71129c7ec19591f1 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 27 Jun 2017 11:52:49 +0100 Subject: [PATCH 262/481] Fix automerge error. --- src/components/structures/RoomView.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index f2dd98d35c..bb50d7f78e 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -238,6 +238,7 @@ module.exports = React.createClass({ if (room) { this.setState({ unsentMessageError: this._getUnsentMessageError(room), + showApps: this._shouldShowApps(room), }); this._onRoomLoaded(room); } @@ -272,11 +273,6 @@ module.exports = React.createClass({ } else if (room) { // Stop peeking because we have joined this room previously MatrixClientPeg.get().stopPeeking(); - this.setState({ - showApps: this._shouldShowApps(room), - unsentMessageError: this._getUnsentMessageError(room), - }); - this._onRoomLoaded(room); } }, From ad9a3d9ddcc12860dc7f3280d44cf2df8efff5e9 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 27 Jun 2017 11:55:32 +0100 Subject: [PATCH 263/481] Remove unused case statement. --- src/components/structures/RoomView.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index bb50d7f78e..d382702071 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -470,11 +470,6 @@ module.exports = React.createClass({ showApps: payload.show ? true : false, }); break; - case 'forward_event': - this.setState({ - forwardingEvent: payload.content, - }); - break; } }, From aab4c097e60c42010a6d4d8061806f7f4a2de75a Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 27 Jun 2017 12:26:13 +0100 Subject: [PATCH 264/481] Make query parameters generic. --- src/components/views/rooms/AppsDrawer.js | 86 ++++++++++++++++-------- 1 file changed, 57 insertions(+), 29 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index ca56391cc3..8919fd6f74 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -63,32 +63,64 @@ module.exports = React.createClass({ } }, - _initAppConfig: function(appId, app) { - console.log("App props: ", this.props); - app.id = appId; - app.name = app.type; - - switch(app.type) { - case 'etherpad': - app.queryParams = '?userName=' + this.props.userId + - '&padId=' + this.props.room.roomId; - break; - case 'jitsi': { - const user = MatrixClientPeg.get().getUser(this.props.userId); - app.queryParams = '?confId=' + app.data.confId + - '&displayName=' + encodeURIComponent(user.displayName) + - '&avatarUrl=' + encodeURIComponent(MatrixClientPeg.get().mxcUrlToHttp(user.avatarUrl)) + - '&email=' + encodeURIComponent(this.props.userId) + - '&isAudioConf=' + app.data.isAudioConf; - - app.name += ' - ' + app.data.confId; - break; + /** + * Encodes a URI according to a set of template variables. Variables will be + * passed through encodeURIComponent. + * @param {string} pathTemplate The path with template variables e.g. '/foo/$bar'. + * @param {Object} variables The key/value pairs to replace the template + * variables with. E.g. { "$bar": "baz" }. + * @return {string} The result of replacing all template variables e.g. '/foo/baz'. + */ + encodeUri: function(pathTemplate, variables) { + for (const key in variables) { + if (!variables.hasOwnProperty(key)) { + continue; } - case 'vrdemo': - app.name = 'Matrix VR Demo - ' + app.data.roomAlias; - app.queryParams = '?roomAlias=' + encodeURIComponent(app.data.roomAlias); - break; + pathTemplate = pathTemplate.replace( + key, encodeURIComponent(variables[key]), + ); } + return pathTemplate; + }, + + _initAppConfig: function(appId, app) { + const user = MatrixClientPeg.get().getUser(this.props.userId); + const params = { + '$matrix_user_id': this.props.userId, + '$matrix_room_id': this.props.room.roomId, + '$matrix_display_name': user ? user.displayName : this.props.userId, + '$matrix_avatar_url': user ? MatrixClientPeg.get().mxcUrlToHttp(user.avatarUrl) : '', + }; + + if(app.data) { + Object.keys(app.data).forEach((key) => { + params['$' + key] = app.data[key]; + }); + } + + app.id = appId; + app.name = app.name || app.type; + app.url = this.encodeUri(app.url, params); + + // switch(app.type) { + // case 'etherpad': + // app.queryParams = '?userName=' + this.props.userId + + // '&padId=' + this.props.room.roomId; + // break; + // case 'jitsi': { + // + // app.queryParams = '?confId=' + app.data.confId + + // '&displayName=' + encodeURIComponent(user.displayName) + + // '&avatarUrl=' + encodeURIComponent(MatrixClientPeg.get().mxcUrlToHttp(user.avatarUrl)) + + // '&email=' + encodeURIComponent(this.props.userId) + + // '&isAudioConf=' + app.data.isAudioConf; + // + // break; + // } + // case 'vrdemo': + // app.queryParams = '?roomAlias=' + encodeURIComponent(app.data.roomAlias); + // break; + // } return app; }, @@ -156,14 +188,10 @@ module.exports = React.createClass({ render: function() { const apps = this.state.apps.map( (app, index, arr) => { - let appUrl = app.url; - if (app.queryParams) { - appUrl += app.queryParams; - } return Date: Tue, 27 Jun 2017 13:13:00 +0100 Subject: [PATCH 265/481] Fix linting errors --- src/components/structures/GroupView.js | 8 ++++---- src/components/structures/MatrixChat.js | 10 ++++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 6e873a9b59..db0b556260 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -39,13 +39,13 @@ module.exports = React.createClass({ this._loadGroupFromServer(this.props.groupId); }, - componentWillReceiveProps: function(new_props) { - if (this.props.groupId != new_props.groupId) { + componentWillReceiveProps: function(newProps) { + if (this.props.groupId != newProps.groupId) { this.setState({ summary: null, error: null, - }) - this._loadGroupFromServer(new_props.groupId); + }); + this._loadGroupFromServer(newProps.groupId); } }, diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index f4da0e6a44..025805d921 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -487,10 +487,12 @@ module.exports = React.createClass({ this.notifyNewScreen('directory'); break; case 'view_group': - const groupId = payload.group_id; - this.setState({currentGroupId: groupId}); - this._setPage(PageTypes.GroupView); - this.notifyNewScreen('group/' + groupId); + { + const groupId = payload.group_id; + this.setState({currentGroupId: groupId}); + this._setPage(PageTypes.GroupView); + this.notifyNewScreen('group/' + groupId); + } break; case 'view_home_page': this._setPage(PageTypes.HomePage); From 87fac367ac6d0909b823072a95485bc63e81b6c0 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 27 Jun 2017 13:37:59 +0100 Subject: [PATCH 266/481] quote consistency --- src/linkify-matrix.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/linkify-matrix.js b/src/linkify-matrix.js index b96730145a..01512a771a 100644 --- a/src/linkify-matrix.js +++ b/src/linkify-matrix.js @@ -198,7 +198,7 @@ matrixLinkify.options = { switch (type) { case 'roomalias': case 'userid': - case "groupid": + case 'groupid': return matrixLinkify.MATRIXTO_BASE_URL + '/#/' + href; default: var m; From aa7a113324d1cea68cc9a611c7332088c2a19fc5 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 27 Jun 2017 13:41:43 +0100 Subject: [PATCH 267/481] More PR feedback --- src/components/structures/GroupView.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index db0b556260..71deaf529b 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -72,11 +72,11 @@ module.exports = React.createClass({ } else if (this.state.summary) { const summary = this.state.summary; let avatarUrl = null; - if (summary.profile.avatar_url) { + if (summary.profile && summary.profile.avatar_url) { avatarUrl = MatrixClientPeg.get().mxcUrlToHttp(summary.profile.avatar_url); } let description = null; - if (summary.profile.long_description) { + if (summary.profile && summary.profile.long_description) { description = sanitizedHtmlNode(summary.profile.long_description); } return ( @@ -122,6 +122,9 @@ module.exports = React.createClass({
); } + } else { + console.error("Invalid state for GroupView"); + return
; } }, }); From ba31a324406832073a3232526138eb896d412134 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 27 Jun 2017 15:17:57 +0100 Subject: [PATCH 268/481] Allow toggling of dev tools when RTE focussed --- src/KeyCode.js | 23 +++++++++++++++++++ .../views/rooms/MessageComposerInput.js | 7 ++++++ 2 files changed, 30 insertions(+) diff --git a/src/KeyCode.js b/src/KeyCode.js index 28aafc00cb..90c2caeb0e 100644 --- a/src/KeyCode.js +++ b/src/KeyCode.js @@ -30,7 +30,30 @@ module.exports = { RIGHT: 39, DOWN: 40, DELETE: 46, + KEY_A: 65, + KEY_B: 66, + KEY_C: 67, KEY_D: 68, KEY_E: 69, + KEY_F: 70, + KEY_G: 71, + KEY_H: 72, + KEY_I: 73, + KEY_J: 74, + KEY_K: 75, + KEY_L: 76, KEY_M: 77, + KEY_N: 78, + KEY_O: 79, + KEY_P: 80, + KEY_Q: 81, + KEY_R: 82, + KEY_S: 83, + KEY_T: 84, + KEY_U: 85, + KEY_V: 86, + KEY_W: 87, + KEY_X: 88, + KEY_Y: 89, + KEY_Z: 90, }; diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 5ea92d18ce..8a0d00f9af 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -87,6 +87,13 @@ export default class MessageComposerInput extends React.Component { return 'toggle-mode'; } + // Allow opening of dev tools. getDefaultKeyBinding would be 'italic' for KEY_I + if (e.keyCode === KeyCode.KEY_I && e.shiftKey && e.ctrlKey) { + // When null is returned, draft-js will NOT preventDefault, allowing dev tools + // to be toggled when the editor is focussed + return null; + } + return getDefaultKeyBinding(e); } From 5307731dfd8905e633741db8f78dcc261be3bf75 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 27 Jun 2017 17:10:28 +0100 Subject: [PATCH 269/481] Overide default draft-js handling of pasting text/html This is surprisingly needed to avoid an issue with draft-js that causes multi-line madness when pasting code and then applying format-as-code to it - https://github.com/vector-im/riot-web/issues/2120#issuecomment-271735729. The issue sounds like it is https://github.com/facebook/draft-js/issues/170#issuecomment-195026203 and the suggstion is to override the text pasting handler https://github.com/facebook/draft-js/issues/170#issuecomment-215983216. Meanwhile they haven't modified the default pasting behaviour afaics. I've discovered a separate issue that is apparent even after this suggested fix. (https://github.com/vector-im/riot-web/issues/4446) --- .../views/rooms/MessageComposerInput.js | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 8a0d00f9af..b05beb2571 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -121,6 +121,7 @@ export default class MessageComposerInput extends React.Component { this.onEscape = this.onEscape.bind(this); this.setDisplayedCompletion = this.setDisplayedCompletion.bind(this); this.onMarkdownToggleClicked = this.onMarkdownToggleClicked.bind(this); + this.onTextPasted = this.onTextPasted.bind(this); const isRichtextEnabled = UserSettingsStore.getSyncedSetting('MessageComposerInput.isRichTextEnabled', false); @@ -432,6 +433,29 @@ export default class MessageComposerInput extends React.Component { return false; } + onTextPasted(text: string, html?: string) { + const currentSelection = this.state.editorState.getSelection(); + const currentContent = this.state.editorState.getCurrentContent(); + + let contentState = null; + + if (html) { + contentState = Modifier.replaceWithFragment( + currentContent, + currentSelection, + RichText.htmlToContentState(html).getBlockMap(), + ); + } else { + contentState = Modifier.replaceText(currentContent, currentSelection, text); + } + + let newEditorState = EditorState.push(this.state.editorState, contentState, 'insert-characters'); + + newEditorState = EditorState.forceSelection(newEditorState, contentState.getSelectionAfter()); + this.onEditorContentChanged(newEditorState); + return true; + } + handleReturn(ev) { if (ev.shiftKey) { this.onEditorContentChanged(RichUtils.insertSoftNewline(this.state.editorState)); @@ -713,6 +737,7 @@ export default class MessageComposerInput extends React.Component { keyBindingFn={MessageComposerInput.getKeyBinding} handleKeyCommand={this.handleKeyCommand} handleReturn={this.handleReturn} + handlePastedText={this.onTextPasted} handlePastedFiles={this.props.onFilesPasted} stripPastedStyles={!this.state.isRichtextEnabled} onTab={this.onTab} From 7a7687699b1654aaf4b2fc2e9b8042d26460f65b Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 27 Jun 2017 17:38:33 +0100 Subject: [PATCH 270/481] Add matrix apps to Labs settings --- src/UserSettingsStore.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/UserSettingsStore.js b/src/UserSettingsStore.js index 84d85e7565..a769c3627b 100644 --- a/src/UserSettingsStore.js +++ b/src/UserSettingsStore.js @@ -30,6 +30,11 @@ export default { id: 'rich_text_editor', default: false, }, + { + name: "Matrix Apps", + id: 'matrix_apps', + default: false, + }, ], // horrible but it works. The locality makes this somewhat more palatable. From 8dfd047f0364793d63b1f3827c49e90c5e69944b Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 27 Jun 2017 17:39:29 +0100 Subject: [PATCH 271/481] Don't show widgets when editing room settings and lint fixes. --- src/components/structures/RoomView.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index d382702071..6e6325504a 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -47,13 +47,12 @@ import UserProvider from '../../autocomplete/UserProvider'; import RoomViewStore from '../../stores/RoomViewStore'; -var DEBUG = false; +const DEBUG = false; +let debuglog = function() {}; if (DEBUG) { // using bind means that we get to keep useful line numbers in the console - var debuglog = console.log.bind(console); -} else { - var debuglog = function() {}; + debuglog = console.log.bind(console); } module.exports = React.createClass({ @@ -1623,7 +1622,7 @@ module.exports = React.createClass({ displayConfCallNotification={this.state.displayConfCallNotification} maxHeight={this.state.auxPanelMaxHeight} onResize={this.onChildResize} - showApps={this.state.showApps} > + showApps={this.state.showApps && !this.state.editingRoomSettings} > { aux } ); From 338a4db87f65b68a93548d38d263e74469867f30 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 27 Jun 2017 17:40:09 +0100 Subject: [PATCH 272/481] Only show apps drawer if matrix apps labs setting ids enabled --- src/components/views/rooms/AuxPanel.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/views/rooms/AuxPanel.js b/src/components/views/rooms/AuxPanel.js index bc414d75c9..a50743a25d 100644 --- a/src/components/views/rooms/AuxPanel.js +++ b/src/components/views/rooms/AuxPanel.js @@ -20,7 +20,9 @@ import sdk from '../../../index'; import dis from "../../../dispatcher"; import ObjectUtils from '../../../ObjectUtils'; import AppsDrawer from './AppsDrawer'; -import { _t, _tJsx} from '../../../languageHandler'; +import { _t, _tJsx} from '../../../languageHandler'; +import UserSettingsStore from '../../../UserSettingsStore'; + module.exports = React.createClass({ displayName: 'AuxPanel', @@ -127,7 +129,7 @@ module.exports = React.createClass({ ); let appsDrawer = null; - if(this.props.showApps) { + if(UserSettingsStore.isFeatureEnabled('matrix_apps') && this.props.showApps) { appsDrawer = Date: Tue, 27 Jun 2017 17:40:28 +0100 Subject: [PATCH 273/481] Only show apps button if labs feature enabled. --- src/components/views/rooms/MessageComposer.js | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index eb7a00389f..7896a03376 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -315,16 +315,18 @@ export default class MessageComposer extends React.Component { } // Apps - if (this.props.showApps) { - hideAppsButton = -
- -
; - } else { - showAppsButton = -
- -
; + if (UserSettingsStore.isFeatureEnabled('matrix_apps')) { + if (this.props.showApps) { + hideAppsButton = +
+ +
; + } else { + showAppsButton = +
+ +
; + } } const canSendMessages = this.props.room.currentState.maySendMessage( From 69589c19e7f822749f5a1664f63ba74b2772a2fc Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 27 Jun 2017 18:33:45 +0100 Subject: [PATCH 274/481] Work around draft-js-export-html#62 by post-processing
\n Fixes https://github.com/vector-im/riot-web/issues/4446 by post-processing the output HTML from draft-js-export-html by replacing `
\n` with `
`. This works for content within or outside of `
`. If we replace with `\n` instead, the newlines only apply in `
` tags so we use `
`. --- src/components/views/rooms/MessageComposerInput.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index b05beb2571..cca0a9899c 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -509,7 +509,7 @@ export default class MessageComposerInput extends React.Component { if (this.state.isRichtextEnabled) { contentHTML = HtmlUtils.stripParagraphs( RichText.contentStateToHTML(contentState), - ); + ).replace(/\\n/g, '
'); } else { const md = new Markdown(contentText); if (md.isPlainText()) { From 9d339b96bda646628dbc69b907c0430df4778eb4 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 27 Jun 2017 20:13:48 +0100 Subject: [PATCH 275/481] Order emojis by standard ordering, add alternate shortnames Also, increase the maximum number of emoji shown to 20. --- package.json | 1 + src/autocomplete/EmojiProvider.js | 41 ++++++++++++++++++++++++++++--- src/emoji.json | 1 + 3 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 src/emoji.json diff --git a/package.json b/package.json index 8d638a5928..32f6998003 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ "draft-js": "^0.9.1", "draft-js-export-html": "^0.5.0", "draft-js-export-markdown": "^0.2.0", + "emoji-datasource": "^3.0.0", "emojione": "2.2.3", "file-saver": "^1.3.3", "filesize": "3.5.6", diff --git a/src/autocomplete/EmojiProvider.js b/src/autocomplete/EmojiProvider.js index 416855ca09..14c64a0816 100644 --- a/src/autocomplete/EmojiProvider.js +++ b/src/autocomplete/EmojiProvider.js @@ -24,10 +24,43 @@ import sdk from '../index'; import {PillCompletion} from './Components'; import type {SelectionRange, Completion} from './Autocompleter'; +import EmojiData from 'emoji-datasource/emoji'; + +const emojiDataToEmojiOne = (name) => ':' + name + ':'; + +// Only include emojis that are in both data sets +const emojiOneShortNames = Object.keys(emojioneList); +const emojiDataWithEmojiOneSupport = EmojiData.filter((a) => { + return emojiOneShortNames.indexOf( + emojiDataToEmojiOne(a.short_name), + ) !== -1; +}); + +const LIMIT = 20; +const CATEGORY_ORDER = [ + 'People', + 'Foods', + 'Objects', + 'Activity', + 'Skin Tones', + 'Nature', + 'Places', + 'Flags', + 'Symbols', +]; + const EMOJI_REGEX = /:\w*:?/g; -const EMOJI_SHORTNAMES = Object.keys(emojioneList).map(shortname => { +const EMOJI_SHORTNAMES = emojiDataWithEmojiOneSupport.sort( + (a, b) => { + if (a.category === b.category) { + return a.sort_order - b.sort_order; + } + return CATEGORY_ORDER.indexOf(a.category) - CATEGORY_ORDER.indexOf(b.category); + }, +).map((a) => { return { - shortname, + shortname: emojiDataToEmojiOne(a.short_name), + shortnames: a.short_names.join(','), }; }); @@ -37,7 +70,7 @@ export default class EmojiProvider extends AutocompleteProvider { constructor() { super(EMOJI_REGEX); this.matcher = new FuzzyMatcher(EMOJI_SHORTNAMES, { - keys: 'shortname', + keys: ['shortname', 'shortnames'], }); } @@ -57,7 +90,7 @@ export default class EmojiProvider extends AutocompleteProvider { ), range, }; - }).slice(0, 8); + }).slice(0, LIMIT); } return completions; } diff --git a/src/emoji.json b/src/emoji.json new file mode 100644 index 0000000000..8b74048b83 --- /dev/null +++ b/src/emoji.json @@ -0,0 +1 @@ +[{"name":"COPYRIGHT SIGN","unified":"00A9","variations":["00A9-FE0F"],"docomo":"E731","au":"E558","softbank":"E24E","google":"FEB29","image":"00a9.png","sheet_x":0,"sheet_y":0,"short_name":"copyright","short_names":["copyright"],"text":null,"texts":null,"category":"Symbols","sort_order":197,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":false,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"REGISTERED SIGN","unified":"00AE","variations":["00AE-FE0F"],"docomo":"E736","au":"E559","softbank":"E24F","google":"FEB2D","image":"00ae.png","sheet_x":0,"sheet_y":1,"short_name":"registered","short_names":["registered"],"text":null,"texts":null,"category":"Symbols","sort_order":198,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":false,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"DOUBLE EXCLAMATION MARK","unified":"203C","variations":["203C-FE0F"],"docomo":"E704","au":"EB30","softbank":null,"google":"FEB06","image":"203c.png","sheet_x":0,"sheet_y":2,"short_name":"bangbang","short_names":["bangbang"],"text":null,"texts":null,"category":"Symbols","sort_order":89,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EXCLAMATION QUESTION MARK","unified":"2049","variations":["2049-FE0F"],"docomo":"E703","au":"EB2F","softbank":null,"google":"FEB05","image":"2049.png","sheet_x":0,"sheet_y":3,"short_name":"interrobang","short_names":["interrobang"],"text":null,"texts":null,"category":"Symbols","sort_order":90,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRADE MARK SIGN","unified":"2122","variations":["2122-FE0F"],"docomo":"E732","au":"E54E","softbank":"E537","google":"FEB2A","image":"2122.png","sheet_x":0,"sheet_y":4,"short_name":"tm","short_names":["tm"],"text":null,"texts":null,"category":"Symbols","sort_order":196,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INFORMATION SOURCE","unified":"2139","variations":["2139-FE0F"],"docomo":null,"au":"E533","softbank":null,"google":"FEB47","image":"2139.png","sheet_x":0,"sheet_y":5,"short_name":"information_source","short_names":["information_source"],"text":null,"texts":null,"category":"Symbols","sort_order":130,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEFT RIGHT ARROW","unified":"2194","variations":["2194-FE0F"],"docomo":"E73C","au":"EB7A","softbank":null,"google":"FEAF6","image":"2194.png","sheet_x":0,"sheet_y":6,"short_name":"left_right_arrow","short_names":["left_right_arrow"],"text":null,"texts":null,"category":"Symbols","sort_order":178,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"UP DOWN ARROW","unified":"2195","variations":["2195-FE0F"],"docomo":"E73D","au":"EB7B","softbank":null,"google":"FEAF7","image":"2195.png","sheet_x":0,"sheet_y":7,"short_name":"arrow_up_down","short_names":["arrow_up_down"],"text":null,"texts":null,"category":"Symbols","sort_order":177,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NORTH WEST ARROW","unified":"2196","variations":["2196-FE0F"],"docomo":"E697","au":"E54C","softbank":"E237","google":"FEAF2","image":"2196.png","sheet_x":0,"sheet_y":8,"short_name":"arrow_upper_left","short_names":["arrow_upper_left"],"text":null,"texts":null,"category":"Symbols","sort_order":176,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NORTH EAST ARROW","unified":"2197","variations":["2197-FE0F"],"docomo":"E678","au":"E555","softbank":"E236","google":"FEAF0","image":"2197.png","sheet_x":0,"sheet_y":9,"short_name":"arrow_upper_right","short_names":["arrow_upper_right"],"text":null,"texts":null,"category":"Symbols","sort_order":173,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SOUTH EAST ARROW","unified":"2198","variations":["2198-FE0F"],"docomo":"E696","au":"E54D","softbank":"E238","google":"FEAF1","image":"2198.png","sheet_x":0,"sheet_y":10,"short_name":"arrow_lower_right","short_names":["arrow_lower_right"],"text":null,"texts":null,"category":"Symbols","sort_order":174,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SOUTH WEST ARROW","unified":"2199","variations":["2199-FE0F"],"docomo":"E6A5","au":"E556","softbank":"E239","google":"FEAF3","image":"2199.png","sheet_x":0,"sheet_y":11,"short_name":"arrow_lower_left","short_names":["arrow_lower_left"],"text":null,"texts":null,"category":"Symbols","sort_order":175,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEFTWARDS ARROW WITH HOOK","unified":"21A9","variations":["21A9-FE0F"],"docomo":"E6DA","au":"E55D","softbank":null,"google":"FEB83","image":"21a9.png","sheet_x":0,"sheet_y":12,"short_name":"leftwards_arrow_with_hook","short_names":["leftwards_arrow_with_hook"],"text":null,"texts":null,"category":"Symbols","sort_order":180,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RIGHTWARDS ARROW WITH HOOK","unified":"21AA","variations":["21AA-FE0F"],"docomo":null,"au":"E55C","softbank":null,"google":"FEB88","image":"21aa.png","sheet_x":0,"sheet_y":13,"short_name":"arrow_right_hook","short_names":["arrow_right_hook"],"text":null,"texts":null,"category":"Symbols","sort_order":179,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WATCH","unified":"231A","variations":["231A-FE0F"],"docomo":"E71F","au":"E57A","softbank":null,"google":"FE01D","image":"231a.png","sheet_x":0,"sheet_y":14,"short_name":"watch","short_names":["watch"],"text":null,"texts":null,"category":"Objects","sort_order":1,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HOURGLASS","unified":"231B","variations":["231B-FE0F"],"docomo":"E71C","au":"E57B","softbank":null,"google":"FE01C","image":"231b.png","sheet_x":0,"sheet_y":15,"short_name":"hourglass","short_names":["hourglass"],"text":null,"texts":null,"category":"Objects","sort_order":36,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KEYBOARD","unified":"2328","variations":["2328-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2328.png","sheet_x":0,"sheet_y":16,"short_name":"keyboard","short_names":["keyboard"],"text":null,"texts":null,"category":"Objects","sort_order":5,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EJECT SYMBOL","unified":"23CF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23cf.png","sheet_x":0,"sheet_y":17,"short_name":"eject","short_names":["eject"],"text":null,"texts":null,"category":"Symbols","sort_order":158,"added_in":"4.0","has_img_apple":false,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BLACK RIGHT-POINTING DOUBLE TRIANGLE","unified":"23E9","variations":[],"docomo":null,"au":"E530","softbank":"E23C","google":"FEAFE","image":"23e9.png","sheet_x":0,"sheet_y":18,"short_name":"fast_forward","short_names":["fast_forward"],"text":null,"texts":null,"category":"Symbols","sort_order":162,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK LEFT-POINTING DOUBLE TRIANGLE","unified":"23EA","variations":[],"docomo":null,"au":"E52F","softbank":"E23D","google":"FEAFF","image":"23ea.png","sheet_x":0,"sheet_y":19,"short_name":"rewind","short_names":["rewind"],"text":null,"texts":null,"category":"Symbols","sort_order":163,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK UP-POINTING DOUBLE TRIANGLE","unified":"23EB","variations":[],"docomo":null,"au":"E545","softbank":null,"google":"FEB03","image":"23eb.png","sheet_x":0,"sheet_y":20,"short_name":"arrow_double_up","short_names":["arrow_double_up"],"text":null,"texts":null,"category":"Symbols","sort_order":164,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK DOWN-POINTING DOUBLE TRIANGLE","unified":"23EC","variations":[],"docomo":null,"au":"E544","softbank":null,"google":"FEB02","image":"23ec.png","sheet_x":0,"sheet_y":21,"short_name":"arrow_double_down","short_names":["arrow_double_down"],"text":null,"texts":null,"category":"Symbols","sort_order":165,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR","unified":"23ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23ed.png","sheet_x":0,"sheet_y":22,"short_name":"black_right_pointing_double_triangle_with_vertical_bar","short_names":["black_right_pointing_double_triangle_with_vertical_bar"],"text":null,"texts":null,"category":"Symbols","sort_order":160,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR","unified":"23EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23ee.png","sheet_x":0,"sheet_y":23,"short_name":"black_left_pointing_double_triangle_with_vertical_bar","short_names":["black_left_pointing_double_triangle_with_vertical_bar"],"text":null,"texts":null,"category":"Symbols","sort_order":161,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR","unified":"23EF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23ef.png","sheet_x":0,"sheet_y":24,"short_name":"black_right_pointing_triangle_with_double_vertical_bar","short_names":["black_right_pointing_triangle_with_double_vertical_bar"],"text":null,"texts":null,"category":"Symbols","sort_order":156,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ALARM CLOCK","unified":"23F0","variations":[],"docomo":"E6BA","au":"E594","softbank":"E02D","google":"FE02A","image":"23f0.png","sheet_x":0,"sheet_y":25,"short_name":"alarm_clock","short_names":["alarm_clock"],"text":null,"texts":null,"category":"Objects","sort_order":34,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"STOPWATCH","unified":"23F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23f1.png","sheet_x":0,"sheet_y":26,"short_name":"stopwatch","short_names":["stopwatch"],"text":null,"texts":null,"category":"Objects","sort_order":32,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TIMER CLOCK","unified":"23F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23f2.png","sheet_x":0,"sheet_y":27,"short_name":"timer_clock","short_names":["timer_clock"],"text":null,"texts":null,"category":"Objects","sort_order":33,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HOURGLASS WITH FLOWING SAND","unified":"23F3","variations":[],"docomo":"E71C","au":"E47C","softbank":null,"google":"FE01B","image":"23f3.png","sheet_x":0,"sheet_y":28,"short_name":"hourglass_flowing_sand","short_names":["hourglass_flowing_sand"],"text":null,"texts":null,"category":"Objects","sort_order":37,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOUBLE VERTICAL BAR","unified":"23F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23f8.png","sheet_x":0,"sheet_y":29,"short_name":"double_vertical_bar","short_names":["double_vertical_bar"],"text":null,"texts":null,"category":"Symbols","sort_order":155,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BLACK SQUARE FOR STOP","unified":"23F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23f9.png","sheet_x":0,"sheet_y":30,"short_name":"black_square_for_stop","short_names":["black_square_for_stop"],"text":null,"texts":null,"category":"Symbols","sort_order":157,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BLACK CIRCLE FOR RECORD","unified":"23FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23fa.png","sheet_x":0,"sheet_y":31,"short_name":"black_circle_for_record","short_names":["black_circle_for_record"],"text":null,"texts":null,"category":"Symbols","sort_order":159,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CIRCLED LATIN CAPITAL LETTER M","unified":"24C2","variations":["24C2-FE0F"],"docomo":"E65C","au":"E5BC","softbank":"E434","google":"FE7E1","image":"24c2.png","sheet_x":0,"sheet_y":32,"short_name":"m","short_names":["m"],"text":null,"texts":null,"category":"Symbols","sort_order":108,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK SMALL SQUARE","unified":"25AA","variations":["25AA-FE0F"],"docomo":null,"au":"E532","softbank":"E21A","google":"FEB6E","image":"25aa.png","sheet_x":0,"sheet_y":33,"short_name":"black_small_square","short_names":["black_small_square"],"text":null,"texts":null,"category":"Symbols","sort_order":222,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE SMALL SQUARE","unified":"25AB","variations":["25AB-FE0F"],"docomo":null,"au":"E531","softbank":"E21B","google":"FEB6D","image":"25ab.png","sheet_x":0,"sheet_y":34,"short_name":"white_small_square","short_names":["white_small_square"],"text":null,"texts":null,"category":"Symbols","sort_order":223,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK RIGHT-POINTING TRIANGLE","unified":"25B6","variations":["25B6-FE0F"],"docomo":null,"au":"E52E","softbank":"E23A","google":"FEAFC","image":"25b6.png","sheet_x":0,"sheet_y":35,"short_name":"arrow_forward","short_names":["arrow_forward"],"text":null,"texts":null,"category":"Symbols","sort_order":154,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK LEFT-POINTING TRIANGLE","unified":"25C0","variations":["25C0-FE0F"],"docomo":null,"au":"E52D","softbank":"E23B","google":"FEAFD","image":"25c0.png","sheet_x":0,"sheet_y":36,"short_name":"arrow_backward","short_names":["arrow_backward"],"text":null,"texts":null,"category":"Symbols","sort_order":166,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE MEDIUM SQUARE","unified":"25FB","variations":["25FB-FE0F"],"docomo":null,"au":"E538","softbank":"E21B","google":"FEB71","image":"25fb.png","sheet_x":0,"sheet_y":37,"short_name":"white_medium_square","short_names":["white_medium_square"],"text":null,"texts":null,"category":"Symbols","sort_order":227,"added_in":"3.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK MEDIUM SQUARE","unified":"25FC","variations":["25FC-FE0F"],"docomo":null,"au":"E539","softbank":"E21A","google":"FEB72","image":"25fc.png","sheet_x":0,"sheet_y":38,"short_name":"black_medium_square","short_names":["black_medium_square"],"text":null,"texts":null,"category":"Symbols","sort_order":226,"added_in":"3.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE MEDIUM SMALL SQUARE","unified":"25FD","variations":["25FD-FE0F"],"docomo":null,"au":"E534","softbank":"E21B","google":"FEB6F","image":"25fd.png","sheet_x":0,"sheet_y":39,"short_name":"white_medium_small_square","short_names":["white_medium_small_square"],"text":null,"texts":null,"category":"Symbols","sort_order":225,"added_in":"3.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK MEDIUM SMALL SQUARE","unified":"25FE","variations":["25FE-FE0F"],"docomo":null,"au":"E535","softbank":"E21A","google":"FEB70","image":"25fe.png","sheet_x":0,"sheet_y":40,"short_name":"black_medium_small_square","short_names":["black_medium_small_square"],"text":null,"texts":null,"category":"Symbols","sort_order":224,"added_in":"3.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK SUN WITH RAYS","unified":"2600","variations":["2600-FE0F"],"docomo":"E63E","au":"E488","softbank":"E04A","google":"FE000","image":"2600.png","sheet_x":0,"sheet_y":41,"short_name":"sunny","short_names":["sunny"],"text":null,"texts":null,"category":"Nature","sort_order":138,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOUD","unified":"2601","variations":["2601-FE0F"],"docomo":"E63F","au":"E48D","softbank":"E049","google":"FE001","image":"2601.png","sheet_x":0,"sheet_y":42,"short_name":"cloud","short_names":["cloud"],"text":null,"texts":null,"category":"Nature","sort_order":144,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"UMBRELLA","unified":"2602","variations":["2602-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2602.png","sheet_x":0,"sheet_y":43,"short_name":"umbrella","short_names":["umbrella"],"text":null,"texts":null,"category":"People","sort_order":293,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SNOWMAN","unified":"2603","variations":["2603-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2603.png","sheet_x":0,"sheet_y":44,"short_name":"snowman","short_names":["snowman"],"text":null,"texts":null,"category":"Nature","sort_order":149,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"COMET","unified":"2604","variations":["2604-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2604.png","sheet_x":0,"sheet_y":45,"short_name":"comet","short_names":["comet"],"text":null,"texts":null,"category":"Nature","sort_order":137,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BLACK TELEPHONE","unified":"260E","variations":["260E-FE0F"],"docomo":"E687","au":"E596","softbank":"E009","google":"FE523","image":"260e.png","sheet_x":0,"sheet_y":46,"short_name":"phone","short_names":["phone","telephone"],"text":null,"texts":null,"category":"Objects","sort_order":24,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BALLOT BOX WITH CHECK","unified":"2611","variations":["2611-FE0F"],"docomo":null,"au":"EB02","softbank":null,"google":"FEB8B","image":"2611.png","sheet_x":0,"sheet_y":47,"short_name":"ballot_box_with_check","short_names":["ballot_box_with_check"],"text":null,"texts":null,"category":"Symbols","sort_order":208,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"UMBRELLA WITH RAIN DROPS","unified":"2614","variations":["2614-FE0F"],"docomo":"E640","au":"E48C","softbank":"E04B","google":"FE002","image":"2614.png","sheet_x":0,"sheet_y":48,"short_name":"umbrella_with_rain_drops","short_names":["umbrella_with_rain_drops"],"text":null,"texts":null,"category":"Nature","sort_order":159,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HOT BEVERAGE","unified":"2615","variations":["2615-FE0F"],"docomo":"E670","au":"E597","softbank":"E045","google":"FE981","image":"2615.png","sheet_x":1,"sheet_y":0,"short_name":"coffee","short_names":["coffee"],"text":null,"texts":null,"category":"Foods","sort_order":73,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SHAMROCK","unified":"2618","variations":["2618-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2618.png","sheet_x":1,"sheet_y":1,"short_name":"shamrock","short_names":["shamrock"],"text":null,"texts":null,"category":"Nature","sort_order":96,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WHITE UP POINTING INDEX","unified":"261D","variations":["261D-FE0F"],"docomo":null,"au":"E4F6","softbank":"E00F","google":"FEB98","image":"261d.png","sheet_x":1,"sheet_y":2,"short_name":"point_up","short_names":["point_up"],"text":null,"texts":null,"category":"People","sort_order":116,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"261D-1F3FB","image":"261d-1f3fb.png","sheet_x":1,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"261D-1F3FC","image":"261d-1f3fc.png","sheet_x":1,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"261D-1F3FD","image":"261d-1f3fd.png","sheet_x":1,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"261D-1F3FE","image":"261d-1f3fe.png","sheet_x":1,"sheet_y":6,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"261D-1F3FF","image":"261d-1f3ff.png","sheet_x":1,"sheet_y":7,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"SKULL AND CROSSBONES","unified":"2620","variations":["2620-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2620.png","sheet_x":1,"sheet_y":8,"short_name":"skull_and_crossbones","short_names":["skull_and_crossbones"],"text":null,"texts":null,"category":"People","sort_order":83,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"RADIOACTIVE SIGN","unified":"2622","variations":["2622-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2622.png","sheet_x":1,"sheet_y":9,"short_name":"radioactive_sign","short_names":["radioactive_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":44,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BIOHAZARD SIGN","unified":"2623","variations":["2623-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2623.png","sheet_x":1,"sheet_y":10,"short_name":"biohazard_sign","short_names":["biohazard_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":45,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ORTHODOX CROSS","unified":"2626","variations":["2626-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2626.png","sheet_x":1,"sheet_y":11,"short_name":"orthodox_cross","short_names":["orthodox_cross"],"text":null,"texts":null,"category":"Symbols","sort_order":26,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"STAR AND CRESCENT","unified":"262A","variations":["262A-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"262a.png","sheet_x":1,"sheet_y":12,"short_name":"star_and_crescent","short_names":["star_and_crescent"],"text":null,"texts":null,"category":"Symbols","sort_order":19,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PEACE SYMBOL","unified":"262E","variations":["262E-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"262e.png","sheet_x":1,"sheet_y":13,"short_name":"peace_symbol","short_names":["peace_symbol"],"text":null,"texts":null,"category":"Symbols","sort_order":17,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"YIN YANG","unified":"262F","variations":["262F-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"262f.png","sheet_x":1,"sheet_y":14,"short_name":"yin_yang","short_names":["yin_yang"],"text":null,"texts":null,"category":"Symbols","sort_order":25,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WHEEL OF DHARMA","unified":"2638","variations":["2638-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2638.png","sheet_x":1,"sheet_y":15,"short_name":"wheel_of_dharma","short_names":["wheel_of_dharma"],"text":null,"texts":null,"category":"Symbols","sort_order":21,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WHITE FROWNING FACE","unified":"2639","variations":["2639-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2639.png","sheet_x":1,"sheet_y":16,"short_name":"white_frowning_face","short_names":["white_frowning_face"],"text":null,"texts":null,"category":"People","sort_order":38,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WHITE SMILING FACE","unified":"263A","variations":["263A-FE0F"],"docomo":"E6F0","au":"E4FB","softbank":"E414","google":"FE336","image":"263a.png","sheet_x":1,"sheet_y":17,"short_name":"relaxed","short_names":["relaxed"],"text":null,"texts":null,"category":"People","sort_order":9,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FEMALE SIGN","unified":"2640","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2640.png","sheet_x":1,"sheet_y":18,"short_name":"female_sign","short_names":["female_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":274,"added_in":"1.1","has_img_apple":false,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":"MALE SIGN","unified":"2642","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2642.png","sheet_x":1,"sheet_y":19,"short_name":"male_sign","short_names":["male_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":275,"added_in":"1.1","has_img_apple":false,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":"ARIES","unified":"2648","variations":["2648-FE0F"],"docomo":"E646","au":"E48F","softbank":"E23F","google":"FE02B","image":"2648.png","sheet_x":1,"sheet_y":20,"short_name":"aries","short_names":["aries"],"text":null,"texts":null,"category":"Symbols","sort_order":29,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TAURUS","unified":"2649","variations":["2649-FE0F"],"docomo":"E647","au":"E490","softbank":"E240","google":"FE02C","image":"2649.png","sheet_x":1,"sheet_y":21,"short_name":"taurus","short_names":["taurus"],"text":null,"texts":null,"category":"Symbols","sort_order":30,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GEMINI","unified":"264A","variations":["264A-FE0F"],"docomo":"E648","au":"E491","softbank":"E241","google":"FE02D","image":"264a.png","sheet_x":1,"sheet_y":22,"short_name":"gemini","short_names":["gemini"],"text":null,"texts":null,"category":"Symbols","sort_order":31,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CANCER","unified":"264B","variations":["264B-FE0F"],"docomo":"E649","au":"E492","softbank":"E242","google":"FE02E","image":"264b.png","sheet_x":1,"sheet_y":23,"short_name":"cancer","short_names":["cancer"],"text":null,"texts":null,"category":"Symbols","sort_order":32,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEO","unified":"264C","variations":["264C-FE0F"],"docomo":"E64A","au":"E493","softbank":"E243","google":"FE02F","image":"264c.png","sheet_x":1,"sheet_y":24,"short_name":"leo","short_names":["leo"],"text":null,"texts":null,"category":"Symbols","sort_order":33,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"VIRGO","unified":"264D","variations":["264D-FE0F"],"docomo":"E64B","au":"E494","softbank":"E244","google":"FE030","image":"264d.png","sheet_x":1,"sheet_y":25,"short_name":"virgo","short_names":["virgo"],"text":null,"texts":null,"category":"Symbols","sort_order":34,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LIBRA","unified":"264E","variations":["264E-FE0F"],"docomo":"E64C","au":"E495","softbank":"E245","google":"FE031","image":"264e.png","sheet_x":1,"sheet_y":26,"short_name":"libra","short_names":["libra"],"text":null,"texts":null,"category":"Symbols","sort_order":35,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SCORPIUS","unified":"264F","variations":["264F-FE0F"],"docomo":"E64D","au":"E496","softbank":"E246","google":"FE032","image":"264f.png","sheet_x":1,"sheet_y":27,"short_name":"scorpius","short_names":["scorpius"],"text":null,"texts":null,"category":"Symbols","sort_order":36,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SAGITTARIUS","unified":"2650","variations":["2650-FE0F"],"docomo":"E64E","au":"E497","softbank":"E247","google":"FE033","image":"2650.png","sheet_x":1,"sheet_y":28,"short_name":"sagittarius","short_names":["sagittarius"],"text":null,"texts":null,"category":"Symbols","sort_order":37,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CAPRICORN","unified":"2651","variations":["2651-FE0F"],"docomo":"E64F","au":"E498","softbank":"E248","google":"FE034","image":"2651.png","sheet_x":1,"sheet_y":29,"short_name":"capricorn","short_names":["capricorn"],"text":null,"texts":null,"category":"Symbols","sort_order":38,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"AQUARIUS","unified":"2652","variations":["2652-FE0F"],"docomo":"E650","au":"E499","softbank":"E249","google":"FE035","image":"2652.png","sheet_x":1,"sheet_y":30,"short_name":"aquarius","short_names":["aquarius"],"text":null,"texts":null,"category":"Symbols","sort_order":39,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PISCES","unified":"2653","variations":["2653-FE0F"],"docomo":"E651","au":"E49A","softbank":"E24A","google":"FE036","image":"2653.png","sheet_x":1,"sheet_y":31,"short_name":"pisces","short_names":["pisces"],"text":null,"texts":null,"category":"Symbols","sort_order":40,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK SPADE SUIT","unified":"2660","variations":["2660-FE0F"],"docomo":"E68E","au":"E5A1","softbank":"E20E","google":"FEB1B","image":"2660.png","sheet_x":1,"sheet_y":32,"short_name":"spades","short_names":["spades"],"text":null,"texts":null,"category":"Symbols","sort_order":243,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK CLUB SUIT","unified":"2663","variations":["2663-FE0F"],"docomo":"E690","au":"E5A3","softbank":"E20F","google":"FEB1D","image":"2663.png","sheet_x":1,"sheet_y":33,"short_name":"clubs","short_names":["clubs"],"text":null,"texts":null,"category":"Symbols","sort_order":244,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK HEART SUIT","unified":"2665","variations":["2665-FE0F"],"docomo":"E68D","au":"EAA5","softbank":"E20C","google":"FEB1A","image":"2665.png","sheet_x":1,"sheet_y":34,"short_name":"hearts","short_names":["hearts"],"text":null,"texts":null,"category":"Symbols","sort_order":245,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK DIAMOND SUIT","unified":"2666","variations":["2666-FE0F"],"docomo":"E68F","au":"E5A2","softbank":"E20D","google":"FEB1C","image":"2666.png","sheet_x":1,"sheet_y":35,"short_name":"diamonds","short_names":["diamonds"],"text":null,"texts":null,"category":"Symbols","sort_order":246,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HOT SPRINGS","unified":"2668","variations":["2668-FE0F"],"docomo":"E6F7","au":"E4BC","softbank":"E123","google":"FE7FA","image":"2668.png","sheet_x":1,"sheet_y":36,"short_name":"hotsprings","short_names":["hotsprings"],"text":null,"texts":null,"category":"Symbols","sort_order":77,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK UNIVERSAL RECYCLING SYMBOL","unified":"267B","variations":["267B-FE0F"],"docomo":"E735","au":"EB79","softbank":null,"google":"FEB2C","image":"267b.png","sheet_x":1,"sheet_y":37,"short_name":"recycle","short_names":["recycle"],"text":null,"texts":null,"category":"Symbols","sort_order":99,"added_in":"3.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHEELCHAIR SYMBOL","unified":"267F","variations":["267F-FE0F"],"docomo":"E69B","au":"E47F","softbank":"E20A","google":"FEB20","image":"267f.png","sheet_x":1,"sheet_y":38,"short_name":"wheelchair","short_names":["wheelchair"],"text":null,"texts":null,"category":"Symbols","sort_order":113,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HAMMER AND PICK","unified":"2692","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2692.png","sheet_x":1,"sheet_y":39,"short_name":"hammer_and_pick","short_names":["hammer_and_pick"],"text":null,"texts":null,"category":"Objects","sort_order":57,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ANCHOR","unified":"2693","variations":["2693-FE0F"],"docomo":"E661","au":"E4A9","softbank":"E202","google":"FE4C1","image":"2693.png","sheet_x":1,"sheet_y":40,"short_name":"anchor","short_names":["anchor"],"text":null,"texts":null,"category":"Places","sort_order":53,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CROSSED SWORDS","unified":"2694","variations":["2694-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2694.png","sheet_x":1,"sheet_y":41,"short_name":"crossed_swords","short_names":["crossed_swords"],"text":null,"texts":null,"category":"Objects","sort_order":67,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"STAFF OF AESCULAPIUS","unified":"2695","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2695.png","sheet_x":1,"sheet_y":42,"short_name":"staff_of_aesculapius","short_names":["staff_of_aesculapius"],"text":null,"texts":null,"category":"Symbols","sort_order":276,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},{"name":"SCALES","unified":"2696","variations":["2696-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2696.png","sheet_x":1,"sheet_y":43,"short_name":"scales","short_names":["scales"],"text":null,"texts":null,"category":"Objects","sort_order":54,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ALEMBIC","unified":"2697","variations":["2697-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2697.png","sheet_x":1,"sheet_y":44,"short_name":"alembic","short_names":["alembic"],"text":null,"texts":null,"category":"Objects","sort_order":76,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"GEAR","unified":"2699","variations":["2699-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2699.png","sheet_x":1,"sheet_y":45,"short_name":"gear","short_names":["gear"],"text":null,"texts":null,"category":"Objects","sort_order":61,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ATOM SYMBOL","unified":"269B","variations":["269B-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"269b.png","sheet_x":1,"sheet_y":46,"short_name":"atom_symbol","short_names":["atom_symbol"],"text":null,"texts":null,"category":"Symbols","sort_order":42,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FLEUR-DE-LIS","unified":"269C","variations":["269C-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"269c.png","sheet_x":1,"sheet_y":47,"short_name":"fleur_de_lis","short_names":["fleur_de_lis"],"text":null,"texts":null,"category":"Symbols","sort_order":97,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WARNING SIGN","unified":"26A0","variations":["26A0-FE0F"],"docomo":"E737","au":"E481","softbank":"E252","google":"FEB23","image":"26a0.png","sheet_x":1,"sheet_y":48,"short_name":"warning","short_names":["warning"],"text":null,"texts":null,"category":"Symbols","sort_order":94,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HIGH VOLTAGE SIGN","unified":"26A1","variations":["26A1-FE0F"],"docomo":"E642","au":"E487","softbank":"E13D","google":"FE004","image":"26a1.png","sheet_x":2,"sheet_y":0,"short_name":"zap","short_names":["zap"],"text":null,"texts":null,"category":"Nature","sort_order":134,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MEDIUM WHITE CIRCLE","unified":"26AA","variations":["26AA-FE0F"],"docomo":"E69C","au":"E53A","softbank":"E219","google":"FEB65","image":"26aa.png","sheet_x":2,"sheet_y":1,"short_name":"white_circle","short_names":["white_circle"],"text":null,"texts":null,"category":"Symbols","sort_order":210,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MEDIUM BLACK CIRCLE","unified":"26AB","variations":["26AB-FE0F"],"docomo":"E69C","au":"E53B","softbank":"E219","google":"FEB66","image":"26ab.png","sheet_x":2,"sheet_y":2,"short_name":"black_circle","short_names":["black_circle"],"text":null,"texts":null,"category":"Symbols","sort_order":211,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COFFIN","unified":"26B0","variations":["26B0-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26b0.png","sheet_x":2,"sheet_y":3,"short_name":"coffin","short_names":["coffin"],"text":null,"texts":null,"category":"Objects","sort_order":70,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FUNERAL URN","unified":"26B1","variations":["26B1-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26b1.png","sheet_x":2,"sheet_y":4,"short_name":"funeral_urn","short_names":["funeral_urn"],"text":null,"texts":null,"category":"Objects","sort_order":71,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SOCCER BALL","unified":"26BD","variations":["26BD-FE0F"],"docomo":"E656","au":"E4B6","softbank":"E018","google":"FE7D4","image":"26bd.png","sheet_x":2,"sheet_y":5,"short_name":"soccer","short_names":["soccer"],"text":null,"texts":null,"category":"Activity","sort_order":1,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BASEBALL","unified":"26BE","variations":["26BE-FE0F"],"docomo":"E653","au":"E4BA","softbank":"E016","google":"FE7D1","image":"26be.png","sheet_x":2,"sheet_y":6,"short_name":"baseball","short_names":["baseball"],"text":null,"texts":null,"category":"Activity","sort_order":4,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SNOWMAN WITHOUT SNOW","unified":"26C4","variations":["26C4-FE0F"],"docomo":"E641","au":"E485","softbank":"E048","google":"FE003","image":"26c4.png","sheet_x":2,"sheet_y":7,"short_name":"snowman_without_snow","short_names":["snowman_without_snow"],"text":null,"texts":null,"category":"Nature","sort_order":150,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SUN BEHIND CLOUD","unified":"26C5","variations":["26C5-FE0F"],"docomo":"E63E-E63F","au":"E48E","softbank":"E04A-E049","google":"FE00F","image":"26c5.png","sheet_x":2,"sheet_y":8,"short_name":"partly_sunny","short_names":["partly_sunny"],"text":null,"texts":null,"category":"Nature","sort_order":140,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"THUNDER CLOUD AND RAIN","unified":"26C8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26c8.png","sheet_x":2,"sheet_y":9,"short_name":"thunder_cloud_and_rain","short_names":["thunder_cloud_and_rain"],"text":null,"texts":null,"category":"Nature","sort_order":146,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"OPHIUCHUS","unified":"26CE","variations":[],"docomo":null,"au":"E49B","softbank":"E24B","google":"FE037","image":"26ce.png","sheet_x":2,"sheet_y":10,"short_name":"ophiuchus","short_names":["ophiuchus"],"text":null,"texts":null,"category":"Symbols","sort_order":28,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PICK","unified":"26CF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26cf.png","sheet_x":2,"sheet_y":11,"short_name":"pick","short_names":["pick"],"text":null,"texts":null,"category":"Objects","sort_order":59,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HELMET WITH WHITE CROSS","unified":"26D1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26d1.png","sheet_x":2,"sheet_y":12,"short_name":"helmet_with_white_cross","short_names":["helmet_with_white_cross"],"text":null,"texts":null,"category":"People","sort_order":284,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CHAINS","unified":"26D3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26d3.png","sheet_x":2,"sheet_y":13,"short_name":"chains","short_names":["chains"],"text":null,"texts":null,"category":"Objects","sort_order":62,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"NO ENTRY","unified":"26D4","variations":["26D4-FE0F"],"docomo":"E72F","au":"E484","softbank":"E137","google":"FEB26","image":"26d4.png","sheet_x":2,"sheet_y":14,"short_name":"no_entry","short_names":["no_entry"],"text":null,"texts":null,"category":"Symbols","sort_order":72,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SHINTO SHRINE","unified":"26E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26e9.png","sheet_x":2,"sheet_y":15,"short_name":"shinto_shrine","short_names":["shinto_shrine"],"text":null,"texts":null,"category":"Places","sort_order":104,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CHURCH","unified":"26EA","variations":["26EA-FE0F"],"docomo":null,"au":"E5BB","softbank":"E037","google":"FE4BB","image":"26ea.png","sheet_x":2,"sheet_y":16,"short_name":"church","short_names":["church"],"text":null,"texts":null,"category":"Places","sort_order":100,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOUNTAIN","unified":"26F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26f0.png","sheet_x":2,"sheet_y":17,"short_name":"mountain","short_names":["mountain"],"text":null,"texts":null,"category":"Places","sort_order":73,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"UMBRELLA ON GROUND","unified":"26F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26f1.png","sheet_x":2,"sheet_y":18,"short_name":"umbrella_on_ground","short_names":["umbrella_on_ground"],"text":null,"texts":null,"category":"Places","sort_order":70,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FOUNTAIN","unified":"26F2","variations":["26F2-FE0F"],"docomo":null,"au":"E5CF","softbank":"E121","google":"FE4BC","image":"26f2.png","sheet_x":2,"sheet_y":19,"short_name":"fountain","short_names":["fountain"],"text":null,"texts":null,"category":"Places","sort_order":62,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FLAG IN HOLE","unified":"26F3","variations":["26F3-FE0F"],"docomo":"E654","au":"E599","softbank":"E014","google":"FE7D2","image":"26f3.png","sheet_x":2,"sheet_y":20,"short_name":"golf","short_names":["golf"],"text":null,"texts":null,"category":"Activity","sort_order":15,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FERRY","unified":"26F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26f4.png","sheet_x":2,"sheet_y":21,"short_name":"ferry","short_names":["ferry"],"text":null,"texts":null,"category":"Places","sort_order":51,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SAILBOAT","unified":"26F5","variations":["26F5-FE0F"],"docomo":"E6A3","au":"E4B4","softbank":"E01C","google":"FE7EA","image":"26f5.png","sheet_x":2,"sheet_y":22,"short_name":"boat","short_names":["boat","sailboat"],"text":null,"texts":null,"category":"Places","sort_order":47,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SKIER","unified":"26F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26f7.png","sheet_x":2,"sheet_y":23,"short_name":"skier","short_names":["skier"],"text":null,"texts":null,"category":"Activity","sort_order":22,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ICE SKATE","unified":"26F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26f8.png","sheet_x":2,"sheet_y":24,"short_name":"ice_skate","short_names":["ice_skate"],"text":null,"texts":null,"category":"Activity","sort_order":20,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PERSON WITH BALL","unified":"26F9","variations":["26F9-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26f9.png","sheet_x":2,"sheet_y":25,"short_name":"person_with_ball","short_names":["person_with_ball"],"text":null,"texts":null,"category":"Activity","sort_order":34,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"26F9-1F3FB","image":"26f9-1f3fb.png","sheet_x":2,"sheet_y":26,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"26F9-1F3FC","image":"26f9-1f3fc.png","sheet_x":2,"sheet_y":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"26F9-1F3FD","image":"26f9-1f3fd.png","sheet_x":2,"sheet_y":28,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"26F9-1F3FE","image":"26f9-1f3fe.png","sheet_x":2,"sheet_y":29,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"26F9-1F3FF","image":"26f9-1f3ff.png","sheet_x":2,"sheet_y":30,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}},"obsoleted_by":"26F9-FE0F-200D-2642-FE0F"},{"name":"TENT","unified":"26FA","variations":["26FA-FE0F"],"docomo":null,"au":"E5D0","softbank":"E122","google":"FE7FB","image":"26fa.png","sheet_x":2,"sheet_y":31,"short_name":"tent","short_names":["tent"],"text":null,"texts":null,"category":"Places","sort_order":79,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FUEL PUMP","unified":"26FD","variations":["26FD-FE0F"],"docomo":"E66B","au":"E571","softbank":"E03A","google":"FE7F5","image":"26fd.png","sheet_x":2,"sheet_y":32,"short_name":"fuelpump","short_names":["fuelpump"],"text":null,"texts":null,"category":"Places","sort_order":55,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK SCISSORS","unified":"2702","variations":["2702-FE0F"],"docomo":"E675","au":"E516","softbank":"E313","google":"FE53E","image":"2702.png","sheet_x":2,"sheet_y":33,"short_name":"scissors","short_names":["scissors"],"text":null,"texts":null,"category":"Objects","sort_order":160,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE HEAVY CHECK MARK","unified":"2705","variations":[],"docomo":null,"au":"E55E","softbank":null,"google":"FEB4A","image":"2705.png","sheet_x":2,"sheet_y":34,"short_name":"white_check_mark","short_names":["white_check_mark"],"text":null,"texts":null,"category":"Symbols","sort_order":100,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"AIRPLANE","unified":"2708","variations":["2708-FE0F"],"docomo":"E662","au":"E4B3","softbank":"E01D","google":"FE7E9","image":"2708.png","sheet_x":2,"sheet_y":35,"short_name":"airplane","short_names":["airplane"],"text":null,"texts":null,"category":"Places","sort_order":40,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ENVELOPE","unified":"2709","variations":["2709-FE0F"],"docomo":"E6D3","au":"E521","softbank":"E103","google":"FE529","image":"2709.png","sheet_x":2,"sheet_y":36,"short_name":"email","short_names":["email","envelope"],"text":null,"texts":null,"category":"Objects","sort_order":107,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RAISED FIST","unified":"270A","variations":[],"docomo":"E693","au":"EB83","softbank":"E010","google":"FEB93","image":"270a.png","sheet_x":2,"sheet_y":37,"short_name":"fist","short_names":["fist"],"text":null,"texts":null,"category":"People","sort_order":105,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"270A-1F3FB","image":"270a-1f3fb.png","sheet_x":2,"sheet_y":38,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"270A-1F3FC","image":"270a-1f3fc.png","sheet_x":2,"sheet_y":39,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"270A-1F3FD","image":"270a-1f3fd.png","sheet_x":2,"sheet_y":40,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"270A-1F3FE","image":"270a-1f3fe.png","sheet_x":2,"sheet_y":41,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"270A-1F3FF","image":"270a-1f3ff.png","sheet_x":2,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"RAISED HAND","unified":"270B","variations":[],"docomo":"E695","au":"E5A7","softbank":"E012","google":"FEB95","image":"270b.png","sheet_x":2,"sheet_y":43,"short_name":"hand","short_names":["hand","raised_hand"],"text":null,"texts":null,"category":"People","sort_order":117,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"270B-1F3FB","image":"270b-1f3fb.png","sheet_x":2,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"270B-1F3FC","image":"270b-1f3fc.png","sheet_x":2,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"270B-1F3FD","image":"270b-1f3fd.png","sheet_x":2,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"270B-1F3FE","image":"270b-1f3fe.png","sheet_x":2,"sheet_y":47,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"270B-1F3FF","image":"270b-1f3ff.png","sheet_x":2,"sheet_y":48,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"VICTORY HAND","unified":"270C","variations":["270C-FE0F"],"docomo":"E694","au":"E5A6","softbank":"E011","google":"FEB94","image":"270c.png","sheet_x":3,"sheet_y":0,"short_name":"v","short_names":["v"],"text":null,"texts":null,"category":"People","sort_order":109,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"270C-1F3FB","image":"270c-1f3fb.png","sheet_x":3,"sheet_y":1,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"270C-1F3FC","image":"270c-1f3fc.png","sheet_x":3,"sheet_y":2,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"270C-1F3FD","image":"270c-1f3fd.png","sheet_x":3,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"270C-1F3FE","image":"270c-1f3fe.png","sheet_x":3,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"270C-1F3FF","image":"270c-1f3ff.png","sheet_x":3,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"WRITING HAND","unified":"270D","variations":["270D-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"270d.png","sheet_x":3,"sheet_y":6,"short_name":"writing_hand","short_names":["writing_hand"],"text":null,"texts":null,"category":"People","sort_order":125,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"270D-1F3FB","image":"270d-1f3fb.png","sheet_x":3,"sheet_y":7,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"270D-1F3FC","image":"270d-1f3fc.png","sheet_x":3,"sheet_y":8,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"270D-1F3FD","image":"270d-1f3fd.png","sheet_x":3,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"270D-1F3FE","image":"270d-1f3fe.png","sheet_x":3,"sheet_y":10,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"270D-1F3FF","image":"270d-1f3ff.png","sheet_x":3,"sheet_y":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"PENCIL","unified":"270F","variations":["270F-FE0F"],"docomo":"E719","au":"E4A1","softbank":"E301","google":"FE539","image":"270f.png","sheet_x":3,"sheet_y":12,"short_name":"pencil2","short_names":["pencil2"],"text":null,"texts":null,"category":"Objects","sort_order":167,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK NIB","unified":"2712","variations":["2712-FE0F"],"docomo":"E6AE","au":"EB03","softbank":null,"google":"FE536","image":"2712.png","sheet_x":3,"sheet_y":13,"short_name":"black_nib","short_names":["black_nib"],"text":null,"texts":null,"category":"Objects","sort_order":163,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY CHECK MARK","unified":"2714","variations":["2714-FE0F"],"docomo":null,"au":"E557","softbank":null,"google":"FEB49","image":"2714.png","sheet_x":3,"sheet_y":14,"short_name":"heavy_check_mark","short_names":["heavy_check_mark"],"text":null,"texts":null,"category":"Symbols","sort_order":207,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY MULTIPLICATION X","unified":"2716","variations":["2716-FE0F"],"docomo":null,"au":"E54F","softbank":"E333","google":"FEB53","image":"2716.png","sheet_x":3,"sheet_y":15,"short_name":"heavy_multiplication_x","short_names":["heavy_multiplication_x"],"text":null,"texts":null,"category":"Symbols","sort_order":193,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LATIN CROSS","unified":"271D","variations":["271D-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"271d.png","sheet_x":3,"sheet_y":16,"short_name":"latin_cross","short_names":["latin_cross"],"text":null,"texts":null,"category":"Symbols","sort_order":18,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"STAR OF DAVID","unified":"2721","variations":["2721-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2721.png","sheet_x":3,"sheet_y":17,"short_name":"star_of_david","short_names":["star_of_david"],"text":null,"texts":null,"category":"Symbols","sort_order":22,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SPARKLES","unified":"2728","variations":[],"docomo":"E6FA","au":"EAAB","softbank":"E32E","google":"FEB60","image":"2728.png","sheet_x":3,"sheet_y":18,"short_name":"sparkles","short_names":["sparkles"],"text":null,"texts":null,"category":"Nature","sort_order":133,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EIGHT SPOKED ASTERISK","unified":"2733","variations":["2733-FE0F"],"docomo":"E6F8","au":"E53E","softbank":"E206","google":"FEB62","image":"2733.png","sheet_x":3,"sheet_y":19,"short_name":"eight_spoked_asterisk","short_names":["eight_spoked_asterisk"],"text":null,"texts":null,"category":"Symbols","sort_order":104,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EIGHT POINTED BLACK STAR","unified":"2734","variations":["2734-FE0F"],"docomo":"E6F8","au":"E479","softbank":"E205","google":"FEB61","image":"2734.png","sheet_x":3,"sheet_y":20,"short_name":"eight_pointed_black_star","short_names":["eight_pointed_black_star"],"text":null,"texts":null,"category":"Symbols","sort_order":53,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SNOWFLAKE","unified":"2744","variations":["2744-FE0F"],"docomo":null,"au":"E48A","softbank":null,"google":"FE00E","image":"2744.png","sheet_x":3,"sheet_y":21,"short_name":"snowflake","short_names":["snowflake"],"text":null,"texts":null,"category":"Nature","sort_order":151,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPARKLE","unified":"2747","variations":["2747-FE0F"],"docomo":"E6FA","au":"E46C","softbank":"E32E","google":"FEB77","image":"2747.png","sheet_x":3,"sheet_y":22,"short_name":"sparkle","short_names":["sparkle"],"text":null,"texts":null,"category":"Symbols","sort_order":103,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CROSS MARK","unified":"274C","variations":[],"docomo":null,"au":"E550","softbank":"E333","google":"FEB45","image":"274c.png","sheet_x":3,"sheet_y":23,"short_name":"x","short_names":["x"],"text":null,"texts":null,"category":"Symbols","sort_order":69,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEGATIVE SQUARED CROSS MARK","unified":"274E","variations":[],"docomo":null,"au":"E551","softbank":"E333","google":"FEB46","image":"274e.png","sheet_x":3,"sheet_y":24,"short_name":"negative_squared_cross_mark","short_names":["negative_squared_cross_mark"],"text":null,"texts":null,"category":"Symbols","sort_order":105,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK QUESTION MARK ORNAMENT","unified":"2753","variations":[],"docomo":null,"au":"E483","softbank":"E020","google":"FEB09","image":"2753.png","sheet_x":3,"sheet_y":25,"short_name":"question","short_names":["question"],"text":null,"texts":null,"category":"Symbols","sort_order":87,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE QUESTION MARK ORNAMENT","unified":"2754","variations":[],"docomo":null,"au":"E483","softbank":"E336","google":"FEB0A","image":"2754.png","sheet_x":3,"sheet_y":26,"short_name":"grey_question","short_names":["grey_question"],"text":null,"texts":null,"category":"Symbols","sort_order":88,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE EXCLAMATION MARK ORNAMENT","unified":"2755","variations":[],"docomo":"E702","au":"E482","softbank":"E337","google":"FEB0B","image":"2755.png","sheet_x":3,"sheet_y":27,"short_name":"grey_exclamation","short_names":["grey_exclamation"],"text":null,"texts":null,"category":"Symbols","sort_order":86,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY EXCLAMATION MARK SYMBOL","unified":"2757","variations":["2757-FE0F"],"docomo":"E702","au":"E482","softbank":"E021","google":"FEB04","image":"2757.png","sheet_x":3,"sheet_y":28,"short_name":"exclamation","short_names":["exclamation","heavy_exclamation_mark"],"text":null,"texts":null,"category":"Symbols","sort_order":85,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY HEART EXCLAMATION MARK ORNAMENT","unified":"2763","variations":["2763-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2763.png","sheet_x":3,"sheet_y":29,"short_name":"heavy_heart_exclamation_mark_ornament","short_names":["heavy_heart_exclamation_mark_ornament"],"text":null,"texts":null,"category":"Symbols","sort_order":8,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HEAVY BLACK HEART","unified":"2764","variations":["2764-FE0F"],"docomo":"E6EC","au":"E595","softbank":"E022","google":"FEB0C","image":"2764.png","sheet_x":3,"sheet_y":30,"short_name":"heart","short_names":["heart"],"text":"<3","texts":["<3"],"category":"Symbols","sort_order":1,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY PLUS SIGN","unified":"2795","variations":[],"docomo":null,"au":"E53C","softbank":null,"google":"FEB51","image":"2795.png","sheet_x":3,"sheet_y":31,"short_name":"heavy_plus_sign","short_names":["heavy_plus_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":190,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY MINUS SIGN","unified":"2796","variations":[],"docomo":null,"au":"E53D","softbank":null,"google":"FEB52","image":"2796.png","sheet_x":3,"sheet_y":32,"short_name":"heavy_minus_sign","short_names":["heavy_minus_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":191,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY DIVISION SIGN","unified":"2797","variations":[],"docomo":null,"au":"E554","softbank":null,"google":"FEB54","image":"2797.png","sheet_x":3,"sheet_y":33,"short_name":"heavy_division_sign","short_names":["heavy_division_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":192,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK RIGHTWARDS ARROW","unified":"27A1","variations":["27A1-FE0F"],"docomo":null,"au":"E552","softbank":"E234","google":"FEAFA","image":"27a1.png","sheet_x":3,"sheet_y":34,"short_name":"arrow_right","short_names":["arrow_right"],"text":null,"texts":null,"category":"Symbols","sort_order":169,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CURLY LOOP","unified":"27B0","variations":[],"docomo":"E70A","au":"EB31","softbank":null,"google":"FEB08","image":"27b0.png","sheet_x":3,"sheet_y":35,"short_name":"curly_loop","short_names":["curly_loop"],"text":null,"texts":null,"category":"Symbols","sort_order":200,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOUBLE CURLY LOOP","unified":"27BF","variations":[],"docomo":"E6DF","au":null,"softbank":"E211","google":"FE82B","image":"27bf.png","sheet_x":3,"sheet_y":36,"short_name":"loop","short_names":["loop"],"text":null,"texts":null,"category":"Symbols","sort_order":201,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS","unified":"2934","variations":["2934-FE0F"],"docomo":"E6F5","au":"EB2D","softbank":"E236","google":"FEAF4","image":"2934.png","sheet_x":3,"sheet_y":37,"short_name":"arrow_heading_up","short_names":["arrow_heading_up"],"text":null,"texts":null,"category":"Symbols","sort_order":181,"added_in":"3.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS","unified":"2935","variations":["2935-FE0F"],"docomo":"E700","au":"EB2E","softbank":"E238","google":"FEAF5","image":"2935.png","sheet_x":3,"sheet_y":38,"short_name":"arrow_heading_down","short_names":["arrow_heading_down"],"text":null,"texts":null,"category":"Symbols","sort_order":182,"added_in":"3.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEFTWARDS BLACK ARROW","unified":"2B05","variations":["2B05-FE0F"],"docomo":null,"au":"E553","softbank":"E235","google":"FEAFB","image":"2b05.png","sheet_x":3,"sheet_y":39,"short_name":"arrow_left","short_names":["arrow_left"],"text":null,"texts":null,"category":"Symbols","sort_order":170,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"UPWARDS BLACK ARROW","unified":"2B06","variations":["2B06-FE0F"],"docomo":null,"au":"E53F","softbank":"E232","google":"FEAF8","image":"2b06.png","sheet_x":3,"sheet_y":40,"short_name":"arrow_up","short_names":["arrow_up"],"text":null,"texts":null,"category":"Symbols","sort_order":171,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOWNWARDS BLACK ARROW","unified":"2B07","variations":["2B07-FE0F"],"docomo":null,"au":"E540","softbank":"E233","google":"FEAF9","image":"2b07.png","sheet_x":3,"sheet_y":41,"short_name":"arrow_down","short_names":["arrow_down"],"text":null,"texts":null,"category":"Symbols","sort_order":172,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK LARGE SQUARE","unified":"2B1B","variations":["2B1B-FE0F"],"docomo":null,"au":"E549","softbank":"E21A","google":"FEB6C","image":"2b1b.png","sheet_x":3,"sheet_y":42,"short_name":"black_large_square","short_names":["black_large_square"],"text":null,"texts":null,"category":"Symbols","sort_order":228,"added_in":"5.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE LARGE SQUARE","unified":"2B1C","variations":["2B1C-FE0F"],"docomo":null,"au":"E548","softbank":"E21B","google":"FEB6B","image":"2b1c.png","sheet_x":3,"sheet_y":43,"short_name":"white_large_square","short_names":["white_large_square"],"text":null,"texts":null,"category":"Symbols","sort_order":229,"added_in":"5.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE MEDIUM STAR","unified":"2B50","variations":["2B50-FE0F"],"docomo":null,"au":"E48B","softbank":"E32F","google":"FEB68","image":"2b50.png","sheet_x":3,"sheet_y":44,"short_name":"star","short_names":["star"],"text":null,"texts":null,"category":"Nature","sort_order":131,"added_in":"5.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY LARGE CIRCLE","unified":"2B55","variations":["2B55-FE0F"],"docomo":"E6A0","au":"EAAD","softbank":"E332","google":"FEB44","image":"2b55.png","sheet_x":3,"sheet_y":45,"short_name":"o","short_names":["o"],"text":null,"texts":null,"category":"Symbols","sort_order":70,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WAVY DASH","unified":"3030","variations":["3030-FE0F"],"docomo":"E709","au":null,"softbank":null,"google":"FEB07","image":"3030.png","sheet_x":3,"sheet_y":46,"short_name":"wavy_dash","short_names":["wavy_dash"],"text":null,"texts":null,"category":"Symbols","sort_order":199,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PART ALTERNATION MARK","unified":"303D","variations":["303D-FE0F"],"docomo":null,"au":null,"softbank":"E12C","google":"FE81B","image":"303d.png","sheet_x":3,"sheet_y":47,"short_name":"part_alternation_mark","short_names":["part_alternation_mark"],"text":null,"texts":null,"category":"Symbols","sort_order":93,"added_in":"3.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CIRCLED IDEOGRAPH CONGRATULATION","unified":"3297","variations":["3297-FE0F"],"docomo":null,"au":"EA99","softbank":"E30D","google":"FEB43","image":"3297.png","sheet_x":3,"sheet_y":48,"short_name":"congratulations","short_names":["congratulations"],"text":null,"texts":null,"category":"Symbols","sort_order":58,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CIRCLED IDEOGRAPH SECRET","unified":"3299","variations":["3299-FE0F"],"docomo":"E734","au":"E4F1","softbank":"E315","google":"FEB2B","image":"3299.png","sheet_x":4,"sheet_y":0,"short_name":"secret","short_names":["secret"],"text":null,"texts":null,"category":"Symbols","sort_order":57,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MAHJONG TILE RED DRAGON","unified":"1F004","variations":["1F004-FE0F"],"docomo":null,"au":"E5D1","softbank":"E12D","google":"FE80B","image":"1f004.png","sheet_x":4,"sheet_y":1,"short_name":"mahjong","short_names":["mahjong"],"text":null,"texts":null,"category":"Symbols","sort_order":249,"added_in":"5.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PLAYING CARD BLACK JOKER","unified":"1F0CF","variations":[],"docomo":null,"au":"EB6F","softbank":null,"google":"FE812","image":"1f0cf.png","sheet_x":4,"sheet_y":2,"short_name":"black_joker","short_names":["black_joker"],"text":null,"texts":null,"category":"Symbols","sort_order":247,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEGATIVE SQUARED LATIN CAPITAL LETTER A","unified":"1F170","variations":["1F170-FE0F"],"docomo":null,"au":"EB26","softbank":"E532","google":"FE50B","image":"1f170.png","sheet_x":4,"sheet_y":3,"short_name":"a","short_names":["a"],"text":null,"texts":null,"category":"Symbols","sort_order":63,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEGATIVE SQUARED LATIN CAPITAL LETTER B","unified":"1F171","variations":["1F171-FE0F"],"docomo":null,"au":"EB27","softbank":"E533","google":"FE50C","image":"1f171.png","sheet_x":4,"sheet_y":4,"short_name":"b","short_names":["b"],"text":null,"texts":null,"category":"Symbols","sort_order":64,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEGATIVE SQUARED LATIN CAPITAL LETTER O","unified":"1F17E","variations":["1F17E-FE0F"],"docomo":null,"au":"EB28","softbank":"E535","google":"FE50E","image":"1f17e.png","sheet_x":4,"sheet_y":5,"short_name":"o2","short_names":["o2"],"text":null,"texts":null,"category":"Symbols","sort_order":67,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEGATIVE SQUARED LATIN CAPITAL LETTER P","unified":"1F17F","variations":["1F17F-FE0F"],"docomo":"E66C","au":"E4A6","softbank":"E14F","google":"FE7F6","image":"1f17f.png","sheet_x":4,"sheet_y":6,"short_name":"parking","short_names":["parking"],"text":null,"texts":null,"category":"Symbols","sort_order":114,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEGATIVE SQUARED AB","unified":"1F18E","variations":[],"docomo":null,"au":"EB29","softbank":"E534","google":"FE50D","image":"1f18e.png","sheet_x":4,"sheet_y":7,"short_name":"ab","short_names":["ab"],"text":null,"texts":null,"category":"Symbols","sort_order":65,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CL","unified":"1F191","variations":[],"docomo":"E6DB","au":"E5AB","softbank":null,"google":"FEB84","image":"1f191.png","sheet_x":4,"sheet_y":8,"short_name":"cl","short_names":["cl"],"text":null,"texts":null,"category":"Symbols","sort_order":66,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED COOL","unified":"1F192","variations":[],"docomo":null,"au":"EA85","softbank":"E214","google":"FEB38","image":"1f192.png","sheet_x":4,"sheet_y":9,"short_name":"cool","short_names":["cool"],"text":null,"texts":null,"category":"Symbols","sort_order":137,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED FREE","unified":"1F193","variations":[],"docomo":"E6D7","au":"E578","softbank":null,"google":"FEB21","image":"1f193.png","sheet_x":4,"sheet_y":10,"short_name":"free","short_names":["free"],"text":null,"texts":null,"category":"Symbols","sort_order":139,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED ID","unified":"1F194","variations":[],"docomo":"E6D8","au":"EA88","softbank":"E229","google":"FEB81","image":"1f194.png","sheet_x":4,"sheet_y":11,"short_name":"id","short_names":["id"],"text":null,"texts":null,"category":"Symbols","sort_order":41,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED NEW","unified":"1F195","variations":[],"docomo":"E6DD","au":"E5B5","softbank":"E212","google":"FEB36","image":"1f195.png","sheet_x":4,"sheet_y":12,"short_name":"new","short_names":["new"],"text":null,"texts":null,"category":"Symbols","sort_order":138,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED NG","unified":"1F196","variations":[],"docomo":"E72F","au":null,"softbank":null,"google":"FEB28","image":"1f196.png","sheet_x":4,"sheet_y":13,"short_name":"ng","short_names":["ng"],"text":null,"texts":null,"category":"Symbols","sort_order":134,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED OK","unified":"1F197","variations":[],"docomo":"E70B","au":"E5AD","softbank":"E24D","google":"FEB27","image":"1f197.png","sheet_x":4,"sheet_y":14,"short_name":"ok","short_names":["ok"],"text":null,"texts":null,"category":"Symbols","sort_order":135,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED SOS","unified":"1F198","variations":[],"docomo":null,"au":"E4E8","softbank":null,"google":"FEB4F","image":"1f198.png","sheet_x":4,"sheet_y":15,"short_name":"sos","short_names":["sos"],"text":null,"texts":null,"category":"Symbols","sort_order":68,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED UP WITH EXCLAMATION MARK","unified":"1F199","variations":[],"docomo":null,"au":"E50F","softbank":"E213","google":"FEB37","image":"1f199.png","sheet_x":4,"sheet_y":16,"short_name":"up","short_names":["up"],"text":null,"texts":null,"category":"Symbols","sort_order":136,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED VS","unified":"1F19A","variations":[],"docomo":null,"au":"E5D2","softbank":"E12E","google":"FEB32","image":"1f19a.png","sheet_x":4,"sheet_y":17,"short_name":"vs","short_names":["vs"],"text":null,"texts":null,"category":"Symbols","sort_order":54,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED KATAKANA KOKO","unified":"1F201","variations":[],"docomo":null,"au":null,"softbank":"E203","google":"FEB24","image":"1f201.png","sheet_x":4,"sheet_y":18,"short_name":"koko","short_names":["koko"],"text":null,"texts":null,"category":"Symbols","sort_order":128,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED KATAKANA SA","unified":"1F202","variations":["1F202-FE0F"],"docomo":null,"au":"EA87","softbank":"E228","google":"FEB3F","image":"1f202.png","sheet_x":4,"sheet_y":19,"short_name":"sa","short_names":["sa"],"text":null,"texts":null,"category":"Symbols","sort_order":116,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-7121","unified":"1F21A","variations":["1F21A-FE0F"],"docomo":null,"au":null,"softbank":"E216","google":"FEB3A","image":"1f21a.png","sheet_x":4,"sheet_y":20,"short_name":"u7121","short_names":["u7121"],"text":null,"texts":null,"category":"Symbols","sort_order":49,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-6307","unified":"1F22F","variations":["1F22F-FE0F"],"docomo":null,"au":"EA8B","softbank":"E22C","google":"FEB40","image":"1f22f.png","sheet_x":4,"sheet_y":21,"short_name":"u6307","short_names":["u6307"],"text":null,"texts":null,"category":"Symbols","sort_order":101,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-7981","unified":"1F232","variations":[],"docomo":"E738","au":null,"softbank":null,"google":"FEB2E","image":"1f232.png","sheet_x":4,"sheet_y":22,"short_name":"u7981","short_names":["u7981"],"text":null,"texts":null,"category":"Symbols","sort_order":62,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-7A7A","unified":"1F233","variations":[],"docomo":"E739","au":"EA8A","softbank":"E22B","google":"FEB2F","image":"1f233.png","sheet_x":4,"sheet_y":23,"short_name":"u7a7a","short_names":["u7a7a"],"text":null,"texts":null,"category":"Symbols","sort_order":115,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-5408","unified":"1F234","variations":[],"docomo":"E73A","au":null,"softbank":null,"google":"FEB30","image":"1f234.png","sheet_x":4,"sheet_y":24,"short_name":"u5408","short_names":["u5408"],"text":null,"texts":null,"category":"Symbols","sort_order":59,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-6E80","unified":"1F235","variations":[],"docomo":"E73B","au":"EA89","softbank":"E22A","google":"FEB31","image":"1f235.png","sheet_x":4,"sheet_y":25,"short_name":"u6e80","short_names":["u6e80"],"text":null,"texts":null,"category":"Symbols","sort_order":60,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-6709","unified":"1F236","variations":[],"docomo":null,"au":null,"softbank":"E215","google":"FEB39","image":"1f236.png","sheet_x":4,"sheet_y":26,"short_name":"u6709","short_names":["u6709"],"text":null,"texts":null,"category":"Symbols","sort_order":48,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-6708","unified":"1F237","variations":["1F237-FE0F"],"docomo":null,"au":null,"softbank":"E217","google":"FEB3B","image":"1f237.png","sheet_x":4,"sheet_y":27,"short_name":"u6708","short_names":["u6708"],"text":null,"texts":null,"category":"Symbols","sort_order":52,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-7533","unified":"1F238","variations":[],"docomo":null,"au":null,"softbank":"E218","google":"FEB3C","image":"1f238.png","sheet_x":4,"sheet_y":28,"short_name":"u7533","short_names":["u7533"],"text":null,"texts":null,"category":"Symbols","sort_order":50,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-5272","unified":"1F239","variations":[],"docomo":null,"au":"EA86","softbank":"E227","google":"FEB3E","image":"1f239.png","sheet_x":4,"sheet_y":29,"short_name":"u5272","short_names":["u5272"],"text":null,"texts":null,"category":"Symbols","sort_order":61,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-55B6","unified":"1F23A","variations":[],"docomo":null,"au":"EA8C","softbank":"E22D","google":"FEB41","image":"1f23a.png","sheet_x":4,"sheet_y":30,"short_name":"u55b6","short_names":["u55b6"],"text":null,"texts":null,"category":"Symbols","sort_order":51,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CIRCLED IDEOGRAPH ADVANTAGE","unified":"1F250","variations":[],"docomo":null,"au":"E4F7","softbank":"E226","google":"FEB3D","image":"1f250.png","sheet_x":4,"sheet_y":31,"short_name":"ideograph_advantage","short_names":["ideograph_advantage"],"text":null,"texts":null,"category":"Symbols","sort_order":56,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CIRCLED IDEOGRAPH ACCEPT","unified":"1F251","variations":[],"docomo":null,"au":"EB01","softbank":null,"google":"FEB50","image":"1f251.png","sheet_x":4,"sheet_y":32,"short_name":"accept","short_names":["accept"],"text":null,"texts":null,"category":"Symbols","sort_order":43,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CYCLONE","unified":"1F300","variations":[],"docomo":"E643","au":"E469","softbank":"E443","google":"FE005","image":"1f300.png","sheet_x":4,"sheet_y":33,"short_name":"cyclone","short_names":["cyclone"],"text":null,"texts":null,"category":"Symbols","sort_order":109,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FOGGY","unified":"1F301","variations":[],"docomo":"E644","au":"E598","softbank":null,"google":"FE006","image":"1f301.png","sheet_x":4,"sheet_y":34,"short_name":"foggy","short_names":["foggy"],"text":null,"texts":null,"category":"Places","sort_order":119,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOSED UMBRELLA","unified":"1F302","variations":[],"docomo":"E645","au":"EAE8","softbank":"E43C","google":"FE007","image":"1f302.png","sheet_x":4,"sheet_y":35,"short_name":"closed_umbrella","short_names":["closed_umbrella"],"text":null,"texts":null,"category":"People","sort_order":292,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NIGHT WITH STARS","unified":"1F303","variations":[],"docomo":"E6B3","au":"EAF1","softbank":"E44B","google":"FE008","image":"1f303.png","sheet_x":4,"sheet_y":36,"short_name":"night_with_stars","short_names":["night_with_stars"],"text":null,"texts":null,"category":"Places","sort_order":116,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SUNRISE OVER MOUNTAINS","unified":"1F304","variations":[],"docomo":"E63E","au":"EAF4","softbank":"E04D","google":"FE009","image":"1f304.png","sheet_x":4,"sheet_y":37,"short_name":"sunrise_over_mountains","short_names":["sunrise_over_mountains"],"text":null,"texts":null,"category":"Places","sort_order":109,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SUNRISE","unified":"1F305","variations":[],"docomo":"E63E","au":"EAF4","softbank":"E449","google":"FE00A","image":"1f305.png","sheet_x":4,"sheet_y":38,"short_name":"sunrise","short_names":["sunrise"],"text":null,"texts":null,"category":"Places","sort_order":108,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CITYSCAPE AT DUSK","unified":"1F306","variations":[],"docomo":null,"au":"E5DA","softbank":"E146","google":"FE00B","image":"1f306.png","sheet_x":4,"sheet_y":39,"short_name":"city_sunset","short_names":["city_sunset"],"text":null,"texts":null,"category":"Places","sort_order":114,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SUNSET OVER BUILDINGS","unified":"1F307","variations":[],"docomo":"E63E","au":"E5DA","softbank":"E44A","google":"FE00C","image":"1f307.png","sheet_x":4,"sheet_y":40,"short_name":"city_sunrise","short_names":["city_sunrise"],"text":null,"texts":null,"category":"Places","sort_order":113,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RAINBOW","unified":"1F308","variations":[],"docomo":null,"au":"EAF2","softbank":"E44C","google":"FE00D","image":"1f308.png","sheet_x":4,"sheet_y":41,"short_name":"rainbow","short_names":["rainbow"],"text":null,"texts":null,"category":"Nature","sort_order":143,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BRIDGE AT NIGHT","unified":"1F309","variations":[],"docomo":"E6B3","au":"E4BF","softbank":"E44B","google":"FE010","image":"1f309.png","sheet_x":4,"sheet_y":42,"short_name":"bridge_at_night","short_names":["bridge_at_night"],"text":null,"texts":null,"category":"Places","sort_order":118,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WATER WAVE","unified":"1F30A","variations":[],"docomo":"E73F","au":"EB7C","softbank":"E43E","google":"FE038","image":"1f30a.png","sheet_x":4,"sheet_y":43,"short_name":"ocean","short_names":["ocean"],"text":null,"texts":null,"category":"Nature","sort_order":156,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"VOLCANO","unified":"1F30B","variations":[],"docomo":null,"au":"EB53","softbank":null,"google":"FE03A","image":"1f30b.png","sheet_x":4,"sheet_y":44,"short_name":"volcano","short_names":["volcano"],"text":null,"texts":null,"category":"Places","sort_order":76,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MILKY WAY","unified":"1F30C","variations":[],"docomo":"E6B3","au":"EB5F","softbank":"E44B","google":"FE03B","image":"1f30c.png","sheet_x":4,"sheet_y":45,"short_name":"milky_way","short_names":["milky_way"],"text":null,"texts":null,"category":"Places","sort_order":117,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EARTH GLOBE EUROPE-AFRICA","unified":"1F30D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f30d.png","sheet_x":4,"sheet_y":46,"short_name":"earth_africa","short_names":["earth_africa"],"text":null,"texts":null,"category":"Nature","sort_order":114,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EARTH GLOBE AMERICAS","unified":"1F30E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f30e.png","sheet_x":4,"sheet_y":47,"short_name":"earth_americas","short_names":["earth_americas"],"text":null,"texts":null,"category":"Nature","sort_order":113,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EARTH GLOBE ASIA-AUSTRALIA","unified":"1F30F","variations":[],"docomo":null,"au":"E5B3","softbank":null,"google":"FE039","image":"1f30f.png","sheet_x":4,"sheet_y":48,"short_name":"earth_asia","short_names":["earth_asia"],"text":null,"texts":null,"category":"Nature","sort_order":115,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GLOBE WITH MERIDIANS","unified":"1F310","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f310.png","sheet_x":5,"sheet_y":0,"short_name":"globe_with_meridians","short_names":["globe_with_meridians"],"text":null,"texts":null,"category":"Symbols","sort_order":106,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEW MOON SYMBOL","unified":"1F311","variations":[],"docomo":"E69C","au":"E5A8","softbank":null,"google":"FE011","image":"1f311.png","sheet_x":5,"sheet_y":1,"short_name":"new_moon","short_names":["new_moon"],"text":null,"texts":null,"category":"Nature","sort_order":120,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WAXING CRESCENT MOON SYMBOL","unified":"1F312","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f312.png","sheet_x":5,"sheet_y":2,"short_name":"waxing_crescent_moon","short_names":["waxing_crescent_moon"],"text":null,"texts":null,"category":"Nature","sort_order":121,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FIRST QUARTER MOON SYMBOL","unified":"1F313","variations":[],"docomo":"E69E","au":"E5AA","softbank":"E04C","google":"FE013","image":"1f313.png","sheet_x":5,"sheet_y":3,"short_name":"first_quarter_moon","short_names":["first_quarter_moon"],"text":null,"texts":null,"category":"Nature","sort_order":122,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WAXING GIBBOUS MOON SYMBOL","unified":"1F314","variations":[],"docomo":"E69D","au":"E5A9","softbank":"E04C","google":"FE012","image":"1f314.png","sheet_x":5,"sheet_y":4,"short_name":"moon","short_names":["moon","waxing_gibbous_moon"],"text":null,"texts":null,"category":"Nature","sort_order":123,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FULL MOON SYMBOL","unified":"1F315","variations":[],"docomo":"E6A0","au":null,"softbank":null,"google":"FE015","image":"1f315.png","sheet_x":5,"sheet_y":5,"short_name":"full_moon","short_names":["full_moon"],"text":null,"texts":null,"category":"Nature","sort_order":116,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WANING GIBBOUS MOON SYMBOL","unified":"1F316","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f316.png","sheet_x":5,"sheet_y":6,"short_name":"waning_gibbous_moon","short_names":["waning_gibbous_moon"],"text":null,"texts":null,"category":"Nature","sort_order":117,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LAST QUARTER MOON SYMBOL","unified":"1F317","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f317.png","sheet_x":5,"sheet_y":7,"short_name":"last_quarter_moon","short_names":["last_quarter_moon"],"text":null,"texts":null,"category":"Nature","sort_order":118,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WANING CRESCENT MOON SYMBOL","unified":"1F318","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f318.png","sheet_x":5,"sheet_y":8,"short_name":"waning_crescent_moon","short_names":["waning_crescent_moon"],"text":null,"texts":null,"category":"Nature","sort_order":119,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CRESCENT MOON","unified":"1F319","variations":[],"docomo":"E69F","au":"E486","softbank":"E04C","google":"FE014","image":"1f319.png","sheet_x":5,"sheet_y":9,"short_name":"crescent_moon","short_names":["crescent_moon"],"text":null,"texts":null,"category":"Nature","sort_order":129,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEW MOON WITH FACE","unified":"1F31A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f31a.png","sheet_x":5,"sheet_y":10,"short_name":"new_moon_with_face","short_names":["new_moon_with_face"],"text":null,"texts":null,"category":"Nature","sort_order":124,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FIRST QUARTER MOON WITH FACE","unified":"1F31B","variations":[],"docomo":"E69E","au":"E489","softbank":"E04C","google":"FE016","image":"1f31b.png","sheet_x":5,"sheet_y":11,"short_name":"first_quarter_moon_with_face","short_names":["first_quarter_moon_with_face"],"text":null,"texts":null,"category":"Nature","sort_order":127,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LAST QUARTER MOON WITH FACE","unified":"1F31C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f31c.png","sheet_x":5,"sheet_y":12,"short_name":"last_quarter_moon_with_face","short_names":["last_quarter_moon_with_face"],"text":null,"texts":null,"category":"Nature","sort_order":128,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FULL MOON WITH FACE","unified":"1F31D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f31d.png","sheet_x":5,"sheet_y":13,"short_name":"full_moon_with_face","short_names":["full_moon_with_face"],"text":null,"texts":null,"category":"Nature","sort_order":125,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SUN WITH FACE","unified":"1F31E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f31e.png","sheet_x":5,"sheet_y":14,"short_name":"sun_with_face","short_names":["sun_with_face"],"text":null,"texts":null,"category":"Nature","sort_order":126,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GLOWING STAR","unified":"1F31F","variations":[],"docomo":null,"au":"E48B","softbank":"E335","google":"FEB69","image":"1f31f.png","sheet_x":5,"sheet_y":15,"short_name":"star2","short_names":["star2"],"text":null,"texts":null,"category":"Nature","sort_order":132,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SHOOTING STAR","unified":"1F320","variations":[],"docomo":null,"au":"E468","softbank":null,"google":"FEB6A","image":"1f320.png","sheet_x":5,"sheet_y":16,"short_name":"stars","short_names":["stars"],"text":null,"texts":null,"category":"Places","sort_order":110,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"THERMOMETER","unified":"1F321","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f321.png","sheet_x":5,"sheet_y":17,"short_name":"thermometer","short_names":["thermometer"],"text":null,"texts":null,"category":"Objects","sort_order":82,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WHITE SUN WITH SMALL CLOUD","unified":"1F324","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f324.png","sheet_x":5,"sheet_y":18,"short_name":"mostly_sunny","short_names":["mostly_sunny","sun_small_cloud"],"text":null,"texts":null,"category":"Nature","sort_order":139,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WHITE SUN BEHIND CLOUD","unified":"1F325","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f325.png","sheet_x":5,"sheet_y":19,"short_name":"barely_sunny","short_names":["barely_sunny","sun_behind_cloud"],"text":null,"texts":null,"category":"Nature","sort_order":141,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WHITE SUN BEHIND CLOUD WITH RAIN","unified":"1F326","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f326.png","sheet_x":5,"sheet_y":20,"short_name":"partly_sunny_rain","short_names":["partly_sunny_rain","sun_behind_rain_cloud"],"text":null,"texts":null,"category":"Nature","sort_order":142,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CLOUD WITH RAIN","unified":"1F327","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f327.png","sheet_x":5,"sheet_y":21,"short_name":"rain_cloud","short_names":["rain_cloud"],"text":null,"texts":null,"category":"Nature","sort_order":145,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CLOUD WITH SNOW","unified":"1F328","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f328.png","sheet_x":5,"sheet_y":22,"short_name":"snow_cloud","short_names":["snow_cloud"],"text":null,"texts":null,"category":"Nature","sort_order":148,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CLOUD WITH LIGHTNING","unified":"1F329","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f329.png","sheet_x":5,"sheet_y":23,"short_name":"lightning","short_names":["lightning","lightning_cloud"],"text":null,"texts":null,"category":"Nature","sort_order":147,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CLOUD WITH TORNADO","unified":"1F32A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f32a.png","sheet_x":5,"sheet_y":24,"short_name":"tornado","short_names":["tornado","tornado_cloud"],"text":null,"texts":null,"category":"Nature","sort_order":154,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FOG","unified":"1F32B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f32b.png","sheet_x":5,"sheet_y":25,"short_name":"fog","short_names":["fog"],"text":null,"texts":null,"category":"Nature","sort_order":155,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WIND BLOWING FACE","unified":"1F32C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f32c.png","sheet_x":5,"sheet_y":26,"short_name":"wind_blowing_face","short_names":["wind_blowing_face"],"text":null,"texts":null,"category":"Nature","sort_order":152,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HOT DOG","unified":"1F32D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f32d.png","sheet_x":5,"sheet_y":27,"short_name":"hotdog","short_names":["hotdog"],"text":null,"texts":null,"category":"Foods","sort_order":39,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TACO","unified":"1F32E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f32e.png","sheet_x":5,"sheet_y":28,"short_name":"taco","short_names":["taco"],"text":null,"texts":null,"category":"Foods","sort_order":43,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BURRITO","unified":"1F32F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f32f.png","sheet_x":5,"sheet_y":29,"short_name":"burrito","short_names":["burrito"],"text":null,"texts":null,"category":"Foods","sort_order":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CHESTNUT","unified":"1F330","variations":[],"docomo":null,"au":"EB38","softbank":null,"google":"FE04C","image":"1f330.png","sheet_x":5,"sheet_y":30,"short_name":"chestnut","short_names":["chestnut"],"text":null,"texts":null,"category":"Foods","sort_order":24,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SEEDLING","unified":"1F331","variations":[],"docomo":"E746","au":"EB7D","softbank":"E110","google":"FE03E","image":"1f331.png","sheet_x":5,"sheet_y":31,"short_name":"seedling","short_names":["seedling"],"text":null,"texts":null,"category":"Nature","sort_order":94,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EVERGREEN TREE","unified":"1F332","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f332.png","sheet_x":5,"sheet_y":32,"short_name":"evergreen_tree","short_names":["evergreen_tree"],"text":null,"texts":null,"category":"Nature","sort_order":91,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DECIDUOUS TREE","unified":"1F333","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f333.png","sheet_x":5,"sheet_y":33,"short_name":"deciduous_tree","short_names":["deciduous_tree"],"text":null,"texts":null,"category":"Nature","sort_order":92,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PALM TREE","unified":"1F334","variations":[],"docomo":null,"au":"E4E2","softbank":"E307","google":"FE047","image":"1f334.png","sheet_x":5,"sheet_y":34,"short_name":"palm_tree","short_names":["palm_tree"],"text":null,"texts":null,"category":"Nature","sort_order":93,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CACTUS","unified":"1F335","variations":[],"docomo":null,"au":"EA96","softbank":"E308","google":"FE048","image":"1f335.png","sheet_x":5,"sheet_y":35,"short_name":"cactus","short_names":["cactus"],"text":null,"texts":null,"category":"Nature","sort_order":89,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HOT PEPPER","unified":"1F336","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f336.png","sheet_x":5,"sheet_y":36,"short_name":"hot_pepper","short_names":["hot_pepper"],"text":null,"texts":null,"category":"Foods","sort_order":21,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TULIP","unified":"1F337","variations":[],"docomo":"E743","au":"E4E4","softbank":"E304","google":"FE03D","image":"1f337.png","sheet_x":5,"sheet_y":37,"short_name":"tulip","short_names":["tulip"],"text":null,"texts":null,"category":"Nature","sort_order":106,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHERRY BLOSSOM","unified":"1F338","variations":[],"docomo":"E748","au":"E4CA","softbank":"E030","google":"FE040","image":"1f338.png","sheet_x":5,"sheet_y":38,"short_name":"cherry_blossom","short_names":["cherry_blossom"],"text":null,"texts":null,"category":"Nature","sort_order":111,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ROSE","unified":"1F339","variations":[],"docomo":null,"au":"E5BA","softbank":"E032","google":"FE041","image":"1f339.png","sheet_x":5,"sheet_y":39,"short_name":"rose","short_names":["rose"],"text":null,"texts":null,"category":"Nature","sort_order":107,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HIBISCUS","unified":"1F33A","variations":[],"docomo":null,"au":"EA94","softbank":"E303","google":"FE045","image":"1f33a.png","sheet_x":5,"sheet_y":40,"short_name":"hibiscus","short_names":["hibiscus"],"text":null,"texts":null,"category":"Nature","sort_order":112,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SUNFLOWER","unified":"1F33B","variations":[],"docomo":null,"au":"E4E3","softbank":"E305","google":"FE046","image":"1f33b.png","sheet_x":5,"sheet_y":41,"short_name":"sunflower","short_names":["sunflower"],"text":null,"texts":null,"category":"Nature","sort_order":109,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLOSSOM","unified":"1F33C","variations":[],"docomo":null,"au":"EB49","softbank":"E305","google":"FE04D","image":"1f33c.png","sheet_x":5,"sheet_y":42,"short_name":"blossom","short_names":["blossom"],"text":null,"texts":null,"category":"Nature","sort_order":110,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EAR OF MAIZE","unified":"1F33D","variations":[],"docomo":null,"au":"EB36","softbank":null,"google":"FE04A","image":"1f33d.png","sheet_x":5,"sheet_y":43,"short_name":"corn","short_names":["corn"],"text":null,"texts":null,"category":"Foods","sort_order":20,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EAR OF RICE","unified":"1F33E","variations":[],"docomo":null,"au":null,"softbank":"E444","google":"FE049","image":"1f33e.png","sheet_x":5,"sheet_y":44,"short_name":"ear_of_rice","short_names":["ear_of_rice"],"text":null,"texts":null,"category":"Nature","sort_order":104,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HERB","unified":"1F33F","variations":[],"docomo":"E741","au":"EB82","softbank":"E110","google":"FE04E","image":"1f33f.png","sheet_x":5,"sheet_y":45,"short_name":"herb","short_names":["herb"],"text":null,"texts":null,"category":"Nature","sort_order":95,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FOUR LEAF CLOVER","unified":"1F340","variations":[],"docomo":"E741","au":"E513","softbank":"E110","google":"FE03C","image":"1f340.png","sheet_x":5,"sheet_y":46,"short_name":"four_leaf_clover","short_names":["four_leaf_clover"],"text":null,"texts":null,"category":"Nature","sort_order":97,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MAPLE LEAF","unified":"1F341","variations":[],"docomo":"E747","au":"E4CE","softbank":"E118","google":"FE03F","image":"1f341.png","sheet_x":5,"sheet_y":47,"short_name":"maple_leaf","short_names":["maple_leaf"],"text":null,"texts":null,"category":"Nature","sort_order":102,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FALLEN LEAF","unified":"1F342","variations":[],"docomo":"E747","au":"E5CD","softbank":"E119","google":"FE042","image":"1f342.png","sheet_x":5,"sheet_y":48,"short_name":"fallen_leaf","short_names":["fallen_leaf"],"text":null,"texts":null,"category":"Nature","sort_order":101,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEAF FLUTTERING IN WIND","unified":"1F343","variations":[],"docomo":null,"au":"E5CD","softbank":"E447","google":"FE043","image":"1f343.png","sheet_x":6,"sheet_y":0,"short_name":"leaves","short_names":["leaves"],"text":null,"texts":null,"category":"Nature","sort_order":100,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MUSHROOM","unified":"1F344","variations":[],"docomo":null,"au":"EB37","softbank":null,"google":"FE04B","image":"1f344.png","sheet_x":6,"sheet_y":1,"short_name":"mushroom","short_names":["mushroom"],"text":null,"texts":null,"category":"Nature","sort_order":103,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TOMATO","unified":"1F345","variations":[],"docomo":null,"au":"EABB","softbank":"E349","google":"FE055","image":"1f345.png","sheet_x":6,"sheet_y":2,"short_name":"tomato","short_names":["tomato"],"text":null,"texts":null,"category":"Foods","sort_order":16,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"AUBERGINE","unified":"1F346","variations":[],"docomo":null,"au":"EABC","softbank":"E34A","google":"FE056","image":"1f346.png","sheet_x":6,"sheet_y":3,"short_name":"eggplant","short_names":["eggplant"],"text":null,"texts":null,"category":"Foods","sort_order":17,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GRAPES","unified":"1F347","variations":[],"docomo":null,"au":"EB34","softbank":null,"google":"FE059","image":"1f347.png","sheet_x":6,"sheet_y":4,"short_name":"grapes","short_names":["grapes"],"text":null,"texts":null,"category":"Foods","sort_order":8,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MELON","unified":"1F348","variations":[],"docomo":null,"au":"EB32","softbank":null,"google":"FE057","image":"1f348.png","sheet_x":6,"sheet_y":5,"short_name":"melon","short_names":["melon"],"text":null,"texts":null,"category":"Foods","sort_order":10,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WATERMELON","unified":"1F349","variations":[],"docomo":null,"au":"E4CD","softbank":"E348","google":"FE054","image":"1f349.png","sheet_x":6,"sheet_y":6,"short_name":"watermelon","short_names":["watermelon"],"text":null,"texts":null,"category":"Foods","sort_order":7,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TANGERINE","unified":"1F34A","variations":[],"docomo":null,"au":"EABA","softbank":"E346","google":"FE052","image":"1f34a.png","sheet_x":6,"sheet_y":7,"short_name":"tangerine","short_names":["tangerine"],"text":null,"texts":null,"category":"Foods","sort_order":4,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEMON","unified":"1F34B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f34b.png","sheet_x":6,"sheet_y":8,"short_name":"lemon","short_names":["lemon"],"text":null,"texts":null,"category":"Foods","sort_order":5,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BANANA","unified":"1F34C","variations":[],"docomo":"E744","au":"EB35","softbank":null,"google":"FE050","image":"1f34c.png","sheet_x":6,"sheet_y":9,"short_name":"banana","short_names":["banana"],"text":null,"texts":null,"category":"Foods","sort_order":6,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PINEAPPLE","unified":"1F34D","variations":[],"docomo":null,"au":"EB33","softbank":null,"google":"FE058","image":"1f34d.png","sheet_x":6,"sheet_y":10,"short_name":"pineapple","short_names":["pineapple"],"text":null,"texts":null,"category":"Foods","sort_order":13,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RED APPLE","unified":"1F34E","variations":[],"docomo":"E745","au":"EAB9","softbank":"E345","google":"FE051","image":"1f34e.png","sheet_x":6,"sheet_y":11,"short_name":"apple","short_names":["apple"],"text":null,"texts":null,"category":"Foods","sort_order":2,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GREEN APPLE","unified":"1F34F","variations":[],"docomo":"E745","au":"EB5A","softbank":"E345","google":"FE05B","image":"1f34f.png","sheet_x":6,"sheet_y":12,"short_name":"green_apple","short_names":["green_apple"],"text":null,"texts":null,"category":"Foods","sort_order":1,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PEAR","unified":"1F350","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f350.png","sheet_x":6,"sheet_y":13,"short_name":"pear","short_names":["pear"],"text":null,"texts":null,"category":"Foods","sort_order":3,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PEACH","unified":"1F351","variations":[],"docomo":null,"au":"EB39","softbank":null,"google":"FE05A","image":"1f351.png","sheet_x":6,"sheet_y":14,"short_name":"peach","short_names":["peach"],"text":null,"texts":null,"category":"Foods","sort_order":12,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHERRIES","unified":"1F352","variations":[],"docomo":"E742","au":"E4D2","softbank":null,"google":"FE04F","image":"1f352.png","sheet_x":6,"sheet_y":15,"short_name":"cherries","short_names":["cherries"],"text":null,"texts":null,"category":"Foods","sort_order":11,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"STRAWBERRY","unified":"1F353","variations":[],"docomo":null,"au":"E4D4","softbank":"E347","google":"FE053","image":"1f353.png","sheet_x":6,"sheet_y":16,"short_name":"strawberry","short_names":["strawberry"],"text":null,"texts":null,"category":"Foods","sort_order":9,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HAMBURGER","unified":"1F354","variations":[],"docomo":"E673","au":"E4D6","softbank":"E120","google":"FE960","image":"1f354.png","sheet_x":6,"sheet_y":17,"short_name":"hamburger","short_names":["hamburger"],"text":null,"texts":null,"category":"Foods","sort_order":40,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SLICE OF PIZZA","unified":"1F355","variations":[],"docomo":null,"au":"EB3B","softbank":null,"google":"FE975","image":"1f355.png","sheet_x":6,"sheet_y":18,"short_name":"pizza","short_names":["pizza"],"text":null,"texts":null,"category":"Foods","sort_order":38,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MEAT ON BONE","unified":"1F356","variations":[],"docomo":null,"au":"E4C4","softbank":null,"google":"FE972","image":"1f356.png","sheet_x":6,"sheet_y":19,"short_name":"meat_on_bone","short_names":["meat_on_bone"],"text":null,"texts":null,"category":"Foods","sort_order":37,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POULTRY LEG","unified":"1F357","variations":[],"docomo":null,"au":"EB3C","softbank":null,"google":"FE976","image":"1f357.png","sheet_x":6,"sheet_y":20,"short_name":"poultry_leg","short_names":["poultry_leg"],"text":null,"texts":null,"category":"Foods","sort_order":36,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RICE CRACKER","unified":"1F358","variations":[],"docomo":null,"au":"EAB3","softbank":"E33D","google":"FE969","image":"1f358.png","sheet_x":6,"sheet_y":21,"short_name":"rice_cracker","short_names":["rice_cracker"],"text":null,"texts":null,"category":"Foods","sort_order":56,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RICE BALL","unified":"1F359","variations":[],"docomo":"E749","au":"E4D5","softbank":"E342","google":"FE961","image":"1f359.png","sheet_x":6,"sheet_y":22,"short_name":"rice_ball","short_names":["rice_ball"],"text":null,"texts":null,"category":"Foods","sort_order":55,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COOKED RICE","unified":"1F35A","variations":[],"docomo":"E74C","au":"EAB4","softbank":"E33E","google":"FE96A","image":"1f35a.png","sheet_x":6,"sheet_y":23,"short_name":"rice","short_names":["rice"],"text":null,"texts":null,"category":"Foods","sort_order":54,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CURRY AND RICE","unified":"1F35B","variations":[],"docomo":null,"au":"EAB6","softbank":"E341","google":"FE96C","image":"1f35b.png","sheet_x":6,"sheet_y":24,"short_name":"curry","short_names":["curry"],"text":null,"texts":null,"category":"Foods","sort_order":53,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"STEAMING BOWL","unified":"1F35C","variations":[],"docomo":"E74C","au":"E5B4","softbank":"E340","google":"FE963","image":"1f35c.png","sheet_x":6,"sheet_y":25,"short_name":"ramen","short_names":["ramen"],"text":null,"texts":null,"category":"Foods","sort_order":48,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPAGHETTI","unified":"1F35D","variations":[],"docomo":null,"au":"EAB5","softbank":"E33F","google":"FE96B","image":"1f35d.png","sheet_x":6,"sheet_y":26,"short_name":"spaghetti","short_names":["spaghetti"],"text":null,"texts":null,"category":"Foods","sort_order":47,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BREAD","unified":"1F35E","variations":[],"docomo":"E74D","au":"EAAF","softbank":"E339","google":"FE964","image":"1f35e.png","sheet_x":6,"sheet_y":27,"short_name":"bread","short_names":["bread"],"text":null,"texts":null,"category":"Foods","sort_order":28,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FRENCH FRIES","unified":"1F35F","variations":[],"docomo":null,"au":"EAB1","softbank":"E33B","google":"FE967","image":"1f35f.png","sheet_x":6,"sheet_y":28,"short_name":"fries","short_names":["fries"],"text":null,"texts":null,"category":"Foods","sort_order":41,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ROASTED SWEET POTATO","unified":"1F360","variations":[],"docomo":null,"au":"EB3A","softbank":null,"google":"FE974","image":"1f360.png","sheet_x":6,"sheet_y":29,"short_name":"sweet_potato","short_names":["sweet_potato"],"text":null,"texts":null,"category":"Foods","sort_order":23,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DANGO","unified":"1F361","variations":[],"docomo":null,"au":"EAB2","softbank":"E33C","google":"FE968","image":"1f361.png","sheet_x":6,"sheet_y":30,"short_name":"dango","short_names":["dango"],"text":null,"texts":null,"category":"Foods","sort_order":58,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ODEN","unified":"1F362","variations":[],"docomo":null,"au":"EAB7","softbank":"E343","google":"FE96D","image":"1f362.png","sheet_x":6,"sheet_y":31,"short_name":"oden","short_names":["oden"],"text":null,"texts":null,"category":"Foods","sort_order":57,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SUSHI","unified":"1F363","variations":[],"docomo":null,"au":"EAB8","softbank":"E344","google":"FE96E","image":"1f363.png","sheet_x":6,"sheet_y":32,"short_name":"sushi","short_names":["sushi"],"text":null,"texts":null,"category":"Foods","sort_order":51,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FRIED SHRIMP","unified":"1F364","variations":[],"docomo":null,"au":"EB70","softbank":null,"google":"FE97F","image":"1f364.png","sheet_x":6,"sheet_y":33,"short_name":"fried_shrimp","short_names":["fried_shrimp"],"text":null,"texts":null,"category":"Foods","sort_order":35,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FISH CAKE WITH SWIRL DESIGN","unified":"1F365","variations":[],"docomo":"E643","au":"E4ED","softbank":null,"google":"FE973","image":"1f365.png","sheet_x":6,"sheet_y":34,"short_name":"fish_cake","short_names":["fish_cake"],"text":null,"texts":null,"category":"Foods","sort_order":50,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SOFT ICE CREAM","unified":"1F366","variations":[],"docomo":null,"au":"EAB0","softbank":"E33A","google":"FE966","image":"1f366.png","sheet_x":6,"sheet_y":35,"short_name":"icecream","short_names":["icecream"],"text":null,"texts":null,"category":"Foods","sort_order":61,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SHAVED ICE","unified":"1F367","variations":[],"docomo":null,"au":"EAEA","softbank":"E43F","google":"FE971","image":"1f367.png","sheet_x":6,"sheet_y":36,"short_name":"shaved_ice","short_names":["shaved_ice"],"text":null,"texts":null,"category":"Foods","sort_order":59,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ICE CREAM","unified":"1F368","variations":[],"docomo":null,"au":"EB4A","softbank":null,"google":"FE977","image":"1f368.png","sheet_x":6,"sheet_y":37,"short_name":"ice_cream","short_names":["ice_cream"],"text":null,"texts":null,"category":"Foods","sort_order":60,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOUGHNUT","unified":"1F369","variations":[],"docomo":null,"au":"EB4B","softbank":null,"google":"FE978","image":"1f369.png","sheet_x":6,"sheet_y":38,"short_name":"doughnut","short_names":["doughnut"],"text":null,"texts":null,"category":"Foods","sort_order":69,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COOKIE","unified":"1F36A","variations":[],"docomo":null,"au":"EB4C","softbank":null,"google":"FE979","image":"1f36a.png","sheet_x":6,"sheet_y":39,"short_name":"cookie","short_names":["cookie"],"text":null,"texts":null,"category":"Foods","sort_order":70,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHOCOLATE BAR","unified":"1F36B","variations":[],"docomo":null,"au":"EB4D","softbank":null,"google":"FE97A","image":"1f36b.png","sheet_x":6,"sheet_y":40,"short_name":"chocolate_bar","short_names":["chocolate_bar"],"text":null,"texts":null,"category":"Foods","sort_order":67,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CANDY","unified":"1F36C","variations":[],"docomo":null,"au":"EB4E","softbank":null,"google":"FE97B","image":"1f36c.png","sheet_x":6,"sheet_y":41,"short_name":"candy","short_names":["candy"],"text":null,"texts":null,"category":"Foods","sort_order":66,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LOLLIPOP","unified":"1F36D","variations":[],"docomo":null,"au":"EB4F","softbank":null,"google":"FE97C","image":"1f36d.png","sheet_x":6,"sheet_y":42,"short_name":"lollipop","short_names":["lollipop"],"text":null,"texts":null,"category":"Foods","sort_order":65,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CUSTARD","unified":"1F36E","variations":[],"docomo":null,"au":"EB56","softbank":null,"google":"FE97D","image":"1f36e.png","sheet_x":6,"sheet_y":43,"short_name":"custard","short_names":["custard"],"text":null,"texts":null,"category":"Foods","sort_order":64,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HONEY POT","unified":"1F36F","variations":[],"docomo":null,"au":"EB59","softbank":null,"google":"FE97E","image":"1f36f.png","sheet_x":6,"sheet_y":44,"short_name":"honey_pot","short_names":["honey_pot"],"text":null,"texts":null,"category":"Foods","sort_order":26,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SHORTCAKE","unified":"1F370","variations":[],"docomo":"E74A","au":"E4D0","softbank":"E046","google":"FE962","image":"1f370.png","sheet_x":6,"sheet_y":45,"short_name":"cake","short_names":["cake"],"text":null,"texts":null,"category":"Foods","sort_order":62,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BENTO BOX","unified":"1F371","variations":[],"docomo":null,"au":"EABD","softbank":"E34C","google":"FE96F","image":"1f371.png","sheet_x":6,"sheet_y":46,"short_name":"bento","short_names":["bento"],"text":null,"texts":null,"category":"Foods","sort_order":52,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POT OF FOOD","unified":"1F372","variations":[],"docomo":null,"au":"EABE","softbank":"E34D","google":"FE970","image":"1f372.png","sheet_x":6,"sheet_y":47,"short_name":"stew","short_names":["stew"],"text":null,"texts":null,"category":"Foods","sort_order":49,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COOKING","unified":"1F373","variations":[],"docomo":null,"au":"E4D1","softbank":"E147","google":"FE965","image":"1f373.png","sheet_x":6,"sheet_y":48,"short_name":"fried_egg","short_names":["fried_egg","cooking"],"text":null,"texts":null,"category":"Foods","sort_order":32,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FORK AND KNIFE","unified":"1F374","variations":[],"docomo":"E66F","au":"E4AC","softbank":"E043","google":"FE980","image":"1f374.png","sheet_x":7,"sheet_y":0,"short_name":"fork_and_knife","short_names":["fork_and_knife"],"text":null,"texts":null,"category":"Foods","sort_order":85,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TEACUP WITHOUT HANDLE","unified":"1F375","variations":[],"docomo":"E71E","au":"EAAE","softbank":"E338","google":"FE984","image":"1f375.png","sheet_x":7,"sheet_y":1,"short_name":"tea","short_names":["tea"],"text":null,"texts":null,"category":"Foods","sort_order":74,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SAKE BOTTLE AND CUP","unified":"1F376","variations":[],"docomo":"E74B","au":"EA97","softbank":"E30B","google":"FE985","image":"1f376.png","sheet_x":7,"sheet_y":2,"short_name":"sake","short_names":["sake"],"text":null,"texts":null,"category":"Foods","sort_order":75,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WINE GLASS","unified":"1F377","variations":[],"docomo":"E756","au":"E4C1","softbank":"E044","google":"FE986","image":"1f377.png","sheet_x":7,"sheet_y":3,"short_name":"wine_glass","short_names":["wine_glass"],"text":null,"texts":null,"category":"Foods","sort_order":79,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COCKTAIL GLASS","unified":"1F378","variations":[],"docomo":"E671","au":"E4C2","softbank":"E044","google":"FE982","image":"1f378.png","sheet_x":7,"sheet_y":4,"short_name":"cocktail","short_names":["cocktail"],"text":null,"texts":null,"category":"Foods","sort_order":81,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TROPICAL DRINK","unified":"1F379","variations":[],"docomo":"E671","au":"EB3E","softbank":"E044","google":"FE988","image":"1f379.png","sheet_x":7,"sheet_y":5,"short_name":"tropical_drink","short_names":["tropical_drink"],"text":null,"texts":null,"category":"Foods","sort_order":82,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BEER MUG","unified":"1F37A","variations":[],"docomo":"E672","au":"E4C3","softbank":"E047","google":"FE983","image":"1f37a.png","sheet_x":7,"sheet_y":6,"short_name":"beer","short_names":["beer"],"text":null,"texts":null,"category":"Foods","sort_order":76,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLINKING BEER MUGS","unified":"1F37B","variations":[],"docomo":"E672","au":"EA98","softbank":"E30C","google":"FE987","image":"1f37b.png","sheet_x":7,"sheet_y":7,"short_name":"beers","short_names":["beers"],"text":null,"texts":null,"category":"Foods","sort_order":77,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BABY BOTTLE","unified":"1F37C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f37c.png","sheet_x":7,"sheet_y":8,"short_name":"baby_bottle","short_names":["baby_bottle"],"text":null,"texts":null,"category":"Foods","sort_order":72,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FORK AND KNIFE WITH PLATE","unified":"1F37D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f37d.png","sheet_x":7,"sheet_y":9,"short_name":"knife_fork_plate","short_names":["knife_fork_plate"],"text":null,"texts":null,"category":"Foods","sort_order":86,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BOTTLE WITH POPPING CORK","unified":"1F37E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f37e.png","sheet_x":7,"sheet_y":10,"short_name":"champagne","short_names":["champagne"],"text":null,"texts":null,"category":"Foods","sort_order":83,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"POPCORN","unified":"1F37F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f37f.png","sheet_x":7,"sheet_y":11,"short_name":"popcorn","short_names":["popcorn"],"text":null,"texts":null,"category":"Foods","sort_order":68,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"RIBBON","unified":"1F380","variations":[],"docomo":"E684","au":"E59F","softbank":"E314","google":"FE50F","image":"1f380.png","sheet_x":7,"sheet_y":12,"short_name":"ribbon","short_names":["ribbon"],"text":null,"texts":null,"category":"Objects","sort_order":101,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WRAPPED PRESENT","unified":"1F381","variations":[],"docomo":"E685","au":"E4CF","softbank":"E112","google":"FE510","image":"1f381.png","sheet_x":7,"sheet_y":13,"short_name":"gift","short_names":["gift"],"text":null,"texts":null,"category":"Objects","sort_order":98,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BIRTHDAY CAKE","unified":"1F382","variations":[],"docomo":"E686","au":"E5A0","softbank":"E34B","google":"FE511","image":"1f382.png","sheet_x":7,"sheet_y":14,"short_name":"birthday","short_names":["birthday"],"text":null,"texts":null,"category":"Foods","sort_order":63,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"JACK-O-LANTERN","unified":"1F383","variations":[],"docomo":null,"au":"EAEE","softbank":"E445","google":"FE51F","image":"1f383.png","sheet_x":7,"sheet_y":15,"short_name":"jack_o_lantern","short_names":["jack_o_lantern"],"text":null,"texts":null,"category":"People","sort_order":87,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHRISTMAS TREE","unified":"1F384","variations":[],"docomo":"E6A4","au":"E4C9","softbank":"E033","google":"FE512","image":"1f384.png","sheet_x":7,"sheet_y":16,"short_name":"christmas_tree","short_names":["christmas_tree"],"text":null,"texts":null,"category":"Nature","sort_order":90,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FATHER CHRISTMAS","unified":"1F385","variations":[],"docomo":null,"au":"EAF0","softbank":"E448","google":"FE513","image":"1f385.png","sheet_x":7,"sheet_y":17,"short_name":"santa","short_names":["santa"],"text":null,"texts":null,"category":"People","sort_order":194,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F385-1F3FB","image":"1f385-1f3fb.png","sheet_x":7,"sheet_y":18,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F385-1F3FC","image":"1f385-1f3fc.png","sheet_x":7,"sheet_y":19,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F385-1F3FD","image":"1f385-1f3fd.png","sheet_x":7,"sheet_y":20,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F385-1F3FE","image":"1f385-1f3fe.png","sheet_x":7,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F385-1F3FF","image":"1f385-1f3ff.png","sheet_x":7,"sheet_y":22,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"FIREWORKS","unified":"1F386","variations":[],"docomo":null,"au":"E5CC","softbank":"E117","google":"FE515","image":"1f386.png","sheet_x":7,"sheet_y":23,"short_name":"fireworks","short_names":["fireworks"],"text":null,"texts":null,"category":"Places","sort_order":112,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FIREWORK SPARKLER","unified":"1F387","variations":[],"docomo":null,"au":"EAEB","softbank":"E440","google":"FE51D","image":"1f387.png","sheet_x":7,"sheet_y":24,"short_name":"sparkler","short_names":["sparkler"],"text":null,"texts":null,"category":"Places","sort_order":111,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BALLOON","unified":"1F388","variations":[],"docomo":null,"au":"EA9B","softbank":"E310","google":"FE516","image":"1f388.png","sheet_x":7,"sheet_y":25,"short_name":"balloon","short_names":["balloon"],"text":null,"texts":null,"category":"Objects","sort_order":99,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PARTY POPPER","unified":"1F389","variations":[],"docomo":null,"au":"EA9C","softbank":"E312","google":"FE517","image":"1f389.png","sheet_x":7,"sheet_y":26,"short_name":"tada","short_names":["tada"],"text":null,"texts":null,"category":"Objects","sort_order":103,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CONFETTI BALL","unified":"1F38A","variations":[],"docomo":null,"au":"E46F","softbank":null,"google":"FE520","image":"1f38a.png","sheet_x":7,"sheet_y":27,"short_name":"confetti_ball","short_names":["confetti_ball"],"text":null,"texts":null,"category":"Objects","sort_order":102,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TANABATA TREE","unified":"1F38B","variations":[],"docomo":null,"au":"EB3D","softbank":null,"google":"FE521","image":"1f38b.png","sheet_x":7,"sheet_y":28,"short_name":"tanabata_tree","short_names":["tanabata_tree"],"text":null,"texts":null,"category":"Nature","sort_order":99,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CROSSED FLAGS","unified":"1F38C","variations":[],"docomo":null,"au":"E5D9","softbank":"E143","google":"FE514","image":"1f38c.png","sheet_x":7,"sheet_y":29,"short_name":"crossed_flags","short_names":["crossed_flags"],"text":null,"texts":null,"category":"Flags","sort_order":118,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PINE DECORATION","unified":"1F38D","variations":[],"docomo":null,"au":"EAE3","softbank":"E436","google":"FE518","image":"1f38d.png","sheet_x":7,"sheet_y":30,"short_name":"bamboo","short_names":["bamboo"],"text":null,"texts":null,"category":"Nature","sort_order":98,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"JAPANESE DOLLS","unified":"1F38E","variations":[],"docomo":null,"au":"EAE4","softbank":"E438","google":"FE519","image":"1f38e.png","sheet_x":7,"sheet_y":31,"short_name":"dolls","short_names":["dolls"],"text":null,"texts":null,"category":"Objects","sort_order":104,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CARP STREAMER","unified":"1F38F","variations":[],"docomo":null,"au":"EAE7","softbank":"E43B","google":"FE51C","image":"1f38f.png","sheet_x":7,"sheet_y":32,"short_name":"flags","short_names":["flags"],"text":null,"texts":null,"category":"Objects","sort_order":100,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WIND CHIME","unified":"1F390","variations":[],"docomo":null,"au":"EAED","softbank":"E442","google":"FE51E","image":"1f390.png","sheet_x":7,"sheet_y":33,"short_name":"wind_chime","short_names":["wind_chime"],"text":null,"texts":null,"category":"Objects","sort_order":106,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOON VIEWING CEREMONY","unified":"1F391","variations":[],"docomo":null,"au":"EAEF","softbank":"E446","google":"FE017","image":"1f391.png","sheet_x":7,"sheet_y":34,"short_name":"rice_scene","short_names":["rice_scene"],"text":null,"texts":null,"category":"Places","sort_order":106,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SCHOOL SATCHEL","unified":"1F392","variations":[],"docomo":null,"au":"EAE6","softbank":"E43A","google":"FE51B","image":"1f392.png","sheet_x":7,"sheet_y":35,"short_name":"school_satchel","short_names":["school_satchel"],"text":null,"texts":null,"category":"People","sort_order":285,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GRADUATION CAP","unified":"1F393","variations":[],"docomo":null,"au":"EAE5","softbank":"E439","google":"FE51A","image":"1f393.png","sheet_x":7,"sheet_y":36,"short_name":"mortar_board","short_names":["mortar_board"],"text":null,"texts":null,"category":"People","sort_order":282,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MILITARY MEDAL","unified":"1F396","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f396.png","sheet_x":7,"sheet_y":37,"short_name":"medal","short_names":["medal"],"text":null,"texts":null,"category":"Activity","sort_order":56,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"REMINDER RIBBON","unified":"1F397","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f397.png","sheet_x":7,"sheet_y":38,"short_name":"reminder_ribbon","short_names":["reminder_ribbon"],"text":null,"texts":null,"category":"Activity","sort_order":62,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"STUDIO MICROPHONE","unified":"1F399","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f399.png","sheet_x":7,"sheet_y":39,"short_name":"studio_microphone","short_names":["studio_microphone"],"text":null,"texts":null,"category":"Objects","sort_order":29,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LEVEL SLIDER","unified":"1F39A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f39a.png","sheet_x":7,"sheet_y":40,"short_name":"level_slider","short_names":["level_slider"],"text":null,"texts":null,"category":"Objects","sort_order":30,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CONTROL KNOBS","unified":"1F39B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f39b.png","sheet_x":7,"sheet_y":41,"short_name":"control_knobs","short_names":["control_knobs"],"text":null,"texts":null,"category":"Objects","sort_order":31,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FILM FRAMES","unified":"1F39E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f39e.png","sheet_x":7,"sheet_y":42,"short_name":"film_frames","short_names":["film_frames"],"text":null,"texts":null,"category":"Objects","sort_order":22,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ADMISSION TICKETS","unified":"1F39F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f39f.png","sheet_x":7,"sheet_y":43,"short_name":"admission_tickets","short_names":["admission_tickets"],"text":null,"texts":null,"category":"Activity","sort_order":64,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CAROUSEL HORSE","unified":"1F3A0","variations":[],"docomo":"E679","au":null,"softbank":null,"google":"FE7FC","image":"1f3a0.png","sheet_x":7,"sheet_y":44,"short_name":"carousel_horse","short_names":["carousel_horse"],"text":null,"texts":null,"category":"Places","sort_order":69,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FERRIS WHEEL","unified":"1F3A1","variations":[],"docomo":null,"au":"E46D","softbank":"E124","google":"FE7FD","image":"1f3a1.png","sheet_x":7,"sheet_y":45,"short_name":"ferris_wheel","short_names":["ferris_wheel"],"text":null,"texts":null,"category":"Places","sort_order":67,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ROLLER COASTER","unified":"1F3A2","variations":[],"docomo":null,"au":"EAE2","softbank":"E433","google":"FE7FE","image":"1f3a2.png","sheet_x":7,"sheet_y":46,"short_name":"roller_coaster","short_names":["roller_coaster"],"text":null,"texts":null,"category":"Places","sort_order":68,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FISHING POLE AND FISH","unified":"1F3A3","variations":[],"docomo":"E751","au":"EB42","softbank":"E019","google":"FE7FF","image":"1f3a3.png","sheet_x":7,"sheet_y":47,"short_name":"fishing_pole_and_fish","short_names":["fishing_pole_and_fish"],"text":null,"texts":null,"category":"Activity","sort_order":17,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MICROPHONE","unified":"1F3A4","variations":[],"docomo":"E676","au":"E503","softbank":"E03C","google":"FE800","image":"1f3a4.png","sheet_x":7,"sheet_y":48,"short_name":"microphone","short_names":["microphone"],"text":null,"texts":null,"category":"Activity","sort_order":72,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOVIE CAMERA","unified":"1F3A5","variations":[],"docomo":"E677","au":"E517","softbank":"E03D","google":"FE801","image":"1f3a5.png","sheet_x":8,"sheet_y":0,"short_name":"movie_camera","short_names":["movie_camera"],"text":null,"texts":null,"category":"Objects","sort_order":20,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CINEMA","unified":"1F3A6","variations":[],"docomo":"E677","au":"E517","softbank":"E507","google":"FE802","image":"1f3a6.png","sheet_x":8,"sheet_y":1,"short_name":"cinema","short_names":["cinema"],"text":null,"texts":null,"category":"Symbols","sort_order":126,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEADPHONE","unified":"1F3A7","variations":[],"docomo":"E67A","au":"E508","softbank":"E30A","google":"FE803","image":"1f3a7.png","sheet_x":8,"sheet_y":2,"short_name":"headphones","short_names":["headphones"],"text":null,"texts":null,"category":"Activity","sort_order":73,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ARTIST PALETTE","unified":"1F3A8","variations":[],"docomo":"E67B","au":"E59C","softbank":"E502","google":"FE804","image":"1f3a8.png","sheet_x":8,"sheet_y":3,"short_name":"art","short_names":["art"],"text":null,"texts":null,"category":"Activity","sort_order":70,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TOP HAT","unified":"1F3A9","variations":[],"docomo":"E67C","au":"EAF5","softbank":"E503","google":"FE805","image":"1f3a9.png","sheet_x":8,"sheet_y":4,"short_name":"tophat","short_names":["tophat"],"text":null,"texts":null,"category":"People","sort_order":281,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CIRCUS TENT","unified":"1F3AA","variations":[],"docomo":"E67D","au":"E59E","softbank":null,"google":"FE806","image":"1f3aa.png","sheet_x":8,"sheet_y":5,"short_name":"circus_tent","short_names":["circus_tent"],"text":null,"texts":null,"category":"Activity","sort_order":65,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TICKET","unified":"1F3AB","variations":[],"docomo":"E67E","au":"E49E","softbank":"E125","google":"FE807","image":"1f3ab.png","sheet_x":8,"sheet_y":6,"short_name":"ticket","short_names":["ticket"],"text":null,"texts":null,"category":"Activity","sort_order":63,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLAPPER BOARD","unified":"1F3AC","variations":[],"docomo":"E6AC","au":"E4BE","softbank":"E324","google":"FE808","image":"1f3ac.png","sheet_x":8,"sheet_y":7,"short_name":"clapper","short_names":["clapper"],"text":null,"texts":null,"category":"Activity","sort_order":71,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PERFORMING ARTS","unified":"1F3AD","variations":[],"docomo":null,"au":"E59D","softbank":"E503","google":"FE809","image":"1f3ad.png","sheet_x":8,"sheet_y":8,"short_name":"performing_arts","short_names":["performing_arts"],"text":null,"texts":null,"category":"Activity","sort_order":69,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"VIDEO GAME","unified":"1F3AE","variations":[],"docomo":"E68B","au":"E4C6","softbank":null,"google":"FE80A","image":"1f3ae.png","sheet_x":8,"sheet_y":9,"short_name":"video_game","short_names":["video_game"],"text":null,"texts":null,"category":"Activity","sort_order":84,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DIRECT HIT","unified":"1F3AF","variations":[],"docomo":null,"au":"E4C5","softbank":"E130","google":"FE80C","image":"1f3af.png","sheet_x":8,"sheet_y":10,"short_name":"dart","short_names":["dart"],"text":null,"texts":null,"category":"Activity","sort_order":82,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SLOT MACHINE","unified":"1F3B0","variations":[],"docomo":null,"au":"E46E","softbank":"E133","google":"FE80D","image":"1f3b0.png","sheet_x":8,"sheet_y":11,"short_name":"slot_machine","short_names":["slot_machine"],"text":null,"texts":null,"category":"Activity","sort_order":85,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BILLIARDS","unified":"1F3B1","variations":[],"docomo":null,"au":"EADD","softbank":"E42C","google":"FE80E","image":"1f3b1.png","sheet_x":8,"sheet_y":12,"short_name":"8ball","short_names":["8ball"],"text":null,"texts":null,"category":"Activity","sort_order":8,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GAME DIE","unified":"1F3B2","variations":[],"docomo":null,"au":"E4C8","softbank":null,"google":"FE80F","image":"1f3b2.png","sheet_x":8,"sheet_y":13,"short_name":"game_die","short_names":["game_die"],"text":null,"texts":null,"category":"Activity","sort_order":81,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BOWLING","unified":"1F3B3","variations":[],"docomo":null,"au":"EB43","softbank":null,"google":"FE810","image":"1f3b3.png","sheet_x":8,"sheet_y":14,"short_name":"bowling","short_names":["bowling"],"text":null,"texts":null,"category":"Activity","sort_order":83,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FLOWER PLAYING CARDS","unified":"1F3B4","variations":[],"docomo":null,"au":"EB6E","softbank":null,"google":"FE811","image":"1f3b4.png","sheet_x":8,"sheet_y":15,"short_name":"flower_playing_cards","short_names":["flower_playing_cards"],"text":null,"texts":null,"category":"Symbols","sort_order":248,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MUSICAL NOTE","unified":"1F3B5","variations":[],"docomo":"E6F6","au":"E5BE","softbank":"E03E","google":"FE813","image":"1f3b5.png","sheet_x":8,"sheet_y":16,"short_name":"musical_note","short_names":["musical_note"],"text":null,"texts":null,"category":"Symbols","sort_order":188,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MULTIPLE MUSICAL NOTES","unified":"1F3B6","variations":[],"docomo":"E6FF","au":"E505","softbank":"E326","google":"FE814","image":"1f3b6.png","sheet_x":8,"sheet_y":17,"short_name":"notes","short_names":["notes"],"text":null,"texts":null,"category":"Symbols","sort_order":189,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SAXOPHONE","unified":"1F3B7","variations":[],"docomo":null,"au":null,"softbank":"E040","google":"FE815","image":"1f3b7.png","sheet_x":8,"sheet_y":18,"short_name":"saxophone","short_names":["saxophone"],"text":null,"texts":null,"category":"Activity","sort_order":77,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GUITAR","unified":"1F3B8","variations":[],"docomo":null,"au":"E506","softbank":"E041","google":"FE816","image":"1f3b8.png","sheet_x":8,"sheet_y":19,"short_name":"guitar","short_names":["guitar"],"text":null,"texts":null,"category":"Activity","sort_order":79,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MUSICAL KEYBOARD","unified":"1F3B9","variations":[],"docomo":null,"au":"EB40","softbank":null,"google":"FE817","image":"1f3b9.png","sheet_x":8,"sheet_y":20,"short_name":"musical_keyboard","short_names":["musical_keyboard"],"text":null,"texts":null,"category":"Activity","sort_order":75,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRUMPET","unified":"1F3BA","variations":[],"docomo":null,"au":"EADC","softbank":"E042","google":"FE818","image":"1f3ba.png","sheet_x":8,"sheet_y":21,"short_name":"trumpet","short_names":["trumpet"],"text":null,"texts":null,"category":"Activity","sort_order":78,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"VIOLIN","unified":"1F3BB","variations":[],"docomo":null,"au":"E507","softbank":null,"google":"FE819","image":"1f3bb.png","sheet_x":8,"sheet_y":22,"short_name":"violin","short_names":["violin"],"text":null,"texts":null,"category":"Activity","sort_order":80,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MUSICAL SCORE","unified":"1F3BC","variations":[],"docomo":"E6FF","au":"EACC","softbank":"E326","google":"FE81A","image":"1f3bc.png","sheet_x":8,"sheet_y":23,"short_name":"musical_score","short_names":["musical_score"],"text":null,"texts":null,"category":"Activity","sort_order":74,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RUNNING SHIRT WITH SASH","unified":"1F3BD","variations":[],"docomo":"E652","au":null,"softbank":null,"google":"FE7D0","image":"1f3bd.png","sheet_x":8,"sheet_y":24,"short_name":"running_shirt_with_sash","short_names":["running_shirt_with_sash"],"text":null,"texts":null,"category":"Activity","sort_order":54,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TENNIS RACQUET AND BALL","unified":"1F3BE","variations":[],"docomo":"E655","au":"E4B7","softbank":"E015","google":"FE7D3","image":"1f3be.png","sheet_x":8,"sheet_y":25,"short_name":"tennis","short_names":["tennis"],"text":null,"texts":null,"category":"Activity","sort_order":5,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SKI AND SKI BOOT","unified":"1F3BF","variations":[],"docomo":"E657","au":"EAAC","softbank":"E013","google":"FE7D5","image":"1f3bf.png","sheet_x":8,"sheet_y":26,"short_name":"ski","short_names":["ski"],"text":null,"texts":null,"category":"Activity","sort_order":21,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BASKETBALL AND HOOP","unified":"1F3C0","variations":[],"docomo":"E658","au":"E59A","softbank":"E42A","google":"FE7D6","image":"1f3c0.png","sheet_x":8,"sheet_y":27,"short_name":"basketball","short_names":["basketball"],"text":null,"texts":null,"category":"Activity","sort_order":2,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHEQUERED FLAG","unified":"1F3C1","variations":[],"docomo":"E659","au":"E4B9","softbank":"E132","google":"FE7D7","image":"1f3c1.png","sheet_x":8,"sheet_y":28,"short_name":"checkered_flag","short_names":["checkered_flag"],"text":null,"texts":null,"category":"Flags","sort_order":3,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SNOWBOARDER","unified":"1F3C2","variations":[],"docomo":"E712","au":"E4B8","softbank":null,"google":"FE7D8","image":"1f3c2.png","sheet_x":8,"sheet_y":29,"short_name":"snowboarder","short_names":["snowboarder"],"text":null,"texts":null,"category":"Activity","sort_order":23,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F3C2-1F3FB","image":"1f3c2-1f3fb.png","sheet_x":8,"sheet_y":30,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F3C2-1F3FC","image":"1f3c2-1f3fc.png","sheet_x":8,"sheet_y":31,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F3C2-1F3FD","image":"1f3c2-1f3fd.png","sheet_x":8,"sheet_y":32,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F3C2-1F3FE","image":"1f3c2-1f3fe.png","sheet_x":8,"sheet_y":33,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F3C2-1F3FF","image":"1f3c2-1f3ff.png","sheet_x":8,"sheet_y":34,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"RUNNER","unified":"1F3C3","variations":[],"docomo":"E733","au":"E46B","softbank":"E115","google":"FE7D9","image":"1f3c3.png","sheet_x":8,"sheet_y":35,"short_name":"runner","short_names":["runner","running"],"text":null,"texts":null,"category":"People","sort_order":233,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F3C3-1F3FB","image":"1f3c3-1f3fb.png","sheet_x":8,"sheet_y":36,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F3C3-1F3FC","image":"1f3c3-1f3fc.png","sheet_x":8,"sheet_y":37,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F3C3-1F3FD","image":"1f3c3-1f3fd.png","sheet_x":8,"sheet_y":38,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F3C3-1F3FE","image":"1f3c3-1f3fe.png","sheet_x":8,"sheet_y":39,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F3C3-1F3FF","image":"1f3c3-1f3ff.png","sheet_x":8,"sheet_y":40,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F3C3-200D-2642-FE0F"},{"name":"SURFER","unified":"1F3C4","variations":[],"docomo":"E712","au":"EB41","softbank":"E017","google":"FE7DA","image":"1f3c4.png","sheet_x":8,"sheet_y":41,"short_name":"surfer","short_names":["surfer"],"text":null,"texts":null,"category":"Activity","sort_order":41,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F3C4-1F3FB","image":"1f3c4-1f3fb.png","sheet_x":8,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F3C4-1F3FC","image":"1f3c4-1f3fc.png","sheet_x":8,"sheet_y":43,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F3C4-1F3FD","image":"1f3c4-1f3fd.png","sheet_x":8,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F3C4-1F3FE","image":"1f3c4-1f3fe.png","sheet_x":8,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F3C4-1F3FF","image":"1f3c4-1f3ff.png","sheet_x":8,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F3C4-200D-2642-FE0F"},{"name":"SPORTS MEDAL","unified":"1F3C5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3c5.png","sheet_x":8,"sheet_y":47,"short_name":"sports_medal","short_names":["sports_medal"],"text":null,"texts":null,"category":"Activity","sort_order":55,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TROPHY","unified":"1F3C6","variations":[],"docomo":null,"au":"E5D3","softbank":"E131","google":"FE7DB","image":"1f3c6.png","sheet_x":8,"sheet_y":48,"short_name":"trophy","short_names":["trophy"],"text":null,"texts":null,"category":"Activity","sort_order":60,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HORSE RACING","unified":"1F3C7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3c7.png","sheet_x":9,"sheet_y":0,"short_name":"horse_racing","short_names":["horse_racing"],"text":null,"texts":null,"category":"Activity","sort_order":49,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F3C7-1F3FB","image":"1f3c7-1f3fb.png","sheet_x":9,"sheet_y":1,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F3C7-1F3FC","image":"1f3c7-1f3fc.png","sheet_x":9,"sheet_y":2,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F3C7-1F3FD","image":"1f3c7-1f3fd.png","sheet_x":9,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F3C7-1F3FE","image":"1f3c7-1f3fe.png","sheet_x":9,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F3C7-1F3FF","image":"1f3c7-1f3ff.png","sheet_x":9,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"AMERICAN FOOTBALL","unified":"1F3C8","variations":[],"docomo":null,"au":"E4BB","softbank":"E42B","google":"FE7DD","image":"1f3c8.png","sheet_x":9,"sheet_y":6,"short_name":"football","short_names":["football"],"text":null,"texts":null,"category":"Activity","sort_order":3,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RUGBY FOOTBALL","unified":"1F3C9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3c9.png","sheet_x":9,"sheet_y":7,"short_name":"rugby_football","short_names":["rugby_football"],"text":null,"texts":null,"category":"Activity","sort_order":7,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SWIMMER","unified":"1F3CA","variations":[],"docomo":null,"au":"EADE","softbank":"E42D","google":"FE7DE","image":"1f3ca.png","sheet_x":9,"sheet_y":8,"short_name":"swimmer","short_names":["swimmer"],"text":null,"texts":null,"category":"Activity","sort_order":43,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F3CA-1F3FB","image":"1f3ca-1f3fb.png","sheet_x":9,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F3CA-1F3FC","image":"1f3ca-1f3fc.png","sheet_x":9,"sheet_y":10,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F3CA-1F3FD","image":"1f3ca-1f3fd.png","sheet_x":9,"sheet_y":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F3CA-1F3FE","image":"1f3ca-1f3fe.png","sheet_x":9,"sheet_y":12,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F3CA-1F3FF","image":"1f3ca-1f3ff.png","sheet_x":9,"sheet_y":13,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F3CA-200D-2642-FE0F"},{"name":"WEIGHT LIFTER","unified":"1F3CB","variations":["1F3CB-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3cb.png","sheet_x":9,"sheet_y":14,"short_name":"weight_lifter","short_names":["weight_lifter"],"text":null,"texts":null,"category":"Activity","sort_order":25,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3CB-1F3FB","image":"1f3cb-1f3fb.png","sheet_x":9,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F3CB-1F3FC","image":"1f3cb-1f3fc.png","sheet_x":9,"sheet_y":16,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F3CB-1F3FD","image":"1f3cb-1f3fd.png","sheet_x":9,"sheet_y":17,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F3CB-1F3FE","image":"1f3cb-1f3fe.png","sheet_x":9,"sheet_y":18,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F3CB-1F3FF","image":"1f3cb-1f3ff.png","sheet_x":9,"sheet_y":19,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}},"obsoleted_by":"1F3CB-FE0F-200D-2642-FE0F"},{"name":"GOLFER","unified":"1F3CC","variations":["1F3CC-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3cc.png","sheet_x":9,"sheet_y":20,"short_name":"golfer","short_names":["golfer"],"text":null,"texts":null,"category":"Activity","sort_order":39,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3CC-1F3FB","image":"1f3cc-1f3fb.png","sheet_x":9,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F3CC-1F3FC","image":"1f3cc-1f3fc.png","sheet_x":9,"sheet_y":22,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F3CC-1F3FD","image":"1f3cc-1f3fd.png","sheet_x":9,"sheet_y":23,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F3CC-1F3FE","image":"1f3cc-1f3fe.png","sheet_x":9,"sheet_y":24,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F3CC-1F3FF","image":"1f3cc-1f3ff.png","sheet_x":9,"sheet_y":25,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}},"obsoleted_by":"1F3CC-FE0F-200D-2642-FE0F"},{"name":"RACING MOTORCYCLE","unified":"1F3CD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3cd.png","sheet_x":9,"sheet_y":26,"short_name":"racing_motorcycle","short_names":["racing_motorcycle"],"text":null,"texts":null,"category":"Places","sort_order":17,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"RACING CAR","unified":"1F3CE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3ce.png","sheet_x":9,"sheet_y":27,"short_name":"racing_car","short_names":["racing_car"],"text":null,"texts":null,"category":"Places","sort_order":6,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CRICKET BAT AND BALL","unified":"1F3CF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3cf.png","sheet_x":9,"sheet_y":28,"short_name":"cricket_bat_and_ball","short_names":["cricket_bat_and_ball"],"text":null,"texts":null,"category":"Activity","sort_order":14,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"VOLLEYBALL","unified":"1F3D0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d0.png","sheet_x":9,"sheet_y":29,"short_name":"volleyball","short_names":["volleyball"],"text":null,"texts":null,"category":"Activity","sort_order":6,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FIELD HOCKEY STICK AND BALL","unified":"1F3D1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d1.png","sheet_x":9,"sheet_y":30,"short_name":"field_hockey_stick_and_ball","short_names":["field_hockey_stick_and_ball"],"text":null,"texts":null,"category":"Activity","sort_order":13,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ICE HOCKEY STICK AND PUCK","unified":"1F3D2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d2.png","sheet_x":9,"sheet_y":31,"short_name":"ice_hockey_stick_and_puck","short_names":["ice_hockey_stick_and_puck"],"text":null,"texts":null,"category":"Activity","sort_order":12,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TABLE TENNIS PADDLE AND BALL","unified":"1F3D3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d3.png","sheet_x":9,"sheet_y":32,"short_name":"table_tennis_paddle_and_ball","short_names":["table_tennis_paddle_and_ball"],"text":null,"texts":null,"category":"Activity","sort_order":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SNOW CAPPED MOUNTAIN","unified":"1F3D4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d4.png","sheet_x":9,"sheet_y":33,"short_name":"snow_capped_mountain","short_names":["snow_capped_mountain"],"text":null,"texts":null,"category":"Places","sort_order":74,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CAMPING","unified":"1F3D5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d5.png","sheet_x":9,"sheet_y":34,"short_name":"camping","short_names":["camping"],"text":null,"texts":null,"category":"Places","sort_order":78,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BEACH WITH UMBRELLA","unified":"1F3D6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d6.png","sheet_x":9,"sheet_y":35,"short_name":"beach_with_umbrella","short_names":["beach_with_umbrella"],"text":null,"texts":null,"category":"Places","sort_order":71,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BUILDING CONSTRUCTION","unified":"1F3D7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d7.png","sheet_x":9,"sheet_y":36,"short_name":"building_construction","short_names":["building_construction"],"text":null,"texts":null,"category":"Places","sort_order":82,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HOUSE BUILDINGS","unified":"1F3D8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d8.png","sheet_x":9,"sheet_y":37,"short_name":"house_buildings","short_names":["house_buildings"],"text":null,"texts":null,"category":"Places","sort_order":86,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CITYSCAPE","unified":"1F3D9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d9.png","sheet_x":9,"sheet_y":38,"short_name":"cityscape","short_names":["cityscape"],"text":null,"texts":null,"category":"Places","sort_order":115,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DERELICT HOUSE BUILDING","unified":"1F3DA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3da.png","sheet_x":9,"sheet_y":39,"short_name":"derelict_house_building","short_names":["derelict_house_building"],"text":null,"texts":null,"category":"Places","sort_order":87,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CLASSICAL BUILDING","unified":"1F3DB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3db.png","sheet_x":9,"sheet_y":40,"short_name":"classical_building","short_names":["classical_building"],"text":null,"texts":null,"category":"Places","sort_order":99,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DESERT","unified":"1F3DC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3dc.png","sheet_x":9,"sheet_y":41,"short_name":"desert","short_names":["desert"],"text":null,"texts":null,"category":"Places","sort_order":77,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DESERT ISLAND","unified":"1F3DD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3dd.png","sheet_x":9,"sheet_y":42,"short_name":"desert_island","short_names":["desert_island"],"text":null,"texts":null,"category":"Places","sort_order":72,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"NATIONAL PARK","unified":"1F3DE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3de.png","sheet_x":9,"sheet_y":43,"short_name":"national_park","short_names":["national_park"],"text":null,"texts":null,"category":"Places","sort_order":107,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"STADIUM","unified":"1F3DF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3df.png","sheet_x":9,"sheet_y":44,"short_name":"stadium","short_names":["stadium"],"text":null,"texts":null,"category":"Places","sort_order":66,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HOUSE BUILDING","unified":"1F3E0","variations":[],"docomo":"E663","au":"E4AB","softbank":"E036","google":"FE4B0","image":"1f3e0.png","sheet_x":9,"sheet_y":45,"short_name":"house","short_names":["house"],"text":null,"texts":null,"category":"Places","sort_order":84,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HOUSE WITH GARDEN","unified":"1F3E1","variations":[],"docomo":"E663","au":"EB09","softbank":"E036","google":"FE4B1","image":"1f3e1.png","sheet_x":9,"sheet_y":46,"short_name":"house_with_garden","short_names":["house_with_garden"],"text":null,"texts":null,"category":"Places","sort_order":85,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OFFICE BUILDING","unified":"1F3E2","variations":[],"docomo":"E664","au":"E4AD","softbank":"E038","google":"FE4B2","image":"1f3e2.png","sheet_x":9,"sheet_y":47,"short_name":"office","short_names":["office"],"text":null,"texts":null,"category":"Places","sort_order":88,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"JAPANESE POST OFFICE","unified":"1F3E3","variations":[],"docomo":"E665","au":"E5DE","softbank":"E153","google":"FE4B3","image":"1f3e3.png","sheet_x":9,"sheet_y":48,"short_name":"post_office","short_names":["post_office"],"text":null,"texts":null,"category":"Places","sort_order":90,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EUROPEAN POST OFFICE","unified":"1F3E4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3e4.png","sheet_x":10,"sheet_y":0,"short_name":"european_post_office","short_names":["european_post_office"],"text":null,"texts":null,"category":"Places","sort_order":91,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HOSPITAL","unified":"1F3E5","variations":[],"docomo":"E666","au":"E5DF","softbank":"E155","google":"FE4B4","image":"1f3e5.png","sheet_x":10,"sheet_y":1,"short_name":"hospital","short_names":["hospital"],"text":null,"texts":null,"category":"Places","sort_order":92,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BANK","unified":"1F3E6","variations":[],"docomo":"E667","au":"E4AA","softbank":"E14D","google":"FE4B5","image":"1f3e6.png","sheet_x":10,"sheet_y":2,"short_name":"bank","short_names":["bank"],"text":null,"texts":null,"category":"Places","sort_order":93,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"AUTOMATED TELLER MACHINE","unified":"1F3E7","variations":[],"docomo":"E668","au":"E4A3","softbank":"E154","google":"FE4B6","image":"1f3e7.png","sheet_x":10,"sheet_y":3,"short_name":"atm","short_names":["atm"],"text":null,"texts":null,"category":"Symbols","sort_order":111,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HOTEL","unified":"1F3E8","variations":[],"docomo":"E669","au":"EA81","softbank":"E158","google":"FE4B7","image":"1f3e8.png","sheet_x":10,"sheet_y":4,"short_name":"hotel","short_names":["hotel"],"text":null,"texts":null,"category":"Places","sort_order":94,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LOVE HOTEL","unified":"1F3E9","variations":[],"docomo":"E669-E6EF","au":"EAF3","softbank":"E501","google":"FE4B8","image":"1f3e9.png","sheet_x":10,"sheet_y":5,"short_name":"love_hotel","short_names":["love_hotel"],"text":null,"texts":null,"category":"Places","sort_order":97,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CONVENIENCE STORE","unified":"1F3EA","variations":[],"docomo":"E66A","au":"E4A4","softbank":"E156","google":"FE4B9","image":"1f3ea.png","sheet_x":10,"sheet_y":6,"short_name":"convenience_store","short_names":["convenience_store"],"text":null,"texts":null,"category":"Places","sort_order":95,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SCHOOL","unified":"1F3EB","variations":[],"docomo":"E73E","au":"EA80","softbank":"E157","google":"FE4BA","image":"1f3eb.png","sheet_x":10,"sheet_y":7,"short_name":"school","short_names":["school"],"text":null,"texts":null,"category":"Places","sort_order":96,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DEPARTMENT STORE","unified":"1F3EC","variations":[],"docomo":null,"au":"EAF6","softbank":"E504","google":"FE4BD","image":"1f3ec.png","sheet_x":10,"sheet_y":8,"short_name":"department_store","short_names":["department_store"],"text":null,"texts":null,"category":"Places","sort_order":89,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACTORY","unified":"1F3ED","variations":[],"docomo":null,"au":"EAF9","softbank":"E508","google":"FE4C0","image":"1f3ed.png","sheet_x":10,"sheet_y":9,"short_name":"factory","short_names":["factory"],"text":null,"texts":null,"category":"Places","sort_order":83,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"IZAKAYA LANTERN","unified":"1F3EE","variations":[],"docomo":"E74B","au":"E4BD","softbank":"E30B","google":"FE4C2","image":"1f3ee.png","sheet_x":10,"sheet_y":10,"short_name":"izakaya_lantern","short_names":["izakaya_lantern","lantern"],"text":null,"texts":null,"category":"Objects","sort_order":105,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"JAPANESE CASTLE","unified":"1F3EF","variations":[],"docomo":null,"au":"EAF7","softbank":"E505","google":"FE4BE","image":"1f3ef.png","sheet_x":10,"sheet_y":11,"short_name":"japanese_castle","short_names":["japanese_castle"],"text":null,"texts":null,"category":"Places","sort_order":65,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EUROPEAN CASTLE","unified":"1F3F0","variations":[],"docomo":null,"au":"EAF8","softbank":"E506","google":"FE4BF","image":"1f3f0.png","sheet_x":10,"sheet_y":12,"short_name":"european_castle","short_names":["european_castle"],"text":null,"texts":null,"category":"Places","sort_order":64,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WAVING WHITE FLAG","unified":"1F3F3","variations":["1F3F3-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3f3.png","sheet_x":10,"sheet_y":13,"short_name":"waving_white_flag","short_names":["waving_white_flag"],"text":null,"texts":null,"category":"Flags","sort_order":1,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WAVING BLACK FLAG","unified":"1F3F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3f4.png","sheet_x":10,"sheet_y":14,"short_name":"waving_black_flag","short_names":["waving_black_flag"],"text":null,"texts":null,"category":"Flags","sort_order":2,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ROSETTE","unified":"1F3F5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3f5.png","sheet_x":10,"sheet_y":15,"short_name":"rosette","short_names":["rosette"],"text":null,"texts":null,"category":"Activity","sort_order":61,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LABEL","unified":"1F3F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3f7.png","sheet_x":10,"sheet_y":16,"short_name":"label","short_names":["label"],"text":null,"texts":null,"category":"Objects","sort_order":115,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BADMINTON RACQUET AND SHUTTLECOCK","unified":"1F3F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3f8.png","sheet_x":10,"sheet_y":17,"short_name":"badminton_racquet_and_shuttlecock","short_names":["badminton_racquet_and_shuttlecock"],"text":null,"texts":null,"category":"Activity","sort_order":10,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BOW AND ARROW","unified":"1F3F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3f9.png","sheet_x":10,"sheet_y":18,"short_name":"bow_and_arrow","short_names":["bow_and_arrow"],"text":null,"texts":null,"category":"Activity","sort_order":16,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"AMPHORA","unified":"1F3FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3fa.png","sheet_x":10,"sheet_y":19,"short_name":"amphora","short_names":["amphora"],"text":null,"texts":null,"category":"Objects","sort_order":72,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EMOJI MODIFIER FITZPATRICK TYPE-1-2","unified":"1F3FB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3fb.png","sheet_x":10,"sheet_y":20,"short_name":"skin-tone-2","short_names":["skin-tone-2"],"text":null,"texts":null,"category":"Skin Tones","sort_order":1,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EMOJI MODIFIER FITZPATRICK TYPE-3","unified":"1F3FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3fc.png","sheet_x":10,"sheet_y":21,"short_name":"skin-tone-3","short_names":["skin-tone-3"],"text":null,"texts":null,"category":"Skin Tones","sort_order":2,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EMOJI MODIFIER FITZPATRICK TYPE-4","unified":"1F3FD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3fd.png","sheet_x":10,"sheet_y":22,"short_name":"skin-tone-4","short_names":["skin-tone-4"],"text":null,"texts":null,"category":"Skin Tones","sort_order":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EMOJI MODIFIER FITZPATRICK TYPE-5","unified":"1F3FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3fe.png","sheet_x":10,"sheet_y":23,"short_name":"skin-tone-5","short_names":["skin-tone-5"],"text":null,"texts":null,"category":"Skin Tones","sort_order":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EMOJI MODIFIER FITZPATRICK TYPE-6","unified":"1F3FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3ff.png","sheet_x":10,"sheet_y":24,"short_name":"skin-tone-6","short_names":["skin-tone-6"],"text":null,"texts":null,"category":"Skin Tones","sort_order":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"RAT","unified":"1F400","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f400.png","sheet_x":10,"sheet_y":25,"short_name":"rat","short_names":["rat"],"text":null,"texts":null,"category":"Nature","sort_order":84,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOUSE","unified":"1F401","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f401.png","sheet_x":10,"sheet_y":26,"short_name":"mouse2","short_names":["mouse2"],"text":null,"texts":null,"category":"Nature","sort_order":83,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OX","unified":"1F402","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f402.png","sheet_x":10,"sheet_y":27,"short_name":"ox","short_names":["ox"],"text":null,"texts":null,"category":"Nature","sort_order":63,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WATER BUFFALO","unified":"1F403","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f403.png","sheet_x":10,"sheet_y":28,"short_name":"water_buffalo","short_names":["water_buffalo"],"text":null,"texts":null,"category":"Nature","sort_order":62,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COW","unified":"1F404","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f404.png","sheet_x":10,"sheet_y":29,"short_name":"cow2","short_names":["cow2"],"text":null,"texts":null,"category":"Nature","sort_order":64,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TIGER","unified":"1F405","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f405.png","sheet_x":10,"sheet_y":30,"short_name":"tiger2","short_names":["tiger2"],"text":null,"texts":null,"category":"Nature","sort_order":61,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEOPARD","unified":"1F406","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f406.png","sheet_x":10,"sheet_y":31,"short_name":"leopard","short_names":["leopard"],"text":null,"texts":null,"category":"Nature","sort_order":60,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RABBIT","unified":"1F407","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f407.png","sheet_x":10,"sheet_y":32,"short_name":"rabbit2","short_names":["rabbit2"],"text":null,"texts":null,"category":"Nature","sort_order":82,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CAT","unified":"1F408","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f408.png","sheet_x":10,"sheet_y":33,"short_name":"cat2","short_names":["cat2"],"text":null,"texts":null,"category":"Nature","sort_order":78,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DRAGON","unified":"1F409","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f409.png","sheet_x":10,"sheet_y":34,"short_name":"dragon","short_names":["dragon"],"text":null,"texts":null,"category":"Nature","sort_order":87,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CROCODILE","unified":"1F40A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f40a.png","sheet_x":10,"sheet_y":35,"short_name":"crocodile","short_names":["crocodile"],"text":null,"texts":null,"category":"Nature","sort_order":59,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHALE","unified":"1F40B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f40b.png","sheet_x":10,"sheet_y":36,"short_name":"whale2","short_names":["whale2"],"text":null,"texts":null,"category":"Nature","sort_order":58,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SNAIL","unified":"1F40C","variations":[],"docomo":"E74E","au":"EB7E","softbank":null,"google":"FE1B9","image":"1f40c.png","sheet_x":10,"sheet_y":37,"short_name":"snail","short_names":["snail"],"text":null,"texts":null,"category":"Nature","sort_order":38,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SNAKE","unified":"1F40D","variations":[],"docomo":null,"au":"EB22","softbank":"E52D","google":"FE1D3","image":"1f40d.png","sheet_x":10,"sheet_y":38,"short_name":"snake","short_names":["snake"],"text":null,"texts":null,"category":"Nature","sort_order":45,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HORSE","unified":"1F40E","variations":[],"docomo":"E754","au":"E4D8","softbank":"E134","google":"FE7DC","image":"1f40e.png","sheet_x":10,"sheet_y":39,"short_name":"racehorse","short_names":["racehorse"],"text":null,"texts":null,"category":"Nature","sort_order":71,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RAM","unified":"1F40F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f40f.png","sheet_x":10,"sheet_y":40,"short_name":"ram","short_names":["ram"],"text":null,"texts":null,"category":"Nature","sort_order":74,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GOAT","unified":"1F410","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f410.png","sheet_x":10,"sheet_y":41,"short_name":"goat","short_names":["goat"],"text":null,"texts":null,"category":"Nature","sort_order":73,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SHEEP","unified":"1F411","variations":[],"docomo":null,"au":"E48F","softbank":"E529","google":"FE1CF","image":"1f411.png","sheet_x":10,"sheet_y":42,"short_name":"sheep","short_names":["sheep"],"text":null,"texts":null,"category":"Nature","sort_order":75,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MONKEY","unified":"1F412","variations":[],"docomo":null,"au":"E4D9","softbank":"E528","google":"FE1CE","image":"1f412.png","sheet_x":10,"sheet_y":43,"short_name":"monkey","short_names":["monkey"],"text":null,"texts":null,"category":"Nature","sort_order":20,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ROOSTER","unified":"1F413","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f413.png","sheet_x":10,"sheet_y":44,"short_name":"rooster","short_names":["rooster"],"text":null,"texts":null,"category":"Nature","sort_order":79,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHICKEN","unified":"1F414","variations":[],"docomo":null,"au":"EB23","softbank":"E52E","google":"FE1D4","image":"1f414.png","sheet_x":10,"sheet_y":45,"short_name":"chicken","short_names":["chicken"],"text":null,"texts":null,"category":"Nature","sort_order":21,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOG","unified":"1F415","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f415.png","sheet_x":10,"sheet_y":46,"short_name":"dog2","short_names":["dog2"],"text":null,"texts":null,"category":"Nature","sort_order":76,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PIG","unified":"1F416","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f416.png","sheet_x":10,"sheet_y":47,"short_name":"pig2","short_names":["pig2"],"text":null,"texts":null,"category":"Nature","sort_order":72,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BOAR","unified":"1F417","variations":[],"docomo":null,"au":"EB24","softbank":"E52F","google":"FE1D5","image":"1f417.png","sheet_x":10,"sheet_y":48,"short_name":"boar","short_names":["boar"],"text":null,"texts":null,"category":"Nature","sort_order":32,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ELEPHANT","unified":"1F418","variations":[],"docomo":null,"au":"EB1F","softbank":"E526","google":"FE1CC","image":"1f418.png","sheet_x":11,"sheet_y":0,"short_name":"elephant","short_names":["elephant"],"text":null,"texts":null,"category":"Nature","sort_order":68,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OCTOPUS","unified":"1F419","variations":[],"docomo":null,"au":"E5C7","softbank":"E10A","google":"FE1C5","image":"1f419.png","sheet_x":11,"sheet_y":1,"short_name":"octopus","short_names":["octopus"],"text":null,"texts":null,"category":"Nature","sort_order":50,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPIRAL SHELL","unified":"1F41A","variations":[],"docomo":null,"au":"EAEC","softbank":"E441","google":"FE1C6","image":"1f41a.png","sheet_x":11,"sheet_y":2,"short_name":"shell","short_names":["shell"],"text":null,"texts":null,"category":"Nature","sort_order":39,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BUG","unified":"1F41B","variations":[],"docomo":null,"au":"EB1E","softbank":"E525","google":"FE1CB","image":"1f41b.png","sheet_x":11,"sheet_y":3,"short_name":"bug","short_names":["bug"],"text":null,"texts":null,"category":"Nature","sort_order":36,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ANT","unified":"1F41C","variations":[],"docomo":null,"au":"E4DD","softbank":null,"google":"FE1DA","image":"1f41c.png","sheet_x":11,"sheet_y":4,"short_name":"ant","short_names":["ant"],"text":null,"texts":null,"category":"Nature","sort_order":41,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HONEYBEE","unified":"1F41D","variations":[],"docomo":null,"au":"EB57","softbank":null,"google":"FE1E1","image":"1f41d.png","sheet_x":11,"sheet_y":5,"short_name":"bee","short_names":["bee","honeybee"],"text":null,"texts":null,"category":"Nature","sort_order":35,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LADY BEETLE","unified":"1F41E","variations":[],"docomo":null,"au":"EB58","softbank":null,"google":"FE1E2","image":"1f41e.png","sheet_x":11,"sheet_y":6,"short_name":"beetle","short_names":["beetle"],"text":null,"texts":null,"category":"Nature","sort_order":40,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FISH","unified":"1F41F","variations":[],"docomo":"E751","au":"E49A","softbank":"E019","google":"FE1BD","image":"1f41f.png","sheet_x":11,"sheet_y":7,"short_name":"fish","short_names":["fish"],"text":null,"texts":null,"category":"Nature","sort_order":53,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TROPICAL FISH","unified":"1F420","variations":[],"docomo":"E751","au":"EB1D","softbank":"E522","google":"FE1C9","image":"1f420.png","sheet_x":11,"sheet_y":8,"short_name":"tropical_fish","short_names":["tropical_fish"],"text":null,"texts":null,"category":"Nature","sort_order":52,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLOWFISH","unified":"1F421","variations":[],"docomo":"E751","au":"E4D3","softbank":"E019","google":"FE1D9","image":"1f421.png","sheet_x":11,"sheet_y":9,"short_name":"blowfish","short_names":["blowfish"],"text":null,"texts":null,"category":"Nature","sort_order":54,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TURTLE","unified":"1F422","variations":[],"docomo":null,"au":"E5D4","softbank":null,"google":"FE1DC","image":"1f422.png","sheet_x":11,"sheet_y":10,"short_name":"turtle","short_names":["turtle"],"text":null,"texts":null,"category":"Nature","sort_order":44,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HATCHING CHICK","unified":"1F423","variations":[],"docomo":"E74F","au":"E5DB","softbank":"E523","google":"FE1DD","image":"1f423.png","sheet_x":11,"sheet_y":11,"short_name":"hatching_chick","short_names":["hatching_chick"],"text":null,"texts":null,"category":"Nature","sort_order":25,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BABY CHICK","unified":"1F424","variations":[],"docomo":"E74F","au":"E4E0","softbank":"E523","google":"FE1BA","image":"1f424.png","sheet_x":11,"sheet_y":12,"short_name":"baby_chick","short_names":["baby_chick"],"text":null,"texts":null,"category":"Nature","sort_order":24,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FRONT-FACING BABY CHICK","unified":"1F425","variations":[],"docomo":"E74F","au":"EB76","softbank":"E523","google":"FE1BB","image":"1f425.png","sheet_x":11,"sheet_y":13,"short_name":"hatched_chick","short_names":["hatched_chick"],"text":null,"texts":null,"category":"Nature","sort_order":26,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BIRD","unified":"1F426","variations":[],"docomo":"E74F","au":"E4E0","softbank":"E521","google":"FE1C8","image":"1f426.png","sheet_x":11,"sheet_y":14,"short_name":"bird","short_names":["bird"],"text":null,"texts":null,"category":"Nature","sort_order":23,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PENGUIN","unified":"1F427","variations":[],"docomo":"E750","au":"E4DC","softbank":"E055","google":"FE1BC","image":"1f427.png","sheet_x":11,"sheet_y":15,"short_name":"penguin","short_names":["penguin"],"text":null,"texts":null,"category":"Nature","sort_order":22,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KOALA","unified":"1F428","variations":[],"docomo":null,"au":"EB20","softbank":"E527","google":"FE1CD","image":"1f428.png","sheet_x":11,"sheet_y":16,"short_name":"koala","short_names":["koala"],"text":null,"texts":null,"category":"Nature","sort_order":9,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POODLE","unified":"1F429","variations":[],"docomo":"E6A1","au":"E4DF","softbank":"E052","google":"FE1D8","image":"1f429.png","sheet_x":11,"sheet_y":17,"short_name":"poodle","short_names":["poodle"],"text":null,"texts":null,"category":"Nature","sort_order":77,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DROMEDARY CAMEL","unified":"1F42A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f42a.png","sheet_x":11,"sheet_y":18,"short_name":"dromedary_camel","short_names":["dromedary_camel"],"text":null,"texts":null,"category":"Nature","sort_order":66,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BACTRIAN CAMEL","unified":"1F42B","variations":[],"docomo":null,"au":"EB25","softbank":"E530","google":"FE1D6","image":"1f42b.png","sheet_x":11,"sheet_y":19,"short_name":"camel","short_names":["camel"],"text":null,"texts":null,"category":"Nature","sort_order":67,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOLPHIN","unified":"1F42C","variations":[],"docomo":null,"au":"EB1B","softbank":"E520","google":"FE1C7","image":"1f42c.png","sheet_x":11,"sheet_y":20,"short_name":"dolphin","short_names":["dolphin","flipper"],"text":null,"texts":null,"category":"Nature","sort_order":55,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOUSE FACE","unified":"1F42D","variations":[],"docomo":null,"au":"E5C2","softbank":"E053","google":"FE1C2","image":"1f42d.png","sheet_x":11,"sheet_y":21,"short_name":"mouse","short_names":["mouse"],"text":null,"texts":null,"category":"Nature","sort_order":3,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COW FACE","unified":"1F42E","variations":[],"docomo":null,"au":"EB21","softbank":"E52B","google":"FE1D1","image":"1f42e.png","sheet_x":11,"sheet_y":22,"short_name":"cow","short_names":["cow"],"text":null,"texts":null,"category":"Nature","sort_order":12,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TIGER FACE","unified":"1F42F","variations":[],"docomo":null,"au":"E5C0","softbank":"E050","google":"FE1C0","image":"1f42f.png","sheet_x":11,"sheet_y":23,"short_name":"tiger","short_names":["tiger"],"text":null,"texts":null,"category":"Nature","sort_order":10,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RABBIT FACE","unified":"1F430","variations":[],"docomo":null,"au":"E4D7","softbank":"E52C","google":"FE1D2","image":"1f430.png","sheet_x":11,"sheet_y":24,"short_name":"rabbit","short_names":["rabbit"],"text":null,"texts":null,"category":"Nature","sort_order":5,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CAT FACE","unified":"1F431","variations":[],"docomo":"E6A2","au":"E4DB","softbank":"E04F","google":"FE1B8","image":"1f431.png","sheet_x":11,"sheet_y":25,"short_name":"cat","short_names":["cat"],"text":null,"texts":null,"category":"Nature","sort_order":2,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DRAGON FACE","unified":"1F432","variations":[],"docomo":null,"au":"EB3F","softbank":null,"google":"FE1DE","image":"1f432.png","sheet_x":11,"sheet_y":26,"short_name":"dragon_face","short_names":["dragon_face"],"text":null,"texts":null,"category":"Nature","sort_order":88,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPOUTING WHALE","unified":"1F433","variations":[],"docomo":null,"au":"E470","softbank":"E054","google":"FE1C3","image":"1f433.png","sheet_x":11,"sheet_y":27,"short_name":"whale","short_names":["whale"],"text":null,"texts":null,"category":"Nature","sort_order":57,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HORSE FACE","unified":"1F434","variations":[],"docomo":"E754","au":"E4D8","softbank":"E01A","google":"FE1BE","image":"1f434.png","sheet_x":11,"sheet_y":28,"short_name":"horse","short_names":["horse"],"text":null,"texts":null,"category":"Nature","sort_order":33,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MONKEY FACE","unified":"1F435","variations":[],"docomo":null,"au":"E4D9","softbank":"E109","google":"FE1C4","image":"1f435.png","sheet_x":11,"sheet_y":29,"short_name":"monkey_face","short_names":["monkey_face"],"text":null,"texts":[":o)"],"category":"Nature","sort_order":16,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOG FACE","unified":"1F436","variations":[],"docomo":"E6A1","au":"E4E1","softbank":"E052","google":"FE1B7","image":"1f436.png","sheet_x":11,"sheet_y":30,"short_name":"dog","short_names":["dog"],"text":null,"texts":null,"category":"Nature","sort_order":1,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PIG FACE","unified":"1F437","variations":[],"docomo":"E755","au":"E4DE","softbank":"E10B","google":"FE1BF","image":"1f437.png","sheet_x":11,"sheet_y":31,"short_name":"pig","short_names":["pig"],"text":null,"texts":null,"category":"Nature","sort_order":13,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FROG FACE","unified":"1F438","variations":[],"docomo":null,"au":"E4DA","softbank":"E531","google":"FE1D7","image":"1f438.png","sheet_x":11,"sheet_y":32,"short_name":"frog","short_names":["frog"],"text":null,"texts":null,"category":"Nature","sort_order":15,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HAMSTER FACE","unified":"1F439","variations":[],"docomo":null,"au":null,"softbank":"E524","google":"FE1CA","image":"1f439.png","sheet_x":11,"sheet_y":33,"short_name":"hamster","short_names":["hamster"],"text":null,"texts":null,"category":"Nature","sort_order":4,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WOLF FACE","unified":"1F43A","variations":[],"docomo":"E6A1","au":"E4E1","softbank":"E52A","google":"FE1D0","image":"1f43a.png","sheet_x":11,"sheet_y":34,"short_name":"wolf","short_names":["wolf"],"text":null,"texts":null,"category":"Nature","sort_order":31,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BEAR FACE","unified":"1F43B","variations":[],"docomo":null,"au":"E5C1","softbank":"E051","google":"FE1C1","image":"1f43b.png","sheet_x":11,"sheet_y":35,"short_name":"bear","short_names":["bear"],"text":null,"texts":null,"category":"Nature","sort_order":7,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PANDA FACE","unified":"1F43C","variations":[],"docomo":null,"au":"EB46","softbank":null,"google":"FE1DF","image":"1f43c.png","sheet_x":11,"sheet_y":36,"short_name":"panda_face","short_names":["panda_face"],"text":null,"texts":null,"category":"Nature","sort_order":8,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PIG NOSE","unified":"1F43D","variations":[],"docomo":"E755","au":"EB48","softbank":"E10B","google":"FE1E0","image":"1f43d.png","sheet_x":11,"sheet_y":37,"short_name":"pig_nose","short_names":["pig_nose"],"text":null,"texts":null,"category":"Nature","sort_order":14,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PAW PRINTS","unified":"1F43E","variations":[],"docomo":"E698","au":"E4EE","softbank":"E536","google":"FE1DB","image":"1f43e.png","sheet_x":11,"sheet_y":38,"short_name":"feet","short_names":["feet","paw_prints"],"text":null,"texts":null,"category":"Nature","sort_order":86,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHIPMUNK","unified":"1F43F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f43f.png","sheet_x":11,"sheet_y":39,"short_name":"chipmunk","short_names":["chipmunk"],"text":null,"texts":null,"category":"Nature","sort_order":85,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EYES","unified":"1F440","variations":[],"docomo":"E691","au":"E5A4","softbank":"E419","google":"FE190","image":"1f440.png","sheet_x":11,"sheet_y":40,"short_name":"eyes","short_names":["eyes"],"text":null,"texts":null,"category":"People","sort_order":137,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EYE","unified":"1F441","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f441.png","sheet_x":11,"sheet_y":41,"short_name":"eye","short_names":["eye"],"text":null,"texts":null,"category":"People","sort_order":136,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EAR","unified":"1F442","variations":[],"docomo":"E692","au":"E5A5","softbank":"E41B","google":"FE191","image":"1f442.png","sheet_x":11,"sheet_y":42,"short_name":"ear","short_names":["ear"],"text":null,"texts":null,"category":"People","sort_order":133,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F442-1F3FB","image":"1f442-1f3fb.png","sheet_x":11,"sheet_y":43,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F442-1F3FC","image":"1f442-1f3fc.png","sheet_x":11,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F442-1F3FD","image":"1f442-1f3fd.png","sheet_x":11,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F442-1F3FE","image":"1f442-1f3fe.png","sheet_x":11,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F442-1F3FF","image":"1f442-1f3ff.png","sheet_x":11,"sheet_y":47,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"NOSE","unified":"1F443","variations":[],"docomo":null,"au":"EAD0","softbank":"E41A","google":"FE192","image":"1f443.png","sheet_x":11,"sheet_y":48,"short_name":"nose","short_names":["nose"],"text":null,"texts":null,"category":"People","sort_order":134,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F443-1F3FB","image":"1f443-1f3fb.png","sheet_x":12,"sheet_y":0,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F443-1F3FC","image":"1f443-1f3fc.png","sheet_x":12,"sheet_y":1,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F443-1F3FD","image":"1f443-1f3fd.png","sheet_x":12,"sheet_y":2,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F443-1F3FE","image":"1f443-1f3fe.png","sheet_x":12,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F443-1F3FF","image":"1f443-1f3ff.png","sheet_x":12,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"MOUTH","unified":"1F444","variations":[],"docomo":"E6F9","au":"EAD1","softbank":"E41C","google":"FE193","image":"1f444.png","sheet_x":12,"sheet_y":5,"short_name":"lips","short_names":["lips"],"text":null,"texts":null,"category":"People","sort_order":131,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TONGUE","unified":"1F445","variations":[],"docomo":"E728","au":"EB47","softbank":"E409","google":"FE194","image":"1f445.png","sheet_x":12,"sheet_y":6,"short_name":"tongue","short_names":["tongue"],"text":null,"texts":null,"category":"People","sort_order":132,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE UP POINTING BACKHAND INDEX","unified":"1F446","variations":[],"docomo":null,"au":"EA8D","softbank":"E22E","google":"FEB99","image":"1f446.png","sheet_x":12,"sheet_y":7,"short_name":"point_up_2","short_names":["point_up_2"],"text":null,"texts":null,"category":"People","sort_order":114,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F446-1F3FB","image":"1f446-1f3fb.png","sheet_x":12,"sheet_y":8,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F446-1F3FC","image":"1f446-1f3fc.png","sheet_x":12,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F446-1F3FD","image":"1f446-1f3fd.png","sheet_x":12,"sheet_y":10,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F446-1F3FE","image":"1f446-1f3fe.png","sheet_x":12,"sheet_y":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F446-1F3FF","image":"1f446-1f3ff.png","sheet_x":12,"sheet_y":12,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"WHITE DOWN POINTING BACKHAND INDEX","unified":"1F447","variations":[],"docomo":null,"au":"EA8E","softbank":"E22F","google":"FEB9A","image":"1f447.png","sheet_x":12,"sheet_y":13,"short_name":"point_down","short_names":["point_down"],"text":null,"texts":null,"category":"People","sort_order":115,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F447-1F3FB","image":"1f447-1f3fb.png","sheet_x":12,"sheet_y":14,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F447-1F3FC","image":"1f447-1f3fc.png","sheet_x":12,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F447-1F3FD","image":"1f447-1f3fd.png","sheet_x":12,"sheet_y":16,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F447-1F3FE","image":"1f447-1f3fe.png","sheet_x":12,"sheet_y":17,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F447-1F3FF","image":"1f447-1f3ff.png","sheet_x":12,"sheet_y":18,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"WHITE LEFT POINTING BACKHAND INDEX","unified":"1F448","variations":[],"docomo":null,"au":"E4FF","softbank":"E230","google":"FEB9B","image":"1f448.png","sheet_x":12,"sheet_y":19,"short_name":"point_left","short_names":["point_left"],"text":null,"texts":null,"category":"People","sort_order":112,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F448-1F3FB","image":"1f448-1f3fb.png","sheet_x":12,"sheet_y":20,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F448-1F3FC","image":"1f448-1f3fc.png","sheet_x":12,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F448-1F3FD","image":"1f448-1f3fd.png","sheet_x":12,"sheet_y":22,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F448-1F3FE","image":"1f448-1f3fe.png","sheet_x":12,"sheet_y":23,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F448-1F3FF","image":"1f448-1f3ff.png","sheet_x":12,"sheet_y":24,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"WHITE RIGHT POINTING BACKHAND INDEX","unified":"1F449","variations":[],"docomo":null,"au":"E500","softbank":"E231","google":"FEB9C","image":"1f449.png","sheet_x":12,"sheet_y":25,"short_name":"point_right","short_names":["point_right"],"text":null,"texts":null,"category":"People","sort_order":113,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F449-1F3FB","image":"1f449-1f3fb.png","sheet_x":12,"sheet_y":26,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F449-1F3FC","image":"1f449-1f3fc.png","sheet_x":12,"sheet_y":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F449-1F3FD","image":"1f449-1f3fd.png","sheet_x":12,"sheet_y":28,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F449-1F3FE","image":"1f449-1f3fe.png","sheet_x":12,"sheet_y":29,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F449-1F3FF","image":"1f449-1f3ff.png","sheet_x":12,"sheet_y":30,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"FISTED HAND SIGN","unified":"1F44A","variations":[],"docomo":"E6FD","au":"E4F3","softbank":"E00D","google":"FEB96","image":"1f44a.png","sheet_x":12,"sheet_y":31,"short_name":"facepunch","short_names":["facepunch","punch"],"text":null,"texts":null,"category":"People","sort_order":104,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F44A-1F3FB","image":"1f44a-1f3fb.png","sheet_x":12,"sheet_y":32,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F44A-1F3FC","image":"1f44a-1f3fc.png","sheet_x":12,"sheet_y":33,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F44A-1F3FD","image":"1f44a-1f3fd.png","sheet_x":12,"sheet_y":34,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F44A-1F3FE","image":"1f44a-1f3fe.png","sheet_x":12,"sheet_y":35,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F44A-1F3FF","image":"1f44a-1f3ff.png","sheet_x":12,"sheet_y":36,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"WAVING HAND SIGN","unified":"1F44B","variations":[],"docomo":"E695","au":"EAD6","softbank":"E41E","google":"FEB9D","image":"1f44b.png","sheet_x":12,"sheet_y":37,"short_name":"wave","short_names":["wave"],"text":null,"texts":null,"category":"People","sort_order":121,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F44B-1F3FB","image":"1f44b-1f3fb.png","sheet_x":12,"sheet_y":38,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F44B-1F3FC","image":"1f44b-1f3fc.png","sheet_x":12,"sheet_y":39,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F44B-1F3FD","image":"1f44b-1f3fd.png","sheet_x":12,"sheet_y":40,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F44B-1F3FE","image":"1f44b-1f3fe.png","sheet_x":12,"sheet_y":41,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F44B-1F3FF","image":"1f44b-1f3ff.png","sheet_x":12,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"OK HAND SIGN","unified":"1F44C","variations":[],"docomo":"E70B","au":"EAD4","softbank":"E420","google":"FEB9F","image":"1f44c.png","sheet_x":12,"sheet_y":43,"short_name":"ok_hand","short_names":["ok_hand"],"text":null,"texts":null,"category":"People","sort_order":111,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F44C-1F3FB","image":"1f44c-1f3fb.png","sheet_x":12,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F44C-1F3FC","image":"1f44c-1f3fc.png","sheet_x":12,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F44C-1F3FD","image":"1f44c-1f3fd.png","sheet_x":12,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F44C-1F3FE","image":"1f44c-1f3fe.png","sheet_x":12,"sheet_y":47,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F44C-1F3FF","image":"1f44c-1f3ff.png","sheet_x":12,"sheet_y":48,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"THUMBS UP SIGN","unified":"1F44D","variations":[],"docomo":"E727","au":"E4F9","softbank":"E00E","google":"FEB97","image":"1f44d.png","sheet_x":13,"sheet_y":0,"short_name":"+1","short_names":["+1","thumbsup"],"text":null,"texts":null,"category":"People","sort_order":102,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F44D-1F3FB","image":"1f44d-1f3fb.png","sheet_x":13,"sheet_y":1,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F44D-1F3FC","image":"1f44d-1f3fc.png","sheet_x":13,"sheet_y":2,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F44D-1F3FD","image":"1f44d-1f3fd.png","sheet_x":13,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F44D-1F3FE","image":"1f44d-1f3fe.png","sheet_x":13,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F44D-1F3FF","image":"1f44d-1f3ff.png","sheet_x":13,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"THUMBS DOWN SIGN","unified":"1F44E","variations":[],"docomo":"E700","au":"EAD5","softbank":"E421","google":"FEBA0","image":"1f44e.png","sheet_x":13,"sheet_y":6,"short_name":"-1","short_names":["-1","thumbsdown"],"text":null,"texts":null,"category":"People","sort_order":103,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F44E-1F3FB","image":"1f44e-1f3fb.png","sheet_x":13,"sheet_y":7,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F44E-1F3FC","image":"1f44e-1f3fc.png","sheet_x":13,"sheet_y":8,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F44E-1F3FD","image":"1f44e-1f3fd.png","sheet_x":13,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F44E-1F3FE","image":"1f44e-1f3fe.png","sheet_x":13,"sheet_y":10,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F44E-1F3FF","image":"1f44e-1f3ff.png","sheet_x":13,"sheet_y":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"CLAPPING HANDS SIGN","unified":"1F44F","variations":[],"docomo":null,"au":"EAD3","softbank":"E41F","google":"FEB9E","image":"1f44f.png","sheet_x":13,"sheet_y":12,"short_name":"clap","short_names":["clap"],"text":null,"texts":null,"category":"People","sort_order":99,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F44F-1F3FB","image":"1f44f-1f3fb.png","sheet_x":13,"sheet_y":13,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F44F-1F3FC","image":"1f44f-1f3fc.png","sheet_x":13,"sheet_y":14,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F44F-1F3FD","image":"1f44f-1f3fd.png","sheet_x":13,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F44F-1F3FE","image":"1f44f-1f3fe.png","sheet_x":13,"sheet_y":16,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F44F-1F3FF","image":"1f44f-1f3ff.png","sheet_x":13,"sheet_y":17,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"OPEN HANDS SIGN","unified":"1F450","variations":[],"docomo":"E695","au":"EAD6","softbank":"E422","google":"FEBA1","image":"1f450.png","sheet_x":13,"sheet_y":18,"short_name":"open_hands","short_names":["open_hands"],"text":null,"texts":null,"category":"People","sort_order":97,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F450-1F3FB","image":"1f450-1f3fb.png","sheet_x":13,"sheet_y":19,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F450-1F3FC","image":"1f450-1f3fc.png","sheet_x":13,"sheet_y":20,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F450-1F3FD","image":"1f450-1f3fd.png","sheet_x":13,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F450-1F3FE","image":"1f450-1f3fe.png","sheet_x":13,"sheet_y":22,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F450-1F3FF","image":"1f450-1f3ff.png","sheet_x":13,"sheet_y":23,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"CROWN","unified":"1F451","variations":[],"docomo":"E71A","au":"E5C9","softbank":"E10E","google":"FE4D1","image":"1f451.png","sheet_x":13,"sheet_y":24,"short_name":"crown","short_names":["crown"],"text":null,"texts":null,"category":"People","sort_order":283,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WOMANS HAT","unified":"1F452","variations":[],"docomo":null,"au":"EA9E","softbank":"E318","google":"FE4D4","image":"1f452.png","sheet_x":13,"sheet_y":25,"short_name":"womans_hat","short_names":["womans_hat"],"text":null,"texts":null,"category":"People","sort_order":280,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EYEGLASSES","unified":"1F453","variations":[],"docomo":"E69A","au":"E4FE","softbank":null,"google":"FE4CE","image":"1f453.png","sheet_x":13,"sheet_y":26,"short_name":"eyeglasses","short_names":["eyeglasses"],"text":null,"texts":null,"category":"People","sort_order":290,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NECKTIE","unified":"1F454","variations":[],"docomo":null,"au":"EA93","softbank":"E302","google":"FE4D3","image":"1f454.png","sheet_x":13,"sheet_y":27,"short_name":"necktie","short_names":["necktie"],"text":null,"texts":null,"category":"People","sort_order":271,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"T-SHIRT","unified":"1F455","variations":[],"docomo":"E70E","au":"E5B6","softbank":"E006","google":"FE4CF","image":"1f455.png","sheet_x":13,"sheet_y":28,"short_name":"shirt","short_names":["shirt","tshirt"],"text":null,"texts":null,"category":"People","sort_order":269,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"JEANS","unified":"1F456","variations":[],"docomo":"E711","au":"EB77","softbank":null,"google":"FE4D0","image":"1f456.png","sheet_x":13,"sheet_y":29,"short_name":"jeans","short_names":["jeans"],"text":null,"texts":null,"category":"People","sort_order":270,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DRESS","unified":"1F457","variations":[],"docomo":null,"au":"EB6B","softbank":"E319","google":"FE4D5","image":"1f457.png","sheet_x":13,"sheet_y":30,"short_name":"dress","short_names":["dress"],"text":null,"texts":null,"category":"People","sort_order":272,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KIMONO","unified":"1F458","variations":[],"docomo":null,"au":"EAA3","softbank":"E321","google":"FE4D9","image":"1f458.png","sheet_x":13,"sheet_y":31,"short_name":"kimono","short_names":["kimono"],"text":null,"texts":null,"category":"People","sort_order":274,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BIKINI","unified":"1F459","variations":[],"docomo":null,"au":"EAA4","softbank":"E322","google":"FE4DA","image":"1f459.png","sheet_x":13,"sheet_y":32,"short_name":"bikini","short_names":["bikini"],"text":null,"texts":null,"category":"People","sort_order":273,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WOMANS CLOTHES","unified":"1F45A","variations":[],"docomo":"E70E","au":"E50D","softbank":"E006","google":"FE4DB","image":"1f45a.png","sheet_x":13,"sheet_y":33,"short_name":"womans_clothes","short_names":["womans_clothes"],"text":null,"texts":null,"category":"People","sort_order":268,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PURSE","unified":"1F45B","variations":[],"docomo":"E70F","au":"E504","softbank":null,"google":"FE4DC","image":"1f45b.png","sheet_x":13,"sheet_y":34,"short_name":"purse","short_names":["purse"],"text":null,"texts":null,"category":"People","sort_order":287,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HANDBAG","unified":"1F45C","variations":[],"docomo":"E682","au":"E49C","softbank":"E323","google":"FE4F0","image":"1f45c.png","sheet_x":13,"sheet_y":35,"short_name":"handbag","short_names":["handbag"],"text":null,"texts":null,"category":"People","sort_order":288,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POUCH","unified":"1F45D","variations":[],"docomo":"E6AD","au":null,"softbank":null,"google":"FE4F1","image":"1f45d.png","sheet_x":13,"sheet_y":36,"short_name":"pouch","short_names":["pouch"],"text":null,"texts":null,"category":"People","sort_order":286,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MANS SHOE","unified":"1F45E","variations":[],"docomo":"E699","au":"E5B7","softbank":"E007","google":"FE4CC","image":"1f45e.png","sheet_x":13,"sheet_y":37,"short_name":"mans_shoe","short_names":["mans_shoe","shoe"],"text":null,"texts":null,"category":"People","sort_order":278,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ATHLETIC SHOE","unified":"1F45F","variations":[],"docomo":"E699","au":"EB2B","softbank":"E007","google":"FE4CD","image":"1f45f.png","sheet_x":13,"sheet_y":38,"short_name":"athletic_shoe","short_names":["athletic_shoe"],"text":null,"texts":null,"category":"People","sort_order":279,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HIGH-HEELED SHOE","unified":"1F460","variations":[],"docomo":"E674","au":"E51A","softbank":"E13E","google":"FE4D6","image":"1f460.png","sheet_x":13,"sheet_y":39,"short_name":"high_heel","short_names":["high_heel"],"text":null,"texts":null,"category":"People","sort_order":275,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WOMANS SANDAL","unified":"1F461","variations":[],"docomo":"E674","au":"E51A","softbank":"E31A","google":"FE4D7","image":"1f461.png","sheet_x":13,"sheet_y":40,"short_name":"sandal","short_names":["sandal"],"text":null,"texts":null,"category":"People","sort_order":276,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WOMANS BOOTS","unified":"1F462","variations":[],"docomo":null,"au":"EA9F","softbank":"E31B","google":"FE4D8","image":"1f462.png","sheet_x":13,"sheet_y":41,"short_name":"boot","short_names":["boot"],"text":null,"texts":null,"category":"People","sort_order":277,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FOOTPRINTS","unified":"1F463","variations":[],"docomo":"E698","au":"EB2A","softbank":"E536","google":"FE553","image":"1f463.png","sheet_x":13,"sheet_y":42,"short_name":"footprints","short_names":["footprints"],"text":null,"texts":null,"category":"People","sort_order":135,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BUST IN SILHOUETTE","unified":"1F464","variations":[],"docomo":"E6B1","au":null,"softbank":null,"google":"FE19A","image":"1f464.png","sheet_x":13,"sheet_y":43,"short_name":"bust_in_silhouette","short_names":["bust_in_silhouette"],"text":null,"texts":null,"category":"People","sort_order":139,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BUSTS IN SILHOUETTE","unified":"1F465","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f465.png","sheet_x":13,"sheet_y":44,"short_name":"busts_in_silhouette","short_names":["busts_in_silhouette"],"text":null,"texts":null,"category":"People","sort_order":140,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BOY","unified":"1F466","variations":[],"docomo":"E6F0","au":"E4FC","softbank":"E001","google":"FE19B","image":"1f466.png","sheet_x":13,"sheet_y":45,"short_name":"boy","short_names":["boy"],"text":null,"texts":null,"category":"People","sort_order":142,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F466-1F3FB","image":"1f466-1f3fb.png","sheet_x":13,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F466-1F3FC","image":"1f466-1f3fc.png","sheet_x":13,"sheet_y":47,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F466-1F3FD","image":"1f466-1f3fd.png","sheet_x":13,"sheet_y":48,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F466-1F3FE","image":"1f466-1f3fe.png","sheet_x":14,"sheet_y":0,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F466-1F3FF","image":"1f466-1f3ff.png","sheet_x":14,"sheet_y":1,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"GIRL","unified":"1F467","variations":[],"docomo":"E6F0","au":"E4FA","softbank":"E002","google":"FE19C","image":"1f467.png","sheet_x":14,"sheet_y":2,"short_name":"girl","short_names":["girl"],"text":null,"texts":null,"category":"People","sort_order":143,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F467-1F3FB","image":"1f467-1f3fb.png","sheet_x":14,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F467-1F3FC","image":"1f467-1f3fc.png","sheet_x":14,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F467-1F3FD","image":"1f467-1f3fd.png","sheet_x":14,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F467-1F3FE","image":"1f467-1f3fe.png","sheet_x":14,"sheet_y":6,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F467-1F3FF","image":"1f467-1f3ff.png","sheet_x":14,"sheet_y":7,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"MAN","unified":"1F468","variations":[],"docomo":"E6F0","au":"E4FC","softbank":"E004","google":"FE19D","image":"1f468.png","sheet_x":14,"sheet_y":8,"short_name":"man","short_names":["man"],"text":null,"texts":null,"category":"People","sort_order":144,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB","image":"1f468-1f3fb.png","sheet_x":14,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F468-1F3FC","image":"1f468-1f3fc.png","sheet_x":14,"sheet_y":10,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F468-1F3FD","image":"1f468-1f3fd.png","sheet_x":14,"sheet_y":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F468-1F3FE","image":"1f468-1f3fe.png","sheet_x":14,"sheet_y":12,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F468-1F3FF","image":"1f468-1f3ff.png","sheet_x":14,"sheet_y":13,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"WOMAN","unified":"1F469","variations":[],"docomo":"E6F0","au":"E4FA","softbank":"E005","google":"FE19E","image":"1f469.png","sheet_x":14,"sheet_y":14,"short_name":"woman","short_names":["woman"],"text":null,"texts":null,"category":"People","sort_order":145,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB","image":"1f469-1f3fb.png","sheet_x":14,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F469-1F3FC","image":"1f469-1f3fc.png","sheet_x":14,"sheet_y":16,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F469-1F3FD","image":"1f469-1f3fd.png","sheet_x":14,"sheet_y":17,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F469-1F3FE","image":"1f469-1f3fe.png","sheet_x":14,"sheet_y":18,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F469-1F3FF","image":"1f469-1f3ff.png","sheet_x":14,"sheet_y":19,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"FAMILY","unified":"1F46A","variations":[],"docomo":null,"au":"E501","softbank":null,"google":"FE19F","image":"1f46a.png","sheet_x":14,"sheet_y":20,"short_name":"family","short_names":["family","man-woman-boy"],"text":null,"texts":null,"category":"People","sort_order":243,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"obsoleted_by":"1F468-200D-1F469-200D-1F466"},{"name":"MAN AND WOMAN HOLDING HANDS","unified":"1F46B","variations":[],"docomo":null,"au":null,"softbank":"E428","google":"FE1A0","image":"1f46b.png","sheet_x":14,"sheet_y":21,"short_name":"couple","short_names":["couple","man_and_woman_holding_hands"],"text":null,"texts":null,"category":"People","sort_order":234,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TWO MEN HOLDING HANDS","unified":"1F46C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f46c.png","sheet_x":14,"sheet_y":22,"short_name":"two_men_holding_hands","short_names":["two_men_holding_hands"],"text":null,"texts":null,"category":"People","sort_order":236,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TWO WOMEN HOLDING HANDS","unified":"1F46D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f46d.png","sheet_x":14,"sheet_y":23,"short_name":"two_women_holding_hands","short_names":["two_women_holding_hands"],"text":null,"texts":null,"category":"People","sort_order":235,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POLICE OFFICER","unified":"1F46E","variations":[],"docomo":null,"au":"E5DD","softbank":"E152","google":"FE1A1","image":"1f46e.png","sheet_x":14,"sheet_y":24,"short_name":"cop","short_names":["cop"],"text":null,"texts":null,"category":"People","sort_order":154,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F46E-1F3FB","image":"1f46e-1f3fb.png","sheet_x":14,"sheet_y":25,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F46E-1F3FC","image":"1f46e-1f3fc.png","sheet_x":14,"sheet_y":26,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F46E-1F3FD","image":"1f46e-1f3fd.png","sheet_x":14,"sheet_y":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F46E-1F3FE","image":"1f46e-1f3fe.png","sheet_x":14,"sheet_y":28,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F46E-1F3FF","image":"1f46e-1f3ff.png","sheet_x":14,"sheet_y":29,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F46E-200D-2642-FE0F"},{"name":"WOMAN WITH BUNNY EARS","unified":"1F46F","variations":[],"docomo":null,"au":"EADB","softbank":"E429","google":"FE1A2","image":"1f46f.png","sheet_x":14,"sheet_y":30,"short_name":"dancers","short_names":["dancers"],"text":null,"texts":null,"category":"People","sort_order":228,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"obsoleted_by":"1F46F-200D-2640-FE0F"},{"name":"BRIDE WITH VEIL","unified":"1F470","variations":[],"docomo":null,"au":"EAE9","softbank":null,"google":"FE1A3","image":"1f470.png","sheet_x":14,"sheet_y":31,"short_name":"bride_with_veil","short_names":["bride_with_veil"],"text":null,"texts":null,"category":"People","sort_order":197,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F470-1F3FB","image":"1f470-1f3fb.png","sheet_x":14,"sheet_y":32,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F470-1F3FC","image":"1f470-1f3fc.png","sheet_x":14,"sheet_y":33,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F470-1F3FD","image":"1f470-1f3fd.png","sheet_x":14,"sheet_y":34,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F470-1F3FE","image":"1f470-1f3fe.png","sheet_x":14,"sheet_y":35,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F470-1F3FF","image":"1f470-1f3ff.png","sheet_x":14,"sheet_y":36,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"PERSON WITH BLOND HAIR","unified":"1F471","variations":[],"docomo":null,"au":"EB13","softbank":"E515","google":"FE1A4","image":"1f471.png","sheet_x":14,"sheet_y":37,"short_name":"person_with_blond_hair","short_names":["person_with_blond_hair"],"text":null,"texts":null,"category":"People","sort_order":147,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F471-1F3FB","image":"1f471-1f3fb.png","sheet_x":14,"sheet_y":38,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F471-1F3FC","image":"1f471-1f3fc.png","sheet_x":14,"sheet_y":39,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F471-1F3FD","image":"1f471-1f3fd.png","sheet_x":14,"sheet_y":40,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F471-1F3FE","image":"1f471-1f3fe.png","sheet_x":14,"sheet_y":41,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F471-1F3FF","image":"1f471-1f3ff.png","sheet_x":14,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F471-200D-2642-FE0F"},{"name":"MAN WITH GUA PI MAO","unified":"1F472","variations":[],"docomo":null,"au":"EB14","softbank":"E516","google":"FE1A5","image":"1f472.png","sheet_x":14,"sheet_y":43,"short_name":"man_with_gua_pi_mao","short_names":["man_with_gua_pi_mao"],"text":null,"texts":null,"category":"People","sort_order":150,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F472-1F3FB","image":"1f472-1f3fb.png","sheet_x":14,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F472-1F3FC","image":"1f472-1f3fc.png","sheet_x":14,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F472-1F3FD","image":"1f472-1f3fd.png","sheet_x":14,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F472-1F3FE","image":"1f472-1f3fe.png","sheet_x":14,"sheet_y":47,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F472-1F3FF","image":"1f472-1f3ff.png","sheet_x":14,"sheet_y":48,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"MAN WITH TURBAN","unified":"1F473","variations":[],"docomo":null,"au":"EB15","softbank":"E517","google":"FE1A6","image":"1f473.png","sheet_x":15,"sheet_y":0,"short_name":"man_with_turban","short_names":["man_with_turban"],"text":null,"texts":null,"category":"People","sort_order":152,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F473-1F3FB","image":"1f473-1f3fb.png","sheet_x":15,"sheet_y":1,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F473-1F3FC","image":"1f473-1f3fc.png","sheet_x":15,"sheet_y":2,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F473-1F3FD","image":"1f473-1f3fd.png","sheet_x":15,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F473-1F3FE","image":"1f473-1f3fe.png","sheet_x":15,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F473-1F3FF","image":"1f473-1f3ff.png","sheet_x":15,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F473-200D-2642-FE0F"},{"name":"OLDER MAN","unified":"1F474","variations":[],"docomo":null,"au":"EB16","softbank":"E518","google":"FE1A7","image":"1f474.png","sheet_x":15,"sheet_y":6,"short_name":"older_man","short_names":["older_man"],"text":null,"texts":null,"category":"People","sort_order":148,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F474-1F3FB","image":"1f474-1f3fb.png","sheet_x":15,"sheet_y":7,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F474-1F3FC","image":"1f474-1f3fc.png","sheet_x":15,"sheet_y":8,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F474-1F3FD","image":"1f474-1f3fd.png","sheet_x":15,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F474-1F3FE","image":"1f474-1f3fe.png","sheet_x":15,"sheet_y":10,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F474-1F3FF","image":"1f474-1f3ff.png","sheet_x":15,"sheet_y":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"OLDER WOMAN","unified":"1F475","variations":[],"docomo":null,"au":"EB17","softbank":"E519","google":"FE1A8","image":"1f475.png","sheet_x":15,"sheet_y":12,"short_name":"older_woman","short_names":["older_woman"],"text":null,"texts":null,"category":"People","sort_order":149,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F475-1F3FB","image":"1f475-1f3fb.png","sheet_x":15,"sheet_y":13,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F475-1F3FC","image":"1f475-1f3fc.png","sheet_x":15,"sheet_y":14,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F475-1F3FD","image":"1f475-1f3fd.png","sheet_x":15,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F475-1F3FE","image":"1f475-1f3fe.png","sheet_x":15,"sheet_y":16,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F475-1F3FF","image":"1f475-1f3ff.png","sheet_x":15,"sheet_y":17,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"BABY","unified":"1F476","variations":[],"docomo":null,"au":"EB18","softbank":"E51A","google":"FE1A9","image":"1f476.png","sheet_x":15,"sheet_y":18,"short_name":"baby","short_names":["baby"],"text":null,"texts":null,"category":"People","sort_order":141,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F476-1F3FB","image":"1f476-1f3fb.png","sheet_x":15,"sheet_y":19,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F476-1F3FC","image":"1f476-1f3fc.png","sheet_x":15,"sheet_y":20,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F476-1F3FD","image":"1f476-1f3fd.png","sheet_x":15,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F476-1F3FE","image":"1f476-1f3fe.png","sheet_x":15,"sheet_y":22,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F476-1F3FF","image":"1f476-1f3ff.png","sheet_x":15,"sheet_y":23,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"CONSTRUCTION WORKER","unified":"1F477","variations":[],"docomo":null,"au":"EB19","softbank":"E51B","google":"FE1AA","image":"1f477.png","sheet_x":15,"sheet_y":24,"short_name":"construction_worker","short_names":["construction_worker"],"text":null,"texts":null,"category":"People","sort_order":156,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F477-1F3FB","image":"1f477-1f3fb.png","sheet_x":15,"sheet_y":25,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F477-1F3FC","image":"1f477-1f3fc.png","sheet_x":15,"sheet_y":26,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F477-1F3FD","image":"1f477-1f3fd.png","sheet_x":15,"sheet_y":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F477-1F3FE","image":"1f477-1f3fe.png","sheet_x":15,"sheet_y":28,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F477-1F3FF","image":"1f477-1f3ff.png","sheet_x":15,"sheet_y":29,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F477-200D-2642-FE0F"},{"name":"PRINCESS","unified":"1F478","variations":[],"docomo":null,"au":"EB1A","softbank":"E51C","google":"FE1AB","image":"1f478.png","sheet_x":15,"sheet_y":30,"short_name":"princess","short_names":["princess"],"text":null,"texts":null,"category":"People","sort_order":195,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F478-1F3FB","image":"1f478-1f3fb.png","sheet_x":15,"sheet_y":31,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F478-1F3FC","image":"1f478-1f3fc.png","sheet_x":15,"sheet_y":32,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F478-1F3FD","image":"1f478-1f3fd.png","sheet_x":15,"sheet_y":33,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F478-1F3FE","image":"1f478-1f3fe.png","sheet_x":15,"sheet_y":34,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F478-1F3FF","image":"1f478-1f3ff.png","sheet_x":15,"sheet_y":35,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"JAPANESE OGRE","unified":"1F479","variations":[],"docomo":null,"au":"EB44","softbank":null,"google":"FE1AC","image":"1f479.png","sheet_x":15,"sheet_y":36,"short_name":"japanese_ogre","short_names":["japanese_ogre"],"text":null,"texts":null,"category":"People","sort_order":78,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"JAPANESE GOBLIN","unified":"1F47A","variations":[],"docomo":null,"au":"EB45","softbank":null,"google":"FE1AD","image":"1f47a.png","sheet_x":15,"sheet_y":37,"short_name":"japanese_goblin","short_names":["japanese_goblin"],"text":null,"texts":null,"category":"People","sort_order":79,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GHOST","unified":"1F47B","variations":[],"docomo":null,"au":"E4CB","softbank":"E11B","google":"FE1AE","image":"1f47b.png","sheet_x":15,"sheet_y":38,"short_name":"ghost","short_names":["ghost"],"text":null,"texts":null,"category":"People","sort_order":81,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BABY ANGEL","unified":"1F47C","variations":[],"docomo":null,"au":"E5BF","softbank":"E04E","google":"FE1AF","image":"1f47c.png","sheet_x":15,"sheet_y":39,"short_name":"angel","short_names":["angel"],"text":null,"texts":null,"category":"People","sort_order":199,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F47C-1F3FB","image":"1f47c-1f3fb.png","sheet_x":15,"sheet_y":40,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F47C-1F3FC","image":"1f47c-1f3fc.png","sheet_x":15,"sheet_y":41,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F47C-1F3FD","image":"1f47c-1f3fd.png","sheet_x":15,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F47C-1F3FE","image":"1f47c-1f3fe.png","sheet_x":15,"sheet_y":43,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F47C-1F3FF","image":"1f47c-1f3ff.png","sheet_x":15,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"EXTRATERRESTRIAL ALIEN","unified":"1F47D","variations":[],"docomo":null,"au":"E50E","softbank":"E10C","google":"FE1B0","image":"1f47d.png","sheet_x":15,"sheet_y":45,"short_name":"alien","short_names":["alien"],"text":null,"texts":null,"category":"People","sort_order":84,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ALIEN MONSTER","unified":"1F47E","variations":[],"docomo":null,"au":"E4EC","softbank":"E12B","google":"FE1B1","image":"1f47e.png","sheet_x":15,"sheet_y":46,"short_name":"space_invader","short_names":["space_invader"],"text":null,"texts":null,"category":"People","sort_order":85,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"IMP","unified":"1F47F","variations":[],"docomo":null,"au":"E4EF","softbank":"E11A","google":"FE1B2","image":"1f47f.png","sheet_x":15,"sheet_y":47,"short_name":"imp","short_names":["imp"],"text":null,"texts":null,"category":"People","sort_order":77,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SKULL","unified":"1F480","variations":[],"docomo":null,"au":"E4F8","softbank":"E11C","google":"FE1B3","image":"1f480.png","sheet_x":15,"sheet_y":48,"short_name":"skull","short_names":["skull"],"text":null,"texts":null,"category":"People","sort_order":82,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INFORMATION DESK PERSON","unified":"1F481","variations":[],"docomo":null,"au":null,"softbank":"E253","google":"FE1B4","image":"1f481.png","sheet_x":16,"sheet_y":0,"short_name":"information_desk_person","short_names":["information_desk_person"],"text":null,"texts":null,"category":"People","sort_order":203,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F481-1F3FB","image":"1f481-1f3fb.png","sheet_x":16,"sheet_y":1,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F481-1F3FC","image":"1f481-1f3fc.png","sheet_x":16,"sheet_y":2,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F481-1F3FD","image":"1f481-1f3fd.png","sheet_x":16,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F481-1F3FE","image":"1f481-1f3fe.png","sheet_x":16,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F481-1F3FF","image":"1f481-1f3ff.png","sheet_x":16,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F481-200D-2640-FE0F"},{"name":"GUARDSMAN","unified":"1F482","variations":[],"docomo":null,"au":null,"softbank":"E51E","google":"FE1B5","image":"1f482.png","sheet_x":16,"sheet_y":6,"short_name":"guardsman","short_names":["guardsman"],"text":null,"texts":null,"category":"People","sort_order":158,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F482-1F3FB","image":"1f482-1f3fb.png","sheet_x":16,"sheet_y":7,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F482-1F3FC","image":"1f482-1f3fc.png","sheet_x":16,"sheet_y":8,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F482-1F3FD","image":"1f482-1f3fd.png","sheet_x":16,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F482-1F3FE","image":"1f482-1f3fe.png","sheet_x":16,"sheet_y":10,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F482-1F3FF","image":"1f482-1f3ff.png","sheet_x":16,"sheet_y":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F482-200D-2642-FE0F"},{"name":"DANCER","unified":"1F483","variations":[],"docomo":null,"au":"EB1C","softbank":"E51F","google":"FE1B6","image":"1f483.png","sheet_x":16,"sheet_y":12,"short_name":"dancer","short_names":["dancer"],"text":null,"texts":null,"category":"People","sort_order":226,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F483-1F3FB","image":"1f483-1f3fb.png","sheet_x":16,"sheet_y":13,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F483-1F3FC","image":"1f483-1f3fc.png","sheet_x":16,"sheet_y":14,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F483-1F3FD","image":"1f483-1f3fd.png","sheet_x":16,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F483-1F3FE","image":"1f483-1f3fe.png","sheet_x":16,"sheet_y":16,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F483-1F3FF","image":"1f483-1f3ff.png","sheet_x":16,"sheet_y":17,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"LIPSTICK","unified":"1F484","variations":[],"docomo":"E710","au":"E509","softbank":"E31C","google":"FE195","image":"1f484.png","sheet_x":16,"sheet_y":18,"short_name":"lipstick","short_names":["lipstick"],"text":null,"texts":null,"category":"People","sort_order":129,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NAIL POLISH","unified":"1F485","variations":[],"docomo":null,"au":"EAA0","softbank":"E31D","google":"FE196","image":"1f485.png","sheet_x":16,"sheet_y":19,"short_name":"nail_care","short_names":["nail_care"],"text":null,"texts":null,"category":"People","sort_order":127,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F485-1F3FB","image":"1f485-1f3fb.png","sheet_x":16,"sheet_y":20,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F485-1F3FC","image":"1f485-1f3fc.png","sheet_x":16,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F485-1F3FD","image":"1f485-1f3fd.png","sheet_x":16,"sheet_y":22,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F485-1F3FE","image":"1f485-1f3fe.png","sheet_x":16,"sheet_y":23,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F485-1F3FF","image":"1f485-1f3ff.png","sheet_x":16,"sheet_y":24,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"FACE MASSAGE","unified":"1F486","variations":[],"docomo":null,"au":"E50B","softbank":"E31E","google":"FE197","image":"1f486.png","sheet_x":16,"sheet_y":25,"short_name":"massage","short_names":["massage"],"text":null,"texts":null,"category":"People","sort_order":223,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F486-1F3FB","image":"1f486-1f3fb.png","sheet_x":16,"sheet_y":26,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F486-1F3FC","image":"1f486-1f3fc.png","sheet_x":16,"sheet_y":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F486-1F3FD","image":"1f486-1f3fd.png","sheet_x":16,"sheet_y":28,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F486-1F3FE","image":"1f486-1f3fe.png","sheet_x":16,"sheet_y":29,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F486-1F3FF","image":"1f486-1f3ff.png","sheet_x":16,"sheet_y":30,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F486-200D-2640-FE0F"},{"name":"HAIRCUT","unified":"1F487","variations":[],"docomo":"E675","au":"EAA1","softbank":"E31F","google":"FE198","image":"1f487.png","sheet_x":16,"sheet_y":31,"short_name":"haircut","short_names":["haircut"],"text":null,"texts":null,"category":"People","sort_order":221,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F487-1F3FB","image":"1f487-1f3fb.png","sheet_x":16,"sheet_y":32,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F487-1F3FC","image":"1f487-1f3fc.png","sheet_x":16,"sheet_y":33,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F487-1F3FD","image":"1f487-1f3fd.png","sheet_x":16,"sheet_y":34,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F487-1F3FE","image":"1f487-1f3fe.png","sheet_x":16,"sheet_y":35,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F487-1F3FF","image":"1f487-1f3ff.png","sheet_x":16,"sheet_y":36,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F487-200D-2640-FE0F"},{"name":"BARBER POLE","unified":"1F488","variations":[],"docomo":null,"au":"EAA2","softbank":"E320","google":"FE199","image":"1f488.png","sheet_x":16,"sheet_y":37,"short_name":"barber","short_names":["barber"],"text":null,"texts":null,"category":"Objects","sort_order":75,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SYRINGE","unified":"1F489","variations":[],"docomo":null,"au":"E510","softbank":"E13B","google":"FE509","image":"1f489.png","sheet_x":16,"sheet_y":38,"short_name":"syringe","short_names":["syringe"],"text":null,"texts":null,"category":"Objects","sort_order":81,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PILL","unified":"1F48A","variations":[],"docomo":null,"au":"EA9A","softbank":"E30F","google":"FE50A","image":"1f48a.png","sheet_x":16,"sheet_y":39,"short_name":"pill","short_names":["pill"],"text":null,"texts":null,"category":"Objects","sort_order":80,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KISS MARK","unified":"1F48B","variations":[],"docomo":"E6F9","au":"E4EB","softbank":"E003","google":"FE823","image":"1f48b.png","sheet_x":16,"sheet_y":40,"short_name":"kiss","short_names":["kiss"],"text":null,"texts":null,"category":"People","sort_order":130,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LOVE LETTER","unified":"1F48C","variations":[],"docomo":"E717","au":"EB78","softbank":"E103-E328","google":"FE824","image":"1f48c.png","sheet_x":16,"sheet_y":41,"short_name":"love_letter","short_names":["love_letter"],"text":null,"texts":null,"category":"Objects","sort_order":111,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RING","unified":"1F48D","variations":[],"docomo":"E71B","au":"E514","softbank":"E034","google":"FE825","image":"1f48d.png","sheet_x":16,"sheet_y":42,"short_name":"ring","short_names":["ring"],"text":null,"texts":null,"category":"People","sort_order":128,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GEM STONE","unified":"1F48E","variations":[],"docomo":"E71B","au":"E514","softbank":"E035","google":"FE826","image":"1f48e.png","sheet_x":16,"sheet_y":43,"short_name":"gem","short_names":["gem"],"text":null,"texts":null,"category":"Objects","sort_order":53,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KISS","unified":"1F48F","variations":[],"docomo":"E6F9","au":"E5CA","softbank":"E111","google":"FE827","image":"1f48f.png","sheet_x":16,"sheet_y":44,"short_name":"couplekiss","short_names":["couplekiss"],"text":null,"texts":null,"category":"People","sort_order":240,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"obsoleted_by":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F468"},{"name":"BOUQUET","unified":"1F490","variations":[],"docomo":null,"au":"EA95","softbank":"E306","google":"FE828","image":"1f490.png","sheet_x":16,"sheet_y":45,"short_name":"bouquet","short_names":["bouquet"],"text":null,"texts":null,"category":"Nature","sort_order":105,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COUPLE WITH HEART","unified":"1F491","variations":[],"docomo":"E6ED","au":"EADA","softbank":"E425","google":"FE829","image":"1f491.png","sheet_x":16,"sheet_y":46,"short_name":"couple_with_heart","short_names":["couple_with_heart"],"text":null,"texts":null,"category":"People","sort_order":237,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"obsoleted_by":"1F469-200D-2764-FE0F-200D-1F468"},{"name":"WEDDING","unified":"1F492","variations":[],"docomo":null,"au":"E5BB","softbank":"E43D","google":"FE82A","image":"1f492.png","sheet_x":16,"sheet_y":47,"short_name":"wedding","short_names":["wedding"],"text":null,"texts":null,"category":"Places","sort_order":98,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BEATING HEART","unified":"1F493","variations":[],"docomo":"E6ED","au":"EB75","softbank":"E327","google":"FEB0D","image":"1f493.png","sheet_x":16,"sheet_y":48,"short_name":"heartbeat","short_names":["heartbeat"],"text":null,"texts":null,"category":"Symbols","sort_order":11,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BROKEN HEART","unified":"1F494","variations":[],"docomo":"E6EE","au":"E477","softbank":"E023","google":"FEB0E","image":"1f494.png","sheet_x":17,"sheet_y":0,"short_name":"broken_heart","short_names":["broken_heart"],"text":"<\/3","texts":["<\/3"],"category":"Symbols","sort_order":7,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TWO HEARTS","unified":"1F495","variations":[],"docomo":"E6EF","au":"E478","softbank":"E327","google":"FEB0F","image":"1f495.png","sheet_x":17,"sheet_y":1,"short_name":"two_hearts","short_names":["two_hearts"],"text":null,"texts":null,"category":"Symbols","sort_order":9,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPARKLING HEART","unified":"1F496","variations":[],"docomo":"E6EC","au":"EAA6","softbank":"E327","google":"FEB10","image":"1f496.png","sheet_x":17,"sheet_y":2,"short_name":"sparkling_heart","short_names":["sparkling_heart"],"text":null,"texts":null,"category":"Symbols","sort_order":13,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GROWING HEART","unified":"1F497","variations":[],"docomo":"E6ED","au":"EB75","softbank":"E328","google":"FEB11","image":"1f497.png","sheet_x":17,"sheet_y":3,"short_name":"heartpulse","short_names":["heartpulse"],"text":null,"texts":null,"category":"Symbols","sort_order":12,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEART WITH ARROW","unified":"1F498","variations":[],"docomo":"E6EC","au":"E4EA","softbank":"E329","google":"FEB12","image":"1f498.png","sheet_x":17,"sheet_y":4,"short_name":"cupid","short_names":["cupid"],"text":null,"texts":null,"category":"Symbols","sort_order":14,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLUE HEART","unified":"1F499","variations":[],"docomo":"E6EC","au":"EAA7","softbank":"E32A","google":"FEB13","image":"1f499.png","sheet_x":17,"sheet_y":5,"short_name":"blue_heart","short_names":["blue_heart"],"text":"<3","texts":null,"category":"Symbols","sort_order":4,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GREEN HEART","unified":"1F49A","variations":[],"docomo":"E6EC","au":"EAA8","softbank":"E32B","google":"FEB14","image":"1f49a.png","sheet_x":17,"sheet_y":6,"short_name":"green_heart","short_names":["green_heart"],"text":"<3","texts":null,"category":"Symbols","sort_order":3,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"YELLOW HEART","unified":"1F49B","variations":[],"docomo":"E6EC","au":"EAA9","softbank":"E32C","google":"FEB15","image":"1f49b.png","sheet_x":17,"sheet_y":7,"short_name":"yellow_heart","short_names":["yellow_heart"],"text":"<3","texts":null,"category":"Symbols","sort_order":2,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PURPLE HEART","unified":"1F49C","variations":[],"docomo":"E6EC","au":"EAAA","softbank":"E32D","google":"FEB16","image":"1f49c.png","sheet_x":17,"sheet_y":8,"short_name":"purple_heart","short_names":["purple_heart"],"text":"<3","texts":null,"category":"Symbols","sort_order":5,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEART WITH RIBBON","unified":"1F49D","variations":[],"docomo":"E6EC","au":"EB54","softbank":"E437","google":"FEB17","image":"1f49d.png","sheet_x":17,"sheet_y":9,"short_name":"gift_heart","short_names":["gift_heart"],"text":null,"texts":null,"category":"Symbols","sort_order":15,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REVOLVING HEARTS","unified":"1F49E","variations":[],"docomo":"E6ED","au":"E5AF","softbank":"E327","google":"FEB18","image":"1f49e.png","sheet_x":17,"sheet_y":10,"short_name":"revolving_hearts","short_names":["revolving_hearts"],"text":null,"texts":null,"category":"Symbols","sort_order":10,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEART DECORATION","unified":"1F49F","variations":[],"docomo":"E6F8","au":"E595","softbank":"E204","google":"FEB19","image":"1f49f.png","sheet_x":17,"sheet_y":11,"short_name":"heart_decoration","short_names":["heart_decoration"],"text":null,"texts":null,"category":"Symbols","sort_order":16,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DIAMOND SHAPE WITH A DOT INSIDE","unified":"1F4A0","variations":[],"docomo":"E6F8","au":null,"softbank":null,"google":"FEB55","image":"1f4a0.png","sheet_x":17,"sheet_y":12,"short_name":"diamond_shape_with_a_dot_inside","short_names":["diamond_shape_with_a_dot_inside"],"text":null,"texts":null,"category":"Symbols","sort_order":107,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ELECTRIC LIGHT BULB","unified":"1F4A1","variations":[],"docomo":"E6FB","au":"E476","softbank":"E10F","google":"FEB56","image":"1f4a1.png","sheet_x":17,"sheet_y":13,"short_name":"bulb","short_names":["bulb"],"text":null,"texts":null,"category":"Objects","sort_order":41,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ANGER SYMBOL","unified":"1F4A2","variations":[],"docomo":"E6FC","au":"E4E5","softbank":"E334","google":"FEB57","image":"1f4a2.png","sheet_x":17,"sheet_y":14,"short_name":"anger","short_names":["anger"],"text":null,"texts":null,"category":"Symbols","sort_order":76,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BOMB","unified":"1F4A3","variations":[],"docomo":"E6FE","au":"E47A","softbank":"E311","google":"FEB58","image":"1f4a3.png","sheet_x":17,"sheet_y":15,"short_name":"bomb","short_names":["bomb"],"text":null,"texts":null,"category":"Objects","sort_order":64,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SLEEPING SYMBOL","unified":"1F4A4","variations":[],"docomo":"E701","au":"E475","softbank":"E13C","google":"FEB59","image":"1f4a4.png","sheet_x":17,"sheet_y":16,"short_name":"zzz","short_names":["zzz"],"text":null,"texts":null,"category":"Symbols","sort_order":110,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COLLISION SYMBOL","unified":"1F4A5","variations":[],"docomo":"E705","au":"E5B0","softbank":null,"google":"FEB5A","image":"1f4a5.png","sheet_x":17,"sheet_y":17,"short_name":"boom","short_names":["boom","collision"],"text":null,"texts":null,"category":"Nature","sort_order":136,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPLASHING SWEAT SYMBOL","unified":"1F4A6","variations":[],"docomo":"E706","au":"E5B1","softbank":"E331","google":"FEB5B","image":"1f4a6.png","sheet_x":17,"sheet_y":18,"short_name":"sweat_drops","short_names":["sweat_drops"],"text":null,"texts":null,"category":"Nature","sort_order":158,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DROPLET","unified":"1F4A7","variations":[],"docomo":"E707","au":"E4E6","softbank":"E331","google":"FEB5C","image":"1f4a7.png","sheet_x":17,"sheet_y":19,"short_name":"droplet","short_names":["droplet"],"text":null,"texts":null,"category":"Nature","sort_order":157,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DASH SYMBOL","unified":"1F4A8","variations":[],"docomo":"E708","au":"E4F4","softbank":"E330","google":"FEB5D","image":"1f4a8.png","sheet_x":17,"sheet_y":20,"short_name":"dash","short_names":["dash"],"text":null,"texts":null,"category":"Nature","sort_order":153,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PILE OF POO","unified":"1F4A9","variations":[],"docomo":null,"au":"E4F5","softbank":"E05A","google":"FE4F4","image":"1f4a9.png","sheet_x":17,"sheet_y":21,"short_name":"hankey","short_names":["hankey","poop","shit"],"text":null,"texts":null,"category":"People","sort_order":80,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FLEXED BICEPS","unified":"1F4AA","variations":[],"docomo":null,"au":"E4E9","softbank":"E14C","google":"FEB5E","image":"1f4aa.png","sheet_x":17,"sheet_y":22,"short_name":"muscle","short_names":["muscle"],"text":null,"texts":null,"category":"People","sort_order":123,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F4AA-1F3FB","image":"1f4aa-1f3fb.png","sheet_x":17,"sheet_y":23,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F4AA-1F3FC","image":"1f4aa-1f3fc.png","sheet_x":17,"sheet_y":24,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F4AA-1F3FD","image":"1f4aa-1f3fd.png","sheet_x":17,"sheet_y":25,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F4AA-1F3FE","image":"1f4aa-1f3fe.png","sheet_x":17,"sheet_y":26,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F4AA-1F3FF","image":"1f4aa-1f3ff.png","sheet_x":17,"sheet_y":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"DIZZY SYMBOL","unified":"1F4AB","variations":[],"docomo":null,"au":"EB5C","softbank":"E407","google":"FEB5F","image":"1f4ab.png","sheet_x":17,"sheet_y":28,"short_name":"dizzy","short_names":["dizzy"],"text":null,"texts":null,"category":"Nature","sort_order":130,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPEECH BALLOON","unified":"1F4AC","variations":[],"docomo":null,"au":"E4FD","softbank":null,"google":"FE532","image":"1f4ac.png","sheet_x":17,"sheet_y":29,"short_name":"speech_balloon","short_names":["speech_balloon"],"text":null,"texts":null,"category":"Symbols","sort_order":239,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"THOUGHT BALLOON","unified":"1F4AD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4ad.png","sheet_x":17,"sheet_y":30,"short_name":"thought_balloon","short_names":["thought_balloon"],"text":null,"texts":null,"category":"Symbols","sort_order":241,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE FLOWER","unified":"1F4AE","variations":[],"docomo":null,"au":"E4F0","softbank":null,"google":"FEB7A","image":"1f4ae.png","sheet_x":17,"sheet_y":31,"short_name":"white_flower","short_names":["white_flower"],"text":null,"texts":null,"category":"Symbols","sort_order":55,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HUNDRED POINTS SYMBOL","unified":"1F4AF","variations":[],"docomo":null,"au":"E4F2","softbank":null,"google":"FEB7B","image":"1f4af.png","sheet_x":17,"sheet_y":32,"short_name":"100","short_names":["100"],"text":null,"texts":null,"category":"Symbols","sort_order":75,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MONEY BAG","unified":"1F4B0","variations":[],"docomo":"E715","au":"E4C7","softbank":"E12F","google":"FE4DD","image":"1f4b0.png","sheet_x":17,"sheet_y":33,"short_name":"moneybag","short_names":["moneybag"],"text":null,"texts":null,"category":"Objects","sort_order":51,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CURRENCY EXCHANGE","unified":"1F4B1","variations":[],"docomo":null,"au":null,"softbank":"E149","google":"FE4DE","image":"1f4b1.png","sheet_x":17,"sheet_y":34,"short_name":"currency_exchange","short_names":["currency_exchange"],"text":null,"texts":null,"category":"Symbols","sort_order":195,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY DOLLAR SIGN","unified":"1F4B2","variations":[],"docomo":"E715","au":"E579","softbank":"E12F","google":"FE4E0","image":"1f4b2.png","sheet_x":17,"sheet_y":35,"short_name":"heavy_dollar_sign","short_names":["heavy_dollar_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":194,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CREDIT CARD","unified":"1F4B3","variations":[],"docomo":null,"au":"E57C","softbank":null,"google":"FE4E1","image":"1f4b3.png","sheet_x":17,"sheet_y":36,"short_name":"credit_card","short_names":["credit_card"],"text":null,"texts":null,"category":"Objects","sort_order":52,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BANKNOTE WITH YEN SIGN","unified":"1F4B4","variations":[],"docomo":"E6D6","au":"E57D","softbank":null,"google":"FE4E2","image":"1f4b4.png","sheet_x":17,"sheet_y":37,"short_name":"yen","short_names":["yen"],"text":null,"texts":null,"category":"Objects","sort_order":48,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BANKNOTE WITH DOLLAR SIGN","unified":"1F4B5","variations":[],"docomo":"E715","au":"E585","softbank":"E12F","google":"FE4E3","image":"1f4b5.png","sheet_x":17,"sheet_y":38,"short_name":"dollar","short_names":["dollar"],"text":null,"texts":null,"category":"Objects","sort_order":47,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BANKNOTE WITH EURO SIGN","unified":"1F4B6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4b6.png","sheet_x":17,"sheet_y":39,"short_name":"euro","short_names":["euro"],"text":null,"texts":null,"category":"Objects","sort_order":49,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BANKNOTE WITH POUND SIGN","unified":"1F4B7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4b7.png","sheet_x":17,"sheet_y":40,"short_name":"pound","short_names":["pound"],"text":null,"texts":null,"category":"Objects","sort_order":50,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MONEY WITH WINGS","unified":"1F4B8","variations":[],"docomo":null,"au":"EB5B","softbank":null,"google":"FE4E4","image":"1f4b8.png","sheet_x":17,"sheet_y":41,"short_name":"money_with_wings","short_names":["money_with_wings"],"text":null,"texts":null,"category":"Objects","sort_order":46,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHART WITH UPWARDS TREND AND YEN SIGN","unified":"1F4B9","variations":[],"docomo":null,"au":"E5DC","softbank":"E14A","google":"FE4DF","image":"1f4b9.png","sheet_x":17,"sheet_y":42,"short_name":"chart","short_names":["chart"],"text":null,"texts":null,"category":"Symbols","sort_order":102,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SEAT","unified":"1F4BA","variations":[],"docomo":"E6B2","au":null,"softbank":"E11F","google":"FE537","image":"1f4ba.png","sheet_x":17,"sheet_y":43,"short_name":"seat","short_names":["seat"],"text":null,"texts":null,"category":"Places","sort_order":45,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PERSONAL COMPUTER","unified":"1F4BB","variations":[],"docomo":"E716","au":"E5B8","softbank":"E00C","google":"FE538","image":"1f4bb.png","sheet_x":17,"sheet_y":44,"short_name":"computer","short_names":["computer"],"text":null,"texts":null,"category":"Objects","sort_order":4,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BRIEFCASE","unified":"1F4BC","variations":[],"docomo":"E682","au":"E5CE","softbank":"E11E","google":"FE53B","image":"1f4bc.png","sheet_x":17,"sheet_y":45,"short_name":"briefcase","short_names":["briefcase"],"text":null,"texts":null,"category":"People","sort_order":289,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MINIDISC","unified":"1F4BD","variations":[],"docomo":null,"au":"E582","softbank":"E316","google":"FE53C","image":"1f4bd.png","sheet_x":17,"sheet_y":46,"short_name":"minidisc","short_names":["minidisc"],"text":null,"texts":null,"category":"Objects","sort_order":12,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FLOPPY DISK","unified":"1F4BE","variations":[],"docomo":null,"au":"E562","softbank":"E316","google":"FE53D","image":"1f4be.png","sheet_x":17,"sheet_y":47,"short_name":"floppy_disk","short_names":["floppy_disk"],"text":null,"texts":null,"category":"Objects","sort_order":13,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OPTICAL DISC","unified":"1F4BF","variations":[],"docomo":"E68C","au":"E50C","softbank":"E126","google":"FE81D","image":"1f4bf.png","sheet_x":17,"sheet_y":48,"short_name":"cd","short_names":["cd"],"text":null,"texts":null,"category":"Objects","sort_order":14,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DVD","unified":"1F4C0","variations":[],"docomo":"E68C","au":"E50C","softbank":"E127","google":"FE81E","image":"1f4c0.png","sheet_x":18,"sheet_y":0,"short_name":"dvd","short_names":["dvd"],"text":null,"texts":null,"category":"Objects","sort_order":15,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FILE FOLDER","unified":"1F4C1","variations":[],"docomo":null,"au":"E58F","softbank":null,"google":"FE543","image":"1f4c1.png","sheet_x":18,"sheet_y":1,"short_name":"file_folder","short_names":["file_folder"],"text":null,"texts":null,"category":"Objects","sort_order":138,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OPEN FILE FOLDER","unified":"1F4C2","variations":[],"docomo":null,"au":"E590","softbank":null,"google":"FE544","image":"1f4c2.png","sheet_x":18,"sheet_y":2,"short_name":"open_file_folder","short_names":["open_file_folder"],"text":null,"texts":null,"category":"Objects","sort_order":139,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PAGE WITH CURL","unified":"1F4C3","variations":[],"docomo":"E689","au":"E561","softbank":"E301","google":"FE540","image":"1f4c3.png","sheet_x":18,"sheet_y":3,"short_name":"page_with_curl","short_names":["page_with_curl"],"text":null,"texts":null,"category":"Objects","sort_order":123,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PAGE FACING UP","unified":"1F4C4","variations":[],"docomo":"E689","au":"E569","softbank":"E301","google":"FE541","image":"1f4c4.png","sheet_x":18,"sheet_y":4,"short_name":"page_facing_up","short_names":["page_facing_up"],"text":null,"texts":null,"category":"Objects","sort_order":124,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CALENDAR","unified":"1F4C5","variations":[],"docomo":null,"au":"E563","softbank":null,"google":"FE542","image":"1f4c5.png","sheet_x":18,"sheet_y":5,"short_name":"date","short_names":["date"],"text":null,"texts":null,"category":"Objects","sort_order":132,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TEAR-OFF CALENDAR","unified":"1F4C6","variations":[],"docomo":null,"au":"E56A","softbank":null,"google":"FE549","image":"1f4c6.png","sheet_x":18,"sheet_y":6,"short_name":"calendar","short_names":["calendar"],"text":null,"texts":null,"category":"Objects","sort_order":131,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CARD INDEX","unified":"1F4C7","variations":[],"docomo":"E683","au":"E56C","softbank":"E148","google":"FE54D","image":"1f4c7.png","sheet_x":18,"sheet_y":7,"short_name":"card_index","short_names":["card_index"],"text":null,"texts":null,"category":"Objects","sort_order":133,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHART WITH UPWARDS TREND","unified":"1F4C8","variations":[],"docomo":null,"au":"E575","softbank":"E14A","google":"FE54B","image":"1f4c8.png","sheet_x":18,"sheet_y":8,"short_name":"chart_with_upwards_trend","short_names":["chart_with_upwards_trend"],"text":null,"texts":null,"category":"Objects","sort_order":127,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHART WITH DOWNWARDS TREND","unified":"1F4C9","variations":[],"docomo":null,"au":"E576","softbank":null,"google":"FE54C","image":"1f4c9.png","sheet_x":18,"sheet_y":9,"short_name":"chart_with_downwards_trend","short_names":["chart_with_downwards_trend"],"text":null,"texts":null,"category":"Objects","sort_order":128,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BAR CHART","unified":"1F4CA","variations":[],"docomo":null,"au":"E574","softbank":"E14A","google":"FE54A","image":"1f4ca.png","sheet_x":18,"sheet_y":10,"short_name":"bar_chart","short_names":["bar_chart"],"text":null,"texts":null,"category":"Objects","sort_order":126,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLIPBOARD","unified":"1F4CB","variations":[],"docomo":"E689","au":"E564","softbank":"E301","google":"FE548","image":"1f4cb.png","sheet_x":18,"sheet_y":11,"short_name":"clipboard","short_names":["clipboard"],"text":null,"texts":null,"category":"Objects","sort_order":137,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PUSHPIN","unified":"1F4CC","variations":[],"docomo":null,"au":"E56D","softbank":null,"google":"FE54E","image":"1f4cc.png","sheet_x":18,"sheet_y":12,"short_name":"pushpin","short_names":["pushpin"],"text":null,"texts":null,"category":"Objects","sort_order":158,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ROUND PUSHPIN","unified":"1F4CD","variations":[],"docomo":null,"au":"E560","softbank":null,"google":"FE53F","image":"1f4cd.png","sheet_x":18,"sheet_y":13,"short_name":"round_pushpin","short_names":["round_pushpin"],"text":null,"texts":null,"category":"Objects","sort_order":159,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PAPERCLIP","unified":"1F4CE","variations":[],"docomo":"E730","au":"E4A0","softbank":null,"google":"FE53A","image":"1f4ce.png","sheet_x":18,"sheet_y":14,"short_name":"paperclip","short_names":["paperclip"],"text":null,"texts":null,"category":"Objects","sort_order":154,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"STRAIGHT RULER","unified":"1F4CF","variations":[],"docomo":null,"au":"E570","softbank":null,"google":"FE550","image":"1f4cf.png","sheet_x":18,"sheet_y":15,"short_name":"straight_ruler","short_names":["straight_ruler"],"text":null,"texts":null,"category":"Objects","sort_order":157,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRIANGULAR RULER","unified":"1F4D0","variations":[],"docomo":null,"au":"E4A2","softbank":null,"google":"FE551","image":"1f4d0.png","sheet_x":18,"sheet_y":16,"short_name":"triangular_ruler","short_names":["triangular_ruler"],"text":null,"texts":null,"category":"Objects","sort_order":156,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BOOKMARK TABS","unified":"1F4D1","variations":[],"docomo":"E689","au":"EB0B","softbank":"E301","google":"FE552","image":"1f4d1.png","sheet_x":18,"sheet_y":17,"short_name":"bookmark_tabs","short_names":["bookmark_tabs"],"text":null,"texts":null,"category":"Objects","sort_order":125,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEDGER","unified":"1F4D2","variations":[],"docomo":"E683","au":"E56E","softbank":"E148","google":"FE54F","image":"1f4d2.png","sheet_x":18,"sheet_y":18,"short_name":"ledger","short_names":["ledger"],"text":null,"texts":null,"category":"Objects","sort_order":145,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NOTEBOOK","unified":"1F4D3","variations":[],"docomo":"E683","au":"E56B","softbank":"E148","google":"FE545","image":"1f4d3.png","sheet_x":18,"sheet_y":19,"short_name":"notebook","short_names":["notebook"],"text":null,"texts":null,"category":"Objects","sort_order":143,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NOTEBOOK WITH DECORATIVE COVER","unified":"1F4D4","variations":[],"docomo":"E683","au":"E49D","softbank":"E148","google":"FE547","image":"1f4d4.png","sheet_x":18,"sheet_y":20,"short_name":"notebook_with_decorative_cover","short_names":["notebook_with_decorative_cover"],"text":null,"texts":null,"category":"Objects","sort_order":144,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOSED BOOK","unified":"1F4D5","variations":[],"docomo":"E683","au":"E568","softbank":"E148","google":"FE502","image":"1f4d5.png","sheet_x":18,"sheet_y":21,"short_name":"closed_book","short_names":["closed_book"],"text":null,"texts":null,"category":"Objects","sort_order":146,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OPEN BOOK","unified":"1F4D6","variations":[],"docomo":"E683","au":"E49F","softbank":"E148","google":"FE546","image":"1f4d6.png","sheet_x":18,"sheet_y":22,"short_name":"book","short_names":["book","open_book"],"text":null,"texts":null,"category":"Objects","sort_order":151,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GREEN BOOK","unified":"1F4D7","variations":[],"docomo":"E683","au":"E565","softbank":"E148","google":"FE4FF","image":"1f4d7.png","sheet_x":18,"sheet_y":23,"short_name":"green_book","short_names":["green_book"],"text":null,"texts":null,"category":"Objects","sort_order":147,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLUE BOOK","unified":"1F4D8","variations":[],"docomo":"E683","au":"E566","softbank":"E148","google":"FE500","image":"1f4d8.png","sheet_x":18,"sheet_y":24,"short_name":"blue_book","short_names":["blue_book"],"text":null,"texts":null,"category":"Objects","sort_order":148,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ORANGE BOOK","unified":"1F4D9","variations":[],"docomo":"E683","au":"E567","softbank":"E148","google":"FE501","image":"1f4d9.png","sheet_x":18,"sheet_y":25,"short_name":"orange_book","short_names":["orange_book"],"text":null,"texts":null,"category":"Objects","sort_order":149,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BOOKS","unified":"1F4DA","variations":[],"docomo":"E683","au":"E56F","softbank":"E148","google":"FE503","image":"1f4da.png","sheet_x":18,"sheet_y":26,"short_name":"books","short_names":["books"],"text":null,"texts":null,"category":"Objects","sort_order":150,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NAME BADGE","unified":"1F4DB","variations":[],"docomo":null,"au":"E51D","softbank":null,"google":"FE504","image":"1f4db.png","sheet_x":18,"sheet_y":27,"short_name":"name_badge","short_names":["name_badge"],"text":null,"texts":null,"category":"Symbols","sort_order":73,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SCROLL","unified":"1F4DC","variations":[],"docomo":"E70A","au":"E55F","softbank":null,"google":"FE4FD","image":"1f4dc.png","sheet_x":18,"sheet_y":28,"short_name":"scroll","short_names":["scroll"],"text":null,"texts":null,"category":"Objects","sort_order":122,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MEMO","unified":"1F4DD","variations":[],"docomo":"E689","au":"EA92","softbank":"E301","google":"FE527","image":"1f4dd.png","sheet_x":18,"sheet_y":29,"short_name":"memo","short_names":["memo","pencil"],"text":null,"texts":null,"category":"Objects","sort_order":166,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TELEPHONE RECEIVER","unified":"1F4DE","variations":[],"docomo":"E687","au":"E51E","softbank":"E009","google":"FE524","image":"1f4de.png","sheet_x":18,"sheet_y":30,"short_name":"telephone_receiver","short_names":["telephone_receiver"],"text":null,"texts":null,"category":"Objects","sort_order":23,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PAGER","unified":"1F4DF","variations":[],"docomo":"E65A","au":"E59B","softbank":null,"google":"FE522","image":"1f4df.png","sheet_x":18,"sheet_y":31,"short_name":"pager","short_names":["pager"],"text":null,"texts":null,"category":"Objects","sort_order":25,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FAX MACHINE","unified":"1F4E0","variations":[],"docomo":"E6D0","au":"E520","softbank":"E00B","google":"FE528","image":"1f4e0.png","sheet_x":18,"sheet_y":32,"short_name":"fax","short_names":["fax"],"text":null,"texts":null,"category":"Objects","sort_order":26,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SATELLITE ANTENNA","unified":"1F4E1","variations":[],"docomo":null,"au":"E4A8","softbank":"E14B","google":"FE531","image":"1f4e1.png","sheet_x":18,"sheet_y":33,"short_name":"satellite_antenna","short_names":["satellite_antenna"],"text":null,"texts":null,"category":"Objects","sort_order":38,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PUBLIC ADDRESS LOUDSPEAKER","unified":"1F4E2","variations":[],"docomo":null,"au":"E511","softbank":"E142","google":"FE52F","image":"1f4e2.png","sheet_x":18,"sheet_y":34,"short_name":"loudspeaker","short_names":["loudspeaker"],"text":null,"texts":null,"category":"Symbols","sort_order":237,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHEERING MEGAPHONE","unified":"1F4E3","variations":[],"docomo":null,"au":"E511","softbank":"E317","google":"FE530","image":"1f4e3.png","sheet_x":18,"sheet_y":35,"short_name":"mega","short_names":["mega"],"text":null,"texts":null,"category":"Symbols","sort_order":236,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OUTBOX TRAY","unified":"1F4E4","variations":[],"docomo":null,"au":"E592","softbank":null,"google":"FE533","image":"1f4e4.png","sheet_x":18,"sheet_y":36,"short_name":"outbox_tray","short_names":["outbox_tray"],"text":null,"texts":null,"category":"Objects","sort_order":113,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INBOX TRAY","unified":"1F4E5","variations":[],"docomo":null,"au":"E593","softbank":null,"google":"FE534","image":"1f4e5.png","sheet_x":18,"sheet_y":37,"short_name":"inbox_tray","short_names":["inbox_tray"],"text":null,"texts":null,"category":"Objects","sort_order":112,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PACKAGE","unified":"1F4E6","variations":[],"docomo":"E685","au":"E51F","softbank":"E112","google":"FE535","image":"1f4e6.png","sheet_x":18,"sheet_y":38,"short_name":"package","short_names":["package"],"text":null,"texts":null,"category":"Objects","sort_order":114,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"E-MAIL SYMBOL","unified":"1F4E7","variations":[],"docomo":"E6D3","au":"EB71","softbank":"E103","google":"FEB92","image":"1f4e7.png","sheet_x":18,"sheet_y":39,"short_name":"e-mail","short_names":["e-mail"],"text":null,"texts":null,"category":"Objects","sort_order":110,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INCOMING ENVELOPE","unified":"1F4E8","variations":[],"docomo":"E6CF","au":"E591","softbank":"E103","google":"FE52A","image":"1f4e8.png","sheet_x":18,"sheet_y":40,"short_name":"incoming_envelope","short_names":["incoming_envelope"],"text":null,"texts":null,"category":"Objects","sort_order":109,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ENVELOPE WITH DOWNWARDS ARROW ABOVE","unified":"1F4E9","variations":[],"docomo":"E6CF","au":"EB62","softbank":"E103","google":"FE52B","image":"1f4e9.png","sheet_x":18,"sheet_y":41,"short_name":"envelope_with_arrow","short_names":["envelope_with_arrow"],"text":null,"texts":null,"category":"Objects","sort_order":108,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOSED MAILBOX WITH LOWERED FLAG","unified":"1F4EA","variations":[],"docomo":"E665","au":"E51B","softbank":"E101","google":"FE52C","image":"1f4ea.png","sheet_x":18,"sheet_y":42,"short_name":"mailbox_closed","short_names":["mailbox_closed"],"text":null,"texts":null,"category":"Objects","sort_order":116,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOSED MAILBOX WITH RAISED FLAG","unified":"1F4EB","variations":[],"docomo":"E665","au":"EB0A","softbank":"E101","google":"FE52D","image":"1f4eb.png","sheet_x":18,"sheet_y":43,"short_name":"mailbox","short_names":["mailbox"],"text":null,"texts":null,"category":"Objects","sort_order":117,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OPEN MAILBOX WITH RAISED FLAG","unified":"1F4EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4ec.png","sheet_x":18,"sheet_y":44,"short_name":"mailbox_with_mail","short_names":["mailbox_with_mail"],"text":null,"texts":null,"category":"Objects","sort_order":118,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OPEN MAILBOX WITH LOWERED FLAG","unified":"1F4ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4ed.png","sheet_x":18,"sheet_y":45,"short_name":"mailbox_with_no_mail","short_names":["mailbox_with_no_mail"],"text":null,"texts":null,"category":"Objects","sort_order":119,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POSTBOX","unified":"1F4EE","variations":[],"docomo":"E665","au":"E51B","softbank":"E102","google":"FE52E","image":"1f4ee.png","sheet_x":18,"sheet_y":46,"short_name":"postbox","short_names":["postbox"],"text":null,"texts":null,"category":"Objects","sort_order":120,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POSTAL HORN","unified":"1F4EF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4ef.png","sheet_x":18,"sheet_y":47,"short_name":"postal_horn","short_names":["postal_horn"],"text":null,"texts":null,"category":"Objects","sort_order":121,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEWSPAPER","unified":"1F4F0","variations":[],"docomo":null,"au":"E58B","softbank":null,"google":"FE822","image":"1f4f0.png","sheet_x":18,"sheet_y":48,"short_name":"newspaper","short_names":["newspaper"],"text":null,"texts":null,"category":"Objects","sort_order":142,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOBILE PHONE","unified":"1F4F1","variations":[],"docomo":"E688","au":"E588","softbank":"E00A","google":"FE525","image":"1f4f1.png","sheet_x":19,"sheet_y":0,"short_name":"iphone","short_names":["iphone"],"text":null,"texts":null,"category":"Objects","sort_order":2,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT","unified":"1F4F2","variations":[],"docomo":"E6CE","au":"EB08","softbank":"E104","google":"FE526","image":"1f4f2.png","sheet_x":19,"sheet_y":1,"short_name":"calling","short_names":["calling"],"text":null,"texts":null,"category":"Objects","sort_order":3,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"VIBRATION MODE","unified":"1F4F3","variations":[],"docomo":null,"au":"EA90","softbank":"E250","google":"FE839","image":"1f4f3.png","sheet_x":19,"sheet_y":2,"short_name":"vibration_mode","short_names":["vibration_mode"],"text":null,"texts":null,"category":"Symbols","sort_order":47,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOBILE PHONE OFF","unified":"1F4F4","variations":[],"docomo":null,"au":"EA91","softbank":"E251","google":"FE83A","image":"1f4f4.png","sheet_x":19,"sheet_y":3,"short_name":"mobile_phone_off","short_names":["mobile_phone_off"],"text":null,"texts":null,"category":"Symbols","sort_order":46,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NO MOBILE PHONES","unified":"1F4F5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4f5.png","sheet_x":19,"sheet_y":4,"short_name":"no_mobile_phones","short_names":["no_mobile_phones"],"text":null,"texts":null,"category":"Symbols","sort_order":83,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ANTENNA WITH BARS","unified":"1F4F6","variations":[],"docomo":null,"au":"EA84","softbank":"E20B","google":"FE838","image":"1f4f6.png","sheet_x":19,"sheet_y":5,"short_name":"signal_strength","short_names":["signal_strength"],"text":null,"texts":null,"category":"Symbols","sort_order":127,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CAMERA","unified":"1F4F7","variations":[],"docomo":"E681","au":"E515","softbank":"E008","google":"FE4EF","image":"1f4f7.png","sheet_x":19,"sheet_y":6,"short_name":"camera","short_names":["camera"],"text":null,"texts":null,"category":"Objects","sort_order":17,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CAMERA WITH FLASH","unified":"1F4F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4f8.png","sheet_x":19,"sheet_y":7,"short_name":"camera_with_flash","short_names":["camera_with_flash"],"text":null,"texts":null,"category":"Objects","sort_order":18,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"VIDEO CAMERA","unified":"1F4F9","variations":[],"docomo":"E677","au":"E57E","softbank":"E03D","google":"FE4F9","image":"1f4f9.png","sheet_x":19,"sheet_y":8,"short_name":"video_camera","short_names":["video_camera"],"text":null,"texts":null,"category":"Objects","sort_order":19,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TELEVISION","unified":"1F4FA","variations":[],"docomo":"E68A","au":"E502","softbank":"E12A","google":"FE81C","image":"1f4fa.png","sheet_x":19,"sheet_y":9,"short_name":"tv","short_names":["tv"],"text":null,"texts":null,"category":"Objects","sort_order":27,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RADIO","unified":"1F4FB","variations":[],"docomo":null,"au":"E5B9","softbank":"E128","google":"FE81F","image":"1f4fb.png","sheet_x":19,"sheet_y":10,"short_name":"radio","short_names":["radio"],"text":null,"texts":null,"category":"Objects","sort_order":28,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"VIDEOCASSETTE","unified":"1F4FC","variations":[],"docomo":null,"au":"E580","softbank":"E129","google":"FE820","image":"1f4fc.png","sheet_x":19,"sheet_y":11,"short_name":"vhs","short_names":["vhs"],"text":null,"texts":null,"category":"Objects","sort_order":16,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FILM PROJECTOR","unified":"1F4FD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4fd.png","sheet_x":19,"sheet_y":12,"short_name":"film_projector","short_names":["film_projector"],"text":null,"texts":null,"category":"Objects","sort_order":21,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PRAYER BEADS","unified":"1F4FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4ff.png","sheet_x":19,"sheet_y":13,"short_name":"prayer_beads","short_names":["prayer_beads"],"text":null,"texts":null,"category":"Objects","sort_order":74,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TWISTED RIGHTWARDS ARROWS","unified":"1F500","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f500.png","sheet_x":19,"sheet_y":14,"short_name":"twisted_rightwards_arrows","short_names":["twisted_rightwards_arrows"],"text":null,"texts":null,"category":"Symbols","sort_order":183,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS","unified":"1F501","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f501.png","sheet_x":19,"sheet_y":15,"short_name":"repeat","short_names":["repeat"],"text":null,"texts":null,"category":"Symbols","sort_order":184,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY","unified":"1F502","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f502.png","sheet_x":19,"sheet_y":16,"short_name":"repeat_one","short_names":["repeat_one"],"text":null,"texts":null,"category":"Symbols","sort_order":185,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS","unified":"1F503","variations":[],"docomo":"E735","au":"EB0D","softbank":null,"google":"FEB91","image":"1f503.png","sheet_x":19,"sheet_y":17,"short_name":"arrows_clockwise","short_names":["arrows_clockwise"],"text":null,"texts":null,"category":"Symbols","sort_order":187,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS","unified":"1F504","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f504.png","sheet_x":19,"sheet_y":18,"short_name":"arrows_counterclockwise","short_names":["arrows_counterclockwise"],"text":null,"texts":null,"category":"Symbols","sort_order":186,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LOW BRIGHTNESS SYMBOL","unified":"1F505","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f505.png","sheet_x":19,"sheet_y":19,"short_name":"low_brightness","short_names":["low_brightness"],"text":null,"texts":null,"category":"Symbols","sort_order":91,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HIGH BRIGHTNESS SYMBOL","unified":"1F506","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f506.png","sheet_x":19,"sheet_y":20,"short_name":"high_brightness","short_names":["high_brightness"],"text":null,"texts":null,"category":"Symbols","sort_order":92,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPEAKER WITH CANCELLATION STROKE","unified":"1F507","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f507.png","sheet_x":19,"sheet_y":21,"short_name":"mute","short_names":["mute"],"text":null,"texts":null,"category":"Symbols","sort_order":231,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPEAKER","unified":"1F508","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f508.png","sheet_x":19,"sheet_y":22,"short_name":"speaker","short_names":["speaker"],"text":null,"texts":null,"category":"Symbols","sort_order":230,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPEAKER WITH ONE SOUND WAVE","unified":"1F509","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f509.png","sheet_x":19,"sheet_y":23,"short_name":"sound","short_names":["sound"],"text":null,"texts":null,"category":"Symbols","sort_order":232,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPEAKER WITH THREE SOUND WAVES","unified":"1F50A","variations":[],"docomo":null,"au":"E511","softbank":"E141","google":"FE821","image":"1f50a.png","sheet_x":19,"sheet_y":24,"short_name":"loud_sound","short_names":["loud_sound"],"text":null,"texts":null,"category":"Symbols","sort_order":233,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BATTERY","unified":"1F50B","variations":[],"docomo":null,"au":"E584","softbank":null,"google":"FE4FC","image":"1f50b.png","sheet_x":19,"sheet_y":25,"short_name":"battery","short_names":["battery"],"text":null,"texts":null,"category":"Objects","sort_order":39,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ELECTRIC PLUG","unified":"1F50C","variations":[],"docomo":null,"au":"E589","softbank":null,"google":"FE4FE","image":"1f50c.png","sheet_x":19,"sheet_y":26,"short_name":"electric_plug","short_names":["electric_plug"],"text":null,"texts":null,"category":"Objects","sort_order":40,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEFT-POINTING MAGNIFYING GLASS","unified":"1F50D","variations":[],"docomo":"E6DC","au":"E518","softbank":"E114","google":"FEB85","image":"1f50d.png","sheet_x":19,"sheet_y":27,"short_name":"mag","short_names":["mag"],"text":null,"texts":null,"category":"Objects","sort_order":168,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RIGHT-POINTING MAGNIFYING GLASS","unified":"1F50E","variations":[],"docomo":"E6DC","au":"EB05","softbank":"E114","google":"FEB8D","image":"1f50e.png","sheet_x":19,"sheet_y":28,"short_name":"mag_right","short_names":["mag_right"],"text":null,"texts":null,"category":"Objects","sort_order":169,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LOCK WITH INK PEN","unified":"1F50F","variations":[],"docomo":"E6D9","au":"EB0C","softbank":"E144","google":"FEB90","image":"1f50f.png","sheet_x":19,"sheet_y":29,"short_name":"lock_with_ink_pen","short_names":["lock_with_ink_pen"],"text":null,"texts":null,"category":"Objects","sort_order":170,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOSED LOCK WITH KEY","unified":"1F510","variations":[],"docomo":"E6D9","au":"EAFC","softbank":"E144","google":"FEB8A","image":"1f510.png","sheet_x":19,"sheet_y":30,"short_name":"closed_lock_with_key","short_names":["closed_lock_with_key"],"text":null,"texts":null,"category":"Objects","sort_order":171,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KEY","unified":"1F511","variations":[],"docomo":"E6D9","au":"E519","softbank":"E03F","google":"FEB82","image":"1f511.png","sheet_x":19,"sheet_y":31,"short_name":"key","short_names":["key"],"text":null,"texts":null,"category":"Objects","sort_order":89,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LOCK","unified":"1F512","variations":[],"docomo":"E6D9","au":"E51C","softbank":"E144","google":"FEB86","image":"1f512.png","sheet_x":19,"sheet_y":32,"short_name":"lock","short_names":["lock"],"text":null,"texts":null,"category":"Objects","sort_order":172,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OPEN LOCK","unified":"1F513","variations":[],"docomo":"E6D9","au":"E51C","softbank":"E145","google":"FEB87","image":"1f513.png","sheet_x":19,"sheet_y":33,"short_name":"unlock","short_names":["unlock"],"text":null,"texts":null,"category":"Objects","sort_order":173,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BELL","unified":"1F514","variations":[],"docomo":"E713","au":"E512","softbank":"E325","google":"FE4F2","image":"1f514.png","sheet_x":19,"sheet_y":34,"short_name":"bell","short_names":["bell"],"text":null,"texts":null,"category":"Symbols","sort_order":234,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BELL WITH CANCELLATION STROKE","unified":"1F515","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f515.png","sheet_x":19,"sheet_y":35,"short_name":"no_bell","short_names":["no_bell"],"text":null,"texts":null,"category":"Symbols","sort_order":235,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BOOKMARK","unified":"1F516","variations":[],"docomo":null,"au":"EB07","softbank":null,"google":"FEB8F","image":"1f516.png","sheet_x":19,"sheet_y":36,"short_name":"bookmark","short_names":["bookmark"],"text":null,"texts":null,"category":"Objects","sort_order":152,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LINK SYMBOL","unified":"1F517","variations":[],"docomo":null,"au":"E58A","softbank":null,"google":"FEB4B","image":"1f517.png","sheet_x":19,"sheet_y":37,"short_name":"link","short_names":["link"],"text":null,"texts":null,"category":"Objects","sort_order":153,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RADIO BUTTON","unified":"1F518","variations":[],"docomo":null,"au":"EB04","softbank":null,"google":"FEB8C","image":"1f518.png","sheet_x":19,"sheet_y":38,"short_name":"radio_button","short_names":["radio_button"],"text":null,"texts":null,"category":"Symbols","sort_order":209,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BACK WITH LEFTWARDS ARROW ABOVE","unified":"1F519","variations":[],"docomo":null,"au":"EB06","softbank":"E235","google":"FEB8E","image":"1f519.png","sheet_x":19,"sheet_y":39,"short_name":"back","short_names":["back"],"text":null,"texts":null,"category":"Symbols","sort_order":203,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"END WITH LEFTWARDS ARROW ABOVE","unified":"1F51A","variations":[],"docomo":"E6B9","au":null,"softbank":null,"google":"FE01A","image":"1f51a.png","sheet_x":19,"sheet_y":40,"short_name":"end","short_names":["end"],"text":null,"texts":null,"category":"Symbols","sort_order":202,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE","unified":"1F51B","variations":[],"docomo":"E6B8","au":null,"softbank":null,"google":"FE019","image":"1f51b.png","sheet_x":19,"sheet_y":41,"short_name":"on","short_names":["on"],"text":null,"texts":null,"category":"Symbols","sort_order":204,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SOON WITH RIGHTWARDS ARROW ABOVE","unified":"1F51C","variations":[],"docomo":"E6B7","au":null,"softbank":null,"google":"FE018","image":"1f51c.png","sheet_x":19,"sheet_y":42,"short_name":"soon","short_names":["soon"],"text":null,"texts":null,"category":"Symbols","sort_order":206,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TOP WITH UPWARDS ARROW ABOVE","unified":"1F51D","variations":[],"docomo":null,"au":null,"softbank":"E24C","google":"FEB42","image":"1f51d.png","sheet_x":19,"sheet_y":43,"short_name":"top","short_names":["top"],"text":null,"texts":null,"category":"Symbols","sort_order":205,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NO ONE UNDER EIGHTEEN SYMBOL","unified":"1F51E","variations":[],"docomo":null,"au":"EA83","softbank":"E207","google":"FEB25","image":"1f51e.png","sheet_x":19,"sheet_y":44,"short_name":"underage","short_names":["underage"],"text":null,"texts":null,"category":"Symbols","sort_order":82,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KEYCAP TEN","unified":"1F51F","variations":[],"docomo":null,"au":"E52B","softbank":null,"google":"FE83B","image":"1f51f.png","sheet_x":19,"sheet_y":45,"short_name":"keycap_ten","short_names":["keycap_ten"],"text":null,"texts":null,"category":"Symbols","sort_order":150,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INPUT SYMBOL FOR LATIN CAPITAL LETTERS","unified":"1F520","variations":[],"docomo":null,"au":"EAFD","softbank":null,"google":"FEB7C","image":"1f520.png","sheet_x":19,"sheet_y":46,"short_name":"capital_abcd","short_names":["capital_abcd"],"text":null,"texts":null,"category":"Symbols","sort_order":133,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INPUT SYMBOL FOR LATIN SMALL LETTERS","unified":"1F521","variations":[],"docomo":null,"au":"EAFE","softbank":null,"google":"FEB7D","image":"1f521.png","sheet_x":19,"sheet_y":47,"short_name":"abcd","short_names":["abcd"],"text":null,"texts":null,"category":"Symbols","sort_order":132,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INPUT SYMBOL FOR NUMBERS","unified":"1F522","variations":[],"docomo":null,"au":"EAFF","softbank":null,"google":"FEB7E","image":"1f522.png","sheet_x":19,"sheet_y":48,"short_name":"1234","short_names":["1234"],"text":null,"texts":null,"category":"Symbols","sort_order":151,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INPUT SYMBOL FOR SYMBOLS","unified":"1F523","variations":[],"docomo":null,"au":"EB00","softbank":null,"google":"FEB7F","image":"1f523.png","sheet_x":20,"sheet_y":0,"short_name":"symbols","short_names":["symbols"],"text":null,"texts":null,"category":"Symbols","sort_order":129,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INPUT SYMBOL FOR LATIN LETTERS","unified":"1F524","variations":[],"docomo":null,"au":"EB55","softbank":null,"google":"FEB80","image":"1f524.png","sheet_x":20,"sheet_y":1,"short_name":"abc","short_names":["abc"],"text":null,"texts":null,"category":"Symbols","sort_order":131,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FIRE","unified":"1F525","variations":[],"docomo":null,"au":"E47B","softbank":"E11D","google":"FE4F6","image":"1f525.png","sheet_x":20,"sheet_y":2,"short_name":"fire","short_names":["fire"],"text":null,"texts":null,"category":"Nature","sort_order":135,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ELECTRIC TORCH","unified":"1F526","variations":[],"docomo":"E6FB","au":"E583","softbank":null,"google":"FE4FB","image":"1f526.png","sheet_x":20,"sheet_y":3,"short_name":"flashlight","short_names":["flashlight"],"text":null,"texts":null,"category":"Objects","sort_order":42,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WRENCH","unified":"1F527","variations":[],"docomo":"E718","au":"E587","softbank":null,"google":"FE4C9","image":"1f527.png","sheet_x":20,"sheet_y":4,"short_name":"wrench","short_names":["wrench"],"text":null,"texts":null,"category":"Objects","sort_order":55,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HAMMER","unified":"1F528","variations":[],"docomo":null,"au":"E5CB","softbank":"E116","google":"FE4CA","image":"1f528.png","sheet_x":20,"sheet_y":5,"short_name":"hammer","short_names":["hammer"],"text":null,"texts":null,"category":"Objects","sort_order":56,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NUT AND BOLT","unified":"1F529","variations":[],"docomo":null,"au":"E581","softbank":null,"google":"FE4CB","image":"1f529.png","sheet_x":20,"sheet_y":6,"short_name":"nut_and_bolt","short_names":["nut_and_bolt"],"text":null,"texts":null,"category":"Objects","sort_order":60,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HOCHO","unified":"1F52A","variations":[],"docomo":null,"au":"E57F","softbank":null,"google":"FE4FA","image":"1f52a.png","sheet_x":20,"sheet_y":7,"short_name":"hocho","short_names":["hocho","knife"],"text":null,"texts":null,"category":"Objects","sort_order":65,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PISTOL","unified":"1F52B","variations":[],"docomo":null,"au":"E50A","softbank":"E113","google":"FE4F5","image":"1f52b.png","sheet_x":20,"sheet_y":8,"short_name":"gun","short_names":["gun"],"text":null,"texts":null,"category":"Objects","sort_order":63,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MICROSCOPE","unified":"1F52C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f52c.png","sheet_x":20,"sheet_y":9,"short_name":"microscope","short_names":["microscope"],"text":null,"texts":null,"category":"Objects","sort_order":78,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TELESCOPE","unified":"1F52D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f52d.png","sheet_x":20,"sheet_y":10,"short_name":"telescope","short_names":["telescope"],"text":null,"texts":null,"category":"Objects","sort_order":77,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CRYSTAL BALL","unified":"1F52E","variations":[],"docomo":null,"au":"EA8F","softbank":"E23E","google":"FE4F7","image":"1f52e.png","sheet_x":20,"sheet_y":11,"short_name":"crystal_ball","short_names":["crystal_ball"],"text":null,"texts":null,"category":"Objects","sort_order":73,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SIX POINTED STAR WITH MIDDLE DOT","unified":"1F52F","variations":[],"docomo":null,"au":"EA8F","softbank":"E23E","google":"FE4F8","image":"1f52f.png","sheet_x":20,"sheet_y":12,"short_name":"six_pointed_star","short_names":["six_pointed_star"],"text":null,"texts":null,"category":"Symbols","sort_order":23,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"JAPANESE SYMBOL FOR BEGINNER","unified":"1F530","variations":[],"docomo":null,"au":"E480","softbank":"E209","google":"FE044","image":"1f530.png","sheet_x":20,"sheet_y":13,"short_name":"beginner","short_names":["beginner"],"text":null,"texts":null,"category":"Symbols","sort_order":98,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRIDENT EMBLEM","unified":"1F531","variations":[],"docomo":"E71A","au":"E5C9","softbank":"E031","google":"FE4D2","image":"1f531.png","sheet_x":20,"sheet_y":14,"short_name":"trident","short_names":["trident"],"text":null,"texts":null,"category":"Symbols","sort_order":96,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK SQUARE BUTTON","unified":"1F532","variations":[],"docomo":"E69C","au":"E54B","softbank":"E21A","google":"FEB64","image":"1f532.png","sheet_x":20,"sheet_y":15,"short_name":"black_square_button","short_names":["black_square_button"],"text":null,"texts":null,"category":"Symbols","sort_order":221,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE SQUARE BUTTON","unified":"1F533","variations":[],"docomo":"E69C","au":"E54B","softbank":"E21B","google":"FEB67","image":"1f533.png","sheet_x":20,"sheet_y":16,"short_name":"white_square_button","short_names":["white_square_button"],"text":null,"texts":null,"category":"Symbols","sort_order":220,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LARGE RED CIRCLE","unified":"1F534","variations":[],"docomo":"E69C","au":"E54A","softbank":"E219","google":"FEB63","image":"1f534.png","sheet_x":20,"sheet_y":17,"short_name":"red_circle","short_names":["red_circle"],"text":null,"texts":null,"category":"Symbols","sort_order":212,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LARGE BLUE CIRCLE","unified":"1F535","variations":[],"docomo":"E69C","au":"E54B","softbank":"E21A","google":"FEB64","image":"1f535.png","sheet_x":20,"sheet_y":18,"short_name":"large_blue_circle","short_names":["large_blue_circle"],"text":null,"texts":null,"category":"Symbols","sort_order":213,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LARGE ORANGE DIAMOND","unified":"1F536","variations":[],"docomo":null,"au":"E546","softbank":"E21B","google":"FEB73","image":"1f536.png","sheet_x":20,"sheet_y":19,"short_name":"large_orange_diamond","short_names":["large_orange_diamond"],"text":null,"texts":null,"category":"Symbols","sort_order":218,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LARGE BLUE DIAMOND","unified":"1F537","variations":[],"docomo":null,"au":"E547","softbank":"E21B","google":"FEB74","image":"1f537.png","sheet_x":20,"sheet_y":20,"short_name":"large_blue_diamond","short_names":["large_blue_diamond"],"text":null,"texts":null,"category":"Symbols","sort_order":219,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMALL ORANGE DIAMOND","unified":"1F538","variations":[],"docomo":null,"au":"E536","softbank":"E21B","google":"FEB75","image":"1f538.png","sheet_x":20,"sheet_y":21,"short_name":"small_orange_diamond","short_names":["small_orange_diamond"],"text":null,"texts":null,"category":"Symbols","sort_order":216,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMALL BLUE DIAMOND","unified":"1F539","variations":[],"docomo":null,"au":"E537","softbank":"E21B","google":"FEB76","image":"1f539.png","sheet_x":20,"sheet_y":22,"short_name":"small_blue_diamond","short_names":["small_blue_diamond"],"text":null,"texts":null,"category":"Symbols","sort_order":217,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"UP-POINTING RED TRIANGLE","unified":"1F53A","variations":[],"docomo":null,"au":"E55A","softbank":null,"google":"FEB78","image":"1f53a.png","sheet_x":20,"sheet_y":23,"short_name":"small_red_triangle","short_names":["small_red_triangle"],"text":null,"texts":null,"category":"Symbols","sort_order":214,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOWN-POINTING RED TRIANGLE","unified":"1F53B","variations":[],"docomo":null,"au":"E55B","softbank":null,"google":"FEB79","image":"1f53b.png","sheet_x":20,"sheet_y":24,"short_name":"small_red_triangle_down","short_names":["small_red_triangle_down"],"text":null,"texts":null,"category":"Symbols","sort_order":215,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"UP-POINTING SMALL RED TRIANGLE","unified":"1F53C","variations":[],"docomo":null,"au":"E543","softbank":null,"google":"FEB01","image":"1f53c.png","sheet_x":20,"sheet_y":25,"short_name":"arrow_up_small","short_names":["arrow_up_small"],"text":null,"texts":null,"category":"Symbols","sort_order":167,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOWN-POINTING SMALL RED TRIANGLE","unified":"1F53D","variations":[],"docomo":null,"au":"E542","softbank":null,"google":"FEB00","image":"1f53d.png","sheet_x":20,"sheet_y":26,"short_name":"arrow_down_small","short_names":["arrow_down_small"],"text":null,"texts":null,"category":"Symbols","sort_order":168,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OM SYMBOL","unified":"1F549","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f549.png","sheet_x":20,"sheet_y":27,"short_name":"om_symbol","short_names":["om_symbol"],"text":null,"texts":null,"category":"Symbols","sort_order":20,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DOVE OF PEACE","unified":"1F54A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f54a.png","sheet_x":20,"sheet_y":28,"short_name":"dove_of_peace","short_names":["dove_of_peace"],"text":null,"texts":null,"category":"Nature","sort_order":81,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"KAABA","unified":"1F54B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f54b.png","sheet_x":20,"sheet_y":29,"short_name":"kaaba","short_names":["kaaba"],"text":null,"texts":null,"category":"Places","sort_order":103,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MOSQUE","unified":"1F54C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f54c.png","sheet_x":20,"sheet_y":30,"short_name":"mosque","short_names":["mosque"],"text":null,"texts":null,"category":"Places","sort_order":101,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SYNAGOGUE","unified":"1F54D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f54d.png","sheet_x":20,"sheet_y":31,"short_name":"synagogue","short_names":["synagogue"],"text":null,"texts":null,"category":"Places","sort_order":102,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MENORAH WITH NINE BRANCHES","unified":"1F54E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f54e.png","sheet_x":20,"sheet_y":32,"short_name":"menorah_with_nine_branches","short_names":["menorah_with_nine_branches"],"text":null,"texts":null,"category":"Symbols","sort_order":24,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CLOCK FACE ONE OCLOCK","unified":"1F550","variations":[],"docomo":"E6BA","au":"E594","softbank":"E024","google":"FE01E","image":"1f550.png","sheet_x":20,"sheet_y":33,"short_name":"clock1","short_names":["clock1"],"text":null,"texts":null,"category":"Symbols","sort_order":250,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE TWO OCLOCK","unified":"1F551","variations":[],"docomo":"E6BA","au":"E594","softbank":"E025","google":"FE01F","image":"1f551.png","sheet_x":20,"sheet_y":34,"short_name":"clock2","short_names":["clock2"],"text":null,"texts":null,"category":"Symbols","sort_order":251,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE THREE OCLOCK","unified":"1F552","variations":[],"docomo":"E6BA","au":"E594","softbank":"E026","google":"FE020","image":"1f552.png","sheet_x":20,"sheet_y":35,"short_name":"clock3","short_names":["clock3"],"text":null,"texts":null,"category":"Symbols","sort_order":252,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE FOUR OCLOCK","unified":"1F553","variations":[],"docomo":"E6BA","au":"E594","softbank":"E027","google":"FE021","image":"1f553.png","sheet_x":20,"sheet_y":36,"short_name":"clock4","short_names":["clock4"],"text":null,"texts":null,"category":"Symbols","sort_order":253,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE FIVE OCLOCK","unified":"1F554","variations":[],"docomo":"E6BA","au":"E594","softbank":"E028","google":"FE022","image":"1f554.png","sheet_x":20,"sheet_y":37,"short_name":"clock5","short_names":["clock5"],"text":null,"texts":null,"category":"Symbols","sort_order":254,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE SIX OCLOCK","unified":"1F555","variations":[],"docomo":"E6BA","au":"E594","softbank":"E029","google":"FE023","image":"1f555.png","sheet_x":20,"sheet_y":38,"short_name":"clock6","short_names":["clock6"],"text":null,"texts":null,"category":"Symbols","sort_order":255,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE SEVEN OCLOCK","unified":"1F556","variations":[],"docomo":"E6BA","au":"E594","softbank":"E02A","google":"FE024","image":"1f556.png","sheet_x":20,"sheet_y":39,"short_name":"clock7","short_names":["clock7"],"text":null,"texts":null,"category":"Symbols","sort_order":256,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE EIGHT OCLOCK","unified":"1F557","variations":[],"docomo":"E6BA","au":"E594","softbank":"E02B","google":"FE025","image":"1f557.png","sheet_x":20,"sheet_y":40,"short_name":"clock8","short_names":["clock8"],"text":null,"texts":null,"category":"Symbols","sort_order":257,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE NINE OCLOCK","unified":"1F558","variations":[],"docomo":"E6BA","au":"E594","softbank":"E02C","google":"FE026","image":"1f558.png","sheet_x":20,"sheet_y":41,"short_name":"clock9","short_names":["clock9"],"text":null,"texts":null,"category":"Symbols","sort_order":258,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE TEN OCLOCK","unified":"1F559","variations":[],"docomo":"E6BA","au":"E594","softbank":"E02D","google":"FE027","image":"1f559.png","sheet_x":20,"sheet_y":42,"short_name":"clock10","short_names":["clock10"],"text":null,"texts":null,"category":"Symbols","sort_order":259,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE ELEVEN OCLOCK","unified":"1F55A","variations":[],"docomo":"E6BA","au":"E594","softbank":"E02E","google":"FE028","image":"1f55a.png","sheet_x":20,"sheet_y":43,"short_name":"clock11","short_names":["clock11"],"text":null,"texts":null,"category":"Symbols","sort_order":260,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE TWELVE OCLOCK","unified":"1F55B","variations":[],"docomo":"E6BA","au":"E594","softbank":"E02F","google":"FE029","image":"1f55b.png","sheet_x":20,"sheet_y":44,"short_name":"clock12","short_names":["clock12"],"text":null,"texts":null,"category":"Symbols","sort_order":261,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE ONE-THIRTY","unified":"1F55C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f55c.png","sheet_x":20,"sheet_y":45,"short_name":"clock130","short_names":["clock130"],"text":null,"texts":null,"category":"Symbols","sort_order":262,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE TWO-THIRTY","unified":"1F55D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f55d.png","sheet_x":20,"sheet_y":46,"short_name":"clock230","short_names":["clock230"],"text":null,"texts":null,"category":"Symbols","sort_order":263,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE THREE-THIRTY","unified":"1F55E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f55e.png","sheet_x":20,"sheet_y":47,"short_name":"clock330","short_names":["clock330"],"text":null,"texts":null,"category":"Symbols","sort_order":264,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE FOUR-THIRTY","unified":"1F55F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f55f.png","sheet_x":20,"sheet_y":48,"short_name":"clock430","short_names":["clock430"],"text":null,"texts":null,"category":"Symbols","sort_order":265,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE FIVE-THIRTY","unified":"1F560","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f560.png","sheet_x":21,"sheet_y":0,"short_name":"clock530","short_names":["clock530"],"text":null,"texts":null,"category":"Symbols","sort_order":266,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE SIX-THIRTY","unified":"1F561","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f561.png","sheet_x":21,"sheet_y":1,"short_name":"clock630","short_names":["clock630"],"text":null,"texts":null,"category":"Symbols","sort_order":267,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE SEVEN-THIRTY","unified":"1F562","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f562.png","sheet_x":21,"sheet_y":2,"short_name":"clock730","short_names":["clock730"],"text":null,"texts":null,"category":"Symbols","sort_order":268,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE EIGHT-THIRTY","unified":"1F563","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f563.png","sheet_x":21,"sheet_y":3,"short_name":"clock830","short_names":["clock830"],"text":null,"texts":null,"category":"Symbols","sort_order":269,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE NINE-THIRTY","unified":"1F564","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f564.png","sheet_x":21,"sheet_y":4,"short_name":"clock930","short_names":["clock930"],"text":null,"texts":null,"category":"Symbols","sort_order":270,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE TEN-THIRTY","unified":"1F565","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f565.png","sheet_x":21,"sheet_y":5,"short_name":"clock1030","short_names":["clock1030"],"text":null,"texts":null,"category":"Symbols","sort_order":271,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE ELEVEN-THIRTY","unified":"1F566","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f566.png","sheet_x":21,"sheet_y":6,"short_name":"clock1130","short_names":["clock1130"],"text":null,"texts":null,"category":"Symbols","sort_order":272,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE TWELVE-THIRTY","unified":"1F567","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f567.png","sheet_x":21,"sheet_y":7,"short_name":"clock1230","short_names":["clock1230"],"text":null,"texts":null,"category":"Symbols","sort_order":273,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CANDLE","unified":"1F56F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f56f.png","sheet_x":21,"sheet_y":8,"short_name":"candle","short_names":["candle"],"text":null,"texts":null,"category":"Objects","sort_order":43,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MANTELPIECE CLOCK","unified":"1F570","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f570.png","sheet_x":21,"sheet_y":9,"short_name":"mantelpiece_clock","short_names":["mantelpiece_clock"],"text":null,"texts":null,"category":"Objects","sort_order":35,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HOLE","unified":"1F573","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f573.png","sheet_x":21,"sheet_y":10,"short_name":"hole","short_names":["hole"],"text":null,"texts":null,"category":"Objects","sort_order":79,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MAN IN BUSINESS SUIT LEVITATING","unified":"1F574","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f574.png","sheet_x":21,"sheet_y":11,"short_name":"man_in_business_suit_levitating","short_names":["man_in_business_suit_levitating"],"text":null,"texts":null,"category":"People","sort_order":225,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F574-1F3FB","image":"1f574-1f3fb.png","sheet_x":21,"sheet_y":12,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F574-1F3FC","image":"1f574-1f3fc.png","sheet_x":21,"sheet_y":13,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F574-1F3FD","image":"1f574-1f3fd.png","sheet_x":21,"sheet_y":14,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F574-1F3FE","image":"1f574-1f3fe.png","sheet_x":21,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F574-1F3FF","image":"1f574-1f3ff.png","sheet_x":21,"sheet_y":16,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"SLEUTH OR SPY","unified":"1F575","variations":["1F575-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f575.png","sheet_x":21,"sheet_y":17,"short_name":"sleuth_or_spy","short_names":["sleuth_or_spy"],"text":null,"texts":null,"category":"People","sort_order":160,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F575-1F3FB","image":"1f575-1f3fb.png","sheet_x":21,"sheet_y":18,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F575-1F3FC","image":"1f575-1f3fc.png","sheet_x":21,"sheet_y":19,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F575-1F3FD","image":"1f575-1f3fd.png","sheet_x":21,"sheet_y":20,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F575-1F3FE","image":"1f575-1f3fe.png","sheet_x":21,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F575-1F3FF","image":"1f575-1f3ff.png","sheet_x":21,"sheet_y":22,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}},"obsoleted_by":"1F575-FE0F-200D-2642-FE0F"},{"name":"DARK SUNGLASSES","unified":"1F576","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f576.png","sheet_x":21,"sheet_y":23,"short_name":"dark_sunglasses","short_names":["dark_sunglasses"],"text":null,"texts":null,"category":"People","sort_order":291,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SPIDER","unified":"1F577","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f577.png","sheet_x":21,"sheet_y":24,"short_name":"spider","short_names":["spider"],"text":null,"texts":null,"category":"Nature","sort_order":42,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SPIDER WEB","unified":"1F578","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f578.png","sheet_x":21,"sheet_y":25,"short_name":"spider_web","short_names":["spider_web"],"text":null,"texts":null,"category":"Nature","sort_order":43,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"JOYSTICK","unified":"1F579","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f579.png","sheet_x":21,"sheet_y":26,"short_name":"joystick","short_names":["joystick"],"text":null,"texts":null,"category":"Objects","sort_order":10,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MAN DANCING","unified":"1F57A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f57a.png","sheet_x":21,"sheet_y":27,"short_name":"man_dancing","short_names":["man_dancing"],"text":null,"texts":null,"category":"People","sort_order":227,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F57A-1F3FB","image":"1f57a-1f3fb.png","sheet_x":21,"sheet_y":28,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F57A-1F3FC","image":"1f57a-1f3fc.png","sheet_x":21,"sheet_y":29,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F57A-1F3FD","image":"1f57a-1f3fd.png","sheet_x":21,"sheet_y":30,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F57A-1F3FE","image":"1f57a-1f3fe.png","sheet_x":21,"sheet_y":31,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F57A-1F3FF","image":"1f57a-1f3ff.png","sheet_x":21,"sheet_y":32,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"LINKED PAPERCLIPS","unified":"1F587","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f587.png","sheet_x":21,"sheet_y":33,"short_name":"linked_paperclips","short_names":["linked_paperclips"],"text":null,"texts":null,"category":"Objects","sort_order":155,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LOWER LEFT BALLPOINT PEN","unified":"1F58A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f58a.png","sheet_x":21,"sheet_y":34,"short_name":"lower_left_ballpoint_pen","short_names":["lower_left_ballpoint_pen"],"text":null,"texts":null,"category":"Objects","sort_order":161,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LOWER LEFT FOUNTAIN PEN","unified":"1F58B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f58b.png","sheet_x":21,"sheet_y":35,"short_name":"lower_left_fountain_pen","short_names":["lower_left_fountain_pen"],"text":null,"texts":null,"category":"Objects","sort_order":162,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LOWER LEFT PAINTBRUSH","unified":"1F58C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f58c.png","sheet_x":21,"sheet_y":36,"short_name":"lower_left_paintbrush","short_names":["lower_left_paintbrush"],"text":null,"texts":null,"category":"Objects","sort_order":164,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LOWER LEFT CRAYON","unified":"1F58D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f58d.png","sheet_x":21,"sheet_y":37,"short_name":"lower_left_crayon","short_names":["lower_left_crayon"],"text":null,"texts":null,"category":"Objects","sort_order":165,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"RAISED HAND WITH FINGERS SPLAYED","unified":"1F590","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f590.png","sheet_x":21,"sheet_y":38,"short_name":"raised_hand_with_fingers_splayed","short_names":["raised_hand_with_fingers_splayed"],"text":null,"texts":null,"category":"People","sort_order":119,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F590-1F3FB","image":"1f590-1f3fb.png","sheet_x":21,"sheet_y":39,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F590-1F3FC","image":"1f590-1f3fc.png","sheet_x":21,"sheet_y":40,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F590-1F3FD","image":"1f590-1f3fd.png","sheet_x":21,"sheet_y":41,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F590-1F3FE","image":"1f590-1f3fe.png","sheet_x":21,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F590-1F3FF","image":"1f590-1f3ff.png","sheet_x":21,"sheet_y":43,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"REVERSED HAND WITH MIDDLE FINGER EXTENDED","unified":"1F595","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f595.png","sheet_x":21,"sheet_y":44,"short_name":"middle_finger","short_names":["middle_finger","reversed_hand_with_middle_finger_extended"],"text":null,"texts":null,"category":"People","sort_order":124,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F595-1F3FB","image":"1f595-1f3fb.png","sheet_x":21,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F595-1F3FC","image":"1f595-1f3fc.png","sheet_x":21,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F595-1F3FD","image":"1f595-1f3fd.png","sheet_x":21,"sheet_y":47,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F595-1F3FE","image":"1f595-1f3fe.png","sheet_x":21,"sheet_y":48,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F595-1F3FF","image":"1f595-1f3ff.png","sheet_x":22,"sheet_y":0,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS","unified":"1F596","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f596.png","sheet_x":22,"sheet_y":1,"short_name":"spock-hand","short_names":["spock-hand"],"text":null,"texts":null,"category":"People","sort_order":120,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F596-1F3FB","image":"1f596-1f3fb.png","sheet_x":22,"sheet_y":2,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F596-1F3FC","image":"1f596-1f3fc.png","sheet_x":22,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F596-1F3FD","image":"1f596-1f3fd.png","sheet_x":22,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F596-1F3FE","image":"1f596-1f3fe.png","sheet_x":22,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F596-1F3FF","image":"1f596-1f3ff.png","sheet_x":22,"sheet_y":6,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"BLACK HEART","unified":"1F5A4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5a4.png","sheet_x":22,"sheet_y":7,"short_name":"black_heart","short_names":["black_heart"],"text":null,"texts":null,"category":"Symbols","sort_order":6,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DESKTOP COMPUTER","unified":"1F5A5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5a5.png","sheet_x":22,"sheet_y":8,"short_name":"desktop_computer","short_names":["desktop_computer"],"text":null,"texts":null,"category":"Objects","sort_order":6,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PRINTER","unified":"1F5A8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5a8.png","sheet_x":22,"sheet_y":9,"short_name":"printer","short_names":["printer"],"text":null,"texts":null,"category":"Objects","sort_order":7,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"THREE BUTTON MOUSE","unified":"1F5B1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5b1.png","sheet_x":22,"sheet_y":10,"short_name":"three_button_mouse","short_names":["three_button_mouse"],"text":null,"texts":null,"category":"Objects","sort_order":8,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TRACKBALL","unified":"1F5B2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5b2.png","sheet_x":22,"sheet_y":11,"short_name":"trackball","short_names":["trackball"],"text":null,"texts":null,"category":"Objects","sort_order":9,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FRAME WITH PICTURE","unified":"1F5BC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5bc.png","sheet_x":22,"sheet_y":12,"short_name":"frame_with_picture","short_names":["frame_with_picture"],"text":null,"texts":null,"category":"Objects","sort_order":95,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CARD INDEX DIVIDERS","unified":"1F5C2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5c2.png","sheet_x":22,"sheet_y":13,"short_name":"card_index_dividers","short_names":["card_index_dividers"],"text":null,"texts":null,"category":"Objects","sort_order":140,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CARD FILE BOX","unified":"1F5C3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5c3.png","sheet_x":22,"sheet_y":14,"short_name":"card_file_box","short_names":["card_file_box"],"text":null,"texts":null,"category":"Objects","sort_order":134,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FILE CABINET","unified":"1F5C4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5c4.png","sheet_x":22,"sheet_y":15,"short_name":"file_cabinet","short_names":["file_cabinet"],"text":null,"texts":null,"category":"Objects","sort_order":136,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WASTEBASKET","unified":"1F5D1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5d1.png","sheet_x":22,"sheet_y":16,"short_name":"wastebasket","short_names":["wastebasket"],"text":null,"texts":null,"category":"Objects","sort_order":44,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SPIRAL NOTE PAD","unified":"1F5D2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5d2.png","sheet_x":22,"sheet_y":17,"short_name":"spiral_note_pad","short_names":["spiral_note_pad"],"text":null,"texts":null,"category":"Objects","sort_order":129,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SPIRAL CALENDAR PAD","unified":"1F5D3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5d3.png","sheet_x":22,"sheet_y":18,"short_name":"spiral_calendar_pad","short_names":["spiral_calendar_pad"],"text":null,"texts":null,"category":"Objects","sort_order":130,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"COMPRESSION","unified":"1F5DC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5dc.png","sheet_x":22,"sheet_y":19,"short_name":"compression","short_names":["compression"],"text":null,"texts":null,"category":"Objects","sort_order":11,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"OLD KEY","unified":"1F5DD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5dd.png","sheet_x":22,"sheet_y":20,"short_name":"old_key","short_names":["old_key"],"text":null,"texts":null,"category":"Objects","sort_order":90,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ROLLED-UP NEWSPAPER","unified":"1F5DE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5de.png","sheet_x":22,"sheet_y":21,"short_name":"rolled_up_newspaper","short_names":["rolled_up_newspaper"],"text":null,"texts":null,"category":"Objects","sort_order":141,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DAGGER KNIFE","unified":"1F5E1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5e1.png","sheet_x":22,"sheet_y":22,"short_name":"dagger_knife","short_names":["dagger_knife"],"text":null,"texts":null,"category":"Objects","sort_order":66,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SPEAKING HEAD IN SILHOUETTE","unified":"1F5E3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5e3.png","sheet_x":22,"sheet_y":23,"short_name":"speaking_head_in_silhouette","short_names":["speaking_head_in_silhouette"],"text":null,"texts":null,"category":"People","sort_order":138,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LEFT SPEECH BUBBLE","unified":"1F5E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5e8.png","sheet_x":22,"sheet_y":24,"short_name":"left_speech_bubble","short_names":["left_speech_bubble"],"text":null,"texts":null,"category":"Symbols","sort_order":240,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"RIGHT ANGER BUBBLE","unified":"1F5EF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5ef.png","sheet_x":22,"sheet_y":25,"short_name":"right_anger_bubble","short_names":["right_anger_bubble"],"text":null,"texts":null,"category":"Symbols","sort_order":242,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BALLOT BOX WITH BALLOT","unified":"1F5F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5f3.png","sheet_x":22,"sheet_y":26,"short_name":"ballot_box_with_ballot","short_names":["ballot_box_with_ballot"],"text":null,"texts":null,"category":"Objects","sort_order":135,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WORLD MAP","unified":"1F5FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5fa.png","sheet_x":22,"sheet_y":27,"short_name":"world_map","short_names":["world_map"],"text":null,"texts":null,"category":"Places","sort_order":59,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MOUNT FUJI","unified":"1F5FB","variations":[],"docomo":"E740","au":"E5BD","softbank":"E03B","google":"FE4C3","image":"1f5fb.png","sheet_x":22,"sheet_y":28,"short_name":"mount_fuji","short_names":["mount_fuji"],"text":null,"texts":null,"category":"Places","sort_order":75,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TOKYO TOWER","unified":"1F5FC","variations":[],"docomo":null,"au":"E4C0","softbank":"E509","google":"FE4C4","image":"1f5fc.png","sheet_x":22,"sheet_y":29,"short_name":"tokyo_tower","short_names":["tokyo_tower"],"text":null,"texts":null,"category":"Places","sort_order":63,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"STATUE OF LIBERTY","unified":"1F5FD","variations":[],"docomo":null,"au":null,"softbank":"E51D","google":"FE4C6","image":"1f5fd.png","sheet_x":22,"sheet_y":30,"short_name":"statue_of_liberty","short_names":["statue_of_liberty"],"text":null,"texts":null,"category":"Places","sort_order":61,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SILHOUETTE OF JAPAN","unified":"1F5FE","variations":[],"docomo":null,"au":"E572","softbank":null,"google":"FE4C7","image":"1f5fe.png","sheet_x":22,"sheet_y":31,"short_name":"japan","short_names":["japan"],"text":null,"texts":null,"category":"Places","sort_order":105,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOYAI","unified":"1F5FF","variations":[],"docomo":null,"au":"EB6C","softbank":null,"google":"FE4C8","image":"1f5ff.png","sheet_x":22,"sheet_y":32,"short_name":"moyai","short_names":["moyai"],"text":null,"texts":null,"category":"Places","sort_order":60,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GRINNING FACE","unified":"1F600","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f600.png","sheet_x":22,"sheet_y":33,"short_name":"grinning","short_names":["grinning"],"text":":D","texts":null,"category":"People","sort_order":1,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GRINNING FACE WITH SMILING EYES","unified":"1F601","variations":[],"docomo":"E753","au":"EB80","softbank":"E404","google":"FE333","image":"1f601.png","sheet_x":22,"sheet_y":34,"short_name":"grin","short_names":["grin"],"text":null,"texts":null,"category":"People","sort_order":4,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH TEARS OF JOY","unified":"1F602","variations":[],"docomo":"E72A","au":"EB64","softbank":"E412","google":"FE334","image":"1f602.png","sheet_x":22,"sheet_y":35,"short_name":"joy","short_names":["joy"],"text":null,"texts":null,"category":"People","sort_order":7,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH OPEN MOUTH","unified":"1F603","variations":[],"docomo":"E6F0","au":"E471","softbank":"E057","google":"FE330","image":"1f603.png","sheet_x":22,"sheet_y":36,"short_name":"smiley","short_names":["smiley"],"text":":)","texts":["=)","=-)"],"category":"People","sort_order":2,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH OPEN MOUTH AND SMILING EYES","unified":"1F604","variations":[],"docomo":"E6F0","au":"E471","softbank":"E415","google":"FE338","image":"1f604.png","sheet_x":22,"sheet_y":37,"short_name":"smile","short_names":["smile"],"text":":)","texts":["C:","c:",":D",":-D"],"category":"People","sort_order":3,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH OPEN MOUTH AND COLD SWEAT","unified":"1F605","variations":[],"docomo":"E722","au":"E471-E5B1","softbank":"E415-E331","google":"FE331","image":"1f605.png","sheet_x":22,"sheet_y":38,"short_name":"sweat_smile","short_names":["sweat_smile"],"text":null,"texts":null,"category":"People","sort_order":6,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES","unified":"1F606","variations":[],"docomo":"E72A","au":"EAC5","softbank":"E40A","google":"FE332","image":"1f606.png","sheet_x":22,"sheet_y":39,"short_name":"laughing","short_names":["laughing","satisfied"],"text":null,"texts":[":>",":->"],"category":"People","sort_order":5,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH HALO","unified":"1F607","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f607.png","sheet_x":22,"sheet_y":40,"short_name":"innocent","short_names":["innocent"],"text":null,"texts":null,"category":"People","sort_order":11,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH HORNS","unified":"1F608","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f608.png","sheet_x":22,"sheet_y":41,"short_name":"smiling_imp","short_names":["smiling_imp"],"text":null,"texts":null,"category":"People","sort_order":76,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WINKING FACE","unified":"1F609","variations":[],"docomo":"E729","au":"E5C3","softbank":"E405","google":"FE347","image":"1f609.png","sheet_x":22,"sheet_y":42,"short_name":"wink","short_names":["wink"],"text":";)","texts":[";)",";-)"],"category":"People","sort_order":14,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH SMILING EYES","unified":"1F60A","variations":[],"docomo":"E6F0","au":"EACD","softbank":"E056","google":"FE335","image":"1f60a.png","sheet_x":22,"sheet_y":43,"short_name":"blush","short_names":["blush"],"text":":)","texts":null,"category":"People","sort_order":10,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE SAVOURING DELICIOUS FOOD","unified":"1F60B","variations":[],"docomo":"E752","au":"EACD","softbank":"E056","google":"FE32B","image":"1f60b.png","sheet_x":22,"sheet_y":44,"short_name":"yum","short_names":["yum"],"text":null,"texts":null,"category":"People","sort_order":21,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RELIEVED FACE","unified":"1F60C","variations":[],"docomo":"E721","au":"EAC5","softbank":"E40A","google":"FE33E","image":"1f60c.png","sheet_x":22,"sheet_y":45,"short_name":"relieved","short_names":["relieved"],"text":null,"texts":null,"category":"People","sort_order":15,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH HEART-SHAPED EYES","unified":"1F60D","variations":[],"docomo":"E726","au":"E5C4","softbank":"E106","google":"FE327","image":"1f60d.png","sheet_x":22,"sheet_y":46,"short_name":"heart_eyes","short_names":["heart_eyes"],"text":null,"texts":null,"category":"People","sort_order":16,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH SUNGLASSES","unified":"1F60E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f60e.png","sheet_x":22,"sheet_y":47,"short_name":"sunglasses","short_names":["sunglasses"],"text":null,"texts":["8)"],"category":"People","sort_order":28,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMIRKING FACE","unified":"1F60F","variations":[],"docomo":"E72C","au":"EABF","softbank":"E402","google":"FE343","image":"1f60f.png","sheet_x":22,"sheet_y":48,"short_name":"smirk","short_names":["smirk"],"text":null,"texts":null,"category":"People","sort_order":31,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEUTRAL FACE","unified":"1F610","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f610.png","sheet_x":23,"sheet_y":0,"short_name":"neutral_face","short_names":["neutral_face"],"text":null,"texts":[":|",":-|"],"category":"People","sort_order":47,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EXPRESSIONLESS FACE","unified":"1F611","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f611.png","sheet_x":23,"sheet_y":1,"short_name":"expressionless","short_names":["expressionless"],"text":null,"texts":null,"category":"People","sort_order":48,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"UNAMUSED FACE","unified":"1F612","variations":[],"docomo":"E725","au":"EAC9","softbank":"E40E","google":"FE326","image":"1f612.png","sheet_x":23,"sheet_y":2,"short_name":"unamused","short_names":["unamused"],"text":":(","texts":null,"category":"People","sort_order":32,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH COLD SWEAT","unified":"1F613","variations":[],"docomo":"E723","au":"E5C6","softbank":"E108","google":"FE344","image":"1f613.png","sheet_x":23,"sheet_y":3,"short_name":"sweat","short_names":["sweat"],"text":null,"texts":null,"category":"People","sort_order":63,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PENSIVE FACE","unified":"1F614","variations":[],"docomo":"E720","au":"EAC0","softbank":"E403","google":"FE340","image":"1f614.png","sheet_x":23,"sheet_y":4,"short_name":"pensive","short_names":["pensive"],"text":null,"texts":null,"category":"People","sort_order":34,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CONFUSED FACE","unified":"1F615","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f615.png","sheet_x":23,"sheet_y":5,"short_name":"confused","short_names":["confused"],"text":null,"texts":[":\\",":-\\",":\/",":-\/"],"category":"People","sort_order":36,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CONFOUNDED FACE","unified":"1F616","variations":[],"docomo":"E6F3","au":"EAC3","softbank":"E407","google":"FE33F","image":"1f616.png","sheet_x":23,"sheet_y":6,"short_name":"confounded","short_names":["confounded"],"text":null,"texts":null,"category":"People","sort_order":40,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KISSING FACE","unified":"1F617","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f617.png","sheet_x":23,"sheet_y":7,"short_name":"kissing","short_names":["kissing"],"text":null,"texts":null,"category":"People","sort_order":18,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE THROWING A KISS","unified":"1F618","variations":[],"docomo":"E726","au":"EACF","softbank":"E418","google":"FE32C","image":"1f618.png","sheet_x":23,"sheet_y":8,"short_name":"kissing_heart","short_names":["kissing_heart"],"text":null,"texts":[":*",":-*"],"category":"People","sort_order":17,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KISSING FACE WITH SMILING EYES","unified":"1F619","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f619.png","sheet_x":23,"sheet_y":9,"short_name":"kissing_smiling_eyes","short_names":["kissing_smiling_eyes"],"text":null,"texts":null,"category":"People","sort_order":19,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KISSING FACE WITH CLOSED EYES","unified":"1F61A","variations":[],"docomo":"E726","au":"EACE","softbank":"E417","google":"FE32D","image":"1f61a.png","sheet_x":23,"sheet_y":10,"short_name":"kissing_closed_eyes","short_names":["kissing_closed_eyes"],"text":null,"texts":null,"category":"People","sort_order":20,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH STUCK-OUT TONGUE","unified":"1F61B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f61b.png","sheet_x":23,"sheet_y":11,"short_name":"stuck_out_tongue","short_names":["stuck_out_tongue"],"text":":p","texts":[":p",":-p",":P",":-P",":b",":-b"],"category":"People","sort_order":24,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH STUCK-OUT TONGUE AND WINKING EYE","unified":"1F61C","variations":[],"docomo":"E728","au":"E4E7","softbank":"E105","google":"FE329","image":"1f61c.png","sheet_x":23,"sheet_y":12,"short_name":"stuck_out_tongue_winking_eye","short_names":["stuck_out_tongue_winking_eye"],"text":";p","texts":[";p",";-p",";b",";-b",";P",";-P"],"category":"People","sort_order":22,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES","unified":"1F61D","variations":[],"docomo":"E728","au":"E4E7","softbank":"E409","google":"FE32A","image":"1f61d.png","sheet_x":23,"sheet_y":13,"short_name":"stuck_out_tongue_closed_eyes","short_names":["stuck_out_tongue_closed_eyes"],"text":null,"texts":null,"category":"People","sort_order":23,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DISAPPOINTED FACE","unified":"1F61E","variations":[],"docomo":"E6F2","au":"EAC0","softbank":"E058","google":"FE323","image":"1f61e.png","sheet_x":23,"sheet_y":14,"short_name":"disappointed","short_names":["disappointed"],"text":":(","texts":["):",":(",":-("],"category":"People","sort_order":33,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WORRIED FACE","unified":"1F61F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f61f.png","sheet_x":23,"sheet_y":15,"short_name":"worried","short_names":["worried"],"text":null,"texts":null,"category":"People","sort_order":35,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ANGRY FACE","unified":"1F620","variations":[],"docomo":"E6F1","au":"E472","softbank":"E059","google":"FE320","image":"1f620.png","sheet_x":23,"sheet_y":16,"short_name":"angry","short_names":["angry"],"text":null,"texts":[">:(",">:-("],"category":"People","sort_order":44,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POUTING FACE","unified":"1F621","variations":[],"docomo":"E724","au":"EB5D","softbank":"E416","google":"FE33D","image":"1f621.png","sheet_x":23,"sheet_y":17,"short_name":"rage","short_names":["rage"],"text":null,"texts":null,"category":"People","sort_order":45,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CRYING FACE","unified":"1F622","variations":[],"docomo":"E72E","au":"EB69","softbank":"E413","google":"FE339","image":"1f622.png","sheet_x":23,"sheet_y":18,"short_name":"cry","short_names":["cry"],"text":":'(","texts":[":'("],"category":"People","sort_order":59,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PERSEVERING FACE","unified":"1F623","variations":[],"docomo":"E72B","au":"EAC2","softbank":"E406","google":"FE33C","image":"1f623.png","sheet_x":23,"sheet_y":19,"short_name":"persevere","short_names":["persevere"],"text":null,"texts":null,"category":"People","sort_order":39,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH LOOK OF TRIUMPH","unified":"1F624","variations":[],"docomo":"E753","au":"EAC1","softbank":"E404","google":"FE328","image":"1f624.png","sheet_x":23,"sheet_y":20,"short_name":"triumph","short_names":["triumph"],"text":null,"texts":null,"category":"People","sort_order":43,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DISAPPOINTED BUT RELIEVED FACE","unified":"1F625","variations":[],"docomo":"E723","au":"E5C6","softbank":"E401","google":"FE345","image":"1f625.png","sheet_x":23,"sheet_y":21,"short_name":"disappointed_relieved","short_names":["disappointed_relieved"],"text":null,"texts":null,"category":"People","sort_order":60,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FROWNING FACE WITH OPEN MOUTH","unified":"1F626","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f626.png","sheet_x":23,"sheet_y":22,"short_name":"frowning","short_names":["frowning"],"text":null,"texts":null,"category":"People","sort_order":50,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ANGUISHED FACE","unified":"1F627","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f627.png","sheet_x":23,"sheet_y":23,"short_name":"anguished","short_names":["anguished"],"text":null,"texts":["D:"],"category":"People","sort_order":51,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FEARFUL FACE","unified":"1F628","variations":[],"docomo":"E757","au":"EAC6","softbank":"E40B","google":"FE33B","image":"1f628.png","sheet_x":23,"sheet_y":24,"short_name":"fearful","short_names":["fearful"],"text":null,"texts":null,"category":"People","sort_order":57,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WEARY FACE","unified":"1F629","variations":[],"docomo":"E6F3","au":"EB67","softbank":"E403","google":"FE321","image":"1f629.png","sheet_x":23,"sheet_y":25,"short_name":"weary","short_names":["weary"],"text":null,"texts":null,"category":"People","sort_order":42,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SLEEPY FACE","unified":"1F62A","variations":[],"docomo":"E701","au":"EAC4","softbank":"E408","google":"FE342","image":"1f62a.png","sheet_x":23,"sheet_y":26,"short_name":"sleepy","short_names":["sleepy"],"text":null,"texts":null,"category":"People","sort_order":64,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TIRED FACE","unified":"1F62B","variations":[],"docomo":"E72B","au":"E474","softbank":"E406","google":"FE346","image":"1f62b.png","sheet_x":23,"sheet_y":27,"short_name":"tired_face","short_names":["tired_face"],"text":null,"texts":null,"category":"People","sort_order":41,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GRIMACING FACE","unified":"1F62C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f62c.png","sheet_x":23,"sheet_y":28,"short_name":"grimacing","short_names":["grimacing"],"text":null,"texts":null,"category":"People","sort_order":69,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LOUDLY CRYING FACE","unified":"1F62D","variations":[],"docomo":"E72D","au":"E473","softbank":"E411","google":"FE33A","image":"1f62d.png","sheet_x":23,"sheet_y":29,"short_name":"sob","short_names":["sob"],"text":":'(","texts":null,"category":"People","sort_order":62,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH OPEN MOUTH","unified":"1F62E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f62e.png","sheet_x":23,"sheet_y":30,"short_name":"open_mouth","short_names":["open_mouth"],"text":null,"texts":[":o",":-o",":O",":-O"],"category":"People","sort_order":52,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HUSHED FACE","unified":"1F62F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f62f.png","sheet_x":23,"sheet_y":31,"short_name":"hushed","short_names":["hushed"],"text":null,"texts":null,"category":"People","sort_order":49,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH OPEN MOUTH AND COLD SWEAT","unified":"1F630","variations":[],"docomo":"E723","au":"EACB","softbank":"E40F","google":"FE325","image":"1f630.png","sheet_x":23,"sheet_y":32,"short_name":"cold_sweat","short_names":["cold_sweat"],"text":null,"texts":null,"category":"People","sort_order":58,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE SCREAMING IN FEAR","unified":"1F631","variations":[],"docomo":"E757","au":"E5C5","softbank":"E107","google":"FE341","image":"1f631.png","sheet_x":23,"sheet_y":33,"short_name":"scream","short_names":["scream"],"text":null,"texts":null,"category":"People","sort_order":56,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ASTONISHED FACE","unified":"1F632","variations":[],"docomo":"E6F4","au":"EACA","softbank":"E410","google":"FE322","image":"1f632.png","sheet_x":23,"sheet_y":34,"short_name":"astonished","short_names":["astonished"],"text":null,"texts":null,"category":"People","sort_order":53,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FLUSHED FACE","unified":"1F633","variations":[],"docomo":"E72A","au":"EAC8","softbank":"E40D","google":"FE32F","image":"1f633.png","sheet_x":23,"sheet_y":35,"short_name":"flushed","short_names":["flushed"],"text":null,"texts":null,"category":"People","sort_order":55,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SLEEPING FACE","unified":"1F634","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f634.png","sheet_x":23,"sheet_y":36,"short_name":"sleeping","short_names":["sleeping"],"text":null,"texts":null,"category":"People","sort_order":65,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DIZZY FACE","unified":"1F635","variations":[],"docomo":"E6F4","au":"E5AE","softbank":"E406","google":"FE324","image":"1f635.png","sheet_x":23,"sheet_y":37,"short_name":"dizzy_face","short_names":["dizzy_face"],"text":null,"texts":null,"category":"People","sort_order":54,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITHOUT MOUTH","unified":"1F636","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f636.png","sheet_x":23,"sheet_y":38,"short_name":"no_mouth","short_names":["no_mouth"],"text":null,"texts":null,"category":"People","sort_order":46,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH MEDICAL MASK","unified":"1F637","variations":[],"docomo":null,"au":"EAC7","softbank":"E40C","google":"FE32E","image":"1f637.png","sheet_x":23,"sheet_y":39,"short_name":"mask","short_names":["mask"],"text":null,"texts":null,"category":"People","sort_order":73,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GRINNING CAT FACE WITH SMILING EYES","unified":"1F638","variations":[],"docomo":"E753","au":"EB7F","softbank":"E404","google":"FE349","image":"1f638.png","sheet_x":23,"sheet_y":40,"short_name":"smile_cat","short_names":["smile_cat"],"text":null,"texts":null,"category":"People","sort_order":89,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CAT FACE WITH TEARS OF JOY","unified":"1F639","variations":[],"docomo":"E72A","au":"EB63","softbank":"E412","google":"FE34A","image":"1f639.png","sheet_x":23,"sheet_y":41,"short_name":"joy_cat","short_names":["joy_cat"],"text":null,"texts":null,"category":"People","sort_order":90,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING CAT FACE WITH OPEN MOUTH","unified":"1F63A","variations":[],"docomo":"E6F0","au":"EB61","softbank":"E057","google":"FE348","image":"1f63a.png","sheet_x":23,"sheet_y":42,"short_name":"smiley_cat","short_names":["smiley_cat"],"text":null,"texts":null,"category":"People","sort_order":88,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING CAT FACE WITH HEART-SHAPED EYES","unified":"1F63B","variations":[],"docomo":"E726","au":"EB65","softbank":"E106","google":"FE34C","image":"1f63b.png","sheet_x":23,"sheet_y":43,"short_name":"heart_eyes_cat","short_names":["heart_eyes_cat"],"text":null,"texts":null,"category":"People","sort_order":91,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CAT FACE WITH WRY SMILE","unified":"1F63C","variations":[],"docomo":"E753","au":"EB6A","softbank":"E404","google":"FE34F","image":"1f63c.png","sheet_x":23,"sheet_y":44,"short_name":"smirk_cat","short_names":["smirk_cat"],"text":null,"texts":null,"category":"People","sort_order":92,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KISSING CAT FACE WITH CLOSED EYES","unified":"1F63D","variations":[],"docomo":"E726","au":"EB60","softbank":"E418","google":"FE34B","image":"1f63d.png","sheet_x":23,"sheet_y":45,"short_name":"kissing_cat","short_names":["kissing_cat"],"text":null,"texts":null,"category":"People","sort_order":93,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POUTING CAT FACE","unified":"1F63E","variations":[],"docomo":"E724","au":"EB5E","softbank":"E416","google":"FE34E","image":"1f63e.png","sheet_x":23,"sheet_y":46,"short_name":"pouting_cat","short_names":["pouting_cat"],"text":null,"texts":null,"category":"People","sort_order":96,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CRYING CAT FACE","unified":"1F63F","variations":[],"docomo":"E72E","au":"EB68","softbank":"E413","google":"FE34D","image":"1f63f.png","sheet_x":23,"sheet_y":47,"short_name":"crying_cat_face","short_names":["crying_cat_face"],"text":null,"texts":null,"category":"People","sort_order":95,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WEARY CAT FACE","unified":"1F640","variations":[],"docomo":"E6F3","au":"EB66","softbank":"E403","google":"FE350","image":"1f640.png","sheet_x":23,"sheet_y":48,"short_name":"scream_cat","short_names":["scream_cat"],"text":null,"texts":null,"category":"People","sort_order":94,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SLIGHTLY FROWNING FACE","unified":"1F641","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f641.png","sheet_x":24,"sheet_y":0,"short_name":"slightly_frowning_face","short_names":["slightly_frowning_face"],"text":null,"texts":null,"category":"People","sort_order":37,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SLIGHTLY SMILING FACE","unified":"1F642","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f642.png","sheet_x":24,"sheet_y":1,"short_name":"slightly_smiling_face","short_names":["slightly_smiling_face"],"text":null,"texts":[":)","(:",":-)"],"category":"People","sort_order":12,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"UPSIDE-DOWN FACE","unified":"1F643","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f643.png","sheet_x":24,"sheet_y":2,"short_name":"upside_down_face","short_names":["upside_down_face"],"text":null,"texts":null,"category":"People","sort_order":13,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FACE WITH ROLLING EYES","unified":"1F644","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f644.png","sheet_x":24,"sheet_y":3,"short_name":"face_with_rolling_eyes","short_names":["face_with_rolling_eyes"],"text":null,"texts":null,"category":"People","sort_order":66,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FACE WITH NO GOOD GESTURE","unified":"1F645","variations":[],"docomo":"E72F","au":"EAD7","softbank":"E423","google":"FE351","image":"1f645.png","sheet_x":24,"sheet_y":4,"short_name":"no_good","short_names":["no_good"],"text":null,"texts":null,"category":"People","sort_order":205,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F645-1F3FB","image":"1f645-1f3fb.png","sheet_x":24,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F645-1F3FC","image":"1f645-1f3fc.png","sheet_x":24,"sheet_y":6,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F645-1F3FD","image":"1f645-1f3fd.png","sheet_x":24,"sheet_y":7,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F645-1F3FE","image":"1f645-1f3fe.png","sheet_x":24,"sheet_y":8,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F645-1F3FF","image":"1f645-1f3ff.png","sheet_x":24,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F645-200D-2640-FE0F"},{"name":"FACE WITH OK GESTURE","unified":"1F646","variations":[],"docomo":"E70B","au":"EAD8","softbank":"E424","google":"FE352","image":"1f646.png","sheet_x":24,"sheet_y":10,"short_name":"ok_woman","short_names":["ok_woman"],"text":null,"texts":null,"category":"People","sort_order":207,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F646-1F3FB","image":"1f646-1f3fb.png","sheet_x":24,"sheet_y":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F646-1F3FC","image":"1f646-1f3fc.png","sheet_x":24,"sheet_y":12,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F646-1F3FD","image":"1f646-1f3fd.png","sheet_x":24,"sheet_y":13,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F646-1F3FE","image":"1f646-1f3fe.png","sheet_x":24,"sheet_y":14,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F646-1F3FF","image":"1f646-1f3ff.png","sheet_x":24,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F646-200D-2640-FE0F"},{"name":"PERSON BOWING DEEPLY","unified":"1F647","variations":[],"docomo":null,"au":"EAD9","softbank":"E426","google":"FE353","image":"1f647.png","sheet_x":24,"sheet_y":16,"short_name":"bow","short_names":["bow"],"text":null,"texts":null,"category":"People","sort_order":202,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F647-1F3FB","image":"1f647-1f3fb.png","sheet_x":24,"sheet_y":17,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F647-1F3FC","image":"1f647-1f3fc.png","sheet_x":24,"sheet_y":18,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F647-1F3FD","image":"1f647-1f3fd.png","sheet_x":24,"sheet_y":19,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F647-1F3FE","image":"1f647-1f3fe.png","sheet_x":24,"sheet_y":20,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F647-1F3FF","image":"1f647-1f3ff.png","sheet_x":24,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F647-200D-2642-FE0F"},{"name":"SEE-NO-EVIL MONKEY","unified":"1F648","variations":[],"docomo":null,"au":"EB50","softbank":null,"google":"FE354","image":"1f648.png","sheet_x":24,"sheet_y":22,"short_name":"see_no_evil","short_names":["see_no_evil"],"text":null,"texts":null,"category":"Nature","sort_order":17,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAR-NO-EVIL MONKEY","unified":"1F649","variations":[],"docomo":null,"au":"EB52","softbank":null,"google":"FE356","image":"1f649.png","sheet_x":24,"sheet_y":23,"short_name":"hear_no_evil","short_names":["hear_no_evil"],"text":null,"texts":null,"category":"Nature","sort_order":18,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPEAK-NO-EVIL MONKEY","unified":"1F64A","variations":[],"docomo":null,"au":"EB51","softbank":null,"google":"FE355","image":"1f64a.png","sheet_x":24,"sheet_y":24,"short_name":"speak_no_evil","short_names":["speak_no_evil"],"text":null,"texts":null,"category":"Nature","sort_order":19,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HAPPY PERSON RAISING ONE HAND","unified":"1F64B","variations":[],"docomo":null,"au":"EB85","softbank":"E012","google":"FE357","image":"1f64b.png","sheet_x":24,"sheet_y":25,"short_name":"raising_hand","short_names":["raising_hand"],"text":null,"texts":null,"category":"People","sort_order":209,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F64B-1F3FB","image":"1f64b-1f3fb.png","sheet_x":24,"sheet_y":26,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F64B-1F3FC","image":"1f64b-1f3fc.png","sheet_x":24,"sheet_y":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F64B-1F3FD","image":"1f64b-1f3fd.png","sheet_x":24,"sheet_y":28,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F64B-1F3FE","image":"1f64b-1f3fe.png","sheet_x":24,"sheet_y":29,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F64B-1F3FF","image":"1f64b-1f3ff.png","sheet_x":24,"sheet_y":30,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F64B-200D-2640-FE0F"},{"name":"PERSON RAISING BOTH HANDS IN CELEBRATION","unified":"1F64C","variations":[],"docomo":null,"au":"EB86","softbank":"E427","google":"FE358","image":"1f64c.png","sheet_x":24,"sheet_y":31,"short_name":"raised_hands","short_names":["raised_hands"],"text":null,"texts":null,"category":"People","sort_order":98,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F64C-1F3FB","image":"1f64c-1f3fb.png","sheet_x":24,"sheet_y":32,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F64C-1F3FC","image":"1f64c-1f3fc.png","sheet_x":24,"sheet_y":33,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F64C-1F3FD","image":"1f64c-1f3fd.png","sheet_x":24,"sheet_y":34,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F64C-1F3FE","image":"1f64c-1f3fe.png","sheet_x":24,"sheet_y":35,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F64C-1F3FF","image":"1f64c-1f3ff.png","sheet_x":24,"sheet_y":36,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"PERSON FROWNING","unified":"1F64D","variations":[],"docomo":"E6F3","au":"EB87","softbank":"E403","google":"FE359","image":"1f64d.png","sheet_x":24,"sheet_y":37,"short_name":"person_frowning","short_names":["person_frowning"],"text":null,"texts":null,"category":"People","sort_order":219,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F64D-1F3FB","image":"1f64d-1f3fb.png","sheet_x":24,"sheet_y":38,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F64D-1F3FC","image":"1f64d-1f3fc.png","sheet_x":24,"sheet_y":39,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F64D-1F3FD","image":"1f64d-1f3fd.png","sheet_x":24,"sheet_y":40,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F64D-1F3FE","image":"1f64d-1f3fe.png","sheet_x":24,"sheet_y":41,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F64D-1F3FF","image":"1f64d-1f3ff.png","sheet_x":24,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F64D-200D-2640-FE0F"},{"name":"PERSON WITH POUTING FACE","unified":"1F64E","variations":[],"docomo":"E6F1","au":"EB88","softbank":"E416","google":"FE35A","image":"1f64e.png","sheet_x":24,"sheet_y":43,"short_name":"person_with_pouting_face","short_names":["person_with_pouting_face"],"text":null,"texts":null,"category":"People","sort_order":217,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F64E-1F3FB","image":"1f64e-1f3fb.png","sheet_x":24,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F64E-1F3FC","image":"1f64e-1f3fc.png","sheet_x":24,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F64E-1F3FD","image":"1f64e-1f3fd.png","sheet_x":24,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F64E-1F3FE","image":"1f64e-1f3fe.png","sheet_x":24,"sheet_y":47,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F64E-1F3FF","image":"1f64e-1f3ff.png","sheet_x":24,"sheet_y":48,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F64E-200D-2640-FE0F"},{"name":"PERSON WITH FOLDED HANDS","unified":"1F64F","variations":[],"docomo":null,"au":"EAD2","softbank":"E41D","google":"FE35B","image":"1f64f.png","sheet_x":25,"sheet_y":0,"short_name":"pray","short_names":["pray"],"text":null,"texts":null,"category":"People","sort_order":100,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F64F-1F3FB","image":"1f64f-1f3fb.png","sheet_x":25,"sheet_y":1,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F64F-1F3FC","image":"1f64f-1f3fc.png","sheet_x":25,"sheet_y":2,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F64F-1F3FD","image":"1f64f-1f3fd.png","sheet_x":25,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F64F-1F3FE","image":"1f64f-1f3fe.png","sheet_x":25,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F64F-1F3FF","image":"1f64f-1f3ff.png","sheet_x":25,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"ROCKET","unified":"1F680","variations":[],"docomo":null,"au":"E5C8","softbank":"E10D","google":"FE7ED","image":"1f680.png","sheet_x":25,"sheet_y":6,"short_name":"rocket","short_names":["rocket"],"text":null,"texts":null,"category":"Places","sort_order":43,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HELICOPTER","unified":"1F681","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f681.png","sheet_x":25,"sheet_y":7,"short_name":"helicopter","short_names":["helicopter"],"text":null,"texts":null,"category":"Places","sort_order":38,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"STEAM LOCOMOTIVE","unified":"1F682","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f682.png","sheet_x":25,"sheet_y":8,"short_name":"steam_locomotive","short_names":["steam_locomotive"],"text":null,"texts":null,"category":"Places","sort_order":33,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RAILWAY CAR","unified":"1F683","variations":[],"docomo":"E65B","au":"E4B5","softbank":"E01E","google":"FE7DF","image":"1f683.png","sheet_x":25,"sheet_y":9,"short_name":"railway_car","short_names":["railway_car"],"text":null,"texts":null,"category":"Places","sort_order":26,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HIGH-SPEED TRAIN","unified":"1F684","variations":[],"docomo":"E65D","au":"E4B0","softbank":"E435","google":"FE7E2","image":"1f684.png","sheet_x":25,"sheet_y":10,"short_name":"bullettrain_side","short_names":["bullettrain_side"],"text":null,"texts":null,"category":"Places","sort_order":30,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HIGH-SPEED TRAIN WITH BULLET NOSE","unified":"1F685","variations":[],"docomo":"E65D","au":"E4B0","softbank":"E01F","google":"FE7E3","image":"1f685.png","sheet_x":25,"sheet_y":11,"short_name":"bullettrain_front","short_names":["bullettrain_front"],"text":null,"texts":null,"category":"Places","sort_order":31,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRAIN","unified":"1F686","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f686.png","sheet_x":25,"sheet_y":12,"short_name":"train2","short_names":["train2"],"text":null,"texts":null,"category":"Places","sort_order":34,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"METRO","unified":"1F687","variations":[],"docomo":"E65C","au":"E5BC","softbank":"E434","google":"FE7E0","image":"1f687.png","sheet_x":25,"sheet_y":13,"short_name":"metro","short_names":["metro"],"text":null,"texts":null,"category":"Places","sort_order":35,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LIGHT RAIL","unified":"1F688","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f688.png","sheet_x":25,"sheet_y":14,"short_name":"light_rail","short_names":["light_rail"],"text":null,"texts":null,"category":"Places","sort_order":32,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"STATION","unified":"1F689","variations":[],"docomo":null,"au":"EB6D","softbank":"E039","google":"FE7EC","image":"1f689.png","sheet_x":25,"sheet_y":15,"short_name":"station","short_names":["station"],"text":null,"texts":null,"category":"Places","sort_order":37,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRAM","unified":"1F68A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f68a.png","sheet_x":25,"sheet_y":16,"short_name":"tram","short_names":["tram"],"text":null,"texts":null,"category":"Places","sort_order":36,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRAM CAR","unified":"1F68B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f68b.png","sheet_x":25,"sheet_y":17,"short_name":"train","short_names":["train"],"text":null,"texts":null,"category":"Places","sort_order":27,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BUS","unified":"1F68C","variations":[],"docomo":"E660","au":"E4AF","softbank":"E159","google":"FE7E6","image":"1f68c.png","sheet_x":25,"sheet_y":18,"short_name":"bus","short_names":["bus"],"text":null,"texts":null,"category":"Places","sort_order":4,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ONCOMING BUS","unified":"1F68D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f68d.png","sheet_x":25,"sheet_y":19,"short_name":"oncoming_bus","short_names":["oncoming_bus"],"text":null,"texts":null,"category":"Places","sort_order":20,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TROLLEYBUS","unified":"1F68E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f68e.png","sheet_x":25,"sheet_y":20,"short_name":"trolleybus","short_names":["trolleybus"],"text":null,"texts":null,"category":"Places","sort_order":5,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BUS STOP","unified":"1F68F","variations":[],"docomo":null,"au":"E4A7","softbank":"E150","google":"FE7E7","image":"1f68f.png","sheet_x":25,"sheet_y":21,"short_name":"busstop","short_names":["busstop"],"text":null,"texts":null,"category":"Places","sort_order":56,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MINIBUS","unified":"1F690","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f690.png","sheet_x":25,"sheet_y":22,"short_name":"minibus","short_names":["minibus"],"text":null,"texts":null,"category":"Places","sort_order":10,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"AMBULANCE","unified":"1F691","variations":[],"docomo":null,"au":"EAE0","softbank":"E431","google":"FE7F3","image":"1f691.png","sheet_x":25,"sheet_y":23,"short_name":"ambulance","short_names":["ambulance"],"text":null,"texts":null,"category":"Places","sort_order":8,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FIRE ENGINE","unified":"1F692","variations":[],"docomo":null,"au":"EADF","softbank":"E430","google":"FE7F2","image":"1f692.png","sheet_x":25,"sheet_y":24,"short_name":"fire_engine","short_names":["fire_engine"],"text":null,"texts":null,"category":"Places","sort_order":9,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POLICE CAR","unified":"1F693","variations":[],"docomo":null,"au":"EAE1","softbank":"E432","google":"FE7F4","image":"1f693.png","sheet_x":25,"sheet_y":25,"short_name":"police_car","short_names":["police_car"],"text":null,"texts":null,"category":"Places","sort_order":7,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ONCOMING POLICE CAR","unified":"1F694","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f694.png","sheet_x":25,"sheet_y":26,"short_name":"oncoming_police_car","short_names":["oncoming_police_car"],"text":null,"texts":null,"category":"Places","sort_order":19,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TAXI","unified":"1F695","variations":[],"docomo":"E65E","au":"E4B1","softbank":"E15A","google":"FE7EF","image":"1f695.png","sheet_x":25,"sheet_y":27,"short_name":"taxi","short_names":["taxi"],"text":null,"texts":null,"category":"Places","sort_order":2,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ONCOMING TAXI","unified":"1F696","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f696.png","sheet_x":25,"sheet_y":28,"short_name":"oncoming_taxi","short_names":["oncoming_taxi"],"text":null,"texts":null,"category":"Places","sort_order":22,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"AUTOMOBILE","unified":"1F697","variations":[],"docomo":"E65E","au":"E4B1","softbank":"E01B","google":"FE7E4","image":"1f697.png","sheet_x":25,"sheet_y":29,"short_name":"car","short_names":["car","red_car"],"text":null,"texts":null,"category":"Places","sort_order":1,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ONCOMING AUTOMOBILE","unified":"1F698","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f698.png","sheet_x":25,"sheet_y":30,"short_name":"oncoming_automobile","short_names":["oncoming_automobile"],"text":null,"texts":null,"category":"Places","sort_order":21,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RECREATIONAL VEHICLE","unified":"1F699","variations":[],"docomo":"E65F","au":"E4B1","softbank":"E42E","google":"FE7E5","image":"1f699.png","sheet_x":25,"sheet_y":31,"short_name":"blue_car","short_names":["blue_car"],"text":null,"texts":null,"category":"Places","sort_order":3,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DELIVERY TRUCK","unified":"1F69A","variations":[],"docomo":null,"au":"E4B2","softbank":"E42F","google":"FE7F1","image":"1f69a.png","sheet_x":25,"sheet_y":32,"short_name":"truck","short_names":["truck"],"text":null,"texts":null,"category":"Places","sort_order":11,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ARTICULATED LORRY","unified":"1F69B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f69b.png","sheet_x":25,"sheet_y":33,"short_name":"articulated_lorry","short_names":["articulated_lorry"],"text":null,"texts":null,"category":"Places","sort_order":12,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRACTOR","unified":"1F69C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f69c.png","sheet_x":25,"sheet_y":34,"short_name":"tractor","short_names":["tractor"],"text":null,"texts":null,"category":"Places","sort_order":13,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MONORAIL","unified":"1F69D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f69d.png","sheet_x":25,"sheet_y":35,"short_name":"monorail","short_names":["monorail"],"text":null,"texts":null,"category":"Places","sort_order":29,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOUNTAIN RAILWAY","unified":"1F69E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f69e.png","sheet_x":25,"sheet_y":36,"short_name":"mountain_railway","short_names":["mountain_railway"],"text":null,"texts":null,"category":"Places","sort_order":28,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SUSPENSION RAILWAY","unified":"1F69F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f69f.png","sheet_x":25,"sheet_y":37,"short_name":"suspension_railway","short_names":["suspension_railway"],"text":null,"texts":null,"category":"Places","sort_order":25,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOUNTAIN CABLEWAY","unified":"1F6A0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6a0.png","sheet_x":25,"sheet_y":38,"short_name":"mountain_cableway","short_names":["mountain_cableway"],"text":null,"texts":null,"category":"Places","sort_order":24,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"AERIAL TRAMWAY","unified":"1F6A1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6a1.png","sheet_x":25,"sheet_y":39,"short_name":"aerial_tramway","short_names":["aerial_tramway"],"text":null,"texts":null,"category":"Places","sort_order":23,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SHIP","unified":"1F6A2","variations":[],"docomo":"E661","au":"EA82","softbank":"E202","google":"FE7E8","image":"1f6a2.png","sheet_x":25,"sheet_y":40,"short_name":"ship","short_names":["ship"],"text":null,"texts":null,"category":"Places","sort_order":52,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ROWBOAT","unified":"1F6A3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6a3.png","sheet_x":25,"sheet_y":41,"short_name":"rowboat","short_names":["rowboat"],"text":null,"texts":null,"category":"Activity","sort_order":48,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F6A3-1F3FB","image":"1f6a3-1f3fb.png","sheet_x":25,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F6A3-1F3FC","image":"1f6a3-1f3fc.png","sheet_x":25,"sheet_y":43,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F6A3-1F3FD","image":"1f6a3-1f3fd.png","sheet_x":25,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F6A3-1F3FE","image":"1f6a3-1f3fe.png","sheet_x":25,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F6A3-1F3FF","image":"1f6a3-1f3ff.png","sheet_x":25,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}},"obsoleted_by":"1F6A3-200D-2642-FE0F"},{"name":"SPEEDBOAT","unified":"1F6A4","variations":[],"docomo":"E6A3","au":"E4B4","softbank":"E135","google":"FE7EE","image":"1f6a4.png","sheet_x":25,"sheet_y":47,"short_name":"speedboat","short_names":["speedboat"],"text":null,"texts":null,"category":"Places","sort_order":49,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HORIZONTAL TRAFFIC LIGHT","unified":"1F6A5","variations":[],"docomo":"E66D","au":"E46A","softbank":"E14E","google":"FE7F7","image":"1f6a5.png","sheet_x":25,"sheet_y":48,"short_name":"traffic_light","short_names":["traffic_light"],"text":null,"texts":null,"category":"Places","sort_order":58,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"VERTICAL TRAFFIC LIGHT","unified":"1F6A6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6a6.png","sheet_x":26,"sheet_y":0,"short_name":"vertical_traffic_light","short_names":["vertical_traffic_light"],"text":null,"texts":null,"category":"Places","sort_order":57,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CONSTRUCTION SIGN","unified":"1F6A7","variations":[],"docomo":null,"au":"E5D7","softbank":"E137","google":"FE7F8","image":"1f6a7.png","sheet_x":26,"sheet_y":1,"short_name":"construction","short_names":["construction"],"text":null,"texts":null,"category":"Places","sort_order":54,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POLICE CARS REVOLVING LIGHT","unified":"1F6A8","variations":[],"docomo":null,"au":"EB73","softbank":"E432","google":"FE7F9","image":"1f6a8.png","sheet_x":26,"sheet_y":2,"short_name":"rotating_light","short_names":["rotating_light"],"text":null,"texts":null,"category":"Places","sort_order":18,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRIANGULAR FLAG ON POST","unified":"1F6A9","variations":[],"docomo":"E6DE","au":"EB2C","softbank":null,"google":"FEB22","image":"1f6a9.png","sheet_x":26,"sheet_y":3,"short_name":"triangular_flag_on_post","short_names":["triangular_flag_on_post"],"text":null,"texts":null,"category":"Flags","sort_order":4,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOOR","unified":"1F6AA","variations":[],"docomo":"E714","au":null,"softbank":null,"google":"FE4F3","image":"1f6aa.png","sheet_x":26,"sheet_y":4,"short_name":"door","short_names":["door"],"text":null,"texts":null,"category":"Objects","sort_order":91,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NO ENTRY SIGN","unified":"1F6AB","variations":[],"docomo":"E738","au":"E541","softbank":null,"google":"FEB48","image":"1f6ab.png","sheet_x":26,"sheet_y":5,"short_name":"no_entry_sign","short_names":["no_entry_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":74,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMOKING SYMBOL","unified":"1F6AC","variations":[],"docomo":"E67F","au":"E47D","softbank":"E30E","google":"FEB1E","image":"1f6ac.png","sheet_x":26,"sheet_y":6,"short_name":"smoking","short_names":["smoking"],"text":null,"texts":null,"category":"Objects","sort_order":69,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NO SMOKING SYMBOL","unified":"1F6AD","variations":[],"docomo":"E680","au":"E47E","softbank":"E208","google":"FEB1F","image":"1f6ad.png","sheet_x":26,"sheet_y":7,"short_name":"no_smoking","short_names":["no_smoking"],"text":null,"texts":null,"category":"Symbols","sort_order":84,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PUT LITTER IN ITS PLACE SYMBOL","unified":"1F6AE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6ae.png","sheet_x":26,"sheet_y":8,"short_name":"put_litter_in_its_place","short_names":["put_litter_in_its_place"],"text":null,"texts":null,"category":"Symbols","sort_order":125,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DO NOT LITTER SYMBOL","unified":"1F6AF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6af.png","sheet_x":26,"sheet_y":9,"short_name":"do_not_litter","short_names":["do_not_litter"],"text":null,"texts":null,"category":"Symbols","sort_order":79,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POTABLE WATER SYMBOL","unified":"1F6B0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b0.png","sheet_x":26,"sheet_y":10,"short_name":"potable_water","short_names":["potable_water"],"text":null,"texts":null,"category":"Objects","sort_order":84,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NON-POTABLE WATER SYMBOL","unified":"1F6B1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b1.png","sheet_x":26,"sheet_y":11,"short_name":"non-potable_water","short_names":["non-potable_water"],"text":null,"texts":null,"category":"Symbols","sort_order":81,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BICYCLE","unified":"1F6B2","variations":[],"docomo":"E71D","au":"E4AE","softbank":"E136","google":"FE7EB","image":"1f6b2.png","sheet_x":26,"sheet_y":12,"short_name":"bike","short_names":["bike"],"text":null,"texts":null,"category":"Places","sort_order":15,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NO BICYCLES","unified":"1F6B3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b3.png","sheet_x":26,"sheet_y":13,"short_name":"no_bicycles","short_names":["no_bicycles"],"text":null,"texts":null,"category":"Symbols","sort_order":80,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BICYCLIST","unified":"1F6B4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b4.png","sheet_x":26,"sheet_y":14,"short_name":"bicyclist","short_names":["bicyclist"],"text":null,"texts":null,"category":"Activity","sort_order":51,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F6B4-1F3FB","image":"1f6b4-1f3fb.png","sheet_x":26,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F6B4-1F3FC","image":"1f6b4-1f3fc.png","sheet_x":26,"sheet_y":16,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F6B4-1F3FD","image":"1f6b4-1f3fd.png","sheet_x":26,"sheet_y":17,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F6B4-1F3FE","image":"1f6b4-1f3fe.png","sheet_x":26,"sheet_y":18,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F6B4-1F3FF","image":"1f6b4-1f3ff.png","sheet_x":26,"sheet_y":19,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F6B4-200D-2642-FE0F"},{"name":"MOUNTAIN BICYCLIST","unified":"1F6B5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b5.png","sheet_x":26,"sheet_y":20,"short_name":"mountain_bicyclist","short_names":["mountain_bicyclist"],"text":null,"texts":null,"category":"Activity","sort_order":53,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F6B5-1F3FB","image":"1f6b5-1f3fb.png","sheet_x":26,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F6B5-1F3FC","image":"1f6b5-1f3fc.png","sheet_x":26,"sheet_y":22,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F6B5-1F3FD","image":"1f6b5-1f3fd.png","sheet_x":26,"sheet_y":23,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F6B5-1F3FE","image":"1f6b5-1f3fe.png","sheet_x":26,"sheet_y":24,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F6B5-1F3FF","image":"1f6b5-1f3ff.png","sheet_x":26,"sheet_y":25,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F6B5-200D-2642-FE0F"},{"name":"PEDESTRIAN","unified":"1F6B6","variations":[],"docomo":"E733","au":"EB72","softbank":"E201","google":"FE7F0","image":"1f6b6.png","sheet_x":26,"sheet_y":26,"short_name":"walking","short_names":["walking"],"text":null,"texts":null,"category":"People","sort_order":231,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F6B6-1F3FB","image":"1f6b6-1f3fb.png","sheet_x":26,"sheet_y":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F6B6-1F3FC","image":"1f6b6-1f3fc.png","sheet_x":26,"sheet_y":28,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F6B6-1F3FD","image":"1f6b6-1f3fd.png","sheet_x":26,"sheet_y":29,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F6B6-1F3FE","image":"1f6b6-1f3fe.png","sheet_x":26,"sheet_y":30,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F6B6-1F3FF","image":"1f6b6-1f3ff.png","sheet_x":26,"sheet_y":31,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F6B6-200D-2642-FE0F"},{"name":"NO PEDESTRIANS","unified":"1F6B7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b7.png","sheet_x":26,"sheet_y":32,"short_name":"no_pedestrians","short_names":["no_pedestrians"],"text":null,"texts":null,"category":"Symbols","sort_order":78,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHILDREN CROSSING","unified":"1F6B8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b8.png","sheet_x":26,"sheet_y":33,"short_name":"children_crossing","short_names":["children_crossing"],"text":null,"texts":null,"category":"Symbols","sort_order":95,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MENS SYMBOL","unified":"1F6B9","variations":[],"docomo":null,"au":null,"softbank":"E138","google":"FEB33","image":"1f6b9.png","sheet_x":26,"sheet_y":34,"short_name":"mens","short_names":["mens"],"text":null,"texts":null,"category":"Symbols","sort_order":121,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WOMENS SYMBOL","unified":"1F6BA","variations":[],"docomo":null,"au":null,"softbank":"E139","google":"FEB34","image":"1f6ba.png","sheet_x":26,"sheet_y":35,"short_name":"womens","short_names":["womens"],"text":null,"texts":null,"category":"Symbols","sort_order":122,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RESTROOM","unified":"1F6BB","variations":[],"docomo":"E66E","au":"E4A5","softbank":"E151","google":"FE506","image":"1f6bb.png","sheet_x":26,"sheet_y":36,"short_name":"restroom","short_names":["restroom"],"text":null,"texts":null,"category":"Symbols","sort_order":124,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BABY SYMBOL","unified":"1F6BC","variations":[],"docomo":null,"au":"EB18","softbank":"E13A","google":"FEB35","image":"1f6bc.png","sheet_x":26,"sheet_y":37,"short_name":"baby_symbol","short_names":["baby_symbol"],"text":null,"texts":null,"category":"Symbols","sort_order":123,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TOILET","unified":"1F6BD","variations":[],"docomo":"E66E","au":"E4A5","softbank":"E140","google":"FE507","image":"1f6bd.png","sheet_x":26,"sheet_y":38,"short_name":"toilet","short_names":["toilet"],"text":null,"texts":null,"category":"Objects","sort_order":83,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WATER CLOSET","unified":"1F6BE","variations":[],"docomo":"E66E","au":"E4A5","softbank":"E309","google":"FE508","image":"1f6be.png","sheet_x":26,"sheet_y":39,"short_name":"wc","short_names":["wc"],"text":null,"texts":null,"category":"Symbols","sort_order":112,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SHOWER","unified":"1F6BF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6bf.png","sheet_x":26,"sheet_y":40,"short_name":"shower","short_names":["shower"],"text":null,"texts":null,"category":"Objects","sort_order":85,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BATH","unified":"1F6C0","variations":[],"docomo":"E6F7","au":"E5D8","softbank":"E13F","google":"FE505","image":"1f6c0.png","sheet_x":26,"sheet_y":41,"short_name":"bath","short_names":["bath"],"text":null,"texts":null,"category":"Objects","sort_order":87,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F6C0-1F3FB","image":"1f6c0-1f3fb.png","sheet_x":26,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F6C0-1F3FC","image":"1f6c0-1f3fc.png","sheet_x":26,"sheet_y":43,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F6C0-1F3FD","image":"1f6c0-1f3fd.png","sheet_x":26,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F6C0-1F3FE","image":"1f6c0-1f3fe.png","sheet_x":26,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F6C0-1F3FF","image":"1f6c0-1f3ff.png","sheet_x":26,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"BATHTUB","unified":"1F6C1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6c1.png","sheet_x":26,"sheet_y":47,"short_name":"bathtub","short_names":["bathtub"],"text":null,"texts":null,"category":"Objects","sort_order":86,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PASSPORT CONTROL","unified":"1F6C2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6c2.png","sheet_x":26,"sheet_y":48,"short_name":"passport_control","short_names":["passport_control"],"text":null,"texts":null,"category":"Symbols","sort_order":117,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CUSTOMS","unified":"1F6C3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6c3.png","sheet_x":27,"sheet_y":0,"short_name":"customs","short_names":["customs"],"text":null,"texts":null,"category":"Symbols","sort_order":118,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BAGGAGE CLAIM","unified":"1F6C4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6c4.png","sheet_x":27,"sheet_y":1,"short_name":"baggage_claim","short_names":["baggage_claim"],"text":null,"texts":null,"category":"Symbols","sort_order":119,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEFT LUGGAGE","unified":"1F6C5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6c5.png","sheet_x":27,"sheet_y":2,"short_name":"left_luggage","short_names":["left_luggage"],"text":null,"texts":null,"category":"Symbols","sort_order":120,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COUCH AND LAMP","unified":"1F6CB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6cb.png","sheet_x":27,"sheet_y":3,"short_name":"couch_and_lamp","short_names":["couch_and_lamp"],"text":null,"texts":null,"category":"Objects","sort_order":92,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SLEEPING ACCOMMODATION","unified":"1F6CC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6cc.png","sheet_x":27,"sheet_y":4,"short_name":"sleeping_accommodation","short_names":["sleeping_accommodation"],"text":null,"texts":null,"category":"Objects","sort_order":94,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6CC-1F3FB","image":"1f6cc-1f3fb.png","sheet_x":27,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F6CC-1F3FC","image":"1f6cc-1f3fc.png","sheet_x":27,"sheet_y":6,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F6CC-1F3FD","image":"1f6cc-1f3fd.png","sheet_x":27,"sheet_y":7,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F6CC-1F3FE","image":"1f6cc-1f3fe.png","sheet_x":27,"sheet_y":8,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F6CC-1F3FF","image":"1f6cc-1f3ff.png","sheet_x":27,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"SHOPPING BAGS","unified":"1F6CD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6cd.png","sheet_x":27,"sheet_y":10,"short_name":"shopping_bags","short_names":["shopping_bags"],"text":null,"texts":null,"category":"Objects","sort_order":96,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BELLHOP BELL","unified":"1F6CE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6ce.png","sheet_x":27,"sheet_y":11,"short_name":"bellhop_bell","short_names":["bellhop_bell"],"text":null,"texts":null,"category":"Objects","sort_order":88,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BED","unified":"1F6CF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6cf.png","sheet_x":27,"sheet_y":12,"short_name":"bed","short_names":["bed"],"text":null,"texts":null,"category":"Objects","sort_order":93,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PLACE OF WORSHIP","unified":"1F6D0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6d0.png","sheet_x":27,"sheet_y":13,"short_name":"place_of_worship","short_names":["place_of_worship"],"text":null,"texts":null,"category":"Symbols","sort_order":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"OCTAGONAL SIGN","unified":"1F6D1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6d1.png","sheet_x":27,"sheet_y":14,"short_name":"octagonal_sign","short_names":["octagonal_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":71,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SHOPPING TROLLEY","unified":"1F6D2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6d2.png","sheet_x":27,"sheet_y":15,"short_name":"shopping_trolley","short_names":["shopping_trolley"],"text":null,"texts":null,"category":"Objects","sort_order":97,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HAMMER AND WRENCH","unified":"1F6E0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6e0.png","sheet_x":27,"sheet_y":16,"short_name":"hammer_and_wrench","short_names":["hammer_and_wrench"],"text":null,"texts":null,"category":"Objects","sort_order":58,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SHIELD","unified":"1F6E1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6e1.png","sheet_x":27,"sheet_y":17,"short_name":"shield","short_names":["shield"],"text":null,"texts":null,"category":"Objects","sort_order":68,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"OIL DRUM","unified":"1F6E2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6e2.png","sheet_x":27,"sheet_y":18,"short_name":"oil_drum","short_names":["oil_drum"],"text":null,"texts":null,"category":"Objects","sort_order":45,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MOTORWAY","unified":"1F6E3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6e3.png","sheet_x":27,"sheet_y":19,"short_name":"motorway","short_names":["motorway"],"text":null,"texts":null,"category":"Places","sort_order":81,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"RAILWAY TRACK","unified":"1F6E4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6e4.png","sheet_x":27,"sheet_y":20,"short_name":"railway_track","short_names":["railway_track"],"text":null,"texts":null,"category":"Places","sort_order":80,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MOTOR BOAT","unified":"1F6E5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6e5.png","sheet_x":27,"sheet_y":21,"short_name":"motor_boat","short_names":["motor_boat"],"text":null,"texts":null,"category":"Places","sort_order":48,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SMALL AIRPLANE","unified":"1F6E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6e9.png","sheet_x":27,"sheet_y":22,"short_name":"small_airplane","short_names":["small_airplane"],"text":null,"texts":null,"category":"Places","sort_order":39,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"AIRPLANE DEPARTURE","unified":"1F6EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6eb.png","sheet_x":27,"sheet_y":23,"short_name":"airplane_departure","short_names":["airplane_departure"],"text":null,"texts":null,"category":"Places","sort_order":41,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"AIRPLANE ARRIVING","unified":"1F6EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6ec.png","sheet_x":27,"sheet_y":24,"short_name":"airplane_arriving","short_names":["airplane_arriving"],"text":null,"texts":null,"category":"Places","sort_order":42,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SATELLITE","unified":"1F6F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6f0.png","sheet_x":27,"sheet_y":25,"short_name":"satellite","short_names":["satellite"],"text":null,"texts":null,"category":"Places","sort_order":44,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PASSENGER SHIP","unified":"1F6F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6f3.png","sheet_x":27,"sheet_y":26,"short_name":"passenger_ship","short_names":["passenger_ship"],"text":null,"texts":null,"category":"Places","sort_order":50,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SCOOTER","unified":"1F6F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6f4.png","sheet_x":27,"sheet_y":27,"short_name":"scooter","short_names":["scooter"],"text":null,"texts":null,"category":"Places","sort_order":14,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MOTOR SCOOTER","unified":"1F6F5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6f5.png","sheet_x":27,"sheet_y":28,"short_name":"motor_scooter","short_names":["motor_scooter"],"text":null,"texts":null,"category":"Places","sort_order":16,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CANOE","unified":"1F6F6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6f6.png","sheet_x":27,"sheet_y":29,"short_name":"canoe","short_names":["canoe"],"text":null,"texts":null,"category":"Places","sort_order":46,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ZIPPER-MOUTH FACE","unified":"1F910","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f910.png","sheet_x":27,"sheet_y":30,"short_name":"zipper_mouth_face","short_names":["zipper_mouth_face"],"text":null,"texts":null,"category":"People","sort_order":70,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MONEY-MOUTH FACE","unified":"1F911","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f911.png","sheet_x":27,"sheet_y":31,"short_name":"money_mouth_face","short_names":["money_mouth_face"],"text":null,"texts":null,"category":"People","sort_order":25,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FACE WITH THERMOMETER","unified":"1F912","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f912.png","sheet_x":27,"sheet_y":32,"short_name":"face_with_thermometer","short_names":["face_with_thermometer"],"text":null,"texts":null,"category":"People","sort_order":74,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"NERD FACE","unified":"1F913","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f913.png","sheet_x":27,"sheet_y":33,"short_name":"nerd_face","short_names":["nerd_face"],"text":null,"texts":null,"category":"People","sort_order":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"THINKING FACE","unified":"1F914","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f914.png","sheet_x":27,"sheet_y":34,"short_name":"thinking_face","short_names":["thinking_face"],"text":null,"texts":null,"category":"People","sort_order":67,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FACE WITH HEAD-BANDAGE","unified":"1F915","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f915.png","sheet_x":27,"sheet_y":35,"short_name":"face_with_head_bandage","short_names":["face_with_head_bandage"],"text":null,"texts":null,"category":"People","sort_order":75,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ROBOT FACE","unified":"1F916","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f916.png","sheet_x":27,"sheet_y":36,"short_name":"robot_face","short_names":["robot_face"],"text":null,"texts":null,"category":"People","sort_order":86,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HUGGING FACE","unified":"1F917","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f917.png","sheet_x":27,"sheet_y":37,"short_name":"hugging_face","short_names":["hugging_face"],"text":null,"texts":null,"category":"People","sort_order":26,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SIGN OF THE HORNS","unified":"1F918","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f918.png","sheet_x":27,"sheet_y":38,"short_name":"the_horns","short_names":["the_horns","sign_of_the_horns"],"text":null,"texts":null,"category":"People","sort_order":110,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F918-1F3FB","image":"1f918-1f3fb.png","sheet_x":27,"sheet_y":39,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F918-1F3FC","image":"1f918-1f3fc.png","sheet_x":27,"sheet_y":40,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F918-1F3FD","image":"1f918-1f3fd.png","sheet_x":27,"sheet_y":41,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F918-1F3FE","image":"1f918-1f3fe.png","sheet_x":27,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F918-1F3FF","image":"1f918-1f3ff.png","sheet_x":27,"sheet_y":43,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"CALL ME HAND","unified":"1F919","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f919.png","sheet_x":27,"sheet_y":44,"short_name":"call_me_hand","short_names":["call_me_hand"],"text":null,"texts":null,"category":"People","sort_order":122,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F919-1F3FB","image":"1f919-1f3fb.png","sheet_x":27,"sheet_y":45,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F919-1F3FC","image":"1f919-1f3fc.png","sheet_x":27,"sheet_y":46,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F919-1F3FD","image":"1f919-1f3fd.png","sheet_x":27,"sheet_y":47,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F919-1F3FE","image":"1f919-1f3fe.png","sheet_x":27,"sheet_y":48,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F919-1F3FF","image":"1f919-1f3ff.png","sheet_x":28,"sheet_y":0,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"RAISED BACK OF HAND","unified":"1F91A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f91a.png","sheet_x":28,"sheet_y":1,"short_name":"raised_back_of_hand","short_names":["raised_back_of_hand"],"text":null,"texts":null,"category":"People","sort_order":118,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F91A-1F3FB","image":"1f91a-1f3fb.png","sheet_x":28,"sheet_y":2,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F91A-1F3FC","image":"1f91a-1f3fc.png","sheet_x":28,"sheet_y":3,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F91A-1F3FD","image":"1f91a-1f3fd.png","sheet_x":28,"sheet_y":4,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F91A-1F3FE","image":"1f91a-1f3fe.png","sheet_x":28,"sheet_y":5,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F91A-1F3FF","image":"1f91a-1f3ff.png","sheet_x":28,"sheet_y":6,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"LEFT-FACING FIST","unified":"1F91B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f91b.png","sheet_x":28,"sheet_y":7,"short_name":"left-facing_fist","short_names":["left-facing_fist"],"text":null,"texts":null,"category":"People","sort_order":106,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F91B-1F3FB","image":"1f91b-1f3fb.png","sheet_x":28,"sheet_y":8,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F91B-1F3FC","image":"1f91b-1f3fc.png","sheet_x":28,"sheet_y":9,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F91B-1F3FD","image":"1f91b-1f3fd.png","sheet_x":28,"sheet_y":10,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F91B-1F3FE","image":"1f91b-1f3fe.png","sheet_x":28,"sheet_y":11,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F91B-1F3FF","image":"1f91b-1f3ff.png","sheet_x":28,"sheet_y":12,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"RIGHT-FACING FIST","unified":"1F91C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f91c.png","sheet_x":28,"sheet_y":13,"short_name":"right-facing_fist","short_names":["right-facing_fist"],"text":null,"texts":null,"category":"People","sort_order":107,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F91C-1F3FB","image":"1f91c-1f3fb.png","sheet_x":28,"sheet_y":14,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F91C-1F3FC","image":"1f91c-1f3fc.png","sheet_x":28,"sheet_y":15,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F91C-1F3FD","image":"1f91c-1f3fd.png","sheet_x":28,"sheet_y":16,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F91C-1F3FE","image":"1f91c-1f3fe.png","sheet_x":28,"sheet_y":17,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F91C-1F3FF","image":"1f91c-1f3ff.png","sheet_x":28,"sheet_y":18,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"HANDSHAKE","unified":"1F91D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f91d.png","sheet_x":28,"sheet_y":19,"short_name":"handshake","short_names":["handshake"],"text":null,"texts":null,"category":"People","sort_order":101,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HAND WITH INDEX AND MIDDLE FINGERS CROSSED","unified":"1F91E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f91e.png","sheet_x":28,"sheet_y":20,"short_name":"hand_with_index_and_middle_fingers_crossed","short_names":["hand_with_index_and_middle_fingers_crossed"],"text":null,"texts":null,"category":"People","sort_order":108,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F91E-1F3FB","image":"1f91e-1f3fb.png","sheet_x":28,"sheet_y":21,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F91E-1F3FC","image":"1f91e-1f3fc.png","sheet_x":28,"sheet_y":22,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F91E-1F3FD","image":"1f91e-1f3fd.png","sheet_x":28,"sheet_y":23,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F91E-1F3FE","image":"1f91e-1f3fe.png","sheet_x":28,"sheet_y":24,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F91E-1F3FF","image":"1f91e-1f3ff.png","sheet_x":28,"sheet_y":25,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"FACE WITH COWBOY HAT","unified":"1F920","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f920.png","sheet_x":28,"sheet_y":26,"short_name":"face_with_cowboy_hat","short_names":["face_with_cowboy_hat"],"text":null,"texts":null,"category":"People","sort_order":30,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CLOWN FACE","unified":"1F921","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f921.png","sheet_x":28,"sheet_y":27,"short_name":"clown_face","short_names":["clown_face"],"text":null,"texts":null,"category":"People","sort_order":29,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"NAUSEATED FACE","unified":"1F922","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f922.png","sheet_x":28,"sheet_y":28,"short_name":"nauseated_face","short_names":["nauseated_face"],"text":null,"texts":null,"category":"People","sort_order":71,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ROLLING ON THE FLOOR LAUGHING","unified":"1F923","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f923.png","sheet_x":28,"sheet_y":29,"short_name":"rolling_on_the_floor_laughing","short_names":["rolling_on_the_floor_laughing"],"text":null,"texts":null,"category":"People","sort_order":8,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DROOLING FACE","unified":"1F924","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f924.png","sheet_x":28,"sheet_y":30,"short_name":"drooling_face","short_names":["drooling_face"],"text":null,"texts":null,"category":"People","sort_order":61,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LYING FACE","unified":"1F925","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f925.png","sheet_x":28,"sheet_y":31,"short_name":"lying_face","short_names":["lying_face"],"text":null,"texts":null,"category":"People","sort_order":68,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FACE PALM","unified":"1F926","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f926.png","sheet_x":28,"sheet_y":32,"short_name":"face_palm","short_names":["face_palm"],"text":null,"texts":null,"category":"People","sort_order":211,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F926-1F3FB","image":"1f926-1f3fb.png","sheet_x":28,"sheet_y":33,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F926-1F3FC","image":"1f926-1f3fc.png","sheet_x":28,"sheet_y":34,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F926-1F3FD","image":"1f926-1f3fd.png","sheet_x":28,"sheet_y":35,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F926-1F3FE","image":"1f926-1f3fe.png","sheet_x":28,"sheet_y":36,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F926-1F3FF","image":"1f926-1f3ff.png","sheet_x":28,"sheet_y":37,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"SNEEZING FACE","unified":"1F927","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f927.png","sheet_x":28,"sheet_y":38,"short_name":"sneezing_face","short_names":["sneezing_face"],"text":null,"texts":null,"category":"People","sort_order":72,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PREGNANT WOMAN","unified":"1F930","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f930.png","sheet_x":28,"sheet_y":39,"short_name":"pregnant_woman","short_names":["pregnant_woman"],"text":null,"texts":null,"category":"People","sort_order":200,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F930-1F3FB","image":"1f930-1f3fb.png","sheet_x":28,"sheet_y":40,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F930-1F3FC","image":"1f930-1f3fc.png","sheet_x":28,"sheet_y":41,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F930-1F3FD","image":"1f930-1f3fd.png","sheet_x":28,"sheet_y":42,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F930-1F3FE","image":"1f930-1f3fe.png","sheet_x":28,"sheet_y":43,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F930-1F3FF","image":"1f930-1f3ff.png","sheet_x":28,"sheet_y":44,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"SELFIE","unified":"1F933","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f933.png","sheet_x":28,"sheet_y":45,"short_name":"selfie","short_names":["selfie"],"text":null,"texts":null,"category":"People","sort_order":126,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F933-1F3FB","image":"1f933-1f3fb.png","sheet_x":28,"sheet_y":46,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F933-1F3FC","image":"1f933-1f3fc.png","sheet_x":28,"sheet_y":47,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F933-1F3FD","image":"1f933-1f3fd.png","sheet_x":28,"sheet_y":48,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F933-1F3FE","image":"1f933-1f3fe.png","sheet_x":29,"sheet_y":0,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F933-1F3FF","image":"1f933-1f3ff.png","sheet_x":29,"sheet_y":1,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"PRINCE","unified":"1F934","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f934.png","sheet_x":29,"sheet_y":2,"short_name":"prince","short_names":["prince"],"text":null,"texts":null,"category":"People","sort_order":196,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F934-1F3FB","image":"1f934-1f3fb.png","sheet_x":29,"sheet_y":3,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F934-1F3FC","image":"1f934-1f3fc.png","sheet_x":29,"sheet_y":4,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F934-1F3FD","image":"1f934-1f3fd.png","sheet_x":29,"sheet_y":5,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F934-1F3FE","image":"1f934-1f3fe.png","sheet_x":29,"sheet_y":6,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F934-1F3FF","image":"1f934-1f3ff.png","sheet_x":29,"sheet_y":7,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"MAN IN TUXEDO","unified":"1F935","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f935.png","sheet_x":29,"sheet_y":8,"short_name":"man_in_tuxedo","short_names":["man_in_tuxedo"],"text":null,"texts":null,"category":"People","sort_order":198,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F935-1F3FB","image":"1f935-1f3fb.png","sheet_x":29,"sheet_y":9,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F935-1F3FC","image":"1f935-1f3fc.png","sheet_x":29,"sheet_y":10,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F935-1F3FD","image":"1f935-1f3fd.png","sheet_x":29,"sheet_y":11,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F935-1F3FE","image":"1f935-1f3fe.png","sheet_x":29,"sheet_y":12,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F935-1F3FF","image":"1f935-1f3ff.png","sheet_x":29,"sheet_y":13,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"MOTHER CHRISTMAS","unified":"1F936","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f936.png","sheet_x":29,"sheet_y":14,"short_name":"mother_christmas","short_names":["mother_christmas"],"text":null,"texts":null,"category":"People","sort_order":193,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F936-1F3FB","image":"1f936-1f3fb.png","sheet_x":29,"sheet_y":15,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F936-1F3FC","image":"1f936-1f3fc.png","sheet_x":29,"sheet_y":16,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F936-1F3FD","image":"1f936-1f3fd.png","sheet_x":29,"sheet_y":17,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F936-1F3FE","image":"1f936-1f3fe.png","sheet_x":29,"sheet_y":18,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F936-1F3FF","image":"1f936-1f3ff.png","sheet_x":29,"sheet_y":19,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"SHRUG","unified":"1F937","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f937.png","sheet_x":29,"sheet_y":20,"short_name":"shrug","short_names":["shrug"],"text":null,"texts":null,"category":"People","sort_order":214,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F937-1F3FB","image":"1f937-1f3fb.png","sheet_x":29,"sheet_y":21,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F937-1F3FC","image":"1f937-1f3fc.png","sheet_x":29,"sheet_y":22,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F937-1F3FD","image":"1f937-1f3fd.png","sheet_x":29,"sheet_y":23,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F937-1F3FE","image":"1f937-1f3fe.png","sheet_x":29,"sheet_y":24,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F937-1F3FF","image":"1f937-1f3ff.png","sheet_x":29,"sheet_y":25,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"PERSON DOING CARTWHEEL","unified":"1F938","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f938.png","sheet_x":29,"sheet_y":26,"short_name":"person_doing_cartwheel","short_names":["person_doing_cartwheel"],"text":null,"texts":null,"category":"Activity","sort_order":30,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F938-1F3FB","image":"1f938-1f3fb.png","sheet_x":29,"sheet_y":27,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F938-1F3FC","image":"1f938-1f3fc.png","sheet_x":29,"sheet_y":28,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F938-1F3FD","image":"1f938-1f3fd.png","sheet_x":29,"sheet_y":29,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F938-1F3FE","image":"1f938-1f3fe.png","sheet_x":29,"sheet_y":30,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F938-1F3FF","image":"1f938-1f3ff.png","sheet_x":29,"sheet_y":31,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"JUGGLING","unified":"1F939","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f939.png","sheet_x":29,"sheet_y":32,"short_name":"juggling","short_names":["juggling"],"text":null,"texts":null,"category":"Activity","sort_order":66,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F939-1F3FB","image":"1f939-1f3fb.png","sheet_x":29,"sheet_y":33,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F939-1F3FC","image":"1f939-1f3fc.png","sheet_x":29,"sheet_y":34,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F939-1F3FD","image":"1f939-1f3fd.png","sheet_x":29,"sheet_y":35,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F939-1F3FE","image":"1f939-1f3fe.png","sheet_x":29,"sheet_y":36,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F939-1F3FF","image":"1f939-1f3ff.png","sheet_x":29,"sheet_y":37,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"FENCER","unified":"1F93A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93a.png","sheet_x":29,"sheet_y":38,"short_name":"fencer","short_names":["fencer"],"text":null,"texts":null,"category":"Activity","sort_order":26,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WRESTLERS","unified":"1F93C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93c.png","sheet_x":29,"sheet_y":39,"short_name":"wrestlers","short_names":["wrestlers"],"text":null,"texts":null,"category":"Activity","sort_order":27,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WATER POLO","unified":"1F93D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93d.png","sheet_x":29,"sheet_y":40,"short_name":"water_polo","short_names":["water_polo"],"text":null,"texts":null,"category":"Activity","sort_order":44,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F93D-1F3FB","image":"1f93d-1f3fb.png","sheet_x":29,"sheet_y":41,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F93D-1F3FC","image":"1f93d-1f3fc.png","sheet_x":29,"sheet_y":42,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F93D-1F3FD","image":"1f93d-1f3fd.png","sheet_x":29,"sheet_y":43,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F93D-1F3FE","image":"1f93d-1f3fe.png","sheet_x":29,"sheet_y":44,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F93D-1F3FF","image":"1f93d-1f3ff.png","sheet_x":29,"sheet_y":45,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"HANDBALL","unified":"1F93E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93e.png","sheet_x":29,"sheet_y":46,"short_name":"handball","short_names":["handball"],"text":null,"texts":null,"category":"Activity","sort_order":35,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F93E-1F3FB","image":"1f93e-1f3fb.png","sheet_x":29,"sheet_y":47,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F93E-1F3FC","image":"1f93e-1f3fc.png","sheet_x":29,"sheet_y":48,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F93E-1F3FD","image":"1f93e-1f3fd.png","sheet_x":30,"sheet_y":0,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F93E-1F3FE","image":"1f93e-1f3fe.png","sheet_x":30,"sheet_y":1,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F93E-1F3FF","image":"1f93e-1f3ff.png","sheet_x":30,"sheet_y":2,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"WILTED FLOWER","unified":"1F940","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f940.png","sheet_x":30,"sheet_y":3,"short_name":"wilted_flower","short_names":["wilted_flower"],"text":null,"texts":null,"category":"Nature","sort_order":108,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DRUM WITH DRUMSTICKS","unified":"1F941","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f941.png","sheet_x":30,"sheet_y":4,"short_name":"drum_with_drumsticks","short_names":["drum_with_drumsticks"],"text":null,"texts":null,"category":"Activity","sort_order":76,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CLINKING GLASSES","unified":"1F942","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f942.png","sheet_x":30,"sheet_y":5,"short_name":"clinking_glasses","short_names":["clinking_glasses"],"text":null,"texts":null,"category":"Foods","sort_order":78,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TUMBLER GLASS","unified":"1F943","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f943.png","sheet_x":30,"sheet_y":6,"short_name":"tumbler_glass","short_names":["tumbler_glass"],"text":null,"texts":null,"category":"Foods","sort_order":80,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SPOON","unified":"1F944","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f944.png","sheet_x":30,"sheet_y":7,"short_name":"spoon","short_names":["spoon"],"text":null,"texts":null,"category":"Foods","sort_order":84,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"GOAL NET","unified":"1F945","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f945.png","sheet_x":30,"sheet_y":8,"short_name":"goal_net","short_names":["goal_net"],"text":null,"texts":null,"category":"Activity","sort_order":11,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FIRST PLACE MEDAL","unified":"1F947","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f947.png","sheet_x":30,"sheet_y":9,"short_name":"first_place_medal","short_names":["first_place_medal"],"text":null,"texts":null,"category":"Activity","sort_order":57,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SECOND PLACE MEDAL","unified":"1F948","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f948.png","sheet_x":30,"sheet_y":10,"short_name":"second_place_medal","short_names":["second_place_medal"],"text":null,"texts":null,"category":"Activity","sort_order":58,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"THIRD PLACE MEDAL","unified":"1F949","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f949.png","sheet_x":30,"sheet_y":11,"short_name":"third_place_medal","short_names":["third_place_medal"],"text":null,"texts":null,"category":"Activity","sort_order":59,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BOXING GLOVE","unified":"1F94A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f94a.png","sheet_x":30,"sheet_y":12,"short_name":"boxing_glove","short_names":["boxing_glove"],"text":null,"texts":null,"category":"Activity","sort_order":18,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MARTIAL ARTS UNIFORM","unified":"1F94B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f94b.png","sheet_x":30,"sheet_y":13,"short_name":"martial_arts_uniform","short_names":["martial_arts_uniform"],"text":null,"texts":null,"category":"Activity","sort_order":19,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CROISSANT","unified":"1F950","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f950.png","sheet_x":30,"sheet_y":14,"short_name":"croissant","short_names":["croissant"],"text":null,"texts":null,"category":"Foods","sort_order":27,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"AVOCADO","unified":"1F951","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f951.png","sheet_x":30,"sheet_y":15,"short_name":"avocado","short_names":["avocado"],"text":null,"texts":null,"category":"Foods","sort_order":15,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CUCUMBER","unified":"1F952","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f952.png","sheet_x":30,"sheet_y":16,"short_name":"cucumber","short_names":["cucumber"],"text":null,"texts":null,"category":"Foods","sort_order":18,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BACON","unified":"1F953","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f953.png","sheet_x":30,"sheet_y":17,"short_name":"bacon","short_names":["bacon"],"text":null,"texts":null,"category":"Foods","sort_order":33,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"POTATO","unified":"1F954","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f954.png","sheet_x":30,"sheet_y":18,"short_name":"potato","short_names":["potato"],"text":null,"texts":null,"category":"Foods","sort_order":22,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CARROT","unified":"1F955","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f955.png","sheet_x":30,"sheet_y":19,"short_name":"carrot","short_names":["carrot"],"text":null,"texts":null,"category":"Foods","sort_order":19,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BAGUETTE BREAD","unified":"1F956","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f956.png","sheet_x":30,"sheet_y":20,"short_name":"baguette_bread","short_names":["baguette_bread"],"text":null,"texts":null,"category":"Foods","sort_order":29,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"GREEN SALAD","unified":"1F957","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f957.png","sheet_x":30,"sheet_y":21,"short_name":"green_salad","short_names":["green_salad"],"text":null,"texts":null,"category":"Foods","sort_order":45,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SHALLOW PAN OF FOOD","unified":"1F958","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f958.png","sheet_x":30,"sheet_y":22,"short_name":"shallow_pan_of_food","short_names":["shallow_pan_of_food"],"text":null,"texts":null,"category":"Foods","sort_order":46,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"STUFFED FLATBREAD","unified":"1F959","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f959.png","sheet_x":30,"sheet_y":23,"short_name":"stuffed_flatbread","short_names":["stuffed_flatbread"],"text":null,"texts":null,"category":"Foods","sort_order":42,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EGG","unified":"1F95A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f95a.png","sheet_x":30,"sheet_y":24,"short_name":"egg","short_names":["egg"],"text":null,"texts":null,"category":"Foods","sort_order":31,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"GLASS OF MILK","unified":"1F95B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f95b.png","sheet_x":30,"sheet_y":25,"short_name":"glass_of_milk","short_names":["glass_of_milk"],"text":null,"texts":null,"category":"Foods","sort_order":71,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PEANUTS","unified":"1F95C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f95c.png","sheet_x":30,"sheet_y":26,"short_name":"peanuts","short_names":["peanuts"],"text":null,"texts":null,"category":"Foods","sort_order":25,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"KIWIFRUIT","unified":"1F95D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f95d.png","sheet_x":30,"sheet_y":27,"short_name":"kiwifruit","short_names":["kiwifruit"],"text":null,"texts":null,"category":"Foods","sort_order":14,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PANCAKES","unified":"1F95E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f95e.png","sheet_x":30,"sheet_y":28,"short_name":"pancakes","short_names":["pancakes"],"text":null,"texts":null,"category":"Foods","sort_order":34,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CRAB","unified":"1F980","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f980.png","sheet_x":30,"sheet_y":29,"short_name":"crab","short_names":["crab"],"text":null,"texts":null,"category":"Nature","sort_order":48,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LION FACE","unified":"1F981","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f981.png","sheet_x":30,"sheet_y":30,"short_name":"lion_face","short_names":["lion_face"],"text":null,"texts":null,"category":"Nature","sort_order":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SCORPION","unified":"1F982","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f982.png","sheet_x":30,"sheet_y":31,"short_name":"scorpion","short_names":["scorpion"],"text":null,"texts":null,"category":"Nature","sort_order":47,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TURKEY","unified":"1F983","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f983.png","sheet_x":30,"sheet_y":32,"short_name":"turkey","short_names":["turkey"],"text":null,"texts":null,"category":"Nature","sort_order":80,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"UNICORN FACE","unified":"1F984","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f984.png","sheet_x":30,"sheet_y":33,"short_name":"unicorn_face","short_names":["unicorn_face"],"text":null,"texts":null,"category":"Nature","sort_order":34,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EAGLE","unified":"1F985","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f985.png","sheet_x":30,"sheet_y":34,"short_name":"eagle","short_names":["eagle"],"text":null,"texts":null,"category":"Nature","sort_order":28,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DUCK","unified":"1F986","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f986.png","sheet_x":30,"sheet_y":35,"short_name":"duck","short_names":["duck"],"text":null,"texts":null,"category":"Nature","sort_order":27,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BAT","unified":"1F987","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f987.png","sheet_x":30,"sheet_y":36,"short_name":"bat","short_names":["bat"],"text":null,"texts":null,"category":"Nature","sort_order":30,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SHARK","unified":"1F988","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f988.png","sheet_x":30,"sheet_y":37,"short_name":"shark","short_names":["shark"],"text":null,"texts":null,"category":"Nature","sort_order":56,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"OWL","unified":"1F989","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f989.png","sheet_x":30,"sheet_y":38,"short_name":"owl","short_names":["owl"],"text":null,"texts":null,"category":"Nature","sort_order":29,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FOX FACE","unified":"1F98A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f98a.png","sheet_x":30,"sheet_y":39,"short_name":"fox_face","short_names":["fox_face"],"text":null,"texts":null,"category":"Nature","sort_order":6,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BUTTERFLY","unified":"1F98B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f98b.png","sheet_x":30,"sheet_y":40,"short_name":"butterfly","short_names":["butterfly"],"text":null,"texts":null,"category":"Nature","sort_order":37,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DEER","unified":"1F98C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f98c.png","sheet_x":30,"sheet_y":41,"short_name":"deer","short_names":["deer"],"text":null,"texts":null,"category":"Nature","sort_order":65,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"GORILLA","unified":"1F98D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f98d.png","sheet_x":30,"sheet_y":42,"short_name":"gorilla","short_names":["gorilla"],"text":null,"texts":null,"category":"Nature","sort_order":70,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LIZARD","unified":"1F98E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f98e.png","sheet_x":30,"sheet_y":43,"short_name":"lizard","short_names":["lizard"],"text":null,"texts":null,"category":"Nature","sort_order":46,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"RHINOCEROS","unified":"1F98F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f98f.png","sheet_x":30,"sheet_y":44,"short_name":"rhinoceros","short_names":["rhinoceros"],"text":null,"texts":null,"category":"Nature","sort_order":69,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SHRIMP","unified":"1F990","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f990.png","sheet_x":30,"sheet_y":45,"short_name":"shrimp","short_names":["shrimp"],"text":null,"texts":null,"category":"Nature","sort_order":51,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SQUID","unified":"1F991","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f991.png","sheet_x":30,"sheet_y":46,"short_name":"squid","short_names":["squid"],"text":null,"texts":null,"category":"Nature","sort_order":49,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CHEESE WEDGE","unified":"1F9C0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f9c0.png","sheet_x":30,"sheet_y":47,"short_name":"cheese_wedge","short_names":["cheese_wedge"],"text":null,"texts":null,"category":"Foods","sort_order":30,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HASH KEY","unified":"0023-20E3","variations":["0023-FE0F-20E3"],"docomo":"E6E0","au":"EB84","softbank":"E210","google":"FE82C","image":"0023-20e3.png","sheet_x":30,"sheet_y":48,"short_name":"hash","short_names":["hash"],"text":null,"texts":null,"category":"Symbols","sort_order":152,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":null,"unified":"002A-20E3","variations":["002A-FE0F-20E3"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"002a-20e3.png","sheet_x":31,"sheet_y":0,"short_name":"keycap_star","short_names":["keycap_star"],"text":null,"texts":null,"category":"Symbols","sort_order":153,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 0","unified":"0030-20E3","variations":["0030-FE0F-20E3"],"docomo":"E6EB","au":"E5AC","softbank":"E225","google":"FE837","image":"0030-20e3.png","sheet_x":31,"sheet_y":1,"short_name":"zero","short_names":["zero"],"text":null,"texts":null,"category":"Symbols","sort_order":140,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 1","unified":"0031-20E3","variations":["0031-FE0F-20E3"],"docomo":"E6E2","au":"E522","softbank":"E21C","google":"FE82E","image":"0031-20e3.png","sheet_x":31,"sheet_y":2,"short_name":"one","short_names":["one"],"text":null,"texts":null,"category":"Symbols","sort_order":141,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 2","unified":"0032-20E3","variations":["0032-FE0F-20E3"],"docomo":"E6E3","au":"E523","softbank":"E21D","google":"FE82F","image":"0032-20e3.png","sheet_x":31,"sheet_y":3,"short_name":"two","short_names":["two"],"text":null,"texts":null,"category":"Symbols","sort_order":142,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 3","unified":"0033-20E3","variations":["0033-FE0F-20E3"],"docomo":"E6E4","au":"E524","softbank":"E21E","google":"FE830","image":"0033-20e3.png","sheet_x":31,"sheet_y":4,"short_name":"three","short_names":["three"],"text":null,"texts":null,"category":"Symbols","sort_order":143,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 4","unified":"0034-20E3","variations":["0034-FE0F-20E3"],"docomo":"E6E5","au":"E525","softbank":"E21F","google":"FE831","image":"0034-20e3.png","sheet_x":31,"sheet_y":5,"short_name":"four","short_names":["four"],"text":null,"texts":null,"category":"Symbols","sort_order":144,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 5","unified":"0035-20E3","variations":["0035-FE0F-20E3"],"docomo":"E6E6","au":"E526","softbank":"E220","google":"FE832","image":"0035-20e3.png","sheet_x":31,"sheet_y":6,"short_name":"five","short_names":["five"],"text":null,"texts":null,"category":"Symbols","sort_order":145,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 6","unified":"0036-20E3","variations":["0036-FE0F-20E3"],"docomo":"E6E7","au":"E527","softbank":"E221","google":"FE833","image":"0036-20e3.png","sheet_x":31,"sheet_y":7,"short_name":"six","short_names":["six"],"text":null,"texts":null,"category":"Symbols","sort_order":146,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 7","unified":"0037-20E3","variations":["0037-FE0F-20E3"],"docomo":"E6E8","au":"E528","softbank":"E222","google":"FE834","image":"0037-20e3.png","sheet_x":31,"sheet_y":8,"short_name":"seven","short_names":["seven"],"text":null,"texts":null,"category":"Symbols","sort_order":147,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 8","unified":"0038-20E3","variations":["0038-FE0F-20E3"],"docomo":"E6E9","au":"E529","softbank":"E223","google":"FE835","image":"0038-20e3.png","sheet_x":31,"sheet_y":9,"short_name":"eight","short_names":["eight"],"text":null,"texts":null,"category":"Symbols","sort_order":148,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 9","unified":"0039-20E3","variations":["0039-FE0F-20E3"],"docomo":"E6EA","au":"E52A","softbank":"E224","google":"FE836","image":"0039-20e3.png","sheet_x":31,"sheet_y":10,"short_name":"nine","short_names":["nine"],"text":null,"texts":null,"category":"Symbols","sort_order":149,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AC","unified":"1F1E6-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1e8.png","sheet_x":31,"sheet_y":11,"short_name":"flag-ac","short_names":["flag-ac"],"text":null,"texts":null,"category":"Flags","sort_order":254,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AD","unified":"1F1E6-1F1E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1e9.png","sheet_x":31,"sheet_y":12,"short_name":"flag-ad","short_names":["flag-ad"],"text":null,"texts":null,"category":"Flags","sort_order":11,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AE","unified":"1F1E6-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1ea.png","sheet_x":31,"sheet_y":13,"short_name":"flag-ae","short_names":["flag-ae"],"text":null,"texts":null,"category":"Flags","sort_order":239,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AF","unified":"1F1E6-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1eb.png","sheet_x":31,"sheet_y":14,"short_name":"flag-af","short_names":["flag-af"],"text":null,"texts":null,"category":"Flags","sort_order":6,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AG","unified":"1F1E6-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1ec.png","sheet_x":31,"sheet_y":15,"short_name":"flag-ag","short_names":["flag-ag"],"text":null,"texts":null,"category":"Flags","sort_order":15,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AI","unified":"1F1E6-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1ee.png","sheet_x":31,"sheet_y":16,"short_name":"flag-ai","short_names":["flag-ai"],"text":null,"texts":null,"category":"Flags","sort_order":13,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AL","unified":"1F1E6-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1f1.png","sheet_x":31,"sheet_y":17,"short_name":"flag-al","short_names":["flag-al"],"text":null,"texts":null,"category":"Flags","sort_order":8,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AM","unified":"1F1E6-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1f2.png","sheet_x":31,"sheet_y":18,"short_name":"flag-am","short_names":["flag-am"],"text":null,"texts":null,"category":"Flags","sort_order":17,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AO","unified":"1F1E6-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1f4.png","sheet_x":31,"sheet_y":19,"short_name":"flag-ao","short_names":["flag-ao"],"text":null,"texts":null,"category":"Flags","sort_order":12,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AQ","unified":"1F1E6-1F1F6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1f6.png","sheet_x":31,"sheet_y":20,"short_name":"flag-aq","short_names":["flag-aq"],"text":null,"texts":null,"category":"Flags","sort_order":14,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AR","unified":"1F1E6-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1f7.png","sheet_x":31,"sheet_y":21,"short_name":"flag-ar","short_names":["flag-ar"],"text":null,"texts":null,"category":"Flags","sort_order":16,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AS","unified":"1F1E6-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1f8.png","sheet_x":31,"sheet_y":22,"short_name":"flag-as","short_names":["flag-as"],"text":null,"texts":null,"category":"Flags","sort_order":10,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AT","unified":"1F1E6-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1f9.png","sheet_x":31,"sheet_y":23,"short_name":"flag-at","short_names":["flag-at"],"text":null,"texts":null,"category":"Flags","sort_order":20,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AU","unified":"1F1E6-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1fa.png","sheet_x":31,"sheet_y":24,"short_name":"flag-au","short_names":["flag-au"],"text":null,"texts":null,"category":"Flags","sort_order":19,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AW","unified":"1F1E6-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1fc.png","sheet_x":31,"sheet_y":25,"short_name":"flag-aw","short_names":["flag-aw"],"text":null,"texts":null,"category":"Flags","sort_order":18,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AX","unified":"1F1E6-1F1FD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1fd.png","sheet_x":31,"sheet_y":26,"short_name":"flag-ax","short_names":["flag-ax"],"text":null,"texts":null,"category":"Flags","sort_order":7,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AZ","unified":"1F1E6-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1ff.png","sheet_x":31,"sheet_y":27,"short_name":"flag-az","short_names":["flag-az"],"text":null,"texts":null,"category":"Flags","sort_order":21,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BA","unified":"1F1E7-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1e6.png","sheet_x":31,"sheet_y":28,"short_name":"flag-ba","short_names":["flag-ba"],"text":null,"texts":null,"category":"Flags","sort_order":34,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BB","unified":"1F1E7-1F1E7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1e7.png","sheet_x":31,"sheet_y":29,"short_name":"flag-bb","short_names":["flag-bb"],"text":null,"texts":null,"category":"Flags","sort_order":25,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BD","unified":"1F1E7-1F1E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1e9.png","sheet_x":31,"sheet_y":30,"short_name":"flag-bd","short_names":["flag-bd"],"text":null,"texts":null,"category":"Flags","sort_order":24,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BE","unified":"1F1E7-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1ea.png","sheet_x":31,"sheet_y":31,"short_name":"flag-be","short_names":["flag-be"],"text":null,"texts":null,"category":"Flags","sort_order":27,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BF","unified":"1F1E7-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1eb.png","sheet_x":31,"sheet_y":32,"short_name":"flag-bf","short_names":["flag-bf"],"text":null,"texts":null,"category":"Flags","sort_order":41,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BG","unified":"1F1E7-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1ec.png","sheet_x":31,"sheet_y":33,"short_name":"flag-bg","short_names":["flag-bg"],"text":null,"texts":null,"category":"Flags","sort_order":40,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BH","unified":"1F1E7-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1ed.png","sheet_x":31,"sheet_y":34,"short_name":"flag-bh","short_names":["flag-bh"],"text":null,"texts":null,"category":"Flags","sort_order":23,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BI","unified":"1F1E7-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1ee.png","sheet_x":31,"sheet_y":35,"short_name":"flag-bi","short_names":["flag-bi"],"text":null,"texts":null,"category":"Flags","sort_order":42,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BJ","unified":"1F1E7-1F1EF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1ef.png","sheet_x":31,"sheet_y":36,"short_name":"flag-bj","short_names":["flag-bj"],"text":null,"texts":null,"category":"Flags","sort_order":29,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BL","unified":"1F1E7-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1f1.png","sheet_x":31,"sheet_y":37,"short_name":"flag-bl","short_names":["flag-bl"],"text":null,"texts":null,"category":"Flags","sort_order":191,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BM","unified":"1F1E7-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1f2.png","sheet_x":31,"sheet_y":38,"short_name":"flag-bm","short_names":["flag-bm"],"text":null,"texts":null,"category":"Flags","sort_order":30,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BN","unified":"1F1E7-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1f3.png","sheet_x":31,"sheet_y":39,"short_name":"flag-bn","short_names":["flag-bn"],"text":null,"texts":null,"category":"Flags","sort_order":39,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BO","unified":"1F1E7-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1f4.png","sheet_x":31,"sheet_y":40,"short_name":"flag-bo","short_names":["flag-bo"],"text":null,"texts":null,"category":"Flags","sort_order":32,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BQ","unified":"1F1E7-1F1F6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1f6.png","sheet_x":31,"sheet_y":41,"short_name":"flag-bq","short_names":["flag-bq"],"text":null,"texts":null,"category":"Flags","sort_order":33,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BR","unified":"1F1E7-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1f7.png","sheet_x":31,"sheet_y":42,"short_name":"flag-br","short_names":["flag-br"],"text":null,"texts":null,"category":"Flags","sort_order":36,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BS","unified":"1F1E7-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1f8.png","sheet_x":31,"sheet_y":43,"short_name":"flag-bs","short_names":["flag-bs"],"text":null,"texts":null,"category":"Flags","sort_order":22,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BT","unified":"1F1E7-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1f9.png","sheet_x":31,"sheet_y":44,"short_name":"flag-bt","short_names":["flag-bt"],"text":null,"texts":null,"category":"Flags","sort_order":31,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BV","unified":"1F1E7-1F1FB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1fb.png","sheet_x":31,"sheet_y":45,"short_name":"flag-bv","short_names":["flag-bv"],"text":null,"texts":null,"category":"Flags","sort_order":255,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BW","unified":"1F1E7-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1fc.png","sheet_x":31,"sheet_y":46,"short_name":"flag-bw","short_names":["flag-bw"],"text":null,"texts":null,"category":"Flags","sort_order":35,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BY","unified":"1F1E7-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1fe.png","sheet_x":31,"sheet_y":47,"short_name":"flag-by","short_names":["flag-by"],"text":null,"texts":null,"category":"Flags","sort_order":26,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BZ","unified":"1F1E7-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1ff.png","sheet_x":31,"sheet_y":48,"short_name":"flag-bz","short_names":["flag-bz"],"text":null,"texts":null,"category":"Flags","sort_order":28,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CA","unified":"1F1E8-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1e6.png","sheet_x":32,"sheet_y":0,"short_name":"flag-ca","short_names":["flag-ca"],"text":null,"texts":null,"category":"Flags","sort_order":46,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CC","unified":"1F1E8-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1e8.png","sheet_x":32,"sheet_y":1,"short_name":"flag-cc","short_names":["flag-cc"],"text":null,"texts":null,"category":"Flags","sort_order":54,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CD","unified":"1F1E8-1F1E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1e9.png","sheet_x":32,"sheet_y":2,"short_name":"flag-cd","short_names":["flag-cd"],"text":null,"texts":null,"category":"Flags","sort_order":58,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CF","unified":"1F1E8-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1eb.png","sheet_x":32,"sheet_y":3,"short_name":"flag-cf","short_names":["flag-cf"],"text":null,"texts":null,"category":"Flags","sort_order":49,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CG","unified":"1F1E8-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1ec.png","sheet_x":32,"sheet_y":4,"short_name":"flag-cg","short_names":["flag-cg"],"text":null,"texts":null,"category":"Flags","sort_order":57,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CH","unified":"1F1E8-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1ed.png","sheet_x":32,"sheet_y":5,"short_name":"flag-ch","short_names":["flag-ch"],"text":null,"texts":null,"category":"Flags","sort_order":221,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CI","unified":"1F1E8-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1ee.png","sheet_x":32,"sheet_y":6,"short_name":"flag-ci","short_names":["flag-ci"],"text":null,"texts":null,"category":"Flags","sort_order":61,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CK","unified":"1F1E8-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1f0.png","sheet_x":32,"sheet_y":7,"short_name":"flag-ck","short_names":["flag-ck"],"text":null,"texts":null,"category":"Flags","sort_order":59,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CL","unified":"1F1E8-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1f1.png","sheet_x":32,"sheet_y":8,"short_name":"flag-cl","short_names":["flag-cl"],"text":null,"texts":null,"category":"Flags","sort_order":51,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CM","unified":"1F1E8-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1f2.png","sheet_x":32,"sheet_y":9,"short_name":"flag-cm","short_names":["flag-cm"],"text":null,"texts":null,"category":"Flags","sort_order":45,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CN","unified":"1F1E8-1F1F3","variations":[],"docomo":null,"au":"EB11","softbank":"E513","google":"FE4ED","image":"1f1e8-1f1f3.png","sheet_x":32,"sheet_y":10,"short_name":"flag-cn","short_names":["flag-cn","cn"],"text":null,"texts":null,"category":"Flags","sort_order":52,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CO","unified":"1F1E8-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1f4.png","sheet_x":32,"sheet_y":11,"short_name":"flag-co","short_names":["flag-co"],"text":null,"texts":null,"category":"Flags","sort_order":55,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CP","unified":"1F1E8-1F1F5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1f5.png","sheet_x":32,"sheet_y":12,"short_name":"flag-cp","short_names":["flag-cp"],"text":null,"texts":null,"category":"Flags","sort_order":256,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CR","unified":"1F1E8-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1f7.png","sheet_x":32,"sheet_y":13,"short_name":"flag-cr","short_names":["flag-cr"],"text":null,"texts":null,"category":"Flags","sort_order":60,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CU","unified":"1F1E8-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1fa.png","sheet_x":32,"sheet_y":14,"short_name":"flag-cu","short_names":["flag-cu"],"text":null,"texts":null,"category":"Flags","sort_order":63,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CV","unified":"1F1E8-1F1FB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1fb.png","sheet_x":32,"sheet_y":15,"short_name":"flag-cv","short_names":["flag-cv"],"text":null,"texts":null,"category":"Flags","sort_order":43,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CW","unified":"1F1E8-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1fc.png","sheet_x":32,"sheet_y":16,"short_name":"flag-cw","short_names":["flag-cw"],"text":null,"texts":null,"category":"Flags","sort_order":64,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CX","unified":"1F1E8-1F1FD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1fd.png","sheet_x":32,"sheet_y":17,"short_name":"flag-cx","short_names":["flag-cx"],"text":null,"texts":null,"category":"Flags","sort_order":53,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CY","unified":"1F1E8-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1fe.png","sheet_x":32,"sheet_y":18,"short_name":"flag-cy","short_names":["flag-cy"],"text":null,"texts":null,"category":"Flags","sort_order":65,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CZ","unified":"1F1E8-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1ff.png","sheet_x":32,"sheet_y":19,"short_name":"flag-cz","short_names":["flag-cz"],"text":null,"texts":null,"category":"Flags","sort_order":66,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS DE","unified":"1F1E9-1F1EA","variations":[],"docomo":null,"au":"EB0E","softbank":"E50E","google":"FE4E8","image":"1f1e9-1f1ea.png","sheet_x":32,"sheet_y":20,"short_name":"flag-de","short_names":["flag-de","de"],"text":null,"texts":null,"category":"Flags","sort_order":90,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS DG","unified":"1F1E9-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e9-1f1ec.png","sheet_x":32,"sheet_y":21,"short_name":"flag-dg","short_names":["flag-dg"],"text":null,"texts":null,"category":"Flags","sort_order":257,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS DJ","unified":"1F1E9-1F1EF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e9-1f1ef.png","sheet_x":32,"sheet_y":22,"short_name":"flag-dj","short_names":["flag-dj"],"text":null,"texts":null,"category":"Flags","sort_order":68,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS DK","unified":"1F1E9-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e9-1f1f0.png","sheet_x":32,"sheet_y":23,"short_name":"flag-dk","short_names":["flag-dk"],"text":null,"texts":null,"category":"Flags","sort_order":67,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS DM","unified":"1F1E9-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e9-1f1f2.png","sheet_x":32,"sheet_y":24,"short_name":"flag-dm","short_names":["flag-dm"],"text":null,"texts":null,"category":"Flags","sort_order":69,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS DO","unified":"1F1E9-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e9-1f1f4.png","sheet_x":32,"sheet_y":25,"short_name":"flag-do","short_names":["flag-do"],"text":null,"texts":null,"category":"Flags","sort_order":70,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS DZ","unified":"1F1E9-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e9-1f1ff.png","sheet_x":32,"sheet_y":26,"short_name":"flag-dz","short_names":["flag-dz"],"text":null,"texts":null,"category":"Flags","sort_order":9,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS EA","unified":"1F1EA-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ea-1f1e6.png","sheet_x":32,"sheet_y":27,"short_name":"flag-ea","short_names":["flag-ea"],"text":null,"texts":null,"category":"Flags","sort_order":258,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS EC","unified":"1F1EA-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ea-1f1e8.png","sheet_x":32,"sheet_y":28,"short_name":"flag-ec","short_names":["flag-ec"],"text":null,"texts":null,"category":"Flags","sort_order":71,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS EE","unified":"1F1EA-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ea-1f1ea.png","sheet_x":32,"sheet_y":29,"short_name":"flag-ee","short_names":["flag-ee"],"text":null,"texts":null,"category":"Flags","sort_order":76,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS EG","unified":"1F1EA-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ea-1f1ec.png","sheet_x":32,"sheet_y":30,"short_name":"flag-eg","short_names":["flag-eg"],"text":null,"texts":null,"category":"Flags","sort_order":72,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS EH","unified":"1F1EA-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ea-1f1ed.png","sheet_x":32,"sheet_y":31,"short_name":"flag-eh","short_names":["flag-eh"],"text":null,"texts":null,"category":"Flags","sort_order":250,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ER","unified":"1F1EA-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ea-1f1f7.png","sheet_x":32,"sheet_y":32,"short_name":"flag-er","short_names":["flag-er"],"text":null,"texts":null,"category":"Flags","sort_order":75,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ES","unified":"1F1EA-1F1F8","variations":[],"docomo":null,"au":"E5D5","softbank":"E511","google":"FE4EB","image":"1f1ea-1f1f8.png","sheet_x":32,"sheet_y":33,"short_name":"flag-es","short_names":["flag-es","es"],"text":null,"texts":null,"category":"Flags","sort_order":215,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ET","unified":"1F1EA-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ea-1f1f9.png","sheet_x":32,"sheet_y":34,"short_name":"flag-et","short_names":["flag-et"],"text":null,"texts":null,"category":"Flags","sort_order":77,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS EU","unified":"1F1EA-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ea-1f1fa.png","sheet_x":32,"sheet_y":35,"short_name":"flag-eu","short_names":["flag-eu"],"text":null,"texts":null,"category":"Flags","sort_order":78,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS FI","unified":"1F1EB-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1eb-1f1ee.png","sheet_x":32,"sheet_y":36,"short_name":"flag-fi","short_names":["flag-fi"],"text":null,"texts":null,"category":"Flags","sort_order":82,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS FJ","unified":"1F1EB-1F1EF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1eb-1f1ef.png","sheet_x":32,"sheet_y":37,"short_name":"flag-fj","short_names":["flag-fj"],"text":null,"texts":null,"category":"Flags","sort_order":81,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS FK","unified":"1F1EB-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1eb-1f1f0.png","sheet_x":32,"sheet_y":38,"short_name":"flag-fk","short_names":["flag-fk"],"text":null,"texts":null,"category":"Flags","sort_order":79,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS FM","unified":"1F1EB-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1eb-1f1f2.png","sheet_x":32,"sheet_y":39,"short_name":"flag-fm","short_names":["flag-fm"],"text":null,"texts":null,"category":"Flags","sort_order":150,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS FO","unified":"1F1EB-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1eb-1f1f4.png","sheet_x":32,"sheet_y":40,"short_name":"flag-fo","short_names":["flag-fo"],"text":null,"texts":null,"category":"Flags","sort_order":80,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS FR","unified":"1F1EB-1F1F7","variations":[],"docomo":null,"au":"EAFA","softbank":"E50D","google":"FE4E7","image":"1f1eb-1f1f7.png","sheet_x":32,"sheet_y":41,"short_name":"flag-fr","short_names":["flag-fr","fr"],"text":null,"texts":null,"category":"Flags","sort_order":83,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GA","unified":"1F1EC-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1e6.png","sheet_x":32,"sheet_y":42,"short_name":"flag-ga","short_names":["flag-ga"],"text":null,"texts":null,"category":"Flags","sort_order":87,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GB","unified":"1F1EC-1F1E7","variations":[],"docomo":null,"au":"EB10","softbank":"E510","google":"FE4EA","image":"1f1ec-1f1e7.png","sheet_x":32,"sheet_y":43,"short_name":"flag-gb","short_names":["flag-gb","gb","uk"],"text":null,"texts":null,"category":"Flags","sort_order":240,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GD","unified":"1F1EC-1F1E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1e9.png","sheet_x":32,"sheet_y":44,"short_name":"flag-gd","short_names":["flag-gd"],"text":null,"texts":null,"category":"Flags","sort_order":95,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GE","unified":"1F1EC-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1ea.png","sheet_x":32,"sheet_y":45,"short_name":"flag-ge","short_names":["flag-ge"],"text":null,"texts":null,"category":"Flags","sort_order":89,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GF","unified":"1F1EC-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1eb.png","sheet_x":32,"sheet_y":46,"short_name":"flag-gf","short_names":["flag-gf"],"text":null,"texts":null,"category":"Flags","sort_order":84,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GG","unified":"1F1EC-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1ec.png","sheet_x":32,"sheet_y":47,"short_name":"flag-gg","short_names":["flag-gg"],"text":null,"texts":null,"category":"Flags","sort_order":99,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GH","unified":"1F1EC-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1ed.png","sheet_x":32,"sheet_y":48,"short_name":"flag-gh","short_names":["flag-gh"],"text":null,"texts":null,"category":"Flags","sort_order":91,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GI","unified":"1F1EC-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1ee.png","sheet_x":33,"sheet_y":0,"short_name":"flag-gi","short_names":["flag-gi"],"text":null,"texts":null,"category":"Flags","sort_order":92,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GL","unified":"1F1EC-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1f1.png","sheet_x":33,"sheet_y":1,"short_name":"flag-gl","short_names":["flag-gl"],"text":null,"texts":null,"category":"Flags","sort_order":94,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GM","unified":"1F1EC-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1f2.png","sheet_x":33,"sheet_y":2,"short_name":"flag-gm","short_names":["flag-gm"],"text":null,"texts":null,"category":"Flags","sort_order":88,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GN","unified":"1F1EC-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1f3.png","sheet_x":33,"sheet_y":3,"short_name":"flag-gn","short_names":["flag-gn"],"text":null,"texts":null,"category":"Flags","sort_order":100,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GP","unified":"1F1EC-1F1F5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1f5.png","sheet_x":33,"sheet_y":4,"short_name":"flag-gp","short_names":["flag-gp"],"text":null,"texts":null,"category":"Flags","sort_order":96,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GQ","unified":"1F1EC-1F1F6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1f6.png","sheet_x":33,"sheet_y":5,"short_name":"flag-gq","short_names":["flag-gq"],"text":null,"texts":null,"category":"Flags","sort_order":74,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GR","unified":"1F1EC-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1f7.png","sheet_x":33,"sheet_y":6,"short_name":"flag-gr","short_names":["flag-gr"],"text":null,"texts":null,"category":"Flags","sort_order":93,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GS","unified":"1F1EC-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1f8.png","sheet_x":33,"sheet_y":7,"short_name":"flag-gs","short_names":["flag-gs"],"text":null,"texts":null,"category":"Flags","sort_order":212,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GT","unified":"1F1EC-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1f9.png","sheet_x":33,"sheet_y":8,"short_name":"flag-gt","short_names":["flag-gt"],"text":null,"texts":null,"category":"Flags","sort_order":98,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GU","unified":"1F1EC-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1fa.png","sheet_x":33,"sheet_y":9,"short_name":"flag-gu","short_names":["flag-gu"],"text":null,"texts":null,"category":"Flags","sort_order":97,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GW","unified":"1F1EC-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1fc.png","sheet_x":33,"sheet_y":10,"short_name":"flag-gw","short_names":["flag-gw"],"text":null,"texts":null,"category":"Flags","sort_order":101,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GY","unified":"1F1EC-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1fe.png","sheet_x":33,"sheet_y":11,"short_name":"flag-gy","short_names":["flag-gy"],"text":null,"texts":null,"category":"Flags","sort_order":102,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS HK","unified":"1F1ED-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ed-1f1f0.png","sheet_x":33,"sheet_y":12,"short_name":"flag-hk","short_names":["flag-hk"],"text":null,"texts":null,"category":"Flags","sort_order":105,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS HM","unified":"1F1ED-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ed-1f1f2.png","sheet_x":33,"sheet_y":13,"short_name":"flag-hm","short_names":["flag-hm"],"text":null,"texts":null,"category":"Flags","sort_order":259,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS HN","unified":"1F1ED-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ed-1f1f3.png","sheet_x":33,"sheet_y":14,"short_name":"flag-hn","short_names":["flag-hn"],"text":null,"texts":null,"category":"Flags","sort_order":104,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS HR","unified":"1F1ED-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ed-1f1f7.png","sheet_x":33,"sheet_y":15,"short_name":"flag-hr","short_names":["flag-hr"],"text":null,"texts":null,"category":"Flags","sort_order":62,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS HT","unified":"1F1ED-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ed-1f1f9.png","sheet_x":33,"sheet_y":16,"short_name":"flag-ht","short_names":["flag-ht"],"text":null,"texts":null,"category":"Flags","sort_order":103,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS HU","unified":"1F1ED-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ed-1f1fa.png","sheet_x":33,"sheet_y":17,"short_name":"flag-hu","short_names":["flag-hu"],"text":null,"texts":null,"category":"Flags","sort_order":106,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IC","unified":"1F1EE-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1e8.png","sheet_x":33,"sheet_y":18,"short_name":"flag-ic","short_names":["flag-ic"],"text":null,"texts":null,"category":"Flags","sort_order":47,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ID","unified":"1F1EE-1F1E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1e9.png","sheet_x":33,"sheet_y":19,"short_name":"flag-id","short_names":["flag-id"],"text":null,"texts":null,"category":"Flags","sort_order":109,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IE","unified":"1F1EE-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1ea.png","sheet_x":33,"sheet_y":20,"short_name":"flag-ie","short_names":["flag-ie"],"text":null,"texts":null,"category":"Flags","sort_order":112,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IL","unified":"1F1EE-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1f1.png","sheet_x":33,"sheet_y":21,"short_name":"flag-il","short_names":["flag-il"],"text":null,"texts":null,"category":"Flags","sort_order":114,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IM","unified":"1F1EE-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1f2.png","sheet_x":33,"sheet_y":22,"short_name":"flag-im","short_names":["flag-im"],"text":null,"texts":null,"category":"Flags","sort_order":113,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IN","unified":"1F1EE-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1f3.png","sheet_x":33,"sheet_y":23,"short_name":"flag-in","short_names":["flag-in"],"text":null,"texts":null,"category":"Flags","sort_order":108,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IO","unified":"1F1EE-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1f4.png","sheet_x":33,"sheet_y":24,"short_name":"flag-io","short_names":["flag-io"],"text":null,"texts":null,"category":"Flags","sort_order":37,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IQ","unified":"1F1EE-1F1F6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1f6.png","sheet_x":33,"sheet_y":25,"short_name":"flag-iq","short_names":["flag-iq"],"text":null,"texts":null,"category":"Flags","sort_order":111,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IR","unified":"1F1EE-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1f7.png","sheet_x":33,"sheet_y":26,"short_name":"flag-ir","short_names":["flag-ir"],"text":null,"texts":null,"category":"Flags","sort_order":110,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IS","unified":"1F1EE-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1f8.png","sheet_x":33,"sheet_y":27,"short_name":"flag-is","short_names":["flag-is"],"text":null,"texts":null,"category":"Flags","sort_order":107,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IT","unified":"1F1EE-1F1F9","variations":[],"docomo":null,"au":"EB0F","softbank":"E50F","google":"FE4E9","image":"1f1ee-1f1f9.png","sheet_x":33,"sheet_y":28,"short_name":"flag-it","short_names":["flag-it","it"],"text":null,"texts":null,"category":"Flags","sort_order":115,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS JE","unified":"1F1EF-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ef-1f1ea.png","sheet_x":33,"sheet_y":29,"short_name":"flag-je","short_names":["flag-je"],"text":null,"texts":null,"category":"Flags","sort_order":119,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS JM","unified":"1F1EF-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ef-1f1f2.png","sheet_x":33,"sheet_y":30,"short_name":"flag-jm","short_names":["flag-jm"],"text":null,"texts":null,"category":"Flags","sort_order":116,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS JO","unified":"1F1EF-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ef-1f1f4.png","sheet_x":33,"sheet_y":31,"short_name":"flag-jo","short_names":["flag-jo"],"text":null,"texts":null,"category":"Flags","sort_order":120,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS JP","unified":"1F1EF-1F1F5","variations":[],"docomo":null,"au":"E4CC","softbank":"E50B","google":"FE4E5","image":"1f1ef-1f1f5.png","sheet_x":33,"sheet_y":32,"short_name":"flag-jp","short_names":["flag-jp","jp"],"text":null,"texts":null,"category":"Flags","sort_order":117,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KE","unified":"1F1F0-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1ea.png","sheet_x":33,"sheet_y":33,"short_name":"flag-ke","short_names":["flag-ke"],"text":null,"texts":null,"category":"Flags","sort_order":122,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KG","unified":"1F1F0-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1ec.png","sheet_x":33,"sheet_y":34,"short_name":"flag-kg","short_names":["flag-kg"],"text":null,"texts":null,"category":"Flags","sort_order":126,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KH","unified":"1F1F0-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1ed.png","sheet_x":33,"sheet_y":35,"short_name":"flag-kh","short_names":["flag-kh"],"text":null,"texts":null,"category":"Flags","sort_order":44,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KI","unified":"1F1F0-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1ee.png","sheet_x":33,"sheet_y":36,"short_name":"flag-ki","short_names":["flag-ki"],"text":null,"texts":null,"category":"Flags","sort_order":123,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KM","unified":"1F1F0-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1f2.png","sheet_x":33,"sheet_y":37,"short_name":"flag-km","short_names":["flag-km"],"text":null,"texts":null,"category":"Flags","sort_order":56,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KN","unified":"1F1F0-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1f3.png","sheet_x":33,"sheet_y":38,"short_name":"flag-kn","short_names":["flag-kn"],"text":null,"texts":null,"category":"Flags","sort_order":193,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KP","unified":"1F1F0-1F1F5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1f5.png","sheet_x":33,"sheet_y":39,"short_name":"flag-kp","short_names":["flag-kp"],"text":null,"texts":null,"category":"Flags","sort_order":171,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KR","unified":"1F1F0-1F1F7","variations":[],"docomo":null,"au":"EB12","softbank":"E514","google":"FE4EE","image":"1f1f0-1f1f7.png","sheet_x":33,"sheet_y":40,"short_name":"flag-kr","short_names":["flag-kr","kr"],"text":null,"texts":null,"category":"Flags","sort_order":213,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KW","unified":"1F1F0-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1fc.png","sheet_x":33,"sheet_y":41,"short_name":"flag-kw","short_names":["flag-kw"],"text":null,"texts":null,"category":"Flags","sort_order":125,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KY","unified":"1F1F0-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1fe.png","sheet_x":33,"sheet_y":42,"short_name":"flag-ky","short_names":["flag-ky"],"text":null,"texts":null,"category":"Flags","sort_order":48,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KZ","unified":"1F1F0-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1ff.png","sheet_x":33,"sheet_y":43,"short_name":"flag-kz","short_names":["flag-kz"],"text":null,"texts":null,"category":"Flags","sort_order":121,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LA","unified":"1F1F1-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1e6.png","sheet_x":33,"sheet_y":44,"short_name":"flag-la","short_names":["flag-la"],"text":null,"texts":null,"category":"Flags","sort_order":127,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LB","unified":"1F1F1-1F1E7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1e7.png","sheet_x":33,"sheet_y":45,"short_name":"flag-lb","short_names":["flag-lb"],"text":null,"texts":null,"category":"Flags","sort_order":129,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LC","unified":"1F1F1-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1e8.png","sheet_x":33,"sheet_y":46,"short_name":"flag-lc","short_names":["flag-lc"],"text":null,"texts":null,"category":"Flags","sort_order":194,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LI","unified":"1F1F1-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1ee.png","sheet_x":33,"sheet_y":47,"short_name":"flag-li","short_names":["flag-li"],"text":null,"texts":null,"category":"Flags","sort_order":133,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LK","unified":"1F1F1-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1f0.png","sheet_x":33,"sheet_y":48,"short_name":"flag-lk","short_names":["flag-lk"],"text":null,"texts":null,"category":"Flags","sort_order":216,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LR","unified":"1F1F1-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1f7.png","sheet_x":34,"sheet_y":0,"short_name":"flag-lr","short_names":["flag-lr"],"text":null,"texts":null,"category":"Flags","sort_order":131,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LS","unified":"1F1F1-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1f8.png","sheet_x":34,"sheet_y":1,"short_name":"flag-ls","short_names":["flag-ls"],"text":null,"texts":null,"category":"Flags","sort_order":130,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LT","unified":"1F1F1-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1f9.png","sheet_x":34,"sheet_y":2,"short_name":"flag-lt","short_names":["flag-lt"],"text":null,"texts":null,"category":"Flags","sort_order":134,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LU","unified":"1F1F1-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1fa.png","sheet_x":34,"sheet_y":3,"short_name":"flag-lu","short_names":["flag-lu"],"text":null,"texts":null,"category":"Flags","sort_order":135,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LV","unified":"1F1F1-1F1FB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1fb.png","sheet_x":34,"sheet_y":4,"short_name":"flag-lv","short_names":["flag-lv"],"text":null,"texts":null,"category":"Flags","sort_order":128,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LY","unified":"1F1F1-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1fe.png","sheet_x":34,"sheet_y":5,"short_name":"flag-ly","short_names":["flag-ly"],"text":null,"texts":null,"category":"Flags","sort_order":132,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MA","unified":"1F1F2-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1e6.png","sheet_x":34,"sheet_y":6,"short_name":"flag-ma","short_names":["flag-ma"],"text":null,"texts":null,"category":"Flags","sort_order":156,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MC","unified":"1F1F2-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1e8.png","sheet_x":34,"sheet_y":7,"short_name":"flag-mc","short_names":["flag-mc"],"text":null,"texts":null,"category":"Flags","sort_order":152,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MD","unified":"1F1F2-1F1E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1e9.png","sheet_x":34,"sheet_y":8,"short_name":"flag-md","short_names":["flag-md"],"text":null,"texts":null,"category":"Flags","sort_order":151,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ME","unified":"1F1F2-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1ea.png","sheet_x":34,"sheet_y":9,"short_name":"flag-me","short_names":["flag-me"],"text":null,"texts":null,"category":"Flags","sort_order":154,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MF","unified":"1F1F2-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1eb.png","sheet_x":34,"sheet_y":10,"short_name":"flag-mf","short_names":["flag-mf"],"text":null,"texts":null,"category":"Flags","sort_order":260,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MG","unified":"1F1F2-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1ec.png","sheet_x":34,"sheet_y":11,"short_name":"flag-mg","short_names":["flag-mg"],"text":null,"texts":null,"category":"Flags","sort_order":138,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MH","unified":"1F1F2-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1ed.png","sheet_x":34,"sheet_y":12,"short_name":"flag-mh","short_names":["flag-mh"],"text":null,"texts":null,"category":"Flags","sort_order":144,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MK","unified":"1F1F2-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f0.png","sheet_x":34,"sheet_y":13,"short_name":"flag-mk","short_names":["flag-mk"],"text":null,"texts":null,"category":"Flags","sort_order":137,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ML","unified":"1F1F2-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f1.png","sheet_x":34,"sheet_y":14,"short_name":"flag-ml","short_names":["flag-ml"],"text":null,"texts":null,"category":"Flags","sort_order":142,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MM","unified":"1F1F2-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f2.png","sheet_x":34,"sheet_y":15,"short_name":"flag-mm","short_names":["flag-mm"],"text":null,"texts":null,"category":"Flags","sort_order":158,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MN","unified":"1F1F2-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f3.png","sheet_x":34,"sheet_y":16,"short_name":"flag-mn","short_names":["flag-mn"],"text":null,"texts":null,"category":"Flags","sort_order":153,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MO","unified":"1F1F2-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f4.png","sheet_x":34,"sheet_y":17,"short_name":"flag-mo","short_names":["flag-mo"],"text":null,"texts":null,"category":"Flags","sort_order":136,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MP","unified":"1F1F2-1F1F5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f5.png","sheet_x":34,"sheet_y":18,"short_name":"flag-mp","short_names":["flag-mp"],"text":null,"texts":null,"category":"Flags","sort_order":170,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MQ","unified":"1F1F2-1F1F6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f6.png","sheet_x":34,"sheet_y":19,"short_name":"flag-mq","short_names":["flag-mq"],"text":null,"texts":null,"category":"Flags","sort_order":145,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MR","unified":"1F1F2-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f7.png","sheet_x":34,"sheet_y":20,"short_name":"flag-mr","short_names":["flag-mr"],"text":null,"texts":null,"category":"Flags","sort_order":146,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MS","unified":"1F1F2-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f8.png","sheet_x":34,"sheet_y":21,"short_name":"flag-ms","short_names":["flag-ms"],"text":null,"texts":null,"category":"Flags","sort_order":155,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MT","unified":"1F1F2-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f9.png","sheet_x":34,"sheet_y":22,"short_name":"flag-mt","short_names":["flag-mt"],"text":null,"texts":null,"category":"Flags","sort_order":143,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MU","unified":"1F1F2-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1fa.png","sheet_x":34,"sheet_y":23,"short_name":"flag-mu","short_names":["flag-mu"],"text":null,"texts":null,"category":"Flags","sort_order":147,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MV","unified":"1F1F2-1F1FB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1fb.png","sheet_x":34,"sheet_y":24,"short_name":"flag-mv","short_names":["flag-mv"],"text":null,"texts":null,"category":"Flags","sort_order":141,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MW","unified":"1F1F2-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1fc.png","sheet_x":34,"sheet_y":25,"short_name":"flag-mw","short_names":["flag-mw"],"text":null,"texts":null,"category":"Flags","sort_order":139,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MX","unified":"1F1F2-1F1FD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1fd.png","sheet_x":34,"sheet_y":26,"short_name":"flag-mx","short_names":["flag-mx"],"text":null,"texts":null,"category":"Flags","sort_order":149,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MY","unified":"1F1F2-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1fe.png","sheet_x":34,"sheet_y":27,"short_name":"flag-my","short_names":["flag-my"],"text":null,"texts":null,"category":"Flags","sort_order":140,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MZ","unified":"1F1F2-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1ff.png","sheet_x":34,"sheet_y":28,"short_name":"flag-mz","short_names":["flag-mz"],"text":null,"texts":null,"category":"Flags","sort_order":157,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NA","unified":"1F1F3-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1e6.png","sheet_x":34,"sheet_y":29,"short_name":"flag-na","short_names":["flag-na"],"text":null,"texts":null,"category":"Flags","sort_order":159,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NC","unified":"1F1F3-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1e8.png","sheet_x":34,"sheet_y":30,"short_name":"flag-nc","short_names":["flag-nc"],"text":null,"texts":null,"category":"Flags","sort_order":163,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NE","unified":"1F1F3-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1ea.png","sheet_x":34,"sheet_y":31,"short_name":"flag-ne","short_names":["flag-ne"],"text":null,"texts":null,"category":"Flags","sort_order":166,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NF","unified":"1F1F3-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1eb.png","sheet_x":34,"sheet_y":32,"short_name":"flag-nf","short_names":["flag-nf"],"text":null,"texts":null,"category":"Flags","sort_order":169,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NG","unified":"1F1F3-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1ec.png","sheet_x":34,"sheet_y":33,"short_name":"flag-ng","short_names":["flag-ng"],"text":null,"texts":null,"category":"Flags","sort_order":167,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NI","unified":"1F1F3-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1ee.png","sheet_x":34,"sheet_y":34,"short_name":"flag-ni","short_names":["flag-ni"],"text":null,"texts":null,"category":"Flags","sort_order":165,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NL","unified":"1F1F3-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1f1.png","sheet_x":34,"sheet_y":35,"short_name":"flag-nl","short_names":["flag-nl"],"text":null,"texts":null,"category":"Flags","sort_order":162,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NO","unified":"1F1F3-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1f4.png","sheet_x":34,"sheet_y":36,"short_name":"flag-no","short_names":["flag-no"],"text":null,"texts":null,"category":"Flags","sort_order":172,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NP","unified":"1F1F3-1F1F5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1f5.png","sheet_x":34,"sheet_y":37,"short_name":"flag-np","short_names":["flag-np"],"text":null,"texts":null,"category":"Flags","sort_order":161,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NR","unified":"1F1F3-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1f7.png","sheet_x":34,"sheet_y":38,"short_name":"flag-nr","short_names":["flag-nr"],"text":null,"texts":null,"category":"Flags","sort_order":160,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NU","unified":"1F1F3-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1fa.png","sheet_x":34,"sheet_y":39,"short_name":"flag-nu","short_names":["flag-nu"],"text":null,"texts":null,"category":"Flags","sort_order":168,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NZ","unified":"1F1F3-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1ff.png","sheet_x":34,"sheet_y":40,"short_name":"flag-nz","short_names":["flag-nz"],"text":null,"texts":null,"category":"Flags","sort_order":164,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS OM","unified":"1F1F4-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f4-1f1f2.png","sheet_x":34,"sheet_y":41,"short_name":"flag-om","short_names":["flag-om"],"text":null,"texts":null,"category":"Flags","sort_order":173,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PA","unified":"1F1F5-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1e6.png","sheet_x":34,"sheet_y":42,"short_name":"flag-pa","short_names":["flag-pa"],"text":null,"texts":null,"category":"Flags","sort_order":177,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PE","unified":"1F1F5-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1ea.png","sheet_x":34,"sheet_y":43,"short_name":"flag-pe","short_names":["flag-pe"],"text":null,"texts":null,"category":"Flags","sort_order":180,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PF","unified":"1F1F5-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1eb.png","sheet_x":34,"sheet_y":44,"short_name":"flag-pf","short_names":["flag-pf"],"text":null,"texts":null,"category":"Flags","sort_order":85,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PG","unified":"1F1F5-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1ec.png","sheet_x":34,"sheet_y":45,"short_name":"flag-pg","short_names":["flag-pg"],"text":null,"texts":null,"category":"Flags","sort_order":178,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PH","unified":"1F1F5-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1ed.png","sheet_x":34,"sheet_y":46,"short_name":"flag-ph","short_names":["flag-ph"],"text":null,"texts":null,"category":"Flags","sort_order":181,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PK","unified":"1F1F5-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1f0.png","sheet_x":34,"sheet_y":47,"short_name":"flag-pk","short_names":["flag-pk"],"text":null,"texts":null,"category":"Flags","sort_order":174,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PL","unified":"1F1F5-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1f1.png","sheet_x":34,"sheet_y":48,"short_name":"flag-pl","short_names":["flag-pl"],"text":null,"texts":null,"category":"Flags","sort_order":183,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PM","unified":"1F1F5-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1f2.png","sheet_x":35,"sheet_y":0,"short_name":"flag-pm","short_names":["flag-pm"],"text":null,"texts":null,"category":"Flags","sort_order":195,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PN","unified":"1F1F5-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1f3.png","sheet_x":35,"sheet_y":1,"short_name":"flag-pn","short_names":["flag-pn"],"text":null,"texts":null,"category":"Flags","sort_order":182,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PR","unified":"1F1F5-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1f7.png","sheet_x":35,"sheet_y":2,"short_name":"flag-pr","short_names":["flag-pr"],"text":null,"texts":null,"category":"Flags","sort_order":185,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PS","unified":"1F1F5-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1f8.png","sheet_x":35,"sheet_y":3,"short_name":"flag-ps","short_names":["flag-ps"],"text":null,"texts":null,"category":"Flags","sort_order":176,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PT","unified":"1F1F5-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1f9.png","sheet_x":35,"sheet_y":4,"short_name":"flag-pt","short_names":["flag-pt"],"text":null,"texts":null,"category":"Flags","sort_order":184,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PW","unified":"1F1F5-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1fc.png","sheet_x":35,"sheet_y":5,"short_name":"flag-pw","short_names":["flag-pw"],"text":null,"texts":null,"category":"Flags","sort_order":175,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PY","unified":"1F1F5-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1fe.png","sheet_x":35,"sheet_y":6,"short_name":"flag-py","short_names":["flag-py"],"text":null,"texts":null,"category":"Flags","sort_order":179,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS QA","unified":"1F1F6-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f6-1f1e6.png","sheet_x":35,"sheet_y":7,"short_name":"flag-qa","short_names":["flag-qa"],"text":null,"texts":null,"category":"Flags","sort_order":186,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS RE","unified":"1F1F7-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f7-1f1ea.png","sheet_x":35,"sheet_y":8,"short_name":"flag-re","short_names":["flag-re"],"text":null,"texts":null,"category":"Flags","sort_order":187,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS RO","unified":"1F1F7-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f7-1f1f4.png","sheet_x":35,"sheet_y":9,"short_name":"flag-ro","short_names":["flag-ro"],"text":null,"texts":null,"category":"Flags","sort_order":188,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS RS","unified":"1F1F7-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f7-1f1f8.png","sheet_x":35,"sheet_y":10,"short_name":"flag-rs","short_names":["flag-rs"],"text":null,"texts":null,"category":"Flags","sort_order":202,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS RU","unified":"1F1F7-1F1FA","variations":[],"docomo":null,"au":"E5D6","softbank":"E512","google":"FE4EC","image":"1f1f7-1f1fa.png","sheet_x":35,"sheet_y":11,"short_name":"flag-ru","short_names":["flag-ru","ru"],"text":null,"texts":null,"category":"Flags","sort_order":189,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS RW","unified":"1F1F7-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f7-1f1fc.png","sheet_x":35,"sheet_y":12,"short_name":"flag-rw","short_names":["flag-rw"],"text":null,"texts":null,"category":"Flags","sort_order":190,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SA","unified":"1F1F8-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1e6.png","sheet_x":35,"sheet_y":13,"short_name":"flag-sa","short_names":["flag-sa"],"text":null,"texts":null,"category":"Flags","sort_order":200,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SB","unified":"1F1F8-1F1E7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1e7.png","sheet_x":35,"sheet_y":14,"short_name":"flag-sb","short_names":["flag-sb"],"text":null,"texts":null,"category":"Flags","sort_order":209,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SC","unified":"1F1F8-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1e8.png","sheet_x":35,"sheet_y":15,"short_name":"flag-sc","short_names":["flag-sc"],"text":null,"texts":null,"category":"Flags","sort_order":203,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SD","unified":"1F1F8-1F1E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1e9.png","sheet_x":35,"sheet_y":16,"short_name":"flag-sd","short_names":["flag-sd"],"text":null,"texts":null,"category":"Flags","sort_order":217,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SE","unified":"1F1F8-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1ea.png","sheet_x":35,"sheet_y":17,"short_name":"flag-se","short_names":["flag-se"],"text":null,"texts":null,"category":"Flags","sort_order":220,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SG","unified":"1F1F8-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1ec.png","sheet_x":35,"sheet_y":18,"short_name":"flag-sg","short_names":["flag-sg"],"text":null,"texts":null,"category":"Flags","sort_order":205,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SH","unified":"1F1F8-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1ed.png","sheet_x":35,"sheet_y":19,"short_name":"flag-sh","short_names":["flag-sh"],"text":null,"texts":null,"category":"Flags","sort_order":192,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SI","unified":"1F1F8-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1ee.png","sheet_x":35,"sheet_y":20,"short_name":"flag-si","short_names":["flag-si"],"text":null,"texts":null,"category":"Flags","sort_order":208,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SJ","unified":"1F1F8-1F1EF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1ef.png","sheet_x":35,"sheet_y":21,"short_name":"flag-sj","short_names":["flag-sj"],"text":null,"texts":null,"category":"Flags","sort_order":261,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SK","unified":"1F1F8-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1f0.png","sheet_x":35,"sheet_y":22,"short_name":"flag-sk","short_names":["flag-sk"],"text":null,"texts":null,"category":"Flags","sort_order":207,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SL","unified":"1F1F8-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1f1.png","sheet_x":35,"sheet_y":23,"short_name":"flag-sl","short_names":["flag-sl"],"text":null,"texts":null,"category":"Flags","sort_order":204,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SM","unified":"1F1F8-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1f2.png","sheet_x":35,"sheet_y":24,"short_name":"flag-sm","short_names":["flag-sm"],"text":null,"texts":null,"category":"Flags","sort_order":198,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SN","unified":"1F1F8-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1f3.png","sheet_x":35,"sheet_y":25,"short_name":"flag-sn","short_names":["flag-sn"],"text":null,"texts":null,"category":"Flags","sort_order":201,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SO","unified":"1F1F8-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1f4.png","sheet_x":35,"sheet_y":26,"short_name":"flag-so","short_names":["flag-so"],"text":null,"texts":null,"category":"Flags","sort_order":210,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SR","unified":"1F1F8-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1f7.png","sheet_x":35,"sheet_y":27,"short_name":"flag-sr","short_names":["flag-sr"],"text":null,"texts":null,"category":"Flags","sort_order":218,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SS","unified":"1F1F8-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1f8.png","sheet_x":35,"sheet_y":28,"short_name":"flag-ss","short_names":["flag-ss"],"text":null,"texts":null,"category":"Flags","sort_order":214,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ST","unified":"1F1F8-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1f9.png","sheet_x":35,"sheet_y":29,"short_name":"flag-st","short_names":["flag-st"],"text":null,"texts":null,"category":"Flags","sort_order":199,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SV","unified":"1F1F8-1F1FB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1fb.png","sheet_x":35,"sheet_y":30,"short_name":"flag-sv","short_names":["flag-sv"],"text":null,"texts":null,"category":"Flags","sort_order":73,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SX","unified":"1F1F8-1F1FD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1fd.png","sheet_x":35,"sheet_y":31,"short_name":"flag-sx","short_names":["flag-sx"],"text":null,"texts":null,"category":"Flags","sort_order":206,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SY","unified":"1F1F8-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1fe.png","sheet_x":35,"sheet_y":32,"short_name":"flag-sy","short_names":["flag-sy"],"text":null,"texts":null,"category":"Flags","sort_order":222,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SZ","unified":"1F1F8-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1ff.png","sheet_x":35,"sheet_y":33,"short_name":"flag-sz","short_names":["flag-sz"],"text":null,"texts":null,"category":"Flags","sort_order":219,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TA","unified":"1F1F9-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1e6.png","sheet_x":35,"sheet_y":34,"short_name":"flag-ta","short_names":["flag-ta"],"text":null,"texts":null,"category":"Flags","sort_order":262,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TC","unified":"1F1F9-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1e8.png","sheet_x":35,"sheet_y":35,"short_name":"flag-tc","short_names":["flag-tc"],"text":null,"texts":null,"category":"Flags","sort_order":235,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TD","unified":"1F1F9-1F1E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1e9.png","sheet_x":35,"sheet_y":36,"short_name":"flag-td","short_names":["flag-td"],"text":null,"texts":null,"category":"Flags","sort_order":50,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TF","unified":"1F1F9-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1eb.png","sheet_x":35,"sheet_y":37,"short_name":"flag-tf","short_names":["flag-tf"],"text":null,"texts":null,"category":"Flags","sort_order":86,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TG","unified":"1F1F9-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1ec.png","sheet_x":35,"sheet_y":38,"short_name":"flag-tg","short_names":["flag-tg"],"text":null,"texts":null,"category":"Flags","sort_order":228,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TH","unified":"1F1F9-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1ed.png","sheet_x":35,"sheet_y":39,"short_name":"flag-th","short_names":["flag-th"],"text":null,"texts":null,"category":"Flags","sort_order":226,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TJ","unified":"1F1F9-1F1EF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1ef.png","sheet_x":35,"sheet_y":40,"short_name":"flag-tj","short_names":["flag-tj"],"text":null,"texts":null,"category":"Flags","sort_order":224,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TK","unified":"1F1F9-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1f0.png","sheet_x":35,"sheet_y":41,"short_name":"flag-tk","short_names":["flag-tk"],"text":null,"texts":null,"category":"Flags","sort_order":229,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TL","unified":"1F1F9-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1f1.png","sheet_x":35,"sheet_y":42,"short_name":"flag-tl","short_names":["flag-tl"],"text":null,"texts":null,"category":"Flags","sort_order":227,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TM","unified":"1F1F9-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1f2.png","sheet_x":35,"sheet_y":43,"short_name":"flag-tm","short_names":["flag-tm"],"text":null,"texts":null,"category":"Flags","sort_order":234,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TN","unified":"1F1F9-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1f3.png","sheet_x":35,"sheet_y":44,"short_name":"flag-tn","short_names":["flag-tn"],"text":null,"texts":null,"category":"Flags","sort_order":232,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TO","unified":"1F1F9-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1f4.png","sheet_x":35,"sheet_y":45,"short_name":"flag-to","short_names":["flag-to"],"text":null,"texts":null,"category":"Flags","sort_order":230,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TR","unified":"1F1F9-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1f7.png","sheet_x":35,"sheet_y":46,"short_name":"flag-tr","short_names":["flag-tr"],"text":null,"texts":null,"category":"Flags","sort_order":233,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TT","unified":"1F1F9-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1f9.png","sheet_x":35,"sheet_y":47,"short_name":"flag-tt","short_names":["flag-tt"],"text":null,"texts":null,"category":"Flags","sort_order":231,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TV","unified":"1F1F9-1F1FB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1fb.png","sheet_x":35,"sheet_y":48,"short_name":"flag-tv","short_names":["flag-tv"],"text":null,"texts":null,"category":"Flags","sort_order":236,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TW","unified":"1F1F9-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1fc.png","sheet_x":36,"sheet_y":0,"short_name":"flag-tw","short_names":["flag-tw"],"text":null,"texts":null,"category":"Flags","sort_order":223,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TZ","unified":"1F1F9-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1ff.png","sheet_x":36,"sheet_y":1,"short_name":"flag-tz","short_names":["flag-tz"],"text":null,"texts":null,"category":"Flags","sort_order":225,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS UA","unified":"1F1FA-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fa-1f1e6.png","sheet_x":36,"sheet_y":2,"short_name":"flag-ua","short_names":["flag-ua"],"text":null,"texts":null,"category":"Flags","sort_order":238,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS UG","unified":"1F1FA-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fa-1f1ec.png","sheet_x":36,"sheet_y":3,"short_name":"flag-ug","short_names":["flag-ug"],"text":null,"texts":null,"category":"Flags","sort_order":237,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS UM","unified":"1F1FA-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fa-1f1f2.png","sheet_x":36,"sheet_y":4,"short_name":"flag-um","short_names":["flag-um"],"text":null,"texts":null,"category":"Flags","sort_order":263,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS UN","unified":"1F1FA-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fa-1f1f3.png","sheet_x":36,"sheet_y":5,"short_name":"flag-un","short_names":["flag-un"],"text":null,"texts":null,"category":"Flags","sort_order":264,"added_in":"6.0","has_img_apple":false,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},{"name":"REGIONAL INDICATOR SYMBOL LETTERS US","unified":"1F1FA-1F1F8","variations":[],"docomo":null,"au":"E573","softbank":"E50C","google":"FE4E6","image":"1f1fa-1f1f8.png","sheet_x":36,"sheet_y":6,"short_name":"flag-us","short_names":["flag-us","us"],"text":null,"texts":null,"category":"Flags","sort_order":241,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS UY","unified":"1F1FA-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fa-1f1fe.png","sheet_x":36,"sheet_y":7,"short_name":"flag-uy","short_names":["flag-uy"],"text":null,"texts":null,"category":"Flags","sort_order":243,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS UZ","unified":"1F1FA-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fa-1f1ff.png","sheet_x":36,"sheet_y":8,"short_name":"flag-uz","short_names":["flag-uz"],"text":null,"texts":null,"category":"Flags","sort_order":244,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS VA","unified":"1F1FB-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fb-1f1e6.png","sheet_x":36,"sheet_y":9,"short_name":"flag-va","short_names":["flag-va"],"text":null,"texts":null,"category":"Flags","sort_order":246,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS VC","unified":"1F1FB-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fb-1f1e8.png","sheet_x":36,"sheet_y":10,"short_name":"flag-vc","short_names":["flag-vc"],"text":null,"texts":null,"category":"Flags","sort_order":196,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS VE","unified":"1F1FB-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fb-1f1ea.png","sheet_x":36,"sheet_y":11,"short_name":"flag-ve","short_names":["flag-ve"],"text":null,"texts":null,"category":"Flags","sort_order":247,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS VG","unified":"1F1FB-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fb-1f1ec.png","sheet_x":36,"sheet_y":12,"short_name":"flag-vg","short_names":["flag-vg"],"text":null,"texts":null,"category":"Flags","sort_order":38,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS VI","unified":"1F1FB-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fb-1f1ee.png","sheet_x":36,"sheet_y":13,"short_name":"flag-vi","short_names":["flag-vi"],"text":null,"texts":null,"category":"Flags","sort_order":242,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS VN","unified":"1F1FB-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fb-1f1f3.png","sheet_x":36,"sheet_y":14,"short_name":"flag-vn","short_names":["flag-vn"],"text":null,"texts":null,"category":"Flags","sort_order":248,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS VU","unified":"1F1FB-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fb-1f1fa.png","sheet_x":36,"sheet_y":15,"short_name":"flag-vu","short_names":["flag-vu"],"text":null,"texts":null,"category":"Flags","sort_order":245,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS WF","unified":"1F1FC-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fc-1f1eb.png","sheet_x":36,"sheet_y":16,"short_name":"flag-wf","short_names":["flag-wf"],"text":null,"texts":null,"category":"Flags","sort_order":249,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS WS","unified":"1F1FC-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fc-1f1f8.png","sheet_x":36,"sheet_y":17,"short_name":"flag-ws","short_names":["flag-ws"],"text":null,"texts":null,"category":"Flags","sort_order":197,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS XK","unified":"1F1FD-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fd-1f1f0.png","sheet_x":36,"sheet_y":18,"short_name":"flag-xk","short_names":["flag-xk"],"text":null,"texts":null,"category":"Flags","sort_order":124,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS YE","unified":"1F1FE-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fe-1f1ea.png","sheet_x":36,"sheet_y":19,"short_name":"flag-ye","short_names":["flag-ye"],"text":null,"texts":null,"category":"Flags","sort_order":251,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS YT","unified":"1F1FE-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fe-1f1f9.png","sheet_x":36,"sheet_y":20,"short_name":"flag-yt","short_names":["flag-yt"],"text":null,"texts":null,"category":"Flags","sort_order":148,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ZA","unified":"1F1FF-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ff-1f1e6.png","sheet_x":36,"sheet_y":21,"short_name":"flag-za","short_names":["flag-za"],"text":null,"texts":null,"category":"Flags","sort_order":211,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ZM","unified":"1F1FF-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ff-1f1f2.png","sheet_x":36,"sheet_y":22,"short_name":"flag-zm","short_names":["flag-zm"],"text":null,"texts":null,"category":"Flags","sort_order":252,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ZW","unified":"1F1FF-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ff-1f1fc.png","sheet_x":36,"sheet_y":23,"short_name":"flag-zw","short_names":["flag-zw"],"text":null,"texts":null,"category":"Flags","sort_order":253,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F33E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f33e.png","sheet_x":36,"sheet_y":24,"short_name":"male-farmer","short_names":["male-farmer"],"text":null,"texts":null,"category":"People","sort_order":164,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F33E","image":"1f468-1f3fb-200d-1f33e.png","sheet_x":36,"sheet_y":25,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F33E","image":"1f468-1f3fc-200d-1f33e.png","sheet_x":36,"sheet_y":26,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F33E","image":"1f468-1f3fd-200d-1f33e.png","sheet_x":36,"sheet_y":27,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F33E","image":"1f468-1f3fe-200d-1f33e.png","sheet_x":36,"sheet_y":28,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F33E","image":"1f468-1f3ff-200d-1f33e.png","sheet_x":36,"sheet_y":29,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F373","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f373.png","sheet_x":36,"sheet_y":30,"short_name":"male-cook","short_names":["male-cook"],"text":null,"texts":null,"category":"People","sort_order":166,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F373","image":"1f468-1f3fb-200d-1f373.png","sheet_x":36,"sheet_y":31,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F373","image":"1f468-1f3fc-200d-1f373.png","sheet_x":36,"sheet_y":32,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F373","image":"1f468-1f3fd-200d-1f373.png","sheet_x":36,"sheet_y":33,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F373","image":"1f468-1f3fe-200d-1f373.png","sheet_x":36,"sheet_y":34,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F373","image":"1f468-1f3ff-200d-1f373.png","sheet_x":36,"sheet_y":35,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F393","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f393.png","sheet_x":36,"sheet_y":36,"short_name":"male-student","short_names":["male-student"],"text":null,"texts":null,"category":"People","sort_order":168,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F393","image":"1f468-1f3fb-200d-1f393.png","sheet_x":36,"sheet_y":37,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F393","image":"1f468-1f3fc-200d-1f393.png","sheet_x":36,"sheet_y":38,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F393","image":"1f468-1f3fd-200d-1f393.png","sheet_x":36,"sheet_y":39,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F393","image":"1f468-1f3fe-200d-1f393.png","sheet_x":36,"sheet_y":40,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F393","image":"1f468-1f3ff-200d-1f393.png","sheet_x":36,"sheet_y":41,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F3A4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f3a4.png","sheet_x":36,"sheet_y":42,"short_name":"male-singer","short_names":["male-singer"],"text":null,"texts":null,"category":"People","sort_order":170,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F3A4","image":"1f468-1f3fb-200d-1f3a4.png","sheet_x":36,"sheet_y":43,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F3A4","image":"1f468-1f3fc-200d-1f3a4.png","sheet_x":36,"sheet_y":44,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F3A4","image":"1f468-1f3fd-200d-1f3a4.png","sheet_x":36,"sheet_y":45,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F3A4","image":"1f468-1f3fe-200d-1f3a4.png","sheet_x":36,"sheet_y":46,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F3A4","image":"1f468-1f3ff-200d-1f3a4.png","sheet_x":36,"sheet_y":47,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F3A8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f3a8.png","sheet_x":36,"sheet_y":48,"short_name":"male-artist","short_names":["male-artist"],"text":null,"texts":null,"category":"People","sort_order":184,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F3A8","image":"1f468-1f3fb-200d-1f3a8.png","sheet_x":37,"sheet_y":0,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F3A8","image":"1f468-1f3fc-200d-1f3a8.png","sheet_x":37,"sheet_y":1,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F3A8","image":"1f468-1f3fd-200d-1f3a8.png","sheet_x":37,"sheet_y":2,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F3A8","image":"1f468-1f3fe-200d-1f3a8.png","sheet_x":37,"sheet_y":3,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F3A8","image":"1f468-1f3ff-200d-1f3a8.png","sheet_x":37,"sheet_y":4,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F3EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f3eb.png","sheet_x":37,"sheet_y":5,"short_name":"male-teacher","short_names":["male-teacher"],"text":null,"texts":null,"category":"People","sort_order":172,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F3EB","image":"1f468-1f3fb-200d-1f3eb.png","sheet_x":37,"sheet_y":6,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F3EB","image":"1f468-1f3fc-200d-1f3eb.png","sheet_x":37,"sheet_y":7,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F3EB","image":"1f468-1f3fd-200d-1f3eb.png","sheet_x":37,"sheet_y":8,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F3EB","image":"1f468-1f3fe-200d-1f3eb.png","sheet_x":37,"sheet_y":9,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F3EB","image":"1f468-1f3ff-200d-1f3eb.png","sheet_x":37,"sheet_y":10,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F3ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f3ed.png","sheet_x":37,"sheet_y":11,"short_name":"male-factory-worker","short_names":["male-factory-worker"],"text":null,"texts":null,"category":"People","sort_order":174,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F3ED","image":"1f468-1f3fb-200d-1f3ed.png","sheet_x":37,"sheet_y":12,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F3ED","image":"1f468-1f3fc-200d-1f3ed.png","sheet_x":37,"sheet_y":13,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F3ED","image":"1f468-1f3fd-200d-1f3ed.png","sheet_x":37,"sheet_y":14,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F3ED","image":"1f468-1f3fe-200d-1f3ed.png","sheet_x":37,"sheet_y":15,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F3ED","image":"1f468-1f3ff-200d-1f3ed.png","sheet_x":37,"sheet_y":16,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f466.png","sheet_x":37,"sheet_y":17,"short_name":"man-boy","short_names":["man-boy"],"text":null,"texts":null,"category":"People","sort_order":263,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F468-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f467.png","sheet_x":37,"sheet_y":18,"short_name":"man-girl","short_names":["man-girl"],"text":null,"texts":null,"category":"People","sort_order":264,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F468-200D-1F4BB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f4bb.png","sheet_x":37,"sheet_y":19,"short_name":"male-technologist","short_names":["male-technologist"],"text":null,"texts":null,"category":"People","sort_order":176,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F4BB","image":"1f468-1f3fb-200d-1f4bb.png","sheet_x":37,"sheet_y":20,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F4BB","image":"1f468-1f3fc-200d-1f4bb.png","sheet_x":37,"sheet_y":21,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F4BB","image":"1f468-1f3fd-200d-1f4bb.png","sheet_x":37,"sheet_y":22,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F4BB","image":"1f468-1f3fe-200d-1f4bb.png","sheet_x":37,"sheet_y":23,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F4BB","image":"1f468-1f3ff-200d-1f4bb.png","sheet_x":37,"sheet_y":24,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F4BC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f4bc.png","sheet_x":37,"sheet_y":25,"short_name":"male-office-worker","short_names":["male-office-worker"],"text":null,"texts":null,"category":"People","sort_order":178,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F4BC","image":"1f468-1f3fb-200d-1f4bc.png","sheet_x":37,"sheet_y":26,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F4BC","image":"1f468-1f3fc-200d-1f4bc.png","sheet_x":37,"sheet_y":27,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F4BC","image":"1f468-1f3fd-200d-1f4bc.png","sheet_x":37,"sheet_y":28,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F4BC","image":"1f468-1f3fe-200d-1f4bc.png","sheet_x":37,"sheet_y":29,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F4BC","image":"1f468-1f3ff-200d-1f4bc.png","sheet_x":37,"sheet_y":30,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F527","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f527.png","sheet_x":37,"sheet_y":31,"short_name":"male-mechanic","short_names":["male-mechanic"],"text":null,"texts":null,"category":"People","sort_order":180,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F527","image":"1f468-1f3fb-200d-1f527.png","sheet_x":37,"sheet_y":32,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F527","image":"1f468-1f3fc-200d-1f527.png","sheet_x":37,"sheet_y":33,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F527","image":"1f468-1f3fd-200d-1f527.png","sheet_x":37,"sheet_y":34,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F527","image":"1f468-1f3fe-200d-1f527.png","sheet_x":37,"sheet_y":35,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F527","image":"1f468-1f3ff-200d-1f527.png","sheet_x":37,"sheet_y":36,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F52C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f52c.png","sheet_x":37,"sheet_y":37,"short_name":"male-scientist","short_names":["male-scientist"],"text":null,"texts":null,"category":"People","sort_order":182,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F52C","image":"1f468-1f3fb-200d-1f52c.png","sheet_x":37,"sheet_y":38,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F52C","image":"1f468-1f3fc-200d-1f52c.png","sheet_x":37,"sheet_y":39,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F52C","image":"1f468-1f3fd-200d-1f52c.png","sheet_x":37,"sheet_y":40,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F52C","image":"1f468-1f3fe-200d-1f52c.png","sheet_x":37,"sheet_y":41,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F52C","image":"1f468-1f3ff-200d-1f52c.png","sheet_x":37,"sheet_y":42,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F680","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f680.png","sheet_x":37,"sheet_y":43,"short_name":"male-astronaut","short_names":["male-astronaut"],"text":null,"texts":null,"category":"People","sort_order":190,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F680","image":"1f468-1f3fb-200d-1f680.png","sheet_x":37,"sheet_y":44,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F680","image":"1f468-1f3fc-200d-1f680.png","sheet_x":37,"sheet_y":45,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F680","image":"1f468-1f3fd-200d-1f680.png","sheet_x":37,"sheet_y":46,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F680","image":"1f468-1f3fe-200d-1f680.png","sheet_x":37,"sheet_y":47,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F680","image":"1f468-1f3ff-200d-1f680.png","sheet_x":37,"sheet_y":48,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F692","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f692.png","sheet_x":38,"sheet_y":0,"short_name":"male-firefighter","short_names":["male-firefighter"],"text":null,"texts":null,"category":"People","sort_order":186,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F692","image":"1f468-1f3fb-200d-1f692.png","sheet_x":38,"sheet_y":1,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F692","image":"1f468-1f3fc-200d-1f692.png","sheet_x":38,"sheet_y":2,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F692","image":"1f468-1f3fd-200d-1f692.png","sheet_x":38,"sheet_y":3,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F692","image":"1f468-1f3fe-200d-1f692.png","sheet_x":38,"sheet_y":4,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F692","image":"1f468-1f3ff-200d-1f692.png","sheet_x":38,"sheet_y":5,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F33E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f33e.png","sheet_x":38,"sheet_y":6,"short_name":"female-farmer","short_names":["female-farmer"],"text":null,"texts":null,"category":"People","sort_order":163,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F33E","image":"1f469-1f3fb-200d-1f33e.png","sheet_x":38,"sheet_y":7,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F33E","image":"1f469-1f3fc-200d-1f33e.png","sheet_x":38,"sheet_y":8,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F33E","image":"1f469-1f3fd-200d-1f33e.png","sheet_x":38,"sheet_y":9,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F33E","image":"1f469-1f3fe-200d-1f33e.png","sheet_x":38,"sheet_y":10,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F33E","image":"1f469-1f3ff-200d-1f33e.png","sheet_x":38,"sheet_y":11,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F373","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f373.png","sheet_x":38,"sheet_y":12,"short_name":"female-cook","short_names":["female-cook"],"text":null,"texts":null,"category":"People","sort_order":165,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F373","image":"1f469-1f3fb-200d-1f373.png","sheet_x":38,"sheet_y":13,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F373","image":"1f469-1f3fc-200d-1f373.png","sheet_x":38,"sheet_y":14,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F373","image":"1f469-1f3fd-200d-1f373.png","sheet_x":38,"sheet_y":15,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F373","image":"1f469-1f3fe-200d-1f373.png","sheet_x":38,"sheet_y":16,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F373","image":"1f469-1f3ff-200d-1f373.png","sheet_x":38,"sheet_y":17,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F393","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f393.png","sheet_x":38,"sheet_y":18,"short_name":"female-student","short_names":["female-student"],"text":null,"texts":null,"category":"People","sort_order":167,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F393","image":"1f469-1f3fb-200d-1f393.png","sheet_x":38,"sheet_y":19,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F393","image":"1f469-1f3fc-200d-1f393.png","sheet_x":38,"sheet_y":20,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F393","image":"1f469-1f3fd-200d-1f393.png","sheet_x":38,"sheet_y":21,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F393","image":"1f469-1f3fe-200d-1f393.png","sheet_x":38,"sheet_y":22,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F393","image":"1f469-1f3ff-200d-1f393.png","sheet_x":38,"sheet_y":23,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F3A4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f3a4.png","sheet_x":38,"sheet_y":24,"short_name":"female-singer","short_names":["female-singer"],"text":null,"texts":null,"category":"People","sort_order":169,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F3A4","image":"1f469-1f3fb-200d-1f3a4.png","sheet_x":38,"sheet_y":25,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F3A4","image":"1f469-1f3fc-200d-1f3a4.png","sheet_x":38,"sheet_y":26,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F3A4","image":"1f469-1f3fd-200d-1f3a4.png","sheet_x":38,"sheet_y":27,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F3A4","image":"1f469-1f3fe-200d-1f3a4.png","sheet_x":38,"sheet_y":28,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F3A4","image":"1f469-1f3ff-200d-1f3a4.png","sheet_x":38,"sheet_y":29,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F3A8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f3a8.png","sheet_x":38,"sheet_y":30,"short_name":"female-artist","short_names":["female-artist"],"text":null,"texts":null,"category":"People","sort_order":183,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F3A8","image":"1f469-1f3fb-200d-1f3a8.png","sheet_x":38,"sheet_y":31,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F3A8","image":"1f469-1f3fc-200d-1f3a8.png","sheet_x":38,"sheet_y":32,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F3A8","image":"1f469-1f3fd-200d-1f3a8.png","sheet_x":38,"sheet_y":33,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F3A8","image":"1f469-1f3fe-200d-1f3a8.png","sheet_x":38,"sheet_y":34,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F3A8","image":"1f469-1f3ff-200d-1f3a8.png","sheet_x":38,"sheet_y":35,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F3EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f3eb.png","sheet_x":38,"sheet_y":36,"short_name":"female-teacher","short_names":["female-teacher"],"text":null,"texts":null,"category":"People","sort_order":171,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F3EB","image":"1f469-1f3fb-200d-1f3eb.png","sheet_x":38,"sheet_y":37,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F3EB","image":"1f469-1f3fc-200d-1f3eb.png","sheet_x":38,"sheet_y":38,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F3EB","image":"1f469-1f3fd-200d-1f3eb.png","sheet_x":38,"sheet_y":39,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F3EB","image":"1f469-1f3fe-200d-1f3eb.png","sheet_x":38,"sheet_y":40,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F3EB","image":"1f469-1f3ff-200d-1f3eb.png","sheet_x":38,"sheet_y":41,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F3ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f3ed.png","sheet_x":38,"sheet_y":42,"short_name":"female-factory-worker","short_names":["female-factory-worker"],"text":null,"texts":null,"category":"People","sort_order":173,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F3ED","image":"1f469-1f3fb-200d-1f3ed.png","sheet_x":38,"sheet_y":43,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F3ED","image":"1f469-1f3fc-200d-1f3ed.png","sheet_x":38,"sheet_y":44,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F3ED","image":"1f469-1f3fd-200d-1f3ed.png","sheet_x":38,"sheet_y":45,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F3ED","image":"1f469-1f3fe-200d-1f3ed.png","sheet_x":38,"sheet_y":46,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F3ED","image":"1f469-1f3ff-200d-1f3ed.png","sheet_x":38,"sheet_y":47,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f466.png","sheet_x":38,"sheet_y":48,"short_name":"woman-boy","short_names":["woman-boy"],"text":null,"texts":null,"category":"People","sort_order":258,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F469-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f467.png","sheet_x":39,"sheet_y":0,"short_name":"woman-girl","short_names":["woman-girl"],"text":null,"texts":null,"category":"People","sort_order":259,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F469-200D-1F4BB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f4bb.png","sheet_x":39,"sheet_y":1,"short_name":"female-technologist","short_names":["female-technologist"],"text":null,"texts":null,"category":"People","sort_order":175,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F4BB","image":"1f469-1f3fb-200d-1f4bb.png","sheet_x":39,"sheet_y":2,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F4BB","image":"1f469-1f3fc-200d-1f4bb.png","sheet_x":39,"sheet_y":3,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F4BB","image":"1f469-1f3fd-200d-1f4bb.png","sheet_x":39,"sheet_y":4,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F4BB","image":"1f469-1f3fe-200d-1f4bb.png","sheet_x":39,"sheet_y":5,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F4BB","image":"1f469-1f3ff-200d-1f4bb.png","sheet_x":39,"sheet_y":6,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F4BC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f4bc.png","sheet_x":39,"sheet_y":7,"short_name":"female-office-worker","short_names":["female-office-worker"],"text":null,"texts":null,"category":"People","sort_order":177,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F4BC","image":"1f469-1f3fb-200d-1f4bc.png","sheet_x":39,"sheet_y":8,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F4BC","image":"1f469-1f3fc-200d-1f4bc.png","sheet_x":39,"sheet_y":9,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F4BC","image":"1f469-1f3fd-200d-1f4bc.png","sheet_x":39,"sheet_y":10,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F4BC","image":"1f469-1f3fe-200d-1f4bc.png","sheet_x":39,"sheet_y":11,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F4BC","image":"1f469-1f3ff-200d-1f4bc.png","sheet_x":39,"sheet_y":12,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F527","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f527.png","sheet_x":39,"sheet_y":13,"short_name":"female-mechanic","short_names":["female-mechanic"],"text":null,"texts":null,"category":"People","sort_order":179,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F527","image":"1f469-1f3fb-200d-1f527.png","sheet_x":39,"sheet_y":14,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F527","image":"1f469-1f3fc-200d-1f527.png","sheet_x":39,"sheet_y":15,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F527","image":"1f469-1f3fd-200d-1f527.png","sheet_x":39,"sheet_y":16,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F527","image":"1f469-1f3fe-200d-1f527.png","sheet_x":39,"sheet_y":17,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F527","image":"1f469-1f3ff-200d-1f527.png","sheet_x":39,"sheet_y":18,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F52C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f52c.png","sheet_x":39,"sheet_y":19,"short_name":"female-scientist","short_names":["female-scientist"],"text":null,"texts":null,"category":"People","sort_order":181,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F52C","image":"1f469-1f3fb-200d-1f52c.png","sheet_x":39,"sheet_y":20,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F52C","image":"1f469-1f3fc-200d-1f52c.png","sheet_x":39,"sheet_y":21,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F52C","image":"1f469-1f3fd-200d-1f52c.png","sheet_x":39,"sheet_y":22,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F52C","image":"1f469-1f3fe-200d-1f52c.png","sheet_x":39,"sheet_y":23,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F52C","image":"1f469-1f3ff-200d-1f52c.png","sheet_x":39,"sheet_y":24,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F680","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f680.png","sheet_x":39,"sheet_y":25,"short_name":"female-astronaut","short_names":["female-astronaut"],"text":null,"texts":null,"category":"People","sort_order":189,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F680","image":"1f469-1f3fb-200d-1f680.png","sheet_x":39,"sheet_y":26,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F680","image":"1f469-1f3fc-200d-1f680.png","sheet_x":39,"sheet_y":27,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F680","image":"1f469-1f3fd-200d-1f680.png","sheet_x":39,"sheet_y":28,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F680","image":"1f469-1f3fe-200d-1f680.png","sheet_x":39,"sheet_y":29,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F680","image":"1f469-1f3ff-200d-1f680.png","sheet_x":39,"sheet_y":30,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F692","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f692.png","sheet_x":39,"sheet_y":31,"short_name":"female-firefighter","short_names":["female-firefighter"],"text":null,"texts":null,"category":"People","sort_order":185,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F692","image":"1f469-1f3fb-200d-1f692.png","sheet_x":39,"sheet_y":32,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F692","image":"1f469-1f3fc-200d-1f692.png","sheet_x":39,"sheet_y":33,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F692","image":"1f469-1f3fd-200d-1f692.png","sheet_x":39,"sheet_y":34,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F692","image":"1f469-1f3fe-200d-1f692.png","sheet_x":39,"sheet_y":35,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F692","image":"1f469-1f3ff-200d-1f692.png","sheet_x":39,"sheet_y":36,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F3C3-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3c3-200d-2640-fe0f.png","sheet_x":39,"sheet_y":37,"short_name":"woman-running","short_names":["woman-running"],"text":null,"texts":null,"category":"People","sort_order":232,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3C3-1F3FB-200D-2640-FE0F","image":"1f3c3-1f3fb-200d-2640-fe0f.png","sheet_x":39,"sheet_y":38,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3C3-1F3FC-200D-2640-FE0F","image":"1f3c3-1f3fc-200d-2640-fe0f.png","sheet_x":39,"sheet_y":39,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3C3-1F3FD-200D-2640-FE0F","image":"1f3c3-1f3fd-200d-2640-fe0f.png","sheet_x":39,"sheet_y":40,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3C3-1F3FE-200D-2640-FE0F","image":"1f3c3-1f3fe-200d-2640-fe0f.png","sheet_x":39,"sheet_y":41,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3C3-1F3FF-200D-2640-FE0F","image":"1f3c3-1f3ff-200d-2640-fe0f.png","sheet_x":39,"sheet_y":42,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F3C3-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3c3-200d-2642-fe0f.png","sheet_x":39,"sheet_y":43,"short_name":"man-running","short_names":["man-running"],"text":null,"texts":null,"category":"People","sort_order":304,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3C3-1F3FB-200D-2642-FE0F","image":"1f3c3-1f3fb-200d-2642-fe0f.png","sheet_x":39,"sheet_y":44,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3C3-1F3FC-200D-2642-FE0F","image":"1f3c3-1f3fc-200d-2642-fe0f.png","sheet_x":39,"sheet_y":45,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3C3-1F3FD-200D-2642-FE0F","image":"1f3c3-1f3fd-200d-2642-fe0f.png","sheet_x":39,"sheet_y":46,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3C3-1F3FE-200D-2642-FE0F","image":"1f3c3-1f3fe-200d-2642-fe0f.png","sheet_x":39,"sheet_y":47,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3C3-1F3FF-200D-2642-FE0F","image":"1f3c3-1f3ff-200d-2642-fe0f.png","sheet_x":39,"sheet_y":48,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F3C3"},{"name":null,"unified":"1F3C4-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3c4-200d-2640-fe0f.png","sheet_x":40,"sheet_y":0,"short_name":"woman-surfing","short_names":["woman-surfing"],"text":null,"texts":null,"category":"Activity","sort_order":40,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3C4-1F3FB-200D-2640-FE0F","image":"1f3c4-1f3fb-200d-2640-fe0f.png","sheet_x":40,"sheet_y":1,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3C4-1F3FC-200D-2640-FE0F","image":"1f3c4-1f3fc-200d-2640-fe0f.png","sheet_x":40,"sheet_y":2,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3C4-1F3FD-200D-2640-FE0F","image":"1f3c4-1f3fd-200d-2640-fe0f.png","sheet_x":40,"sheet_y":3,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3C4-1F3FE-200D-2640-FE0F","image":"1f3c4-1f3fe-200d-2640-fe0f.png","sheet_x":40,"sheet_y":4,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3C4-1F3FF-200D-2640-FE0F","image":"1f3c4-1f3ff-200d-2640-fe0f.png","sheet_x":40,"sheet_y":5,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F3C4-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3c4-200d-2642-fe0f.png","sheet_x":40,"sheet_y":6,"short_name":"man-surfing","short_names":["man-surfing"],"text":null,"texts":null,"category":"Activity","sort_order":89,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3C4-1F3FB-200D-2642-FE0F","image":"1f3c4-1f3fb-200d-2642-fe0f.png","sheet_x":40,"sheet_y":7,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3C4-1F3FC-200D-2642-FE0F","image":"1f3c4-1f3fc-200d-2642-fe0f.png","sheet_x":40,"sheet_y":8,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3C4-1F3FD-200D-2642-FE0F","image":"1f3c4-1f3fd-200d-2642-fe0f.png","sheet_x":40,"sheet_y":9,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3C4-1F3FE-200D-2642-FE0F","image":"1f3c4-1f3fe-200d-2642-fe0f.png","sheet_x":40,"sheet_y":10,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3C4-1F3FF-200D-2642-FE0F","image":"1f3c4-1f3ff-200d-2642-fe0f.png","sheet_x":40,"sheet_y":11,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F3C4"},{"name":null,"unified":"1F3CA-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3ca-200d-2640-fe0f.png","sheet_x":40,"sheet_y":12,"short_name":"woman-swimming","short_names":["woman-swimming"],"text":null,"texts":null,"category":"Activity","sort_order":42,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3CA-1F3FB-200D-2640-FE0F","image":"1f3ca-1f3fb-200d-2640-fe0f.png","sheet_x":40,"sheet_y":13,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3CA-1F3FC-200D-2640-FE0F","image":"1f3ca-1f3fc-200d-2640-fe0f.png","sheet_x":40,"sheet_y":14,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3CA-1F3FD-200D-2640-FE0F","image":"1f3ca-1f3fd-200d-2640-fe0f.png","sheet_x":40,"sheet_y":15,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3CA-1F3FE-200D-2640-FE0F","image":"1f3ca-1f3fe-200d-2640-fe0f.png","sheet_x":40,"sheet_y":16,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3CA-1F3FF-200D-2640-FE0F","image":"1f3ca-1f3ff-200d-2640-fe0f.png","sheet_x":40,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F3CA-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3ca-200d-2642-fe0f.png","sheet_x":40,"sheet_y":18,"short_name":"man-swimming","short_names":["man-swimming"],"text":null,"texts":null,"category":"Activity","sort_order":90,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3CA-1F3FB-200D-2642-FE0F","image":"1f3ca-1f3fb-200d-2642-fe0f.png","sheet_x":40,"sheet_y":19,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3CA-1F3FC-200D-2642-FE0F","image":"1f3ca-1f3fc-200d-2642-fe0f.png","sheet_x":40,"sheet_y":20,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3CA-1F3FD-200D-2642-FE0F","image":"1f3ca-1f3fd-200d-2642-fe0f.png","sheet_x":40,"sheet_y":21,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3CA-1F3FE-200D-2642-FE0F","image":"1f3ca-1f3fe-200d-2642-fe0f.png","sheet_x":40,"sheet_y":22,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3CA-1F3FF-200D-2642-FE0F","image":"1f3ca-1f3ff-200d-2642-fe0f.png","sheet_x":40,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F3CA"},{"name":null,"unified":"1F3CB-FE0F-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3cb-fe0f-200d-2640-fe0f.png","sheet_x":40,"sheet_y":24,"short_name":"woman-lifting-weights","short_names":["woman-lifting-weights"],"text":null,"texts":null,"category":"Activity","sort_order":24,"added_in":"7.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3CB-1F3FB-200D-2640-FE0F","image":"1f3cb-1f3fb-200d-2640-fe0f.png","sheet_x":40,"sheet_y":25,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3CB-1F3FC-200D-2640-FE0F","image":"1f3cb-1f3fc-200d-2640-fe0f.png","sheet_x":40,"sheet_y":26,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3CB-1F3FD-200D-2640-FE0F","image":"1f3cb-1f3fd-200d-2640-fe0f.png","sheet_x":40,"sheet_y":27,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3CB-1F3FE-200D-2640-FE0F","image":"1f3cb-1f3fe-200d-2640-fe0f.png","sheet_x":40,"sheet_y":28,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3CB-1F3FF-200D-2640-FE0F","image":"1f3cb-1f3ff-200d-2640-fe0f.png","sheet_x":40,"sheet_y":29,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F3CB-FE0F-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3cb-fe0f-200d-2642-fe0f.png","sheet_x":40,"sheet_y":30,"short_name":"man-lifting-weights","short_names":["man-lifting-weights"],"text":null,"texts":null,"category":"Activity","sort_order":87,"added_in":"7.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3CB-1F3FB-200D-2642-FE0F","image":"1f3cb-1f3fb-200d-2642-fe0f.png","sheet_x":40,"sheet_y":31,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3CB-1F3FC-200D-2642-FE0F","image":"1f3cb-1f3fc-200d-2642-fe0f.png","sheet_x":40,"sheet_y":32,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3CB-1F3FD-200D-2642-FE0F","image":"1f3cb-1f3fd-200d-2642-fe0f.png","sheet_x":40,"sheet_y":33,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3CB-1F3FE-200D-2642-FE0F","image":"1f3cb-1f3fe-200d-2642-fe0f.png","sheet_x":40,"sheet_y":34,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3CB-1F3FF-200D-2642-FE0F","image":"1f3cb-1f3ff-200d-2642-fe0f.png","sheet_x":40,"sheet_y":35,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F3CB"},{"name":null,"unified":"1F3CC-FE0F-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3cc-fe0f-200d-2640-fe0f.png","sheet_x":40,"sheet_y":36,"short_name":"woman-golfing","short_names":["woman-golfing"],"text":null,"texts":null,"category":"Activity","sort_order":38,"added_in":"7.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3CC-1F3FB-200D-2640-FE0F","image":"1f3cc-1f3fb-200d-2640-fe0f.png","sheet_x":40,"sheet_y":37,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3CC-1F3FC-200D-2640-FE0F","image":"1f3cc-1f3fc-200d-2640-fe0f.png","sheet_x":40,"sheet_y":38,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3CC-1F3FD-200D-2640-FE0F","image":"1f3cc-1f3fd-200d-2640-fe0f.png","sheet_x":40,"sheet_y":39,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3CC-1F3FE-200D-2640-FE0F","image":"1f3cc-1f3fe-200d-2640-fe0f.png","sheet_x":40,"sheet_y":40,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3CC-1F3FF-200D-2640-FE0F","image":"1f3cc-1f3ff-200d-2640-fe0f.png","sheet_x":40,"sheet_y":41,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F3CC-FE0F-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3cc-fe0f-200d-2642-fe0f.png","sheet_x":40,"sheet_y":42,"short_name":"man-golfing","short_names":["man-golfing"],"text":null,"texts":null,"category":"Activity","sort_order":88,"added_in":"7.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3CC-1F3FB-200D-2642-FE0F","image":"1f3cc-1f3fb-200d-2642-fe0f.png","sheet_x":40,"sheet_y":43,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3CC-1F3FC-200D-2642-FE0F","image":"1f3cc-1f3fc-200d-2642-fe0f.png","sheet_x":40,"sheet_y":44,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3CC-1F3FD-200D-2642-FE0F","image":"1f3cc-1f3fd-200d-2642-fe0f.png","sheet_x":40,"sheet_y":45,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3CC-1F3FE-200D-2642-FE0F","image":"1f3cc-1f3fe-200d-2642-fe0f.png","sheet_x":40,"sheet_y":46,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3CC-1F3FF-200D-2642-FE0F","image":"1f3cc-1f3ff-200d-2642-fe0f.png","sheet_x":40,"sheet_y":47,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F3CC"},{"name":null,"unified":"1F3F3-FE0F-200D-1F308","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3f3-fe0f-200d-1f308.png","sheet_x":40,"sheet_y":48,"short_name":"rainbow-flag","short_names":["rainbow-flag"],"text":null,"texts":null,"category":"Flags","sort_order":5,"added_in":"7.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F441-FE0F-200D-1F5E8-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f441-fe0f-200d-1f5e8-fe0f.png","sheet_x":41,"sheet_y":0,"short_name":"eye-in-speech-bubble","short_names":["eye-in-speech-bubble"],"text":null,"texts":null,"category":"Symbols","sort_order":238,"added_in":"7.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":false,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},{"name":null,"unified":"1F468-200D-1F466-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f466-200d-1f466.png","sheet_x":41,"sheet_y":1,"short_name":"man-boy-boy","short_names":["man-boy-boy"],"text":null,"texts":null,"category":"People","sort_order":266,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F468-200D-1F467-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f467-200d-1f466.png","sheet_x":41,"sheet_y":2,"short_name":"man-girl-boy","short_names":["man-girl-boy"],"text":null,"texts":null,"category":"People","sort_order":265,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F468-200D-1F467-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f467-200d-1f467.png","sheet_x":41,"sheet_y":3,"short_name":"man-girl-girl","short_names":["man-girl-girl"],"text":null,"texts":null,"category":"People","sort_order":267,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F468-200D-1F468-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f468-200d-1f466.png","sheet_x":41,"sheet_y":4,"short_name":"man-man-boy","short_names":["man-man-boy"],"text":null,"texts":null,"category":"People","sort_order":253,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F468-200D-1F466-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f468-200d-1f466-200d-1f466.png","sheet_x":41,"sheet_y":5,"short_name":"man-man-boy-boy","short_names":["man-man-boy-boy"],"text":null,"texts":null,"category":"People","sort_order":256,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F468-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f468-200d-1f467.png","sheet_x":41,"sheet_y":6,"short_name":"man-man-girl","short_names":["man-man-girl"],"text":null,"texts":null,"category":"People","sort_order":254,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F468-200D-1F467-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f468-200d-1f467-200d-1f466.png","sheet_x":41,"sheet_y":7,"short_name":"man-man-girl-boy","short_names":["man-man-girl-boy"],"text":null,"texts":null,"category":"People","sort_order":255,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F468-200D-1F467-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f468-200d-1f467-200d-1f467.png","sheet_x":41,"sheet_y":8,"short_name":"man-man-girl-girl","short_names":["man-man-girl-girl"],"text":null,"texts":null,"category":"People","sort_order":257,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F469-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f469-200d-1f466.png","sheet_x":41,"sheet_y":9,"short_name":"man-woman-boy","short_names":["man-woman-boy","family"],"text":null,"texts":null,"category":"People","sort_order":294,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true,"obsoletes":"1F46A"},{"name":null,"unified":"1F468-200D-1F469-200D-1F466-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f469-200d-1f466-200d-1f466.png","sheet_x":41,"sheet_y":10,"short_name":"man-woman-boy-boy","short_names":["man-woman-boy-boy"],"text":null,"texts":null,"category":"People","sort_order":246,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F469-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f469-200d-1f467.png","sheet_x":41,"sheet_y":11,"short_name":"man-woman-girl","short_names":["man-woman-girl"],"text":null,"texts":null,"category":"People","sort_order":244,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F469-200D-1F467-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f469-200d-1f467-200d-1f466.png","sheet_x":41,"sheet_y":12,"short_name":"man-woman-girl-boy","short_names":["man-woman-girl-boy"],"text":null,"texts":null,"category":"People","sort_order":245,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F469-200D-1F467-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f469-200d-1f467-200d-1f467.png","sheet_x":41,"sheet_y":13,"short_name":"man-woman-girl-girl","short_names":["man-woman-girl-girl"],"text":null,"texts":null,"category":"People","sort_order":247,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-2695-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-2695-fe0f.png","sheet_x":41,"sheet_y":14,"short_name":"male-doctor","short_names":["male-doctor"],"text":null,"texts":null,"category":"People","sort_order":162,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-2695-FE0F","image":"1f468-1f3fb-200d-2695-fe0f.png","sheet_x":41,"sheet_y":15,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-2695-FE0F","image":"1f468-1f3fc-200d-2695-fe0f.png","sheet_x":41,"sheet_y":16,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-2695-FE0F","image":"1f468-1f3fd-200d-2695-fe0f.png","sheet_x":41,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-2695-FE0F","image":"1f468-1f3fe-200d-2695-fe0f.png","sheet_x":41,"sheet_y":18,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-2695-FE0F","image":"1f468-1f3ff-200d-2695-fe0f.png","sheet_x":41,"sheet_y":19,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-2696-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-2696-fe0f.png","sheet_x":41,"sheet_y":20,"short_name":"male-judge","short_names":["male-judge"],"text":null,"texts":null,"category":"People","sort_order":192,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-2696-FE0F","image":"1f468-1f3fb-200d-2696-fe0f.png","sheet_x":41,"sheet_y":21,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-2696-FE0F","image":"1f468-1f3fc-200d-2696-fe0f.png","sheet_x":41,"sheet_y":22,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-2696-FE0F","image":"1f468-1f3fd-200d-2696-fe0f.png","sheet_x":41,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-2696-FE0F","image":"1f468-1f3fe-200d-2696-fe0f.png","sheet_x":41,"sheet_y":24,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-2696-FE0F","image":"1f468-1f3ff-200d-2696-fe0f.png","sheet_x":41,"sheet_y":25,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-2708-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-2708-fe0f.png","sheet_x":41,"sheet_y":26,"short_name":"male-pilot","short_names":["male-pilot"],"text":null,"texts":null,"category":"People","sort_order":188,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-2708-FE0F","image":"1f468-1f3fb-200d-2708-fe0f.png","sheet_x":41,"sheet_y":27,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-2708-FE0F","image":"1f468-1f3fc-200d-2708-fe0f.png","sheet_x":41,"sheet_y":28,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-2708-FE0F","image":"1f468-1f3fd-200d-2708-fe0f.png","sheet_x":41,"sheet_y":29,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-2708-FE0F","image":"1f468-1f3fe-200d-2708-fe0f.png","sheet_x":41,"sheet_y":30,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-2708-FE0F","image":"1f468-1f3ff-200d-2708-fe0f.png","sheet_x":41,"sheet_y":31,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-2764-FE0F-200D-1F468","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-2764-fe0f-200d-1f468.png","sheet_x":41,"sheet_y":32,"short_name":"man-heart-man","short_names":["man-heart-man"],"text":null,"texts":null,"category":"People","sort_order":239,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-2764-FE0F-200D-1F48B-200D-1F468","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.png","sheet_x":41,"sheet_y":33,"short_name":"man-kiss-man","short_names":["man-kiss-man"],"text":null,"texts":null,"category":"People","sort_order":242,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F469-200D-1F466-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f466-200d-1f466.png","sheet_x":41,"sheet_y":34,"short_name":"woman-boy-boy","short_names":["woman-boy-boy"],"text":null,"texts":null,"category":"People","sort_order":261,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F469-200D-1F467-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f467-200d-1f466.png","sheet_x":41,"sheet_y":35,"short_name":"woman-girl-boy","short_names":["woman-girl-boy"],"text":null,"texts":null,"category":"People","sort_order":260,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F469-200D-1F467-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f467-200d-1f467.png","sheet_x":41,"sheet_y":36,"short_name":"woman-girl-girl","short_names":["woman-girl-girl"],"text":null,"texts":null,"category":"People","sort_order":262,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F469-200D-1F469-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f469-200d-1f466.png","sheet_x":41,"sheet_y":37,"short_name":"woman-woman-boy","short_names":["woman-woman-boy"],"text":null,"texts":null,"category":"People","sort_order":248,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F469-200D-1F469-200D-1F466-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f469-200d-1f466-200d-1f466.png","sheet_x":41,"sheet_y":38,"short_name":"woman-woman-boy-boy","short_names":["woman-woman-boy-boy"],"text":null,"texts":null,"category":"People","sort_order":251,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F469-200D-1F469-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f469-200d-1f467.png","sheet_x":41,"sheet_y":39,"short_name":"woman-woman-girl","short_names":["woman-woman-girl"],"text":null,"texts":null,"category":"People","sort_order":249,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F469-200D-1F469-200D-1F467-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f469-200d-1f467-200d-1f466.png","sheet_x":41,"sheet_y":40,"short_name":"woman-woman-girl-boy","short_names":["woman-woman-girl-boy"],"text":null,"texts":null,"category":"People","sort_order":250,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F469-200D-1F469-200D-1F467-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f469-200d-1f467-200d-1f467.png","sheet_x":41,"sheet_y":41,"short_name":"woman-woman-girl-girl","short_names":["woman-woman-girl-girl"],"text":null,"texts":null,"category":"People","sort_order":252,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F469-200D-2695-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-2695-fe0f.png","sheet_x":41,"sheet_y":42,"short_name":"female-doctor","short_names":["female-doctor"],"text":null,"texts":null,"category":"People","sort_order":161,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-2695-FE0F","image":"1f469-1f3fb-200d-2695-fe0f.png","sheet_x":41,"sheet_y":43,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-2695-FE0F","image":"1f469-1f3fc-200d-2695-fe0f.png","sheet_x":41,"sheet_y":44,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-2695-FE0F","image":"1f469-1f3fd-200d-2695-fe0f.png","sheet_x":41,"sheet_y":45,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-2695-FE0F","image":"1f469-1f3fe-200d-2695-fe0f.png","sheet_x":41,"sheet_y":46,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-2695-FE0F","image":"1f469-1f3ff-200d-2695-fe0f.png","sheet_x":41,"sheet_y":47,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-2696-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-2696-fe0f.png","sheet_x":41,"sheet_y":48,"short_name":"female-judge","short_names":["female-judge"],"text":null,"texts":null,"category":"People","sort_order":191,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-2696-FE0F","image":"1f469-1f3fb-200d-2696-fe0f.png","sheet_x":42,"sheet_y":0,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-2696-FE0F","image":"1f469-1f3fc-200d-2696-fe0f.png","sheet_x":42,"sheet_y":1,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-2696-FE0F","image":"1f469-1f3fd-200d-2696-fe0f.png","sheet_x":42,"sheet_y":2,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-2696-FE0F","image":"1f469-1f3fe-200d-2696-fe0f.png","sheet_x":42,"sheet_y":3,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-2696-FE0F","image":"1f469-1f3ff-200d-2696-fe0f.png","sheet_x":42,"sheet_y":4,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-2708-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-2708-fe0f.png","sheet_x":42,"sheet_y":5,"short_name":"female-pilot","short_names":["female-pilot"],"text":null,"texts":null,"category":"People","sort_order":187,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-2708-FE0F","image":"1f469-1f3fb-200d-2708-fe0f.png","sheet_x":42,"sheet_y":6,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-2708-FE0F","image":"1f469-1f3fc-200d-2708-fe0f.png","sheet_x":42,"sheet_y":7,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-2708-FE0F","image":"1f469-1f3fd-200d-2708-fe0f.png","sheet_x":42,"sheet_y":8,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-2708-FE0F","image":"1f469-1f3fe-200d-2708-fe0f.png","sheet_x":42,"sheet_y":9,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-2708-FE0F","image":"1f469-1f3ff-200d-2708-fe0f.png","sheet_x":42,"sheet_y":10,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-2764-FE0F-200D-1F468","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-2764-fe0f-200d-1f468.png","sheet_x":42,"sheet_y":11,"short_name":"woman-heart-man","short_names":["woman-heart-man"],"text":null,"texts":null,"category":"People","sort_order":295,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"obsoletes":"1F491"},{"name":null,"unified":"1F469-200D-2764-FE0F-200D-1F469","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-2764-fe0f-200d-1f469.png","sheet_x":42,"sheet_y":12,"short_name":"woman-heart-woman","short_names":["woman-heart-woman"],"text":null,"texts":null,"category":"People","sort_order":238,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F468","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468.png","sheet_x":42,"sheet_y":13,"short_name":"woman-kiss-man","short_names":["woman-kiss-man"],"text":null,"texts":null,"category":"People","sort_order":296,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"obsoletes":"1F48F"},{"name":null,"unified":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F469","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.png","sheet_x":42,"sheet_y":14,"short_name":"woman-kiss-woman","short_names":["woman-kiss-woman"],"text":null,"texts":null,"category":"People","sort_order":241,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F46E-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f46e-200d-2640-fe0f.png","sheet_x":42,"sheet_y":15,"short_name":"female-police-officer","short_names":["female-police-officer"],"text":null,"texts":null,"category":"People","sort_order":153,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F46E-1F3FB-200D-2640-FE0F","image":"1f46e-1f3fb-200d-2640-fe0f.png","sheet_x":42,"sheet_y":16,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F46E-1F3FC-200D-2640-FE0F","image":"1f46e-1f3fc-200d-2640-fe0f.png","sheet_x":42,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F46E-1F3FD-200D-2640-FE0F","image":"1f46e-1f3fd-200d-2640-fe0f.png","sheet_x":42,"sheet_y":18,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F46E-1F3FE-200D-2640-FE0F","image":"1f46e-1f3fe-200d-2640-fe0f.png","sheet_x":42,"sheet_y":19,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F46E-1F3FF-200D-2640-FE0F","image":"1f46e-1f3ff-200d-2640-fe0f.png","sheet_x":42,"sheet_y":20,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F46E-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f46e-200d-2642-fe0f.png","sheet_x":42,"sheet_y":21,"short_name":"male-police-officer","short_names":["male-police-officer"],"text":null,"texts":null,"category":"People","sort_order":297,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F46E-1F3FB-200D-2642-FE0F","image":"1f46e-1f3fb-200d-2642-fe0f.png","sheet_x":42,"sheet_y":22,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F46E-1F3FC-200D-2642-FE0F","image":"1f46e-1f3fc-200d-2642-fe0f.png","sheet_x":42,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F46E-1F3FD-200D-2642-FE0F","image":"1f46e-1f3fd-200d-2642-fe0f.png","sheet_x":42,"sheet_y":24,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F46E-1F3FE-200D-2642-FE0F","image":"1f46e-1f3fe-200d-2642-fe0f.png","sheet_x":42,"sheet_y":25,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F46E-1F3FF-200D-2642-FE0F","image":"1f46e-1f3ff-200d-2642-fe0f.png","sheet_x":42,"sheet_y":26,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F46E"},{"name":null,"unified":"1F46F-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f46f-200d-2640-fe0f.png","sheet_x":42,"sheet_y":27,"short_name":"woman-with-bunny-ears-partying","short_names":["woman-with-bunny-ears-partying"],"text":null,"texts":null,"category":"People","sort_order":303,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"obsoletes":"1F46F"},{"name":null,"unified":"1F46F-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f46f-200d-2642-fe0f.png","sheet_x":42,"sheet_y":28,"short_name":"man-with-bunny-ears-partying","short_names":["man-with-bunny-ears-partying"],"text":null,"texts":null,"category":"People","sort_order":229,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},{"name":null,"unified":"1F471-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f471-200d-2640-fe0f.png","sheet_x":42,"sheet_y":29,"short_name":"blond-haired-woman","short_names":["blond-haired-woman"],"text":null,"texts":null,"category":"People","sort_order":146,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F471-1F3FB-200D-2640-FE0F","image":"1f471-1f3fb-200d-2640-fe0f.png","sheet_x":42,"sheet_y":30,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F471-1F3FC-200D-2640-FE0F","image":"1f471-1f3fc-200d-2640-fe0f.png","sheet_x":42,"sheet_y":31,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F471-1F3FD-200D-2640-FE0F","image":"1f471-1f3fd-200d-2640-fe0f.png","sheet_x":42,"sheet_y":32,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F471-1F3FE-200D-2640-FE0F","image":"1f471-1f3fe-200d-2640-fe0f.png","sheet_x":42,"sheet_y":33,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F471-1F3FF-200D-2640-FE0F","image":"1f471-1f3ff-200d-2640-fe0f.png","sheet_x":42,"sheet_y":34,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F471-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f471-200d-2642-fe0f.png","sheet_x":42,"sheet_y":35,"short_name":"blond-haired-man","short_names":["blond-haired-man"],"text":null,"texts":null,"category":"People","sort_order":298,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F471-1F3FB-200D-2642-FE0F","image":"1f471-1f3fb-200d-2642-fe0f.png","sheet_x":42,"sheet_y":36,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F471-1F3FC-200D-2642-FE0F","image":"1f471-1f3fc-200d-2642-fe0f.png","sheet_x":42,"sheet_y":37,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F471-1F3FD-200D-2642-FE0F","image":"1f471-1f3fd-200d-2642-fe0f.png","sheet_x":42,"sheet_y":38,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F471-1F3FE-200D-2642-FE0F","image":"1f471-1f3fe-200d-2642-fe0f.png","sheet_x":42,"sheet_y":39,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F471-1F3FF-200D-2642-FE0F","image":"1f471-1f3ff-200d-2642-fe0f.png","sheet_x":42,"sheet_y":40,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F471"},{"name":null,"unified":"1F473-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f473-200d-2640-fe0f.png","sheet_x":42,"sheet_y":41,"short_name":"woman-wearing-turban","short_names":["woman-wearing-turban"],"text":null,"texts":null,"category":"People","sort_order":151,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F473-1F3FB-200D-2640-FE0F","image":"1f473-1f3fb-200d-2640-fe0f.png","sheet_x":42,"sheet_y":42,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F473-1F3FC-200D-2640-FE0F","image":"1f473-1f3fc-200d-2640-fe0f.png","sheet_x":42,"sheet_y":43,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F473-1F3FD-200D-2640-FE0F","image":"1f473-1f3fd-200d-2640-fe0f.png","sheet_x":42,"sheet_y":44,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F473-1F3FE-200D-2640-FE0F","image":"1f473-1f3fe-200d-2640-fe0f.png","sheet_x":42,"sheet_y":45,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F473-1F3FF-200D-2640-FE0F","image":"1f473-1f3ff-200d-2640-fe0f.png","sheet_x":42,"sheet_y":46,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F473-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f473-200d-2642-fe0f.png","sheet_x":42,"sheet_y":47,"short_name":"man-wearing-turban","short_names":["man-wearing-turban"],"text":null,"texts":null,"category":"People","sort_order":299,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F473-1F3FB-200D-2642-FE0F","image":"1f473-1f3fb-200d-2642-fe0f.png","sheet_x":42,"sheet_y":48,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F473-1F3FC-200D-2642-FE0F","image":"1f473-1f3fc-200d-2642-fe0f.png","sheet_x":43,"sheet_y":0,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F473-1F3FD-200D-2642-FE0F","image":"1f473-1f3fd-200d-2642-fe0f.png","sheet_x":43,"sheet_y":1,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F473-1F3FE-200D-2642-FE0F","image":"1f473-1f3fe-200d-2642-fe0f.png","sheet_x":43,"sheet_y":2,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F473-1F3FF-200D-2642-FE0F","image":"1f473-1f3ff-200d-2642-fe0f.png","sheet_x":43,"sheet_y":3,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F473"},{"name":null,"unified":"1F477-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f477-200d-2640-fe0f.png","sheet_x":43,"sheet_y":4,"short_name":"female-construction-worker","short_names":["female-construction-worker"],"text":null,"texts":null,"category":"People","sort_order":155,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F477-1F3FB-200D-2640-FE0F","image":"1f477-1f3fb-200d-2640-fe0f.png","sheet_x":43,"sheet_y":5,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F477-1F3FC-200D-2640-FE0F","image":"1f477-1f3fc-200d-2640-fe0f.png","sheet_x":43,"sheet_y":6,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F477-1F3FD-200D-2640-FE0F","image":"1f477-1f3fd-200d-2640-fe0f.png","sheet_x":43,"sheet_y":7,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F477-1F3FE-200D-2640-FE0F","image":"1f477-1f3fe-200d-2640-fe0f.png","sheet_x":43,"sheet_y":8,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F477-1F3FF-200D-2640-FE0F","image":"1f477-1f3ff-200d-2640-fe0f.png","sheet_x":43,"sheet_y":9,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F477-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f477-200d-2642-fe0f.png","sheet_x":43,"sheet_y":10,"short_name":"male-construction-worker","short_names":["male-construction-worker"],"text":null,"texts":null,"category":"People","sort_order":300,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F477-1F3FB-200D-2642-FE0F","image":"1f477-1f3fb-200d-2642-fe0f.png","sheet_x":43,"sheet_y":11,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F477-1F3FC-200D-2642-FE0F","image":"1f477-1f3fc-200d-2642-fe0f.png","sheet_x":43,"sheet_y":12,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F477-1F3FD-200D-2642-FE0F","image":"1f477-1f3fd-200d-2642-fe0f.png","sheet_x":43,"sheet_y":13,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F477-1F3FE-200D-2642-FE0F","image":"1f477-1f3fe-200d-2642-fe0f.png","sheet_x":43,"sheet_y":14,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F477-1F3FF-200D-2642-FE0F","image":"1f477-1f3ff-200d-2642-fe0f.png","sheet_x":43,"sheet_y":15,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F477"},{"name":null,"unified":"1F481-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f481-200d-2640-fe0f.png","sheet_x":43,"sheet_y":16,"short_name":"woman-tipping-hand","short_names":["woman-tipping-hand"],"text":null,"texts":null,"category":"People","sort_order":308,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F481-1F3FB-200D-2640-FE0F","image":"1f481-1f3fb-200d-2640-fe0f.png","sheet_x":43,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F481-1F3FC-200D-2640-FE0F","image":"1f481-1f3fc-200d-2640-fe0f.png","sheet_x":43,"sheet_y":18,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F481-1F3FD-200D-2640-FE0F","image":"1f481-1f3fd-200d-2640-fe0f.png","sheet_x":43,"sheet_y":19,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F481-1F3FE-200D-2640-FE0F","image":"1f481-1f3fe-200d-2640-fe0f.png","sheet_x":43,"sheet_y":20,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F481-1F3FF-200D-2640-FE0F","image":"1f481-1f3ff-200d-2640-fe0f.png","sheet_x":43,"sheet_y":21,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F481"},{"name":null,"unified":"1F481-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f481-200d-2642-fe0f.png","sheet_x":43,"sheet_y":22,"short_name":"man-tipping-hand","short_names":["man-tipping-hand"],"text":null,"texts":null,"category":"People","sort_order":204,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F481-1F3FB-200D-2642-FE0F","image":"1f481-1f3fb-200d-2642-fe0f.png","sheet_x":43,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F481-1F3FC-200D-2642-FE0F","image":"1f481-1f3fc-200d-2642-fe0f.png","sheet_x":43,"sheet_y":24,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F481-1F3FD-200D-2642-FE0F","image":"1f481-1f3fd-200d-2642-fe0f.png","sheet_x":43,"sheet_y":25,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F481-1F3FE-200D-2642-FE0F","image":"1f481-1f3fe-200d-2642-fe0f.png","sheet_x":43,"sheet_y":26,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F481-1F3FF-200D-2642-FE0F","image":"1f481-1f3ff-200d-2642-fe0f.png","sheet_x":43,"sheet_y":27,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F482-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f482-200d-2640-fe0f.png","sheet_x":43,"sheet_y":28,"short_name":"female-guard","short_names":["female-guard"],"text":null,"texts":null,"category":"People","sort_order":157,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F482-1F3FB-200D-2640-FE0F","image":"1f482-1f3fb-200d-2640-fe0f.png","sheet_x":43,"sheet_y":29,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F482-1F3FC-200D-2640-FE0F","image":"1f482-1f3fc-200d-2640-fe0f.png","sheet_x":43,"sheet_y":30,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F482-1F3FD-200D-2640-FE0F","image":"1f482-1f3fd-200d-2640-fe0f.png","sheet_x":43,"sheet_y":31,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F482-1F3FE-200D-2640-FE0F","image":"1f482-1f3fe-200d-2640-fe0f.png","sheet_x":43,"sheet_y":32,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F482-1F3FF-200D-2640-FE0F","image":"1f482-1f3ff-200d-2640-fe0f.png","sheet_x":43,"sheet_y":33,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F482-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f482-200d-2642-fe0f.png","sheet_x":43,"sheet_y":34,"short_name":"male-guard","short_names":["male-guard"],"text":null,"texts":null,"category":"People","sort_order":301,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F482-1F3FB-200D-2642-FE0F","image":"1f482-1f3fb-200d-2642-fe0f.png","sheet_x":43,"sheet_y":35,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F482-1F3FC-200D-2642-FE0F","image":"1f482-1f3fc-200d-2642-fe0f.png","sheet_x":43,"sheet_y":36,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F482-1F3FD-200D-2642-FE0F","image":"1f482-1f3fd-200d-2642-fe0f.png","sheet_x":43,"sheet_y":37,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F482-1F3FE-200D-2642-FE0F","image":"1f482-1f3fe-200d-2642-fe0f.png","sheet_x":43,"sheet_y":38,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F482-1F3FF-200D-2642-FE0F","image":"1f482-1f3ff-200d-2642-fe0f.png","sheet_x":43,"sheet_y":39,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F482"},{"name":null,"unified":"1F486-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f486-200d-2640-fe0f.png","sheet_x":43,"sheet_y":40,"short_name":"woman-getting-massage","short_names":["woman-getting-massage"],"text":null,"texts":null,"category":"People","sort_order":305,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F486-1F3FB-200D-2640-FE0F","image":"1f486-1f3fb-200d-2640-fe0f.png","sheet_x":43,"sheet_y":41,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F486-1F3FC-200D-2640-FE0F","image":"1f486-1f3fc-200d-2640-fe0f.png","sheet_x":43,"sheet_y":42,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F486-1F3FD-200D-2640-FE0F","image":"1f486-1f3fd-200d-2640-fe0f.png","sheet_x":43,"sheet_y":43,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F486-1F3FE-200D-2640-FE0F","image":"1f486-1f3fe-200d-2640-fe0f.png","sheet_x":43,"sheet_y":44,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F486-1F3FF-200D-2640-FE0F","image":"1f486-1f3ff-200d-2640-fe0f.png","sheet_x":43,"sheet_y":45,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F486"},{"name":null,"unified":"1F486-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f486-200d-2642-fe0f.png","sheet_x":43,"sheet_y":46,"short_name":"man-getting-massage","short_names":["man-getting-massage"],"text":null,"texts":null,"category":"People","sort_order":224,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F486-1F3FB-200D-2642-FE0F","image":"1f486-1f3fb-200d-2642-fe0f.png","sheet_x":43,"sheet_y":47,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F486-1F3FC-200D-2642-FE0F","image":"1f486-1f3fc-200d-2642-fe0f.png","sheet_x":43,"sheet_y":48,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F486-1F3FD-200D-2642-FE0F","image":"1f486-1f3fd-200d-2642-fe0f.png","sheet_x":44,"sheet_y":0,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F486-1F3FE-200D-2642-FE0F","image":"1f486-1f3fe-200d-2642-fe0f.png","sheet_x":44,"sheet_y":1,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F486-1F3FF-200D-2642-FE0F","image":"1f486-1f3ff-200d-2642-fe0f.png","sheet_x":44,"sheet_y":2,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F487-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f487-200d-2640-fe0f.png","sheet_x":44,"sheet_y":3,"short_name":"woman-getting-haircut","short_names":["woman-getting-haircut"],"text":null,"texts":null,"category":"People","sort_order":306,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F487-1F3FB-200D-2640-FE0F","image":"1f487-1f3fb-200d-2640-fe0f.png","sheet_x":44,"sheet_y":4,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F487-1F3FC-200D-2640-FE0F","image":"1f487-1f3fc-200d-2640-fe0f.png","sheet_x":44,"sheet_y":5,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F487-1F3FD-200D-2640-FE0F","image":"1f487-1f3fd-200d-2640-fe0f.png","sheet_x":44,"sheet_y":6,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F487-1F3FE-200D-2640-FE0F","image":"1f487-1f3fe-200d-2640-fe0f.png","sheet_x":44,"sheet_y":7,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F487-1F3FF-200D-2640-FE0F","image":"1f487-1f3ff-200d-2640-fe0f.png","sheet_x":44,"sheet_y":8,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F487"},{"name":null,"unified":"1F487-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f487-200d-2642-fe0f.png","sheet_x":44,"sheet_y":9,"short_name":"man-getting-haircut","short_names":["man-getting-haircut"],"text":null,"texts":null,"category":"People","sort_order":222,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F487-1F3FB-200D-2642-FE0F","image":"1f487-1f3fb-200d-2642-fe0f.png","sheet_x":44,"sheet_y":10,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F487-1F3FC-200D-2642-FE0F","image":"1f487-1f3fc-200d-2642-fe0f.png","sheet_x":44,"sheet_y":11,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F487-1F3FD-200D-2642-FE0F","image":"1f487-1f3fd-200d-2642-fe0f.png","sheet_x":44,"sheet_y":12,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F487-1F3FE-200D-2642-FE0F","image":"1f487-1f3fe-200d-2642-fe0f.png","sheet_x":44,"sheet_y":13,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F487-1F3FF-200D-2642-FE0F","image":"1f487-1f3ff-200d-2642-fe0f.png","sheet_x":44,"sheet_y":14,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F575-FE0F-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f575-fe0f-200d-2640-fe0f.png","sheet_x":44,"sheet_y":15,"short_name":"female-detective","short_names":["female-detective"],"text":null,"texts":null,"category":"People","sort_order":159,"added_in":"7.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F575-1F3FB-200D-2640-FE0F","image":"1f575-1f3fb-200d-2640-fe0f.png","sheet_x":44,"sheet_y":16,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F575-1F3FC-200D-2640-FE0F","image":"1f575-1f3fc-200d-2640-fe0f.png","sheet_x":44,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F575-1F3FD-200D-2640-FE0F","image":"1f575-1f3fd-200d-2640-fe0f.png","sheet_x":44,"sheet_y":18,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F575-1F3FE-200D-2640-FE0F","image":"1f575-1f3fe-200d-2640-fe0f.png","sheet_x":44,"sheet_y":19,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F575-1F3FF-200D-2640-FE0F","image":"1f575-1f3ff-200d-2640-fe0f.png","sheet_x":44,"sheet_y":20,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F575-FE0F-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f575-fe0f-200d-2642-fe0f.png","sheet_x":44,"sheet_y":21,"short_name":"male-detective","short_names":["male-detective"],"text":null,"texts":null,"category":"People","sort_order":302,"added_in":"7.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F575-1F3FB-200D-2642-FE0F","image":"1f575-1f3fb-200d-2642-fe0f.png","sheet_x":44,"sheet_y":22,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F575-1F3FC-200D-2642-FE0F","image":"1f575-1f3fc-200d-2642-fe0f.png","sheet_x":44,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F575-1F3FD-200D-2642-FE0F","image":"1f575-1f3fd-200d-2642-fe0f.png","sheet_x":44,"sheet_y":24,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F575-1F3FE-200D-2642-FE0F","image":"1f575-1f3fe-200d-2642-fe0f.png","sheet_x":44,"sheet_y":25,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F575-1F3FF-200D-2642-FE0F","image":"1f575-1f3ff-200d-2642-fe0f.png","sheet_x":44,"sheet_y":26,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F575"},{"name":null,"unified":"1F645-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f645-200d-2640-fe0f.png","sheet_x":44,"sheet_y":27,"short_name":"woman-gesturing-no","short_names":["woman-gesturing-no"],"text":null,"texts":null,"category":"People","sort_order":309,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F645-1F3FB-200D-2640-FE0F","image":"1f645-1f3fb-200d-2640-fe0f.png","sheet_x":44,"sheet_y":28,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F645-1F3FC-200D-2640-FE0F","image":"1f645-1f3fc-200d-2640-fe0f.png","sheet_x":44,"sheet_y":29,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F645-1F3FD-200D-2640-FE0F","image":"1f645-1f3fd-200d-2640-fe0f.png","sheet_x":44,"sheet_y":30,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F645-1F3FE-200D-2640-FE0F","image":"1f645-1f3fe-200d-2640-fe0f.png","sheet_x":44,"sheet_y":31,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F645-1F3FF-200D-2640-FE0F","image":"1f645-1f3ff-200d-2640-fe0f.png","sheet_x":44,"sheet_y":32,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F645"},{"name":null,"unified":"1F645-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f645-200d-2642-fe0f.png","sheet_x":44,"sheet_y":33,"short_name":"man-gesturing-no","short_names":["man-gesturing-no"],"text":null,"texts":null,"category":"People","sort_order":206,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F645-1F3FB-200D-2642-FE0F","image":"1f645-1f3fb-200d-2642-fe0f.png","sheet_x":44,"sheet_y":34,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F645-1F3FC-200D-2642-FE0F","image":"1f645-1f3fc-200d-2642-fe0f.png","sheet_x":44,"sheet_y":35,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F645-1F3FD-200D-2642-FE0F","image":"1f645-1f3fd-200d-2642-fe0f.png","sheet_x":44,"sheet_y":36,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F645-1F3FE-200D-2642-FE0F","image":"1f645-1f3fe-200d-2642-fe0f.png","sheet_x":44,"sheet_y":37,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F645-1F3FF-200D-2642-FE0F","image":"1f645-1f3ff-200d-2642-fe0f.png","sheet_x":44,"sheet_y":38,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F646-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f646-200d-2640-fe0f.png","sheet_x":44,"sheet_y":39,"short_name":"woman-gesturing-ok","short_names":["woman-gesturing-ok"],"text":null,"texts":null,"category":"People","sort_order":310,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F646-1F3FB-200D-2640-FE0F","image":"1f646-1f3fb-200d-2640-fe0f.png","sheet_x":44,"sheet_y":40,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F646-1F3FC-200D-2640-FE0F","image":"1f646-1f3fc-200d-2640-fe0f.png","sheet_x":44,"sheet_y":41,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F646-1F3FD-200D-2640-FE0F","image":"1f646-1f3fd-200d-2640-fe0f.png","sheet_x":44,"sheet_y":42,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F646-1F3FE-200D-2640-FE0F","image":"1f646-1f3fe-200d-2640-fe0f.png","sheet_x":44,"sheet_y":43,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F646-1F3FF-200D-2640-FE0F","image":"1f646-1f3ff-200d-2640-fe0f.png","sheet_x":44,"sheet_y":44,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F646"},{"name":null,"unified":"1F646-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f646-200d-2642-fe0f.png","sheet_x":44,"sheet_y":45,"short_name":"man-gesturing-ok","short_names":["man-gesturing-ok"],"text":null,"texts":null,"category":"People","sort_order":208,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F646-1F3FB-200D-2642-FE0F","image":"1f646-1f3fb-200d-2642-fe0f.png","sheet_x":44,"sheet_y":46,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F646-1F3FC-200D-2642-FE0F","image":"1f646-1f3fc-200d-2642-fe0f.png","sheet_x":44,"sheet_y":47,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F646-1F3FD-200D-2642-FE0F","image":"1f646-1f3fd-200d-2642-fe0f.png","sheet_x":44,"sheet_y":48,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F646-1F3FE-200D-2642-FE0F","image":"1f646-1f3fe-200d-2642-fe0f.png","sheet_x":45,"sheet_y":0,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F646-1F3FF-200D-2642-FE0F","image":"1f646-1f3ff-200d-2642-fe0f.png","sheet_x":45,"sheet_y":1,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F647-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f647-200d-2640-fe0f.png","sheet_x":45,"sheet_y":2,"short_name":"woman-bowing","short_names":["woman-bowing"],"text":null,"texts":null,"category":"People","sort_order":201,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F647-1F3FB-200D-2640-FE0F","image":"1f647-1f3fb-200d-2640-fe0f.png","sheet_x":45,"sheet_y":3,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F647-1F3FC-200D-2640-FE0F","image":"1f647-1f3fc-200d-2640-fe0f.png","sheet_x":45,"sheet_y":4,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F647-1F3FD-200D-2640-FE0F","image":"1f647-1f3fd-200d-2640-fe0f.png","sheet_x":45,"sheet_y":5,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F647-1F3FE-200D-2640-FE0F","image":"1f647-1f3fe-200d-2640-fe0f.png","sheet_x":45,"sheet_y":6,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F647-1F3FF-200D-2640-FE0F","image":"1f647-1f3ff-200d-2640-fe0f.png","sheet_x":45,"sheet_y":7,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F647-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f647-200d-2642-fe0f.png","sheet_x":45,"sheet_y":8,"short_name":"man-bowing","short_names":["man-bowing"],"text":null,"texts":null,"category":"People","sort_order":311,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F647-1F3FB-200D-2642-FE0F","image":"1f647-1f3fb-200d-2642-fe0f.png","sheet_x":45,"sheet_y":9,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F647-1F3FC-200D-2642-FE0F","image":"1f647-1f3fc-200d-2642-fe0f.png","sheet_x":45,"sheet_y":10,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F647-1F3FD-200D-2642-FE0F","image":"1f647-1f3fd-200d-2642-fe0f.png","sheet_x":45,"sheet_y":11,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F647-1F3FE-200D-2642-FE0F","image":"1f647-1f3fe-200d-2642-fe0f.png","sheet_x":45,"sheet_y":12,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F647-1F3FF-200D-2642-FE0F","image":"1f647-1f3ff-200d-2642-fe0f.png","sheet_x":45,"sheet_y":13,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F647"},{"name":null,"unified":"1F64B-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f64b-200d-2640-fe0f.png","sheet_x":45,"sheet_y":14,"short_name":"woman-raising-hand","short_names":["woman-raising-hand"],"text":null,"texts":null,"category":"People","sort_order":312,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F64B-1F3FB-200D-2640-FE0F","image":"1f64b-1f3fb-200d-2640-fe0f.png","sheet_x":45,"sheet_y":15,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F64B-1F3FC-200D-2640-FE0F","image":"1f64b-1f3fc-200d-2640-fe0f.png","sheet_x":45,"sheet_y":16,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F64B-1F3FD-200D-2640-FE0F","image":"1f64b-1f3fd-200d-2640-fe0f.png","sheet_x":45,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F64B-1F3FE-200D-2640-FE0F","image":"1f64b-1f3fe-200d-2640-fe0f.png","sheet_x":45,"sheet_y":18,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F64B-1F3FF-200D-2640-FE0F","image":"1f64b-1f3ff-200d-2640-fe0f.png","sheet_x":45,"sheet_y":19,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F64B"},{"name":null,"unified":"1F64B-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f64b-200d-2642-fe0f.png","sheet_x":45,"sheet_y":20,"short_name":"man-raising-hand","short_names":["man-raising-hand"],"text":null,"texts":null,"category":"People","sort_order":210,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F64B-1F3FB-200D-2642-FE0F","image":"1f64b-1f3fb-200d-2642-fe0f.png","sheet_x":45,"sheet_y":21,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F64B-1F3FC-200D-2642-FE0F","image":"1f64b-1f3fc-200d-2642-fe0f.png","sheet_x":45,"sheet_y":22,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F64B-1F3FD-200D-2642-FE0F","image":"1f64b-1f3fd-200d-2642-fe0f.png","sheet_x":45,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F64B-1F3FE-200D-2642-FE0F","image":"1f64b-1f3fe-200d-2642-fe0f.png","sheet_x":45,"sheet_y":24,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F64B-1F3FF-200D-2642-FE0F","image":"1f64b-1f3ff-200d-2642-fe0f.png","sheet_x":45,"sheet_y":25,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F64D-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f64d-200d-2640-fe0f.png","sheet_x":45,"sheet_y":26,"short_name":"woman-frowning","short_names":["woman-frowning"],"text":null,"texts":null,"category":"People","sort_order":313,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F64D-1F3FB-200D-2640-FE0F","image":"1f64d-1f3fb-200d-2640-fe0f.png","sheet_x":45,"sheet_y":27,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F64D-1F3FC-200D-2640-FE0F","image":"1f64d-1f3fc-200d-2640-fe0f.png","sheet_x":45,"sheet_y":28,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F64D-1F3FD-200D-2640-FE0F","image":"1f64d-1f3fd-200d-2640-fe0f.png","sheet_x":45,"sheet_y":29,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F64D-1F3FE-200D-2640-FE0F","image":"1f64d-1f3fe-200d-2640-fe0f.png","sheet_x":45,"sheet_y":30,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F64D-1F3FF-200D-2640-FE0F","image":"1f64d-1f3ff-200d-2640-fe0f.png","sheet_x":45,"sheet_y":31,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F64D"},{"name":null,"unified":"1F64D-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f64d-200d-2642-fe0f.png","sheet_x":45,"sheet_y":32,"short_name":"man-frowning","short_names":["man-frowning"],"text":null,"texts":null,"category":"People","sort_order":220,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F64D-1F3FB-200D-2642-FE0F","image":"1f64d-1f3fb-200d-2642-fe0f.png","sheet_x":45,"sheet_y":33,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F64D-1F3FC-200D-2642-FE0F","image":"1f64d-1f3fc-200d-2642-fe0f.png","sheet_x":45,"sheet_y":34,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F64D-1F3FD-200D-2642-FE0F","image":"1f64d-1f3fd-200d-2642-fe0f.png","sheet_x":45,"sheet_y":35,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F64D-1F3FE-200D-2642-FE0F","image":"1f64d-1f3fe-200d-2642-fe0f.png","sheet_x":45,"sheet_y":36,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F64D-1F3FF-200D-2642-FE0F","image":"1f64d-1f3ff-200d-2642-fe0f.png","sheet_x":45,"sheet_y":37,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F64E-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f64e-200d-2640-fe0f.png","sheet_x":45,"sheet_y":38,"short_name":"woman-pouting","short_names":["woman-pouting"],"text":null,"texts":null,"category":"People","sort_order":314,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F64E-1F3FB-200D-2640-FE0F","image":"1f64e-1f3fb-200d-2640-fe0f.png","sheet_x":45,"sheet_y":39,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F64E-1F3FC-200D-2640-FE0F","image":"1f64e-1f3fc-200d-2640-fe0f.png","sheet_x":45,"sheet_y":40,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F64E-1F3FD-200D-2640-FE0F","image":"1f64e-1f3fd-200d-2640-fe0f.png","sheet_x":45,"sheet_y":41,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F64E-1F3FE-200D-2640-FE0F","image":"1f64e-1f3fe-200d-2640-fe0f.png","sheet_x":45,"sheet_y":42,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F64E-1F3FF-200D-2640-FE0F","image":"1f64e-1f3ff-200d-2640-fe0f.png","sheet_x":45,"sheet_y":43,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F64E"},{"name":null,"unified":"1F64E-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f64e-200d-2642-fe0f.png","sheet_x":45,"sheet_y":44,"short_name":"man-pouting","short_names":["man-pouting"],"text":null,"texts":null,"category":"People","sort_order":218,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F64E-1F3FB-200D-2642-FE0F","image":"1f64e-1f3fb-200d-2642-fe0f.png","sheet_x":45,"sheet_y":45,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F64E-1F3FC-200D-2642-FE0F","image":"1f64e-1f3fc-200d-2642-fe0f.png","sheet_x":45,"sheet_y":46,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F64E-1F3FD-200D-2642-FE0F","image":"1f64e-1f3fd-200d-2642-fe0f.png","sheet_x":45,"sheet_y":47,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F64E-1F3FE-200D-2642-FE0F","image":"1f64e-1f3fe-200d-2642-fe0f.png","sheet_x":45,"sheet_y":48,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F64E-1F3FF-200D-2642-FE0F","image":"1f64e-1f3ff-200d-2642-fe0f.png","sheet_x":46,"sheet_y":0,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F6A3-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6a3-200d-2640-fe0f.png","sheet_x":46,"sheet_y":1,"short_name":"woman-rowing-boat","short_names":["woman-rowing-boat"],"text":null,"texts":null,"category":"Activity","sort_order":47,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6A3-1F3FB-200D-2640-FE0F","image":"1f6a3-1f3fb-200d-2640-fe0f.png","sheet_x":46,"sheet_y":2,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F6A3-1F3FC-200D-2640-FE0F","image":"1f6a3-1f3fc-200d-2640-fe0f.png","sheet_x":46,"sheet_y":3,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F6A3-1F3FD-200D-2640-FE0F","image":"1f6a3-1f3fd-200d-2640-fe0f.png","sheet_x":46,"sheet_y":4,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F6A3-1F3FE-200D-2640-FE0F","image":"1f6a3-1f3fe-200d-2640-fe0f.png","sheet_x":46,"sheet_y":5,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F6A3-1F3FF-200D-2640-FE0F","image":"1f6a3-1f3ff-200d-2640-fe0f.png","sheet_x":46,"sheet_y":6,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F6A3-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6a3-200d-2642-fe0f.png","sheet_x":46,"sheet_y":7,"short_name":"man-rowing-boat","short_names":["man-rowing-boat"],"text":null,"texts":null,"category":"Activity","sort_order":91,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6A3-1F3FB-200D-2642-FE0F","image":"1f6a3-1f3fb-200d-2642-fe0f.png","sheet_x":46,"sheet_y":8,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F6A3-1F3FC-200D-2642-FE0F","image":"1f6a3-1f3fc-200d-2642-fe0f.png","sheet_x":46,"sheet_y":9,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F6A3-1F3FD-200D-2642-FE0F","image":"1f6a3-1f3fd-200d-2642-fe0f.png","sheet_x":46,"sheet_y":10,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F6A3-1F3FE-200D-2642-FE0F","image":"1f6a3-1f3fe-200d-2642-fe0f.png","sheet_x":46,"sheet_y":11,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F6A3-1F3FF-200D-2642-FE0F","image":"1f6a3-1f3ff-200d-2642-fe0f.png","sheet_x":46,"sheet_y":12,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F6A3"},{"name":null,"unified":"1F6B4-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b4-200d-2640-fe0f.png","sheet_x":46,"sheet_y":13,"short_name":"woman-biking","short_names":["woman-biking"],"text":null,"texts":null,"category":"Activity","sort_order":50,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6B4-1F3FB-200D-2640-FE0F","image":"1f6b4-1f3fb-200d-2640-fe0f.png","sheet_x":46,"sheet_y":14,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F6B4-1F3FC-200D-2640-FE0F","image":"1f6b4-1f3fc-200d-2640-fe0f.png","sheet_x":46,"sheet_y":15,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F6B4-1F3FD-200D-2640-FE0F","image":"1f6b4-1f3fd-200d-2640-fe0f.png","sheet_x":46,"sheet_y":16,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F6B4-1F3FE-200D-2640-FE0F","image":"1f6b4-1f3fe-200d-2640-fe0f.png","sheet_x":46,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F6B4-1F3FF-200D-2640-FE0F","image":"1f6b4-1f3ff-200d-2640-fe0f.png","sheet_x":46,"sheet_y":18,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F6B4-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b4-200d-2642-fe0f.png","sheet_x":46,"sheet_y":19,"short_name":"man-biking","short_names":["man-biking"],"text":null,"texts":null,"category":"Activity","sort_order":92,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6B4-1F3FB-200D-2642-FE0F","image":"1f6b4-1f3fb-200d-2642-fe0f.png","sheet_x":46,"sheet_y":20,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F6B4-1F3FC-200D-2642-FE0F","image":"1f6b4-1f3fc-200d-2642-fe0f.png","sheet_x":46,"sheet_y":21,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F6B4-1F3FD-200D-2642-FE0F","image":"1f6b4-1f3fd-200d-2642-fe0f.png","sheet_x":46,"sheet_y":22,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F6B4-1F3FE-200D-2642-FE0F","image":"1f6b4-1f3fe-200d-2642-fe0f.png","sheet_x":46,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F6B4-1F3FF-200D-2642-FE0F","image":"1f6b4-1f3ff-200d-2642-fe0f.png","sheet_x":46,"sheet_y":24,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F6B4"},{"name":null,"unified":"1F6B5-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b5-200d-2640-fe0f.png","sheet_x":46,"sheet_y":25,"short_name":"woman-mountain-biking","short_names":["woman-mountain-biking"],"text":null,"texts":null,"category":"Activity","sort_order":52,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6B5-1F3FB-200D-2640-FE0F","image":"1f6b5-1f3fb-200d-2640-fe0f.png","sheet_x":46,"sheet_y":26,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F6B5-1F3FC-200D-2640-FE0F","image":"1f6b5-1f3fc-200d-2640-fe0f.png","sheet_x":46,"sheet_y":27,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F6B5-1F3FD-200D-2640-FE0F","image":"1f6b5-1f3fd-200d-2640-fe0f.png","sheet_x":46,"sheet_y":28,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F6B5-1F3FE-200D-2640-FE0F","image":"1f6b5-1f3fe-200d-2640-fe0f.png","sheet_x":46,"sheet_y":29,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F6B5-1F3FF-200D-2640-FE0F","image":"1f6b5-1f3ff-200d-2640-fe0f.png","sheet_x":46,"sheet_y":30,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F6B5-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b5-200d-2642-fe0f.png","sheet_x":46,"sheet_y":31,"short_name":"man-mountain-biking","short_names":["man-mountain-biking"],"text":null,"texts":null,"category":"Activity","sort_order":93,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6B5-1F3FB-200D-2642-FE0F","image":"1f6b5-1f3fb-200d-2642-fe0f.png","sheet_x":46,"sheet_y":32,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F6B5-1F3FC-200D-2642-FE0F","image":"1f6b5-1f3fc-200d-2642-fe0f.png","sheet_x":46,"sheet_y":33,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F6B5-1F3FD-200D-2642-FE0F","image":"1f6b5-1f3fd-200d-2642-fe0f.png","sheet_x":46,"sheet_y":34,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F6B5-1F3FE-200D-2642-FE0F","image":"1f6b5-1f3fe-200d-2642-fe0f.png","sheet_x":46,"sheet_y":35,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F6B5-1F3FF-200D-2642-FE0F","image":"1f6b5-1f3ff-200d-2642-fe0f.png","sheet_x":46,"sheet_y":36,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F6B5"},{"name":null,"unified":"1F6B6-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b6-200d-2640-fe0f.png","sheet_x":46,"sheet_y":37,"short_name":"woman-walking","short_names":["woman-walking"],"text":null,"texts":null,"category":"People","sort_order":230,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6B6-1F3FB-200D-2640-FE0F","image":"1f6b6-1f3fb-200d-2640-fe0f.png","sheet_x":46,"sheet_y":38,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F6B6-1F3FC-200D-2640-FE0F","image":"1f6b6-1f3fc-200d-2640-fe0f.png","sheet_x":46,"sheet_y":39,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F6B6-1F3FD-200D-2640-FE0F","image":"1f6b6-1f3fd-200d-2640-fe0f.png","sheet_x":46,"sheet_y":40,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F6B6-1F3FE-200D-2640-FE0F","image":"1f6b6-1f3fe-200d-2640-fe0f.png","sheet_x":46,"sheet_y":41,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F6B6-1F3FF-200D-2640-FE0F","image":"1f6b6-1f3ff-200d-2640-fe0f.png","sheet_x":46,"sheet_y":42,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F6B6-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b6-200d-2642-fe0f.png","sheet_x":46,"sheet_y":43,"short_name":"man-walking","short_names":["man-walking"],"text":null,"texts":null,"category":"People","sort_order":307,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6B6-1F3FB-200D-2642-FE0F","image":"1f6b6-1f3fb-200d-2642-fe0f.png","sheet_x":46,"sheet_y":44,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F6B6-1F3FC-200D-2642-FE0F","image":"1f6b6-1f3fc-200d-2642-fe0f.png","sheet_x":46,"sheet_y":45,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F6B6-1F3FD-200D-2642-FE0F","image":"1f6b6-1f3fd-200d-2642-fe0f.png","sheet_x":46,"sheet_y":46,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F6B6-1F3FE-200D-2642-FE0F","image":"1f6b6-1f3fe-200d-2642-fe0f.png","sheet_x":46,"sheet_y":47,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F6B6-1F3FF-200D-2642-FE0F","image":"1f6b6-1f3ff-200d-2642-fe0f.png","sheet_x":46,"sheet_y":48,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F6B6"},{"name":null,"unified":"1F926-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f926-200d-2640-fe0f.png","sheet_x":47,"sheet_y":0,"short_name":"woman-facepalming","short_names":["woman-facepalming"],"text":null,"texts":null,"category":"People","sort_order":212,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F926-1F3FB-200D-2640-FE0F","image":"1f926-1f3fb-200d-2640-fe0f.png","sheet_x":47,"sheet_y":1,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F926-1F3FC-200D-2640-FE0F","image":"1f926-1f3fc-200d-2640-fe0f.png","sheet_x":47,"sheet_y":2,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F926-1F3FD-200D-2640-FE0F","image":"1f926-1f3fd-200d-2640-fe0f.png","sheet_x":47,"sheet_y":3,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F926-1F3FE-200D-2640-FE0F","image":"1f926-1f3fe-200d-2640-fe0f.png","sheet_x":47,"sheet_y":4,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F926-1F3FF-200D-2640-FE0F","image":"1f926-1f3ff-200d-2640-fe0f.png","sheet_x":47,"sheet_y":5,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F926-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f926-200d-2642-fe0f.png","sheet_x":47,"sheet_y":6,"short_name":"man-facepalming","short_names":["man-facepalming"],"text":null,"texts":null,"category":"People","sort_order":213,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F926-1F3FB-200D-2642-FE0F","image":"1f926-1f3fb-200d-2642-fe0f.png","sheet_x":47,"sheet_y":7,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F926-1F3FC-200D-2642-FE0F","image":"1f926-1f3fc-200d-2642-fe0f.png","sheet_x":47,"sheet_y":8,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F926-1F3FD-200D-2642-FE0F","image":"1f926-1f3fd-200d-2642-fe0f.png","sheet_x":47,"sheet_y":9,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F926-1F3FE-200D-2642-FE0F","image":"1f926-1f3fe-200d-2642-fe0f.png","sheet_x":47,"sheet_y":10,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F926-1F3FF-200D-2642-FE0F","image":"1f926-1f3ff-200d-2642-fe0f.png","sheet_x":47,"sheet_y":11,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F937-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f937-200d-2640-fe0f.png","sheet_x":47,"sheet_y":12,"short_name":"woman-shrugging","short_names":["woman-shrugging"],"text":null,"texts":null,"category":"People","sort_order":215,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F937-1F3FB-200D-2640-FE0F","image":"1f937-1f3fb-200d-2640-fe0f.png","sheet_x":47,"sheet_y":13,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F937-1F3FC-200D-2640-FE0F","image":"1f937-1f3fc-200d-2640-fe0f.png","sheet_x":47,"sheet_y":14,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F937-1F3FD-200D-2640-FE0F","image":"1f937-1f3fd-200d-2640-fe0f.png","sheet_x":47,"sheet_y":15,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F937-1F3FE-200D-2640-FE0F","image":"1f937-1f3fe-200d-2640-fe0f.png","sheet_x":47,"sheet_y":16,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F937-1F3FF-200D-2640-FE0F","image":"1f937-1f3ff-200d-2640-fe0f.png","sheet_x":47,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F937-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f937-200d-2642-fe0f.png","sheet_x":47,"sheet_y":18,"short_name":"man-shrugging","short_names":["man-shrugging"],"text":null,"texts":null,"category":"People","sort_order":216,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F937-1F3FB-200D-2642-FE0F","image":"1f937-1f3fb-200d-2642-fe0f.png","sheet_x":47,"sheet_y":19,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F937-1F3FC-200D-2642-FE0F","image":"1f937-1f3fc-200d-2642-fe0f.png","sheet_x":47,"sheet_y":20,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F937-1F3FD-200D-2642-FE0F","image":"1f937-1f3fd-200d-2642-fe0f.png","sheet_x":47,"sheet_y":21,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F937-1F3FE-200D-2642-FE0F","image":"1f937-1f3fe-200d-2642-fe0f.png","sheet_x":47,"sheet_y":22,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F937-1F3FF-200D-2642-FE0F","image":"1f937-1f3ff-200d-2642-fe0f.png","sheet_x":47,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F938-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f938-200d-2640-fe0f.png","sheet_x":47,"sheet_y":24,"short_name":"woman-cartwheeling","short_names":["woman-cartwheeling"],"text":null,"texts":null,"category":"Activity","sort_order":31,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F938-1F3FB-200D-2640-FE0F","image":"1f938-1f3fb-200d-2640-fe0f.png","sheet_x":47,"sheet_y":25,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F938-1F3FC-200D-2640-FE0F","image":"1f938-1f3fc-200d-2640-fe0f.png","sheet_x":47,"sheet_y":26,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F938-1F3FD-200D-2640-FE0F","image":"1f938-1f3fd-200d-2640-fe0f.png","sheet_x":47,"sheet_y":27,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F938-1F3FE-200D-2640-FE0F","image":"1f938-1f3fe-200d-2640-fe0f.png","sheet_x":47,"sheet_y":28,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F938-1F3FF-200D-2640-FE0F","image":"1f938-1f3ff-200d-2640-fe0f.png","sheet_x":47,"sheet_y":29,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F938-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f938-200d-2642-fe0f.png","sheet_x":47,"sheet_y":30,"short_name":"man-cartwheeling","short_names":["man-cartwheeling"],"text":null,"texts":null,"category":"Activity","sort_order":32,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F938-1F3FB-200D-2642-FE0F","image":"1f938-1f3fb-200d-2642-fe0f.png","sheet_x":47,"sheet_y":31,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F938-1F3FC-200D-2642-FE0F","image":"1f938-1f3fc-200d-2642-fe0f.png","sheet_x":47,"sheet_y":32,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F938-1F3FD-200D-2642-FE0F","image":"1f938-1f3fd-200d-2642-fe0f.png","sheet_x":47,"sheet_y":33,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F938-1F3FE-200D-2642-FE0F","image":"1f938-1f3fe-200d-2642-fe0f.png","sheet_x":47,"sheet_y":34,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F938-1F3FF-200D-2642-FE0F","image":"1f938-1f3ff-200d-2642-fe0f.png","sheet_x":47,"sheet_y":35,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F939-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f939-200d-2640-fe0f.png","sheet_x":47,"sheet_y":36,"short_name":"woman-juggling","short_names":["woman-juggling"],"text":null,"texts":null,"category":"Activity","sort_order":67,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F939-1F3FB-200D-2640-FE0F","image":"1f939-1f3fb-200d-2640-fe0f.png","sheet_x":47,"sheet_y":37,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F939-1F3FC-200D-2640-FE0F","image":"1f939-1f3fc-200d-2640-fe0f.png","sheet_x":47,"sheet_y":38,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F939-1F3FD-200D-2640-FE0F","image":"1f939-1f3fd-200d-2640-fe0f.png","sheet_x":47,"sheet_y":39,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F939-1F3FE-200D-2640-FE0F","image":"1f939-1f3fe-200d-2640-fe0f.png","sheet_x":47,"sheet_y":40,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F939-1F3FF-200D-2640-FE0F","image":"1f939-1f3ff-200d-2640-fe0f.png","sheet_x":47,"sheet_y":41,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F939-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f939-200d-2642-fe0f.png","sheet_x":47,"sheet_y":42,"short_name":"man-juggling","short_names":["man-juggling"],"text":null,"texts":null,"category":"Activity","sort_order":68,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F939-1F3FB-200D-2642-FE0F","image":"1f939-1f3fb-200d-2642-fe0f.png","sheet_x":47,"sheet_y":43,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F939-1F3FC-200D-2642-FE0F","image":"1f939-1f3fc-200d-2642-fe0f.png","sheet_x":47,"sheet_y":44,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F939-1F3FD-200D-2642-FE0F","image":"1f939-1f3fd-200d-2642-fe0f.png","sheet_x":47,"sheet_y":45,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F939-1F3FE-200D-2642-FE0F","image":"1f939-1f3fe-200d-2642-fe0f.png","sheet_x":47,"sheet_y":46,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F939-1F3FF-200D-2642-FE0F","image":"1f939-1f3ff-200d-2642-fe0f.png","sheet_x":47,"sheet_y":47,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F93C-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93c-200d-2640-fe0f.png","sheet_x":47,"sheet_y":48,"short_name":"woman-wrestling","short_names":["woman-wrestling"],"text":null,"texts":null,"category":"Activity","sort_order":28,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},{"name":null,"unified":"1F93C-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93c-200d-2642-fe0f.png","sheet_x":48,"sheet_y":0,"short_name":"man-wrestling","short_names":["man-wrestling"],"text":null,"texts":null,"category":"Activity","sort_order":29,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},{"name":null,"unified":"1F93D-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93d-200d-2640-fe0f.png","sheet_x":48,"sheet_y":1,"short_name":"woman-playing-water-polo","short_names":["woman-playing-water-polo"],"text":null,"texts":null,"category":"Activity","sort_order":45,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F93D-1F3FB-200D-2640-FE0F","image":"1f93d-1f3fb-200d-2640-fe0f.png","sheet_x":48,"sheet_y":2,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F93D-1F3FC-200D-2640-FE0F","image":"1f93d-1f3fc-200d-2640-fe0f.png","sheet_x":48,"sheet_y":3,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F93D-1F3FD-200D-2640-FE0F","image":"1f93d-1f3fd-200d-2640-fe0f.png","sheet_x":48,"sheet_y":4,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F93D-1F3FE-200D-2640-FE0F","image":"1f93d-1f3fe-200d-2640-fe0f.png","sheet_x":48,"sheet_y":5,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F93D-1F3FF-200D-2640-FE0F","image":"1f93d-1f3ff-200d-2640-fe0f.png","sheet_x":48,"sheet_y":6,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F93D-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93d-200d-2642-fe0f.png","sheet_x":48,"sheet_y":7,"short_name":"man-playing-water-polo","short_names":["man-playing-water-polo"],"text":null,"texts":null,"category":"Activity","sort_order":46,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F93D-1F3FB-200D-2642-FE0F","image":"1f93d-1f3fb-200d-2642-fe0f.png","sheet_x":48,"sheet_y":8,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F93D-1F3FC-200D-2642-FE0F","image":"1f93d-1f3fc-200d-2642-fe0f.png","sheet_x":48,"sheet_y":9,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F93D-1F3FD-200D-2642-FE0F","image":"1f93d-1f3fd-200d-2642-fe0f.png","sheet_x":48,"sheet_y":10,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F93D-1F3FE-200D-2642-FE0F","image":"1f93d-1f3fe-200d-2642-fe0f.png","sheet_x":48,"sheet_y":11,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F93D-1F3FF-200D-2642-FE0F","image":"1f93d-1f3ff-200d-2642-fe0f.png","sheet_x":48,"sheet_y":12,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F93E-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93e-200d-2640-fe0f.png","sheet_x":48,"sheet_y":13,"short_name":"woman-playing-handball","short_names":["woman-playing-handball"],"text":null,"texts":null,"category":"Activity","sort_order":36,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F93E-1F3FB-200D-2640-FE0F","image":"1f93e-1f3fb-200d-2640-fe0f.png","sheet_x":48,"sheet_y":14,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F93E-1F3FC-200D-2640-FE0F","image":"1f93e-1f3fc-200d-2640-fe0f.png","sheet_x":48,"sheet_y":15,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F93E-1F3FD-200D-2640-FE0F","image":"1f93e-1f3fd-200d-2640-fe0f.png","sheet_x":48,"sheet_y":16,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F93E-1F3FE-200D-2640-FE0F","image":"1f93e-1f3fe-200d-2640-fe0f.png","sheet_x":48,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F93E-1F3FF-200D-2640-FE0F","image":"1f93e-1f3ff-200d-2640-fe0f.png","sheet_x":48,"sheet_y":18,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F93E-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93e-200d-2642-fe0f.png","sheet_x":48,"sheet_y":19,"short_name":"man-playing-handball","short_names":["man-playing-handball"],"text":null,"texts":null,"category":"Activity","sort_order":37,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F93E-1F3FB-200D-2642-FE0F","image":"1f93e-1f3fb-200d-2642-fe0f.png","sheet_x":48,"sheet_y":20,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F93E-1F3FC-200D-2642-FE0F","image":"1f93e-1f3fc-200d-2642-fe0f.png","sheet_x":48,"sheet_y":21,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F93E-1F3FD-200D-2642-FE0F","image":"1f93e-1f3fd-200d-2642-fe0f.png","sheet_x":48,"sheet_y":22,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F93E-1F3FE-200D-2642-FE0F","image":"1f93e-1f3fe-200d-2642-fe0f.png","sheet_x":48,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F93E-1F3FF-200D-2642-FE0F","image":"1f93e-1f3ff-200d-2642-fe0f.png","sheet_x":48,"sheet_y":24,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"26F9-FE0F-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26f9-fe0f-200d-2640-fe0f.png","sheet_x":48,"sheet_y":25,"short_name":"woman-bouncing-ball","short_names":["woman-bouncing-ball"],"text":null,"texts":null,"category":"Activity","sort_order":33,"added_in":"5.2","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"26F9-1F3FB-200D-2640-FE0F","image":"26f9-1f3fb-200d-2640-fe0f.png","sheet_x":48,"sheet_y":26,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"26F9-1F3FC-200D-2640-FE0F","image":"26f9-1f3fc-200d-2640-fe0f.png","sheet_x":48,"sheet_y":27,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"26F9-1F3FD-200D-2640-FE0F","image":"26f9-1f3fd-200d-2640-fe0f.png","sheet_x":48,"sheet_y":28,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"26F9-1F3FE-200D-2640-FE0F","image":"26f9-1f3fe-200d-2640-fe0f.png","sheet_x":48,"sheet_y":29,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"26F9-1F3FF-200D-2640-FE0F","image":"26f9-1f3ff-200d-2640-fe0f.png","sheet_x":48,"sheet_y":30,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"26F9-FE0F-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26f9-fe0f-200d-2642-fe0f.png","sheet_x":48,"sheet_y":31,"short_name":"man-bouncing-ball","short_names":["man-bouncing-ball"],"text":null,"texts":null,"category":"Activity","sort_order":86,"added_in":"5.2","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"26F9-1F3FB-200D-2642-FE0F","image":"26f9-1f3fb-200d-2642-fe0f.png","sheet_x":48,"sheet_y":32,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"26F9-1F3FC-200D-2642-FE0F","image":"26f9-1f3fc-200d-2642-fe0f.png","sheet_x":48,"sheet_y":33,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"26F9-1F3FD-200D-2642-FE0F","image":"26f9-1f3fd-200d-2642-fe0f.png","sheet_x":48,"sheet_y":34,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"26F9-1F3FE-200D-2642-FE0F","image":"26f9-1f3fe-200d-2642-fe0f.png","sheet_x":48,"sheet_y":35,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"26F9-1F3FF-200D-2642-FE0F","image":"26f9-1f3ff-200d-2642-fe0f.png","sheet_x":48,"sheet_y":36,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"26F9"}] \ No newline at end of file From ad2517bd8bbd42e1a1df5484ba70f5c769952e53 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 28 Jun 2017 10:27:06 +0100 Subject: [PATCH 276/481] Uppercase the first letter of the app tile name. --- src/components/views/elements/AppTile.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 62463e5426..dc34d15d7f 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -61,11 +61,20 @@ export default React.createClass({ } }, + formatAppTileName: function() { + let appTileName = "No name"; + if(this.props.name && this.props.name.trim()) { + appTileName = this.props.name.trim(); + appTileName = appTileName[0].toUpperCase() + appTileName.slice(1).toLowerCase(); + } + return appTileName; + }, + render: function() { return (
- {this.props.name} + {this.formatAppTileName()} {/* Edit widget */} {/* Date: Wed, 28 Jun 2017 10:30:59 +0100 Subject: [PATCH 277/481] WIP to prevent RTE from deleting current message input when up arrow pressed --- src/components/views/rooms/MessageComposerInput.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index b05beb2571..7603a45e4c 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -560,7 +560,7 @@ export default class MessageComposerInput extends React.Component { onUpArrow = async (e) => { const completion = this.autocomplete.onUpArrow(); - if (completion == null) { + if (completion == null && !(this.historyManager.currentIndex === -1 && this.state.editorState.getCurrentContent().hasText())) { const newContent = this.historyManager.getItem(-1, this.state.isRichtextEnabled ? 'html' : 'markdown'); if (!newContent) return false; const editorState = EditorState.push(this.state.editorState, @@ -575,7 +575,7 @@ export default class MessageComposerInput extends React.Component { onDownArrow = async (e) => { const completion = this.autocomplete.onDownArrow(); - if (completion == null) { + if (completion == null && !(this.historyManager.currentIndex === -1 && this.state.editorState.getCurrentContent().hasText())) { const newContent = this.historyManager.getItem(+1, this.state.isRichtextEnabled ? 'html' : 'markdown'); if (!newContent) return false; const editorState = EditorState.push(this.state.editorState, From 907aaebe2fb85e849ce7324b7bce032950e3525f Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 28 Jun 2017 10:31:59 +0100 Subject: [PATCH 278/481] Remove redundant emoji data file --- src/emoji.json | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/emoji.json diff --git a/src/emoji.json b/src/emoji.json deleted file mode 100644 index 8b74048b83..0000000000 --- a/src/emoji.json +++ /dev/null @@ -1 +0,0 @@ -[{"name":"COPYRIGHT SIGN","unified":"00A9","variations":["00A9-FE0F"],"docomo":"E731","au":"E558","softbank":"E24E","google":"FEB29","image":"00a9.png","sheet_x":0,"sheet_y":0,"short_name":"copyright","short_names":["copyright"],"text":null,"texts":null,"category":"Symbols","sort_order":197,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":false,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"REGISTERED SIGN","unified":"00AE","variations":["00AE-FE0F"],"docomo":"E736","au":"E559","softbank":"E24F","google":"FEB2D","image":"00ae.png","sheet_x":0,"sheet_y":1,"short_name":"registered","short_names":["registered"],"text":null,"texts":null,"category":"Symbols","sort_order":198,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":false,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"DOUBLE EXCLAMATION MARK","unified":"203C","variations":["203C-FE0F"],"docomo":"E704","au":"EB30","softbank":null,"google":"FEB06","image":"203c.png","sheet_x":0,"sheet_y":2,"short_name":"bangbang","short_names":["bangbang"],"text":null,"texts":null,"category":"Symbols","sort_order":89,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EXCLAMATION QUESTION MARK","unified":"2049","variations":["2049-FE0F"],"docomo":"E703","au":"EB2F","softbank":null,"google":"FEB05","image":"2049.png","sheet_x":0,"sheet_y":3,"short_name":"interrobang","short_names":["interrobang"],"text":null,"texts":null,"category":"Symbols","sort_order":90,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRADE MARK SIGN","unified":"2122","variations":["2122-FE0F"],"docomo":"E732","au":"E54E","softbank":"E537","google":"FEB2A","image":"2122.png","sheet_x":0,"sheet_y":4,"short_name":"tm","short_names":["tm"],"text":null,"texts":null,"category":"Symbols","sort_order":196,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INFORMATION SOURCE","unified":"2139","variations":["2139-FE0F"],"docomo":null,"au":"E533","softbank":null,"google":"FEB47","image":"2139.png","sheet_x":0,"sheet_y":5,"short_name":"information_source","short_names":["information_source"],"text":null,"texts":null,"category":"Symbols","sort_order":130,"added_in":"3.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEFT RIGHT ARROW","unified":"2194","variations":["2194-FE0F"],"docomo":"E73C","au":"EB7A","softbank":null,"google":"FEAF6","image":"2194.png","sheet_x":0,"sheet_y":6,"short_name":"left_right_arrow","short_names":["left_right_arrow"],"text":null,"texts":null,"category":"Symbols","sort_order":178,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"UP DOWN ARROW","unified":"2195","variations":["2195-FE0F"],"docomo":"E73D","au":"EB7B","softbank":null,"google":"FEAF7","image":"2195.png","sheet_x":0,"sheet_y":7,"short_name":"arrow_up_down","short_names":["arrow_up_down"],"text":null,"texts":null,"category":"Symbols","sort_order":177,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NORTH WEST ARROW","unified":"2196","variations":["2196-FE0F"],"docomo":"E697","au":"E54C","softbank":"E237","google":"FEAF2","image":"2196.png","sheet_x":0,"sheet_y":8,"short_name":"arrow_upper_left","short_names":["arrow_upper_left"],"text":null,"texts":null,"category":"Symbols","sort_order":176,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NORTH EAST ARROW","unified":"2197","variations":["2197-FE0F"],"docomo":"E678","au":"E555","softbank":"E236","google":"FEAF0","image":"2197.png","sheet_x":0,"sheet_y":9,"short_name":"arrow_upper_right","short_names":["arrow_upper_right"],"text":null,"texts":null,"category":"Symbols","sort_order":173,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SOUTH EAST ARROW","unified":"2198","variations":["2198-FE0F"],"docomo":"E696","au":"E54D","softbank":"E238","google":"FEAF1","image":"2198.png","sheet_x":0,"sheet_y":10,"short_name":"arrow_lower_right","short_names":["arrow_lower_right"],"text":null,"texts":null,"category":"Symbols","sort_order":174,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SOUTH WEST ARROW","unified":"2199","variations":["2199-FE0F"],"docomo":"E6A5","au":"E556","softbank":"E239","google":"FEAF3","image":"2199.png","sheet_x":0,"sheet_y":11,"short_name":"arrow_lower_left","short_names":["arrow_lower_left"],"text":null,"texts":null,"category":"Symbols","sort_order":175,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEFTWARDS ARROW WITH HOOK","unified":"21A9","variations":["21A9-FE0F"],"docomo":"E6DA","au":"E55D","softbank":null,"google":"FEB83","image":"21a9.png","sheet_x":0,"sheet_y":12,"short_name":"leftwards_arrow_with_hook","short_names":["leftwards_arrow_with_hook"],"text":null,"texts":null,"category":"Symbols","sort_order":180,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RIGHTWARDS ARROW WITH HOOK","unified":"21AA","variations":["21AA-FE0F"],"docomo":null,"au":"E55C","softbank":null,"google":"FEB88","image":"21aa.png","sheet_x":0,"sheet_y":13,"short_name":"arrow_right_hook","short_names":["arrow_right_hook"],"text":null,"texts":null,"category":"Symbols","sort_order":179,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WATCH","unified":"231A","variations":["231A-FE0F"],"docomo":"E71F","au":"E57A","softbank":null,"google":"FE01D","image":"231a.png","sheet_x":0,"sheet_y":14,"short_name":"watch","short_names":["watch"],"text":null,"texts":null,"category":"Objects","sort_order":1,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HOURGLASS","unified":"231B","variations":["231B-FE0F"],"docomo":"E71C","au":"E57B","softbank":null,"google":"FE01C","image":"231b.png","sheet_x":0,"sheet_y":15,"short_name":"hourglass","short_names":["hourglass"],"text":null,"texts":null,"category":"Objects","sort_order":36,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KEYBOARD","unified":"2328","variations":["2328-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2328.png","sheet_x":0,"sheet_y":16,"short_name":"keyboard","short_names":["keyboard"],"text":null,"texts":null,"category":"Objects","sort_order":5,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EJECT SYMBOL","unified":"23CF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23cf.png","sheet_x":0,"sheet_y":17,"short_name":"eject","short_names":["eject"],"text":null,"texts":null,"category":"Symbols","sort_order":158,"added_in":"4.0","has_img_apple":false,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BLACK RIGHT-POINTING DOUBLE TRIANGLE","unified":"23E9","variations":[],"docomo":null,"au":"E530","softbank":"E23C","google":"FEAFE","image":"23e9.png","sheet_x":0,"sheet_y":18,"short_name":"fast_forward","short_names":["fast_forward"],"text":null,"texts":null,"category":"Symbols","sort_order":162,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK LEFT-POINTING DOUBLE TRIANGLE","unified":"23EA","variations":[],"docomo":null,"au":"E52F","softbank":"E23D","google":"FEAFF","image":"23ea.png","sheet_x":0,"sheet_y":19,"short_name":"rewind","short_names":["rewind"],"text":null,"texts":null,"category":"Symbols","sort_order":163,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK UP-POINTING DOUBLE TRIANGLE","unified":"23EB","variations":[],"docomo":null,"au":"E545","softbank":null,"google":"FEB03","image":"23eb.png","sheet_x":0,"sheet_y":20,"short_name":"arrow_double_up","short_names":["arrow_double_up"],"text":null,"texts":null,"category":"Symbols","sort_order":164,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK DOWN-POINTING DOUBLE TRIANGLE","unified":"23EC","variations":[],"docomo":null,"au":"E544","softbank":null,"google":"FEB02","image":"23ec.png","sheet_x":0,"sheet_y":21,"short_name":"arrow_double_down","short_names":["arrow_double_down"],"text":null,"texts":null,"category":"Symbols","sort_order":165,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR","unified":"23ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23ed.png","sheet_x":0,"sheet_y":22,"short_name":"black_right_pointing_double_triangle_with_vertical_bar","short_names":["black_right_pointing_double_triangle_with_vertical_bar"],"text":null,"texts":null,"category":"Symbols","sort_order":160,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR","unified":"23EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23ee.png","sheet_x":0,"sheet_y":23,"short_name":"black_left_pointing_double_triangle_with_vertical_bar","short_names":["black_left_pointing_double_triangle_with_vertical_bar"],"text":null,"texts":null,"category":"Symbols","sort_order":161,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR","unified":"23EF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23ef.png","sheet_x":0,"sheet_y":24,"short_name":"black_right_pointing_triangle_with_double_vertical_bar","short_names":["black_right_pointing_triangle_with_double_vertical_bar"],"text":null,"texts":null,"category":"Symbols","sort_order":156,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ALARM CLOCK","unified":"23F0","variations":[],"docomo":"E6BA","au":"E594","softbank":"E02D","google":"FE02A","image":"23f0.png","sheet_x":0,"sheet_y":25,"short_name":"alarm_clock","short_names":["alarm_clock"],"text":null,"texts":null,"category":"Objects","sort_order":34,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"STOPWATCH","unified":"23F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23f1.png","sheet_x":0,"sheet_y":26,"short_name":"stopwatch","short_names":["stopwatch"],"text":null,"texts":null,"category":"Objects","sort_order":32,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TIMER CLOCK","unified":"23F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23f2.png","sheet_x":0,"sheet_y":27,"short_name":"timer_clock","short_names":["timer_clock"],"text":null,"texts":null,"category":"Objects","sort_order":33,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HOURGLASS WITH FLOWING SAND","unified":"23F3","variations":[],"docomo":"E71C","au":"E47C","softbank":null,"google":"FE01B","image":"23f3.png","sheet_x":0,"sheet_y":28,"short_name":"hourglass_flowing_sand","short_names":["hourglass_flowing_sand"],"text":null,"texts":null,"category":"Objects","sort_order":37,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOUBLE VERTICAL BAR","unified":"23F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23f8.png","sheet_x":0,"sheet_y":29,"short_name":"double_vertical_bar","short_names":["double_vertical_bar"],"text":null,"texts":null,"category":"Symbols","sort_order":155,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BLACK SQUARE FOR STOP","unified":"23F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23f9.png","sheet_x":0,"sheet_y":30,"short_name":"black_square_for_stop","short_names":["black_square_for_stop"],"text":null,"texts":null,"category":"Symbols","sort_order":157,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BLACK CIRCLE FOR RECORD","unified":"23FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"23fa.png","sheet_x":0,"sheet_y":31,"short_name":"black_circle_for_record","short_names":["black_circle_for_record"],"text":null,"texts":null,"category":"Symbols","sort_order":159,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CIRCLED LATIN CAPITAL LETTER M","unified":"24C2","variations":["24C2-FE0F"],"docomo":"E65C","au":"E5BC","softbank":"E434","google":"FE7E1","image":"24c2.png","sheet_x":0,"sheet_y":32,"short_name":"m","short_names":["m"],"text":null,"texts":null,"category":"Symbols","sort_order":108,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK SMALL SQUARE","unified":"25AA","variations":["25AA-FE0F"],"docomo":null,"au":"E532","softbank":"E21A","google":"FEB6E","image":"25aa.png","sheet_x":0,"sheet_y":33,"short_name":"black_small_square","short_names":["black_small_square"],"text":null,"texts":null,"category":"Symbols","sort_order":222,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE SMALL SQUARE","unified":"25AB","variations":["25AB-FE0F"],"docomo":null,"au":"E531","softbank":"E21B","google":"FEB6D","image":"25ab.png","sheet_x":0,"sheet_y":34,"short_name":"white_small_square","short_names":["white_small_square"],"text":null,"texts":null,"category":"Symbols","sort_order":223,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK RIGHT-POINTING TRIANGLE","unified":"25B6","variations":["25B6-FE0F"],"docomo":null,"au":"E52E","softbank":"E23A","google":"FEAFC","image":"25b6.png","sheet_x":0,"sheet_y":35,"short_name":"arrow_forward","short_names":["arrow_forward"],"text":null,"texts":null,"category":"Symbols","sort_order":154,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK LEFT-POINTING TRIANGLE","unified":"25C0","variations":["25C0-FE0F"],"docomo":null,"au":"E52D","softbank":"E23B","google":"FEAFD","image":"25c0.png","sheet_x":0,"sheet_y":36,"short_name":"arrow_backward","short_names":["arrow_backward"],"text":null,"texts":null,"category":"Symbols","sort_order":166,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE MEDIUM SQUARE","unified":"25FB","variations":["25FB-FE0F"],"docomo":null,"au":"E538","softbank":"E21B","google":"FEB71","image":"25fb.png","sheet_x":0,"sheet_y":37,"short_name":"white_medium_square","short_names":["white_medium_square"],"text":null,"texts":null,"category":"Symbols","sort_order":227,"added_in":"3.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK MEDIUM SQUARE","unified":"25FC","variations":["25FC-FE0F"],"docomo":null,"au":"E539","softbank":"E21A","google":"FEB72","image":"25fc.png","sheet_x":0,"sheet_y":38,"short_name":"black_medium_square","short_names":["black_medium_square"],"text":null,"texts":null,"category":"Symbols","sort_order":226,"added_in":"3.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE MEDIUM SMALL SQUARE","unified":"25FD","variations":["25FD-FE0F"],"docomo":null,"au":"E534","softbank":"E21B","google":"FEB6F","image":"25fd.png","sheet_x":0,"sheet_y":39,"short_name":"white_medium_small_square","short_names":["white_medium_small_square"],"text":null,"texts":null,"category":"Symbols","sort_order":225,"added_in":"3.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK MEDIUM SMALL SQUARE","unified":"25FE","variations":["25FE-FE0F"],"docomo":null,"au":"E535","softbank":"E21A","google":"FEB70","image":"25fe.png","sheet_x":0,"sheet_y":40,"short_name":"black_medium_small_square","short_names":["black_medium_small_square"],"text":null,"texts":null,"category":"Symbols","sort_order":224,"added_in":"3.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK SUN WITH RAYS","unified":"2600","variations":["2600-FE0F"],"docomo":"E63E","au":"E488","softbank":"E04A","google":"FE000","image":"2600.png","sheet_x":0,"sheet_y":41,"short_name":"sunny","short_names":["sunny"],"text":null,"texts":null,"category":"Nature","sort_order":138,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOUD","unified":"2601","variations":["2601-FE0F"],"docomo":"E63F","au":"E48D","softbank":"E049","google":"FE001","image":"2601.png","sheet_x":0,"sheet_y":42,"short_name":"cloud","short_names":["cloud"],"text":null,"texts":null,"category":"Nature","sort_order":144,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"UMBRELLA","unified":"2602","variations":["2602-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2602.png","sheet_x":0,"sheet_y":43,"short_name":"umbrella","short_names":["umbrella"],"text":null,"texts":null,"category":"People","sort_order":293,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SNOWMAN","unified":"2603","variations":["2603-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2603.png","sheet_x":0,"sheet_y":44,"short_name":"snowman","short_names":["snowman"],"text":null,"texts":null,"category":"Nature","sort_order":149,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"COMET","unified":"2604","variations":["2604-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2604.png","sheet_x":0,"sheet_y":45,"short_name":"comet","short_names":["comet"],"text":null,"texts":null,"category":"Nature","sort_order":137,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BLACK TELEPHONE","unified":"260E","variations":["260E-FE0F"],"docomo":"E687","au":"E596","softbank":"E009","google":"FE523","image":"260e.png","sheet_x":0,"sheet_y":46,"short_name":"phone","short_names":["phone","telephone"],"text":null,"texts":null,"category":"Objects","sort_order":24,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BALLOT BOX WITH CHECK","unified":"2611","variations":["2611-FE0F"],"docomo":null,"au":"EB02","softbank":null,"google":"FEB8B","image":"2611.png","sheet_x":0,"sheet_y":47,"short_name":"ballot_box_with_check","short_names":["ballot_box_with_check"],"text":null,"texts":null,"category":"Symbols","sort_order":208,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"UMBRELLA WITH RAIN DROPS","unified":"2614","variations":["2614-FE0F"],"docomo":"E640","au":"E48C","softbank":"E04B","google":"FE002","image":"2614.png","sheet_x":0,"sheet_y":48,"short_name":"umbrella_with_rain_drops","short_names":["umbrella_with_rain_drops"],"text":null,"texts":null,"category":"Nature","sort_order":159,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HOT BEVERAGE","unified":"2615","variations":["2615-FE0F"],"docomo":"E670","au":"E597","softbank":"E045","google":"FE981","image":"2615.png","sheet_x":1,"sheet_y":0,"short_name":"coffee","short_names":["coffee"],"text":null,"texts":null,"category":"Foods","sort_order":73,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SHAMROCK","unified":"2618","variations":["2618-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2618.png","sheet_x":1,"sheet_y":1,"short_name":"shamrock","short_names":["shamrock"],"text":null,"texts":null,"category":"Nature","sort_order":96,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WHITE UP POINTING INDEX","unified":"261D","variations":["261D-FE0F"],"docomo":null,"au":"E4F6","softbank":"E00F","google":"FEB98","image":"261d.png","sheet_x":1,"sheet_y":2,"short_name":"point_up","short_names":["point_up"],"text":null,"texts":null,"category":"People","sort_order":116,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"261D-1F3FB","image":"261d-1f3fb.png","sheet_x":1,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"261D-1F3FC","image":"261d-1f3fc.png","sheet_x":1,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"261D-1F3FD","image":"261d-1f3fd.png","sheet_x":1,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"261D-1F3FE","image":"261d-1f3fe.png","sheet_x":1,"sheet_y":6,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"261D-1F3FF","image":"261d-1f3ff.png","sheet_x":1,"sheet_y":7,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"SKULL AND CROSSBONES","unified":"2620","variations":["2620-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2620.png","sheet_x":1,"sheet_y":8,"short_name":"skull_and_crossbones","short_names":["skull_and_crossbones"],"text":null,"texts":null,"category":"People","sort_order":83,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"RADIOACTIVE SIGN","unified":"2622","variations":["2622-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2622.png","sheet_x":1,"sheet_y":9,"short_name":"radioactive_sign","short_names":["radioactive_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":44,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BIOHAZARD SIGN","unified":"2623","variations":["2623-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2623.png","sheet_x":1,"sheet_y":10,"short_name":"biohazard_sign","short_names":["biohazard_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":45,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ORTHODOX CROSS","unified":"2626","variations":["2626-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2626.png","sheet_x":1,"sheet_y":11,"short_name":"orthodox_cross","short_names":["orthodox_cross"],"text":null,"texts":null,"category":"Symbols","sort_order":26,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"STAR AND CRESCENT","unified":"262A","variations":["262A-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"262a.png","sheet_x":1,"sheet_y":12,"short_name":"star_and_crescent","short_names":["star_and_crescent"],"text":null,"texts":null,"category":"Symbols","sort_order":19,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PEACE SYMBOL","unified":"262E","variations":["262E-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"262e.png","sheet_x":1,"sheet_y":13,"short_name":"peace_symbol","short_names":["peace_symbol"],"text":null,"texts":null,"category":"Symbols","sort_order":17,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"YIN YANG","unified":"262F","variations":["262F-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"262f.png","sheet_x":1,"sheet_y":14,"short_name":"yin_yang","short_names":["yin_yang"],"text":null,"texts":null,"category":"Symbols","sort_order":25,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WHEEL OF DHARMA","unified":"2638","variations":["2638-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2638.png","sheet_x":1,"sheet_y":15,"short_name":"wheel_of_dharma","short_names":["wheel_of_dharma"],"text":null,"texts":null,"category":"Symbols","sort_order":21,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WHITE FROWNING FACE","unified":"2639","variations":["2639-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2639.png","sheet_x":1,"sheet_y":16,"short_name":"white_frowning_face","short_names":["white_frowning_face"],"text":null,"texts":null,"category":"People","sort_order":38,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WHITE SMILING FACE","unified":"263A","variations":["263A-FE0F"],"docomo":"E6F0","au":"E4FB","softbank":"E414","google":"FE336","image":"263a.png","sheet_x":1,"sheet_y":17,"short_name":"relaxed","short_names":["relaxed"],"text":null,"texts":null,"category":"People","sort_order":9,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FEMALE SIGN","unified":"2640","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2640.png","sheet_x":1,"sheet_y":18,"short_name":"female_sign","short_names":["female_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":274,"added_in":"1.1","has_img_apple":false,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":"MALE SIGN","unified":"2642","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2642.png","sheet_x":1,"sheet_y":19,"short_name":"male_sign","short_names":["male_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":275,"added_in":"1.1","has_img_apple":false,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":"ARIES","unified":"2648","variations":["2648-FE0F"],"docomo":"E646","au":"E48F","softbank":"E23F","google":"FE02B","image":"2648.png","sheet_x":1,"sheet_y":20,"short_name":"aries","short_names":["aries"],"text":null,"texts":null,"category":"Symbols","sort_order":29,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TAURUS","unified":"2649","variations":["2649-FE0F"],"docomo":"E647","au":"E490","softbank":"E240","google":"FE02C","image":"2649.png","sheet_x":1,"sheet_y":21,"short_name":"taurus","short_names":["taurus"],"text":null,"texts":null,"category":"Symbols","sort_order":30,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GEMINI","unified":"264A","variations":["264A-FE0F"],"docomo":"E648","au":"E491","softbank":"E241","google":"FE02D","image":"264a.png","sheet_x":1,"sheet_y":22,"short_name":"gemini","short_names":["gemini"],"text":null,"texts":null,"category":"Symbols","sort_order":31,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CANCER","unified":"264B","variations":["264B-FE0F"],"docomo":"E649","au":"E492","softbank":"E242","google":"FE02E","image":"264b.png","sheet_x":1,"sheet_y":23,"short_name":"cancer","short_names":["cancer"],"text":null,"texts":null,"category":"Symbols","sort_order":32,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEO","unified":"264C","variations":["264C-FE0F"],"docomo":"E64A","au":"E493","softbank":"E243","google":"FE02F","image":"264c.png","sheet_x":1,"sheet_y":24,"short_name":"leo","short_names":["leo"],"text":null,"texts":null,"category":"Symbols","sort_order":33,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"VIRGO","unified":"264D","variations":["264D-FE0F"],"docomo":"E64B","au":"E494","softbank":"E244","google":"FE030","image":"264d.png","sheet_x":1,"sheet_y":25,"short_name":"virgo","short_names":["virgo"],"text":null,"texts":null,"category":"Symbols","sort_order":34,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LIBRA","unified":"264E","variations":["264E-FE0F"],"docomo":"E64C","au":"E495","softbank":"E245","google":"FE031","image":"264e.png","sheet_x":1,"sheet_y":26,"short_name":"libra","short_names":["libra"],"text":null,"texts":null,"category":"Symbols","sort_order":35,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SCORPIUS","unified":"264F","variations":["264F-FE0F"],"docomo":"E64D","au":"E496","softbank":"E246","google":"FE032","image":"264f.png","sheet_x":1,"sheet_y":27,"short_name":"scorpius","short_names":["scorpius"],"text":null,"texts":null,"category":"Symbols","sort_order":36,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SAGITTARIUS","unified":"2650","variations":["2650-FE0F"],"docomo":"E64E","au":"E497","softbank":"E247","google":"FE033","image":"2650.png","sheet_x":1,"sheet_y":28,"short_name":"sagittarius","short_names":["sagittarius"],"text":null,"texts":null,"category":"Symbols","sort_order":37,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CAPRICORN","unified":"2651","variations":["2651-FE0F"],"docomo":"E64F","au":"E498","softbank":"E248","google":"FE034","image":"2651.png","sheet_x":1,"sheet_y":29,"short_name":"capricorn","short_names":["capricorn"],"text":null,"texts":null,"category":"Symbols","sort_order":38,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"AQUARIUS","unified":"2652","variations":["2652-FE0F"],"docomo":"E650","au":"E499","softbank":"E249","google":"FE035","image":"2652.png","sheet_x":1,"sheet_y":30,"short_name":"aquarius","short_names":["aquarius"],"text":null,"texts":null,"category":"Symbols","sort_order":39,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PISCES","unified":"2653","variations":["2653-FE0F"],"docomo":"E651","au":"E49A","softbank":"E24A","google":"FE036","image":"2653.png","sheet_x":1,"sheet_y":31,"short_name":"pisces","short_names":["pisces"],"text":null,"texts":null,"category":"Symbols","sort_order":40,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK SPADE SUIT","unified":"2660","variations":["2660-FE0F"],"docomo":"E68E","au":"E5A1","softbank":"E20E","google":"FEB1B","image":"2660.png","sheet_x":1,"sheet_y":32,"short_name":"spades","short_names":["spades"],"text":null,"texts":null,"category":"Symbols","sort_order":243,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK CLUB SUIT","unified":"2663","variations":["2663-FE0F"],"docomo":"E690","au":"E5A3","softbank":"E20F","google":"FEB1D","image":"2663.png","sheet_x":1,"sheet_y":33,"short_name":"clubs","short_names":["clubs"],"text":null,"texts":null,"category":"Symbols","sort_order":244,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK HEART SUIT","unified":"2665","variations":["2665-FE0F"],"docomo":"E68D","au":"EAA5","softbank":"E20C","google":"FEB1A","image":"2665.png","sheet_x":1,"sheet_y":34,"short_name":"hearts","short_names":["hearts"],"text":null,"texts":null,"category":"Symbols","sort_order":245,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK DIAMOND SUIT","unified":"2666","variations":["2666-FE0F"],"docomo":"E68F","au":"E5A2","softbank":"E20D","google":"FEB1C","image":"2666.png","sheet_x":1,"sheet_y":35,"short_name":"diamonds","short_names":["diamonds"],"text":null,"texts":null,"category":"Symbols","sort_order":246,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HOT SPRINGS","unified":"2668","variations":["2668-FE0F"],"docomo":"E6F7","au":"E4BC","softbank":"E123","google":"FE7FA","image":"2668.png","sheet_x":1,"sheet_y":36,"short_name":"hotsprings","short_names":["hotsprings"],"text":null,"texts":null,"category":"Symbols","sort_order":77,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK UNIVERSAL RECYCLING SYMBOL","unified":"267B","variations":["267B-FE0F"],"docomo":"E735","au":"EB79","softbank":null,"google":"FEB2C","image":"267b.png","sheet_x":1,"sheet_y":37,"short_name":"recycle","short_names":["recycle"],"text":null,"texts":null,"category":"Symbols","sort_order":99,"added_in":"3.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHEELCHAIR SYMBOL","unified":"267F","variations":["267F-FE0F"],"docomo":"E69B","au":"E47F","softbank":"E20A","google":"FEB20","image":"267f.png","sheet_x":1,"sheet_y":38,"short_name":"wheelchair","short_names":["wheelchair"],"text":null,"texts":null,"category":"Symbols","sort_order":113,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HAMMER AND PICK","unified":"2692","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2692.png","sheet_x":1,"sheet_y":39,"short_name":"hammer_and_pick","short_names":["hammer_and_pick"],"text":null,"texts":null,"category":"Objects","sort_order":57,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ANCHOR","unified":"2693","variations":["2693-FE0F"],"docomo":"E661","au":"E4A9","softbank":"E202","google":"FE4C1","image":"2693.png","sheet_x":1,"sheet_y":40,"short_name":"anchor","short_names":["anchor"],"text":null,"texts":null,"category":"Places","sort_order":53,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CROSSED SWORDS","unified":"2694","variations":["2694-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2694.png","sheet_x":1,"sheet_y":41,"short_name":"crossed_swords","short_names":["crossed_swords"],"text":null,"texts":null,"category":"Objects","sort_order":67,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"STAFF OF AESCULAPIUS","unified":"2695","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2695.png","sheet_x":1,"sheet_y":42,"short_name":"staff_of_aesculapius","short_names":["staff_of_aesculapius"],"text":null,"texts":null,"category":"Symbols","sort_order":276,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},{"name":"SCALES","unified":"2696","variations":["2696-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2696.png","sheet_x":1,"sheet_y":43,"short_name":"scales","short_names":["scales"],"text":null,"texts":null,"category":"Objects","sort_order":54,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ALEMBIC","unified":"2697","variations":["2697-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2697.png","sheet_x":1,"sheet_y":44,"short_name":"alembic","short_names":["alembic"],"text":null,"texts":null,"category":"Objects","sort_order":76,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"GEAR","unified":"2699","variations":["2699-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2699.png","sheet_x":1,"sheet_y":45,"short_name":"gear","short_names":["gear"],"text":null,"texts":null,"category":"Objects","sort_order":61,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ATOM SYMBOL","unified":"269B","variations":["269B-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"269b.png","sheet_x":1,"sheet_y":46,"short_name":"atom_symbol","short_names":["atom_symbol"],"text":null,"texts":null,"category":"Symbols","sort_order":42,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FLEUR-DE-LIS","unified":"269C","variations":["269C-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"269c.png","sheet_x":1,"sheet_y":47,"short_name":"fleur_de_lis","short_names":["fleur_de_lis"],"text":null,"texts":null,"category":"Symbols","sort_order":97,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WARNING SIGN","unified":"26A0","variations":["26A0-FE0F"],"docomo":"E737","au":"E481","softbank":"E252","google":"FEB23","image":"26a0.png","sheet_x":1,"sheet_y":48,"short_name":"warning","short_names":["warning"],"text":null,"texts":null,"category":"Symbols","sort_order":94,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HIGH VOLTAGE SIGN","unified":"26A1","variations":["26A1-FE0F"],"docomo":"E642","au":"E487","softbank":"E13D","google":"FE004","image":"26a1.png","sheet_x":2,"sheet_y":0,"short_name":"zap","short_names":["zap"],"text":null,"texts":null,"category":"Nature","sort_order":134,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MEDIUM WHITE CIRCLE","unified":"26AA","variations":["26AA-FE0F"],"docomo":"E69C","au":"E53A","softbank":"E219","google":"FEB65","image":"26aa.png","sheet_x":2,"sheet_y":1,"short_name":"white_circle","short_names":["white_circle"],"text":null,"texts":null,"category":"Symbols","sort_order":210,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MEDIUM BLACK CIRCLE","unified":"26AB","variations":["26AB-FE0F"],"docomo":"E69C","au":"E53B","softbank":"E219","google":"FEB66","image":"26ab.png","sheet_x":2,"sheet_y":2,"short_name":"black_circle","short_names":["black_circle"],"text":null,"texts":null,"category":"Symbols","sort_order":211,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COFFIN","unified":"26B0","variations":["26B0-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26b0.png","sheet_x":2,"sheet_y":3,"short_name":"coffin","short_names":["coffin"],"text":null,"texts":null,"category":"Objects","sort_order":70,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FUNERAL URN","unified":"26B1","variations":["26B1-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26b1.png","sheet_x":2,"sheet_y":4,"short_name":"funeral_urn","short_names":["funeral_urn"],"text":null,"texts":null,"category":"Objects","sort_order":71,"added_in":"4.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SOCCER BALL","unified":"26BD","variations":["26BD-FE0F"],"docomo":"E656","au":"E4B6","softbank":"E018","google":"FE7D4","image":"26bd.png","sheet_x":2,"sheet_y":5,"short_name":"soccer","short_names":["soccer"],"text":null,"texts":null,"category":"Activity","sort_order":1,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BASEBALL","unified":"26BE","variations":["26BE-FE0F"],"docomo":"E653","au":"E4BA","softbank":"E016","google":"FE7D1","image":"26be.png","sheet_x":2,"sheet_y":6,"short_name":"baseball","short_names":["baseball"],"text":null,"texts":null,"category":"Activity","sort_order":4,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SNOWMAN WITHOUT SNOW","unified":"26C4","variations":["26C4-FE0F"],"docomo":"E641","au":"E485","softbank":"E048","google":"FE003","image":"26c4.png","sheet_x":2,"sheet_y":7,"short_name":"snowman_without_snow","short_names":["snowman_without_snow"],"text":null,"texts":null,"category":"Nature","sort_order":150,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SUN BEHIND CLOUD","unified":"26C5","variations":["26C5-FE0F"],"docomo":"E63E-E63F","au":"E48E","softbank":"E04A-E049","google":"FE00F","image":"26c5.png","sheet_x":2,"sheet_y":8,"short_name":"partly_sunny","short_names":["partly_sunny"],"text":null,"texts":null,"category":"Nature","sort_order":140,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"THUNDER CLOUD AND RAIN","unified":"26C8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26c8.png","sheet_x":2,"sheet_y":9,"short_name":"thunder_cloud_and_rain","short_names":["thunder_cloud_and_rain"],"text":null,"texts":null,"category":"Nature","sort_order":146,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"OPHIUCHUS","unified":"26CE","variations":[],"docomo":null,"au":"E49B","softbank":"E24B","google":"FE037","image":"26ce.png","sheet_x":2,"sheet_y":10,"short_name":"ophiuchus","short_names":["ophiuchus"],"text":null,"texts":null,"category":"Symbols","sort_order":28,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PICK","unified":"26CF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26cf.png","sheet_x":2,"sheet_y":11,"short_name":"pick","short_names":["pick"],"text":null,"texts":null,"category":"Objects","sort_order":59,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HELMET WITH WHITE CROSS","unified":"26D1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26d1.png","sheet_x":2,"sheet_y":12,"short_name":"helmet_with_white_cross","short_names":["helmet_with_white_cross"],"text":null,"texts":null,"category":"People","sort_order":284,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CHAINS","unified":"26D3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26d3.png","sheet_x":2,"sheet_y":13,"short_name":"chains","short_names":["chains"],"text":null,"texts":null,"category":"Objects","sort_order":62,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"NO ENTRY","unified":"26D4","variations":["26D4-FE0F"],"docomo":"E72F","au":"E484","softbank":"E137","google":"FEB26","image":"26d4.png","sheet_x":2,"sheet_y":14,"short_name":"no_entry","short_names":["no_entry"],"text":null,"texts":null,"category":"Symbols","sort_order":72,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SHINTO SHRINE","unified":"26E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26e9.png","sheet_x":2,"sheet_y":15,"short_name":"shinto_shrine","short_names":["shinto_shrine"],"text":null,"texts":null,"category":"Places","sort_order":104,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CHURCH","unified":"26EA","variations":["26EA-FE0F"],"docomo":null,"au":"E5BB","softbank":"E037","google":"FE4BB","image":"26ea.png","sheet_x":2,"sheet_y":16,"short_name":"church","short_names":["church"],"text":null,"texts":null,"category":"Places","sort_order":100,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOUNTAIN","unified":"26F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26f0.png","sheet_x":2,"sheet_y":17,"short_name":"mountain","short_names":["mountain"],"text":null,"texts":null,"category":"Places","sort_order":73,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"UMBRELLA ON GROUND","unified":"26F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26f1.png","sheet_x":2,"sheet_y":18,"short_name":"umbrella_on_ground","short_names":["umbrella_on_ground"],"text":null,"texts":null,"category":"Places","sort_order":70,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FOUNTAIN","unified":"26F2","variations":["26F2-FE0F"],"docomo":null,"au":"E5CF","softbank":"E121","google":"FE4BC","image":"26f2.png","sheet_x":2,"sheet_y":19,"short_name":"fountain","short_names":["fountain"],"text":null,"texts":null,"category":"Places","sort_order":62,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FLAG IN HOLE","unified":"26F3","variations":["26F3-FE0F"],"docomo":"E654","au":"E599","softbank":"E014","google":"FE7D2","image":"26f3.png","sheet_x":2,"sheet_y":20,"short_name":"golf","short_names":["golf"],"text":null,"texts":null,"category":"Activity","sort_order":15,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FERRY","unified":"26F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26f4.png","sheet_x":2,"sheet_y":21,"short_name":"ferry","short_names":["ferry"],"text":null,"texts":null,"category":"Places","sort_order":51,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SAILBOAT","unified":"26F5","variations":["26F5-FE0F"],"docomo":"E6A3","au":"E4B4","softbank":"E01C","google":"FE7EA","image":"26f5.png","sheet_x":2,"sheet_y":22,"short_name":"boat","short_names":["boat","sailboat"],"text":null,"texts":null,"category":"Places","sort_order":47,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SKIER","unified":"26F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26f7.png","sheet_x":2,"sheet_y":23,"short_name":"skier","short_names":["skier"],"text":null,"texts":null,"category":"Activity","sort_order":22,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ICE SKATE","unified":"26F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26f8.png","sheet_x":2,"sheet_y":24,"short_name":"ice_skate","short_names":["ice_skate"],"text":null,"texts":null,"category":"Activity","sort_order":20,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PERSON WITH BALL","unified":"26F9","variations":["26F9-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26f9.png","sheet_x":2,"sheet_y":25,"short_name":"person_with_ball","short_names":["person_with_ball"],"text":null,"texts":null,"category":"Activity","sort_order":34,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"26F9-1F3FB","image":"26f9-1f3fb.png","sheet_x":2,"sheet_y":26,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"26F9-1F3FC","image":"26f9-1f3fc.png","sheet_x":2,"sheet_y":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"26F9-1F3FD","image":"26f9-1f3fd.png","sheet_x":2,"sheet_y":28,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"26F9-1F3FE","image":"26f9-1f3fe.png","sheet_x":2,"sheet_y":29,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"26F9-1F3FF","image":"26f9-1f3ff.png","sheet_x":2,"sheet_y":30,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}},"obsoleted_by":"26F9-FE0F-200D-2642-FE0F"},{"name":"TENT","unified":"26FA","variations":["26FA-FE0F"],"docomo":null,"au":"E5D0","softbank":"E122","google":"FE7FB","image":"26fa.png","sheet_x":2,"sheet_y":31,"short_name":"tent","short_names":["tent"],"text":null,"texts":null,"category":"Places","sort_order":79,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FUEL PUMP","unified":"26FD","variations":["26FD-FE0F"],"docomo":"E66B","au":"E571","softbank":"E03A","google":"FE7F5","image":"26fd.png","sheet_x":2,"sheet_y":32,"short_name":"fuelpump","short_names":["fuelpump"],"text":null,"texts":null,"category":"Places","sort_order":55,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK SCISSORS","unified":"2702","variations":["2702-FE0F"],"docomo":"E675","au":"E516","softbank":"E313","google":"FE53E","image":"2702.png","sheet_x":2,"sheet_y":33,"short_name":"scissors","short_names":["scissors"],"text":null,"texts":null,"category":"Objects","sort_order":160,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE HEAVY CHECK MARK","unified":"2705","variations":[],"docomo":null,"au":"E55E","softbank":null,"google":"FEB4A","image":"2705.png","sheet_x":2,"sheet_y":34,"short_name":"white_check_mark","short_names":["white_check_mark"],"text":null,"texts":null,"category":"Symbols","sort_order":100,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"AIRPLANE","unified":"2708","variations":["2708-FE0F"],"docomo":"E662","au":"E4B3","softbank":"E01D","google":"FE7E9","image":"2708.png","sheet_x":2,"sheet_y":35,"short_name":"airplane","short_names":["airplane"],"text":null,"texts":null,"category":"Places","sort_order":40,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ENVELOPE","unified":"2709","variations":["2709-FE0F"],"docomo":"E6D3","au":"E521","softbank":"E103","google":"FE529","image":"2709.png","sheet_x":2,"sheet_y":36,"short_name":"email","short_names":["email","envelope"],"text":null,"texts":null,"category":"Objects","sort_order":107,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RAISED FIST","unified":"270A","variations":[],"docomo":"E693","au":"EB83","softbank":"E010","google":"FEB93","image":"270a.png","sheet_x":2,"sheet_y":37,"short_name":"fist","short_names":["fist"],"text":null,"texts":null,"category":"People","sort_order":105,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"270A-1F3FB","image":"270a-1f3fb.png","sheet_x":2,"sheet_y":38,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"270A-1F3FC","image":"270a-1f3fc.png","sheet_x":2,"sheet_y":39,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"270A-1F3FD","image":"270a-1f3fd.png","sheet_x":2,"sheet_y":40,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"270A-1F3FE","image":"270a-1f3fe.png","sheet_x":2,"sheet_y":41,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"270A-1F3FF","image":"270a-1f3ff.png","sheet_x":2,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"RAISED HAND","unified":"270B","variations":[],"docomo":"E695","au":"E5A7","softbank":"E012","google":"FEB95","image":"270b.png","sheet_x":2,"sheet_y":43,"short_name":"hand","short_names":["hand","raised_hand"],"text":null,"texts":null,"category":"People","sort_order":117,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"270B-1F3FB","image":"270b-1f3fb.png","sheet_x":2,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"270B-1F3FC","image":"270b-1f3fc.png","sheet_x":2,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"270B-1F3FD","image":"270b-1f3fd.png","sheet_x":2,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"270B-1F3FE","image":"270b-1f3fe.png","sheet_x":2,"sheet_y":47,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"270B-1F3FF","image":"270b-1f3ff.png","sheet_x":2,"sheet_y":48,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"VICTORY HAND","unified":"270C","variations":["270C-FE0F"],"docomo":"E694","au":"E5A6","softbank":"E011","google":"FEB94","image":"270c.png","sheet_x":3,"sheet_y":0,"short_name":"v","short_names":["v"],"text":null,"texts":null,"category":"People","sort_order":109,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"270C-1F3FB","image":"270c-1f3fb.png","sheet_x":3,"sheet_y":1,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"270C-1F3FC","image":"270c-1f3fc.png","sheet_x":3,"sheet_y":2,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"270C-1F3FD","image":"270c-1f3fd.png","sheet_x":3,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"270C-1F3FE","image":"270c-1f3fe.png","sheet_x":3,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"270C-1F3FF","image":"270c-1f3ff.png","sheet_x":3,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"WRITING HAND","unified":"270D","variations":["270D-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"270d.png","sheet_x":3,"sheet_y":6,"short_name":"writing_hand","short_names":["writing_hand"],"text":null,"texts":null,"category":"People","sort_order":125,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"270D-1F3FB","image":"270d-1f3fb.png","sheet_x":3,"sheet_y":7,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"270D-1F3FC","image":"270d-1f3fc.png","sheet_x":3,"sheet_y":8,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"270D-1F3FD","image":"270d-1f3fd.png","sheet_x":3,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"270D-1F3FE","image":"270d-1f3fe.png","sheet_x":3,"sheet_y":10,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"270D-1F3FF","image":"270d-1f3ff.png","sheet_x":3,"sheet_y":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"PENCIL","unified":"270F","variations":["270F-FE0F"],"docomo":"E719","au":"E4A1","softbank":"E301","google":"FE539","image":"270f.png","sheet_x":3,"sheet_y":12,"short_name":"pencil2","short_names":["pencil2"],"text":null,"texts":null,"category":"Objects","sort_order":167,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK NIB","unified":"2712","variations":["2712-FE0F"],"docomo":"E6AE","au":"EB03","softbank":null,"google":"FE536","image":"2712.png","sheet_x":3,"sheet_y":13,"short_name":"black_nib","short_names":["black_nib"],"text":null,"texts":null,"category":"Objects","sort_order":163,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY CHECK MARK","unified":"2714","variations":["2714-FE0F"],"docomo":null,"au":"E557","softbank":null,"google":"FEB49","image":"2714.png","sheet_x":3,"sheet_y":14,"short_name":"heavy_check_mark","short_names":["heavy_check_mark"],"text":null,"texts":null,"category":"Symbols","sort_order":207,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY MULTIPLICATION X","unified":"2716","variations":["2716-FE0F"],"docomo":null,"au":"E54F","softbank":"E333","google":"FEB53","image":"2716.png","sheet_x":3,"sheet_y":15,"short_name":"heavy_multiplication_x","short_names":["heavy_multiplication_x"],"text":null,"texts":null,"category":"Symbols","sort_order":193,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LATIN CROSS","unified":"271D","variations":["271D-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"271d.png","sheet_x":3,"sheet_y":16,"short_name":"latin_cross","short_names":["latin_cross"],"text":null,"texts":null,"category":"Symbols","sort_order":18,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"STAR OF DAVID","unified":"2721","variations":["2721-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2721.png","sheet_x":3,"sheet_y":17,"short_name":"star_of_david","short_names":["star_of_david"],"text":null,"texts":null,"category":"Symbols","sort_order":22,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SPARKLES","unified":"2728","variations":[],"docomo":"E6FA","au":"EAAB","softbank":"E32E","google":"FEB60","image":"2728.png","sheet_x":3,"sheet_y":18,"short_name":"sparkles","short_names":["sparkles"],"text":null,"texts":null,"category":"Nature","sort_order":133,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EIGHT SPOKED ASTERISK","unified":"2733","variations":["2733-FE0F"],"docomo":"E6F8","au":"E53E","softbank":"E206","google":"FEB62","image":"2733.png","sheet_x":3,"sheet_y":19,"short_name":"eight_spoked_asterisk","short_names":["eight_spoked_asterisk"],"text":null,"texts":null,"category":"Symbols","sort_order":104,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EIGHT POINTED BLACK STAR","unified":"2734","variations":["2734-FE0F"],"docomo":"E6F8","au":"E479","softbank":"E205","google":"FEB61","image":"2734.png","sheet_x":3,"sheet_y":20,"short_name":"eight_pointed_black_star","short_names":["eight_pointed_black_star"],"text":null,"texts":null,"category":"Symbols","sort_order":53,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SNOWFLAKE","unified":"2744","variations":["2744-FE0F"],"docomo":null,"au":"E48A","softbank":null,"google":"FE00E","image":"2744.png","sheet_x":3,"sheet_y":21,"short_name":"snowflake","short_names":["snowflake"],"text":null,"texts":null,"category":"Nature","sort_order":151,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPARKLE","unified":"2747","variations":["2747-FE0F"],"docomo":"E6FA","au":"E46C","softbank":"E32E","google":"FEB77","image":"2747.png","sheet_x":3,"sheet_y":22,"short_name":"sparkle","short_names":["sparkle"],"text":null,"texts":null,"category":"Symbols","sort_order":103,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CROSS MARK","unified":"274C","variations":[],"docomo":null,"au":"E550","softbank":"E333","google":"FEB45","image":"274c.png","sheet_x":3,"sheet_y":23,"short_name":"x","short_names":["x"],"text":null,"texts":null,"category":"Symbols","sort_order":69,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEGATIVE SQUARED CROSS MARK","unified":"274E","variations":[],"docomo":null,"au":"E551","softbank":"E333","google":"FEB46","image":"274e.png","sheet_x":3,"sheet_y":24,"short_name":"negative_squared_cross_mark","short_names":["negative_squared_cross_mark"],"text":null,"texts":null,"category":"Symbols","sort_order":105,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK QUESTION MARK ORNAMENT","unified":"2753","variations":[],"docomo":null,"au":"E483","softbank":"E020","google":"FEB09","image":"2753.png","sheet_x":3,"sheet_y":25,"short_name":"question","short_names":["question"],"text":null,"texts":null,"category":"Symbols","sort_order":87,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE QUESTION MARK ORNAMENT","unified":"2754","variations":[],"docomo":null,"au":"E483","softbank":"E336","google":"FEB0A","image":"2754.png","sheet_x":3,"sheet_y":26,"short_name":"grey_question","short_names":["grey_question"],"text":null,"texts":null,"category":"Symbols","sort_order":88,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE EXCLAMATION MARK ORNAMENT","unified":"2755","variations":[],"docomo":"E702","au":"E482","softbank":"E337","google":"FEB0B","image":"2755.png","sheet_x":3,"sheet_y":27,"short_name":"grey_exclamation","short_names":["grey_exclamation"],"text":null,"texts":null,"category":"Symbols","sort_order":86,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY EXCLAMATION MARK SYMBOL","unified":"2757","variations":["2757-FE0F"],"docomo":"E702","au":"E482","softbank":"E021","google":"FEB04","image":"2757.png","sheet_x":3,"sheet_y":28,"short_name":"exclamation","short_names":["exclamation","heavy_exclamation_mark"],"text":null,"texts":null,"category":"Symbols","sort_order":85,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY HEART EXCLAMATION MARK ORNAMENT","unified":"2763","variations":["2763-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"2763.png","sheet_x":3,"sheet_y":29,"short_name":"heavy_heart_exclamation_mark_ornament","short_names":["heavy_heart_exclamation_mark_ornament"],"text":null,"texts":null,"category":"Symbols","sort_order":8,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HEAVY BLACK HEART","unified":"2764","variations":["2764-FE0F"],"docomo":"E6EC","au":"E595","softbank":"E022","google":"FEB0C","image":"2764.png","sheet_x":3,"sheet_y":30,"short_name":"heart","short_names":["heart"],"text":"<3","texts":["<3"],"category":"Symbols","sort_order":1,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY PLUS SIGN","unified":"2795","variations":[],"docomo":null,"au":"E53C","softbank":null,"google":"FEB51","image":"2795.png","sheet_x":3,"sheet_y":31,"short_name":"heavy_plus_sign","short_names":["heavy_plus_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":190,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY MINUS SIGN","unified":"2796","variations":[],"docomo":null,"au":"E53D","softbank":null,"google":"FEB52","image":"2796.png","sheet_x":3,"sheet_y":32,"short_name":"heavy_minus_sign","short_names":["heavy_minus_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":191,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY DIVISION SIGN","unified":"2797","variations":[],"docomo":null,"au":"E554","softbank":null,"google":"FEB54","image":"2797.png","sheet_x":3,"sheet_y":33,"short_name":"heavy_division_sign","short_names":["heavy_division_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":192,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK RIGHTWARDS ARROW","unified":"27A1","variations":["27A1-FE0F"],"docomo":null,"au":"E552","softbank":"E234","google":"FEAFA","image":"27a1.png","sheet_x":3,"sheet_y":34,"short_name":"arrow_right","short_names":["arrow_right"],"text":null,"texts":null,"category":"Symbols","sort_order":169,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CURLY LOOP","unified":"27B0","variations":[],"docomo":"E70A","au":"EB31","softbank":null,"google":"FEB08","image":"27b0.png","sheet_x":3,"sheet_y":35,"short_name":"curly_loop","short_names":["curly_loop"],"text":null,"texts":null,"category":"Symbols","sort_order":200,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOUBLE CURLY LOOP","unified":"27BF","variations":[],"docomo":"E6DF","au":null,"softbank":"E211","google":"FE82B","image":"27bf.png","sheet_x":3,"sheet_y":36,"short_name":"loop","short_names":["loop"],"text":null,"texts":null,"category":"Symbols","sort_order":201,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS","unified":"2934","variations":["2934-FE0F"],"docomo":"E6F5","au":"EB2D","softbank":"E236","google":"FEAF4","image":"2934.png","sheet_x":3,"sheet_y":37,"short_name":"arrow_heading_up","short_names":["arrow_heading_up"],"text":null,"texts":null,"category":"Symbols","sort_order":181,"added_in":"3.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS","unified":"2935","variations":["2935-FE0F"],"docomo":"E700","au":"EB2E","softbank":"E238","google":"FEAF5","image":"2935.png","sheet_x":3,"sheet_y":38,"short_name":"arrow_heading_down","short_names":["arrow_heading_down"],"text":null,"texts":null,"category":"Symbols","sort_order":182,"added_in":"3.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEFTWARDS BLACK ARROW","unified":"2B05","variations":["2B05-FE0F"],"docomo":null,"au":"E553","softbank":"E235","google":"FEAFB","image":"2b05.png","sheet_x":3,"sheet_y":39,"short_name":"arrow_left","short_names":["arrow_left"],"text":null,"texts":null,"category":"Symbols","sort_order":170,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"UPWARDS BLACK ARROW","unified":"2B06","variations":["2B06-FE0F"],"docomo":null,"au":"E53F","softbank":"E232","google":"FEAF8","image":"2b06.png","sheet_x":3,"sheet_y":40,"short_name":"arrow_up","short_names":["arrow_up"],"text":null,"texts":null,"category":"Symbols","sort_order":171,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOWNWARDS BLACK ARROW","unified":"2B07","variations":["2B07-FE0F"],"docomo":null,"au":"E540","softbank":"E233","google":"FEAF9","image":"2b07.png","sheet_x":3,"sheet_y":41,"short_name":"arrow_down","short_names":["arrow_down"],"text":null,"texts":null,"category":"Symbols","sort_order":172,"added_in":"4.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK LARGE SQUARE","unified":"2B1B","variations":["2B1B-FE0F"],"docomo":null,"au":"E549","softbank":"E21A","google":"FEB6C","image":"2b1b.png","sheet_x":3,"sheet_y":42,"short_name":"black_large_square","short_names":["black_large_square"],"text":null,"texts":null,"category":"Symbols","sort_order":228,"added_in":"5.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE LARGE SQUARE","unified":"2B1C","variations":["2B1C-FE0F"],"docomo":null,"au":"E548","softbank":"E21B","google":"FEB6B","image":"2b1c.png","sheet_x":3,"sheet_y":43,"short_name":"white_large_square","short_names":["white_large_square"],"text":null,"texts":null,"category":"Symbols","sort_order":229,"added_in":"5.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE MEDIUM STAR","unified":"2B50","variations":["2B50-FE0F"],"docomo":null,"au":"E48B","softbank":"E32F","google":"FEB68","image":"2b50.png","sheet_x":3,"sheet_y":44,"short_name":"star","short_names":["star"],"text":null,"texts":null,"category":"Nature","sort_order":131,"added_in":"5.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY LARGE CIRCLE","unified":"2B55","variations":["2B55-FE0F"],"docomo":"E6A0","au":"EAAD","softbank":"E332","google":"FEB44","image":"2b55.png","sheet_x":3,"sheet_y":45,"short_name":"o","short_names":["o"],"text":null,"texts":null,"category":"Symbols","sort_order":70,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WAVY DASH","unified":"3030","variations":["3030-FE0F"],"docomo":"E709","au":null,"softbank":null,"google":"FEB07","image":"3030.png","sheet_x":3,"sheet_y":46,"short_name":"wavy_dash","short_names":["wavy_dash"],"text":null,"texts":null,"category":"Symbols","sort_order":199,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PART ALTERNATION MARK","unified":"303D","variations":["303D-FE0F"],"docomo":null,"au":null,"softbank":"E12C","google":"FE81B","image":"303d.png","sheet_x":3,"sheet_y":47,"short_name":"part_alternation_mark","short_names":["part_alternation_mark"],"text":null,"texts":null,"category":"Symbols","sort_order":93,"added_in":"3.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CIRCLED IDEOGRAPH CONGRATULATION","unified":"3297","variations":["3297-FE0F"],"docomo":null,"au":"EA99","softbank":"E30D","google":"FEB43","image":"3297.png","sheet_x":3,"sheet_y":48,"short_name":"congratulations","short_names":["congratulations"],"text":null,"texts":null,"category":"Symbols","sort_order":58,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CIRCLED IDEOGRAPH SECRET","unified":"3299","variations":["3299-FE0F"],"docomo":"E734","au":"E4F1","softbank":"E315","google":"FEB2B","image":"3299.png","sheet_x":4,"sheet_y":0,"short_name":"secret","short_names":["secret"],"text":null,"texts":null,"category":"Symbols","sort_order":57,"added_in":"1.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MAHJONG TILE RED DRAGON","unified":"1F004","variations":["1F004-FE0F"],"docomo":null,"au":"E5D1","softbank":"E12D","google":"FE80B","image":"1f004.png","sheet_x":4,"sheet_y":1,"short_name":"mahjong","short_names":["mahjong"],"text":null,"texts":null,"category":"Symbols","sort_order":249,"added_in":"5.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PLAYING CARD BLACK JOKER","unified":"1F0CF","variations":[],"docomo":null,"au":"EB6F","softbank":null,"google":"FE812","image":"1f0cf.png","sheet_x":4,"sheet_y":2,"short_name":"black_joker","short_names":["black_joker"],"text":null,"texts":null,"category":"Symbols","sort_order":247,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEGATIVE SQUARED LATIN CAPITAL LETTER A","unified":"1F170","variations":["1F170-FE0F"],"docomo":null,"au":"EB26","softbank":"E532","google":"FE50B","image":"1f170.png","sheet_x":4,"sheet_y":3,"short_name":"a","short_names":["a"],"text":null,"texts":null,"category":"Symbols","sort_order":63,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEGATIVE SQUARED LATIN CAPITAL LETTER B","unified":"1F171","variations":["1F171-FE0F"],"docomo":null,"au":"EB27","softbank":"E533","google":"FE50C","image":"1f171.png","sheet_x":4,"sheet_y":4,"short_name":"b","short_names":["b"],"text":null,"texts":null,"category":"Symbols","sort_order":64,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEGATIVE SQUARED LATIN CAPITAL LETTER O","unified":"1F17E","variations":["1F17E-FE0F"],"docomo":null,"au":"EB28","softbank":"E535","google":"FE50E","image":"1f17e.png","sheet_x":4,"sheet_y":5,"short_name":"o2","short_names":["o2"],"text":null,"texts":null,"category":"Symbols","sort_order":67,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEGATIVE SQUARED LATIN CAPITAL LETTER P","unified":"1F17F","variations":["1F17F-FE0F"],"docomo":"E66C","au":"E4A6","softbank":"E14F","google":"FE7F6","image":"1f17f.png","sheet_x":4,"sheet_y":6,"short_name":"parking","short_names":["parking"],"text":null,"texts":null,"category":"Symbols","sort_order":114,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEGATIVE SQUARED AB","unified":"1F18E","variations":[],"docomo":null,"au":"EB29","softbank":"E534","google":"FE50D","image":"1f18e.png","sheet_x":4,"sheet_y":7,"short_name":"ab","short_names":["ab"],"text":null,"texts":null,"category":"Symbols","sort_order":65,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CL","unified":"1F191","variations":[],"docomo":"E6DB","au":"E5AB","softbank":null,"google":"FEB84","image":"1f191.png","sheet_x":4,"sheet_y":8,"short_name":"cl","short_names":["cl"],"text":null,"texts":null,"category":"Symbols","sort_order":66,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED COOL","unified":"1F192","variations":[],"docomo":null,"au":"EA85","softbank":"E214","google":"FEB38","image":"1f192.png","sheet_x":4,"sheet_y":9,"short_name":"cool","short_names":["cool"],"text":null,"texts":null,"category":"Symbols","sort_order":137,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED FREE","unified":"1F193","variations":[],"docomo":"E6D7","au":"E578","softbank":null,"google":"FEB21","image":"1f193.png","sheet_x":4,"sheet_y":10,"short_name":"free","short_names":["free"],"text":null,"texts":null,"category":"Symbols","sort_order":139,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED ID","unified":"1F194","variations":[],"docomo":"E6D8","au":"EA88","softbank":"E229","google":"FEB81","image":"1f194.png","sheet_x":4,"sheet_y":11,"short_name":"id","short_names":["id"],"text":null,"texts":null,"category":"Symbols","sort_order":41,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED NEW","unified":"1F195","variations":[],"docomo":"E6DD","au":"E5B5","softbank":"E212","google":"FEB36","image":"1f195.png","sheet_x":4,"sheet_y":12,"short_name":"new","short_names":["new"],"text":null,"texts":null,"category":"Symbols","sort_order":138,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED NG","unified":"1F196","variations":[],"docomo":"E72F","au":null,"softbank":null,"google":"FEB28","image":"1f196.png","sheet_x":4,"sheet_y":13,"short_name":"ng","short_names":["ng"],"text":null,"texts":null,"category":"Symbols","sort_order":134,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED OK","unified":"1F197","variations":[],"docomo":"E70B","au":"E5AD","softbank":"E24D","google":"FEB27","image":"1f197.png","sheet_x":4,"sheet_y":14,"short_name":"ok","short_names":["ok"],"text":null,"texts":null,"category":"Symbols","sort_order":135,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED SOS","unified":"1F198","variations":[],"docomo":null,"au":"E4E8","softbank":null,"google":"FEB4F","image":"1f198.png","sheet_x":4,"sheet_y":15,"short_name":"sos","short_names":["sos"],"text":null,"texts":null,"category":"Symbols","sort_order":68,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED UP WITH EXCLAMATION MARK","unified":"1F199","variations":[],"docomo":null,"au":"E50F","softbank":"E213","google":"FEB37","image":"1f199.png","sheet_x":4,"sheet_y":16,"short_name":"up","short_names":["up"],"text":null,"texts":null,"category":"Symbols","sort_order":136,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED VS","unified":"1F19A","variations":[],"docomo":null,"au":"E5D2","softbank":"E12E","google":"FEB32","image":"1f19a.png","sheet_x":4,"sheet_y":17,"short_name":"vs","short_names":["vs"],"text":null,"texts":null,"category":"Symbols","sort_order":54,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED KATAKANA KOKO","unified":"1F201","variations":[],"docomo":null,"au":null,"softbank":"E203","google":"FEB24","image":"1f201.png","sheet_x":4,"sheet_y":18,"short_name":"koko","short_names":["koko"],"text":null,"texts":null,"category":"Symbols","sort_order":128,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED KATAKANA SA","unified":"1F202","variations":["1F202-FE0F"],"docomo":null,"au":"EA87","softbank":"E228","google":"FEB3F","image":"1f202.png","sheet_x":4,"sheet_y":19,"short_name":"sa","short_names":["sa"],"text":null,"texts":null,"category":"Symbols","sort_order":116,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-7121","unified":"1F21A","variations":["1F21A-FE0F"],"docomo":null,"au":null,"softbank":"E216","google":"FEB3A","image":"1f21a.png","sheet_x":4,"sheet_y":20,"short_name":"u7121","short_names":["u7121"],"text":null,"texts":null,"category":"Symbols","sort_order":49,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-6307","unified":"1F22F","variations":["1F22F-FE0F"],"docomo":null,"au":"EA8B","softbank":"E22C","google":"FEB40","image":"1f22f.png","sheet_x":4,"sheet_y":21,"short_name":"u6307","short_names":["u6307"],"text":null,"texts":null,"category":"Symbols","sort_order":101,"added_in":"5.2","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-7981","unified":"1F232","variations":[],"docomo":"E738","au":null,"softbank":null,"google":"FEB2E","image":"1f232.png","sheet_x":4,"sheet_y":22,"short_name":"u7981","short_names":["u7981"],"text":null,"texts":null,"category":"Symbols","sort_order":62,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-7A7A","unified":"1F233","variations":[],"docomo":"E739","au":"EA8A","softbank":"E22B","google":"FEB2F","image":"1f233.png","sheet_x":4,"sheet_y":23,"short_name":"u7a7a","short_names":["u7a7a"],"text":null,"texts":null,"category":"Symbols","sort_order":115,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-5408","unified":"1F234","variations":[],"docomo":"E73A","au":null,"softbank":null,"google":"FEB30","image":"1f234.png","sheet_x":4,"sheet_y":24,"short_name":"u5408","short_names":["u5408"],"text":null,"texts":null,"category":"Symbols","sort_order":59,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-6E80","unified":"1F235","variations":[],"docomo":"E73B","au":"EA89","softbank":"E22A","google":"FEB31","image":"1f235.png","sheet_x":4,"sheet_y":25,"short_name":"u6e80","short_names":["u6e80"],"text":null,"texts":null,"category":"Symbols","sort_order":60,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-6709","unified":"1F236","variations":[],"docomo":null,"au":null,"softbank":"E215","google":"FEB39","image":"1f236.png","sheet_x":4,"sheet_y":26,"short_name":"u6709","short_names":["u6709"],"text":null,"texts":null,"category":"Symbols","sort_order":48,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-6708","unified":"1F237","variations":["1F237-FE0F"],"docomo":null,"au":null,"softbank":"E217","google":"FEB3B","image":"1f237.png","sheet_x":4,"sheet_y":27,"short_name":"u6708","short_names":["u6708"],"text":null,"texts":null,"category":"Symbols","sort_order":52,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-7533","unified":"1F238","variations":[],"docomo":null,"au":null,"softbank":"E218","google":"FEB3C","image":"1f238.png","sheet_x":4,"sheet_y":28,"short_name":"u7533","short_names":["u7533"],"text":null,"texts":null,"category":"Symbols","sort_order":50,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-5272","unified":"1F239","variations":[],"docomo":null,"au":"EA86","softbank":"E227","google":"FEB3E","image":"1f239.png","sheet_x":4,"sheet_y":29,"short_name":"u5272","short_names":["u5272"],"text":null,"texts":null,"category":"Symbols","sort_order":61,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SQUARED CJK UNIFIED IDEOGRAPH-55B6","unified":"1F23A","variations":[],"docomo":null,"au":"EA8C","softbank":"E22D","google":"FEB41","image":"1f23a.png","sheet_x":4,"sheet_y":30,"short_name":"u55b6","short_names":["u55b6"],"text":null,"texts":null,"category":"Symbols","sort_order":51,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CIRCLED IDEOGRAPH ADVANTAGE","unified":"1F250","variations":[],"docomo":null,"au":"E4F7","softbank":"E226","google":"FEB3D","image":"1f250.png","sheet_x":4,"sheet_y":31,"short_name":"ideograph_advantage","short_names":["ideograph_advantage"],"text":null,"texts":null,"category":"Symbols","sort_order":56,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CIRCLED IDEOGRAPH ACCEPT","unified":"1F251","variations":[],"docomo":null,"au":"EB01","softbank":null,"google":"FEB50","image":"1f251.png","sheet_x":4,"sheet_y":32,"short_name":"accept","short_names":["accept"],"text":null,"texts":null,"category":"Symbols","sort_order":43,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CYCLONE","unified":"1F300","variations":[],"docomo":"E643","au":"E469","softbank":"E443","google":"FE005","image":"1f300.png","sheet_x":4,"sheet_y":33,"short_name":"cyclone","short_names":["cyclone"],"text":null,"texts":null,"category":"Symbols","sort_order":109,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FOGGY","unified":"1F301","variations":[],"docomo":"E644","au":"E598","softbank":null,"google":"FE006","image":"1f301.png","sheet_x":4,"sheet_y":34,"short_name":"foggy","short_names":["foggy"],"text":null,"texts":null,"category":"Places","sort_order":119,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOSED UMBRELLA","unified":"1F302","variations":[],"docomo":"E645","au":"EAE8","softbank":"E43C","google":"FE007","image":"1f302.png","sheet_x":4,"sheet_y":35,"short_name":"closed_umbrella","short_names":["closed_umbrella"],"text":null,"texts":null,"category":"People","sort_order":292,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NIGHT WITH STARS","unified":"1F303","variations":[],"docomo":"E6B3","au":"EAF1","softbank":"E44B","google":"FE008","image":"1f303.png","sheet_x":4,"sheet_y":36,"short_name":"night_with_stars","short_names":["night_with_stars"],"text":null,"texts":null,"category":"Places","sort_order":116,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SUNRISE OVER MOUNTAINS","unified":"1F304","variations":[],"docomo":"E63E","au":"EAF4","softbank":"E04D","google":"FE009","image":"1f304.png","sheet_x":4,"sheet_y":37,"short_name":"sunrise_over_mountains","short_names":["sunrise_over_mountains"],"text":null,"texts":null,"category":"Places","sort_order":109,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SUNRISE","unified":"1F305","variations":[],"docomo":"E63E","au":"EAF4","softbank":"E449","google":"FE00A","image":"1f305.png","sheet_x":4,"sheet_y":38,"short_name":"sunrise","short_names":["sunrise"],"text":null,"texts":null,"category":"Places","sort_order":108,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CITYSCAPE AT DUSK","unified":"1F306","variations":[],"docomo":null,"au":"E5DA","softbank":"E146","google":"FE00B","image":"1f306.png","sheet_x":4,"sheet_y":39,"short_name":"city_sunset","short_names":["city_sunset"],"text":null,"texts":null,"category":"Places","sort_order":114,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SUNSET OVER BUILDINGS","unified":"1F307","variations":[],"docomo":"E63E","au":"E5DA","softbank":"E44A","google":"FE00C","image":"1f307.png","sheet_x":4,"sheet_y":40,"short_name":"city_sunrise","short_names":["city_sunrise"],"text":null,"texts":null,"category":"Places","sort_order":113,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RAINBOW","unified":"1F308","variations":[],"docomo":null,"au":"EAF2","softbank":"E44C","google":"FE00D","image":"1f308.png","sheet_x":4,"sheet_y":41,"short_name":"rainbow","short_names":["rainbow"],"text":null,"texts":null,"category":"Nature","sort_order":143,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BRIDGE AT NIGHT","unified":"1F309","variations":[],"docomo":"E6B3","au":"E4BF","softbank":"E44B","google":"FE010","image":"1f309.png","sheet_x":4,"sheet_y":42,"short_name":"bridge_at_night","short_names":["bridge_at_night"],"text":null,"texts":null,"category":"Places","sort_order":118,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WATER WAVE","unified":"1F30A","variations":[],"docomo":"E73F","au":"EB7C","softbank":"E43E","google":"FE038","image":"1f30a.png","sheet_x":4,"sheet_y":43,"short_name":"ocean","short_names":["ocean"],"text":null,"texts":null,"category":"Nature","sort_order":156,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"VOLCANO","unified":"1F30B","variations":[],"docomo":null,"au":"EB53","softbank":null,"google":"FE03A","image":"1f30b.png","sheet_x":4,"sheet_y":44,"short_name":"volcano","short_names":["volcano"],"text":null,"texts":null,"category":"Places","sort_order":76,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MILKY WAY","unified":"1F30C","variations":[],"docomo":"E6B3","au":"EB5F","softbank":"E44B","google":"FE03B","image":"1f30c.png","sheet_x":4,"sheet_y":45,"short_name":"milky_way","short_names":["milky_way"],"text":null,"texts":null,"category":"Places","sort_order":117,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EARTH GLOBE EUROPE-AFRICA","unified":"1F30D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f30d.png","sheet_x":4,"sheet_y":46,"short_name":"earth_africa","short_names":["earth_africa"],"text":null,"texts":null,"category":"Nature","sort_order":114,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EARTH GLOBE AMERICAS","unified":"1F30E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f30e.png","sheet_x":4,"sheet_y":47,"short_name":"earth_americas","short_names":["earth_americas"],"text":null,"texts":null,"category":"Nature","sort_order":113,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EARTH GLOBE ASIA-AUSTRALIA","unified":"1F30F","variations":[],"docomo":null,"au":"E5B3","softbank":null,"google":"FE039","image":"1f30f.png","sheet_x":4,"sheet_y":48,"short_name":"earth_asia","short_names":["earth_asia"],"text":null,"texts":null,"category":"Nature","sort_order":115,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GLOBE WITH MERIDIANS","unified":"1F310","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f310.png","sheet_x":5,"sheet_y":0,"short_name":"globe_with_meridians","short_names":["globe_with_meridians"],"text":null,"texts":null,"category":"Symbols","sort_order":106,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEW MOON SYMBOL","unified":"1F311","variations":[],"docomo":"E69C","au":"E5A8","softbank":null,"google":"FE011","image":"1f311.png","sheet_x":5,"sheet_y":1,"short_name":"new_moon","short_names":["new_moon"],"text":null,"texts":null,"category":"Nature","sort_order":120,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WAXING CRESCENT MOON SYMBOL","unified":"1F312","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f312.png","sheet_x":5,"sheet_y":2,"short_name":"waxing_crescent_moon","short_names":["waxing_crescent_moon"],"text":null,"texts":null,"category":"Nature","sort_order":121,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FIRST QUARTER MOON SYMBOL","unified":"1F313","variations":[],"docomo":"E69E","au":"E5AA","softbank":"E04C","google":"FE013","image":"1f313.png","sheet_x":5,"sheet_y":3,"short_name":"first_quarter_moon","short_names":["first_quarter_moon"],"text":null,"texts":null,"category":"Nature","sort_order":122,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WAXING GIBBOUS MOON SYMBOL","unified":"1F314","variations":[],"docomo":"E69D","au":"E5A9","softbank":"E04C","google":"FE012","image":"1f314.png","sheet_x":5,"sheet_y":4,"short_name":"moon","short_names":["moon","waxing_gibbous_moon"],"text":null,"texts":null,"category":"Nature","sort_order":123,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FULL MOON SYMBOL","unified":"1F315","variations":[],"docomo":"E6A0","au":null,"softbank":null,"google":"FE015","image":"1f315.png","sheet_x":5,"sheet_y":5,"short_name":"full_moon","short_names":["full_moon"],"text":null,"texts":null,"category":"Nature","sort_order":116,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WANING GIBBOUS MOON SYMBOL","unified":"1F316","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f316.png","sheet_x":5,"sheet_y":6,"short_name":"waning_gibbous_moon","short_names":["waning_gibbous_moon"],"text":null,"texts":null,"category":"Nature","sort_order":117,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LAST QUARTER MOON SYMBOL","unified":"1F317","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f317.png","sheet_x":5,"sheet_y":7,"short_name":"last_quarter_moon","short_names":["last_quarter_moon"],"text":null,"texts":null,"category":"Nature","sort_order":118,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WANING CRESCENT MOON SYMBOL","unified":"1F318","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f318.png","sheet_x":5,"sheet_y":8,"short_name":"waning_crescent_moon","short_names":["waning_crescent_moon"],"text":null,"texts":null,"category":"Nature","sort_order":119,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CRESCENT MOON","unified":"1F319","variations":[],"docomo":"E69F","au":"E486","softbank":"E04C","google":"FE014","image":"1f319.png","sheet_x":5,"sheet_y":9,"short_name":"crescent_moon","short_names":["crescent_moon"],"text":null,"texts":null,"category":"Nature","sort_order":129,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEW MOON WITH FACE","unified":"1F31A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f31a.png","sheet_x":5,"sheet_y":10,"short_name":"new_moon_with_face","short_names":["new_moon_with_face"],"text":null,"texts":null,"category":"Nature","sort_order":124,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FIRST QUARTER MOON WITH FACE","unified":"1F31B","variations":[],"docomo":"E69E","au":"E489","softbank":"E04C","google":"FE016","image":"1f31b.png","sheet_x":5,"sheet_y":11,"short_name":"first_quarter_moon_with_face","short_names":["first_quarter_moon_with_face"],"text":null,"texts":null,"category":"Nature","sort_order":127,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LAST QUARTER MOON WITH FACE","unified":"1F31C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f31c.png","sheet_x":5,"sheet_y":12,"short_name":"last_quarter_moon_with_face","short_names":["last_quarter_moon_with_face"],"text":null,"texts":null,"category":"Nature","sort_order":128,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FULL MOON WITH FACE","unified":"1F31D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f31d.png","sheet_x":5,"sheet_y":13,"short_name":"full_moon_with_face","short_names":["full_moon_with_face"],"text":null,"texts":null,"category":"Nature","sort_order":125,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SUN WITH FACE","unified":"1F31E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f31e.png","sheet_x":5,"sheet_y":14,"short_name":"sun_with_face","short_names":["sun_with_face"],"text":null,"texts":null,"category":"Nature","sort_order":126,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GLOWING STAR","unified":"1F31F","variations":[],"docomo":null,"au":"E48B","softbank":"E335","google":"FEB69","image":"1f31f.png","sheet_x":5,"sheet_y":15,"short_name":"star2","short_names":["star2"],"text":null,"texts":null,"category":"Nature","sort_order":132,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SHOOTING STAR","unified":"1F320","variations":[],"docomo":null,"au":"E468","softbank":null,"google":"FEB6A","image":"1f320.png","sheet_x":5,"sheet_y":16,"short_name":"stars","short_names":["stars"],"text":null,"texts":null,"category":"Places","sort_order":110,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"THERMOMETER","unified":"1F321","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f321.png","sheet_x":5,"sheet_y":17,"short_name":"thermometer","short_names":["thermometer"],"text":null,"texts":null,"category":"Objects","sort_order":82,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WHITE SUN WITH SMALL CLOUD","unified":"1F324","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f324.png","sheet_x":5,"sheet_y":18,"short_name":"mostly_sunny","short_names":["mostly_sunny","sun_small_cloud"],"text":null,"texts":null,"category":"Nature","sort_order":139,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WHITE SUN BEHIND CLOUD","unified":"1F325","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f325.png","sheet_x":5,"sheet_y":19,"short_name":"barely_sunny","short_names":["barely_sunny","sun_behind_cloud"],"text":null,"texts":null,"category":"Nature","sort_order":141,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WHITE SUN BEHIND CLOUD WITH RAIN","unified":"1F326","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f326.png","sheet_x":5,"sheet_y":20,"short_name":"partly_sunny_rain","short_names":["partly_sunny_rain","sun_behind_rain_cloud"],"text":null,"texts":null,"category":"Nature","sort_order":142,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CLOUD WITH RAIN","unified":"1F327","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f327.png","sheet_x":5,"sheet_y":21,"short_name":"rain_cloud","short_names":["rain_cloud"],"text":null,"texts":null,"category":"Nature","sort_order":145,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CLOUD WITH SNOW","unified":"1F328","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f328.png","sheet_x":5,"sheet_y":22,"short_name":"snow_cloud","short_names":["snow_cloud"],"text":null,"texts":null,"category":"Nature","sort_order":148,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CLOUD WITH LIGHTNING","unified":"1F329","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f329.png","sheet_x":5,"sheet_y":23,"short_name":"lightning","short_names":["lightning","lightning_cloud"],"text":null,"texts":null,"category":"Nature","sort_order":147,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CLOUD WITH TORNADO","unified":"1F32A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f32a.png","sheet_x":5,"sheet_y":24,"short_name":"tornado","short_names":["tornado","tornado_cloud"],"text":null,"texts":null,"category":"Nature","sort_order":154,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FOG","unified":"1F32B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f32b.png","sheet_x":5,"sheet_y":25,"short_name":"fog","short_names":["fog"],"text":null,"texts":null,"category":"Nature","sort_order":155,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WIND BLOWING FACE","unified":"1F32C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f32c.png","sheet_x":5,"sheet_y":26,"short_name":"wind_blowing_face","short_names":["wind_blowing_face"],"text":null,"texts":null,"category":"Nature","sort_order":152,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HOT DOG","unified":"1F32D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f32d.png","sheet_x":5,"sheet_y":27,"short_name":"hotdog","short_names":["hotdog"],"text":null,"texts":null,"category":"Foods","sort_order":39,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TACO","unified":"1F32E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f32e.png","sheet_x":5,"sheet_y":28,"short_name":"taco","short_names":["taco"],"text":null,"texts":null,"category":"Foods","sort_order":43,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BURRITO","unified":"1F32F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f32f.png","sheet_x":5,"sheet_y":29,"short_name":"burrito","short_names":["burrito"],"text":null,"texts":null,"category":"Foods","sort_order":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CHESTNUT","unified":"1F330","variations":[],"docomo":null,"au":"EB38","softbank":null,"google":"FE04C","image":"1f330.png","sheet_x":5,"sheet_y":30,"short_name":"chestnut","short_names":["chestnut"],"text":null,"texts":null,"category":"Foods","sort_order":24,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SEEDLING","unified":"1F331","variations":[],"docomo":"E746","au":"EB7D","softbank":"E110","google":"FE03E","image":"1f331.png","sheet_x":5,"sheet_y":31,"short_name":"seedling","short_names":["seedling"],"text":null,"texts":null,"category":"Nature","sort_order":94,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EVERGREEN TREE","unified":"1F332","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f332.png","sheet_x":5,"sheet_y":32,"short_name":"evergreen_tree","short_names":["evergreen_tree"],"text":null,"texts":null,"category":"Nature","sort_order":91,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DECIDUOUS TREE","unified":"1F333","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f333.png","sheet_x":5,"sheet_y":33,"short_name":"deciduous_tree","short_names":["deciduous_tree"],"text":null,"texts":null,"category":"Nature","sort_order":92,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PALM TREE","unified":"1F334","variations":[],"docomo":null,"au":"E4E2","softbank":"E307","google":"FE047","image":"1f334.png","sheet_x":5,"sheet_y":34,"short_name":"palm_tree","short_names":["palm_tree"],"text":null,"texts":null,"category":"Nature","sort_order":93,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CACTUS","unified":"1F335","variations":[],"docomo":null,"au":"EA96","softbank":"E308","google":"FE048","image":"1f335.png","sheet_x":5,"sheet_y":35,"short_name":"cactus","short_names":["cactus"],"text":null,"texts":null,"category":"Nature","sort_order":89,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HOT PEPPER","unified":"1F336","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f336.png","sheet_x":5,"sheet_y":36,"short_name":"hot_pepper","short_names":["hot_pepper"],"text":null,"texts":null,"category":"Foods","sort_order":21,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TULIP","unified":"1F337","variations":[],"docomo":"E743","au":"E4E4","softbank":"E304","google":"FE03D","image":"1f337.png","sheet_x":5,"sheet_y":37,"short_name":"tulip","short_names":["tulip"],"text":null,"texts":null,"category":"Nature","sort_order":106,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHERRY BLOSSOM","unified":"1F338","variations":[],"docomo":"E748","au":"E4CA","softbank":"E030","google":"FE040","image":"1f338.png","sheet_x":5,"sheet_y":38,"short_name":"cherry_blossom","short_names":["cherry_blossom"],"text":null,"texts":null,"category":"Nature","sort_order":111,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ROSE","unified":"1F339","variations":[],"docomo":null,"au":"E5BA","softbank":"E032","google":"FE041","image":"1f339.png","sheet_x":5,"sheet_y":39,"short_name":"rose","short_names":["rose"],"text":null,"texts":null,"category":"Nature","sort_order":107,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HIBISCUS","unified":"1F33A","variations":[],"docomo":null,"au":"EA94","softbank":"E303","google":"FE045","image":"1f33a.png","sheet_x":5,"sheet_y":40,"short_name":"hibiscus","short_names":["hibiscus"],"text":null,"texts":null,"category":"Nature","sort_order":112,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SUNFLOWER","unified":"1F33B","variations":[],"docomo":null,"au":"E4E3","softbank":"E305","google":"FE046","image":"1f33b.png","sheet_x":5,"sheet_y":41,"short_name":"sunflower","short_names":["sunflower"],"text":null,"texts":null,"category":"Nature","sort_order":109,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLOSSOM","unified":"1F33C","variations":[],"docomo":null,"au":"EB49","softbank":"E305","google":"FE04D","image":"1f33c.png","sheet_x":5,"sheet_y":42,"short_name":"blossom","short_names":["blossom"],"text":null,"texts":null,"category":"Nature","sort_order":110,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EAR OF MAIZE","unified":"1F33D","variations":[],"docomo":null,"au":"EB36","softbank":null,"google":"FE04A","image":"1f33d.png","sheet_x":5,"sheet_y":43,"short_name":"corn","short_names":["corn"],"text":null,"texts":null,"category":"Foods","sort_order":20,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EAR OF RICE","unified":"1F33E","variations":[],"docomo":null,"au":null,"softbank":"E444","google":"FE049","image":"1f33e.png","sheet_x":5,"sheet_y":44,"short_name":"ear_of_rice","short_names":["ear_of_rice"],"text":null,"texts":null,"category":"Nature","sort_order":104,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HERB","unified":"1F33F","variations":[],"docomo":"E741","au":"EB82","softbank":"E110","google":"FE04E","image":"1f33f.png","sheet_x":5,"sheet_y":45,"short_name":"herb","short_names":["herb"],"text":null,"texts":null,"category":"Nature","sort_order":95,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FOUR LEAF CLOVER","unified":"1F340","variations":[],"docomo":"E741","au":"E513","softbank":"E110","google":"FE03C","image":"1f340.png","sheet_x":5,"sheet_y":46,"short_name":"four_leaf_clover","short_names":["four_leaf_clover"],"text":null,"texts":null,"category":"Nature","sort_order":97,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MAPLE LEAF","unified":"1F341","variations":[],"docomo":"E747","au":"E4CE","softbank":"E118","google":"FE03F","image":"1f341.png","sheet_x":5,"sheet_y":47,"short_name":"maple_leaf","short_names":["maple_leaf"],"text":null,"texts":null,"category":"Nature","sort_order":102,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FALLEN LEAF","unified":"1F342","variations":[],"docomo":"E747","au":"E5CD","softbank":"E119","google":"FE042","image":"1f342.png","sheet_x":5,"sheet_y":48,"short_name":"fallen_leaf","short_names":["fallen_leaf"],"text":null,"texts":null,"category":"Nature","sort_order":101,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEAF FLUTTERING IN WIND","unified":"1F343","variations":[],"docomo":null,"au":"E5CD","softbank":"E447","google":"FE043","image":"1f343.png","sheet_x":6,"sheet_y":0,"short_name":"leaves","short_names":["leaves"],"text":null,"texts":null,"category":"Nature","sort_order":100,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MUSHROOM","unified":"1F344","variations":[],"docomo":null,"au":"EB37","softbank":null,"google":"FE04B","image":"1f344.png","sheet_x":6,"sheet_y":1,"short_name":"mushroom","short_names":["mushroom"],"text":null,"texts":null,"category":"Nature","sort_order":103,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TOMATO","unified":"1F345","variations":[],"docomo":null,"au":"EABB","softbank":"E349","google":"FE055","image":"1f345.png","sheet_x":6,"sheet_y":2,"short_name":"tomato","short_names":["tomato"],"text":null,"texts":null,"category":"Foods","sort_order":16,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"AUBERGINE","unified":"1F346","variations":[],"docomo":null,"au":"EABC","softbank":"E34A","google":"FE056","image":"1f346.png","sheet_x":6,"sheet_y":3,"short_name":"eggplant","short_names":["eggplant"],"text":null,"texts":null,"category":"Foods","sort_order":17,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GRAPES","unified":"1F347","variations":[],"docomo":null,"au":"EB34","softbank":null,"google":"FE059","image":"1f347.png","sheet_x":6,"sheet_y":4,"short_name":"grapes","short_names":["grapes"],"text":null,"texts":null,"category":"Foods","sort_order":8,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MELON","unified":"1F348","variations":[],"docomo":null,"au":"EB32","softbank":null,"google":"FE057","image":"1f348.png","sheet_x":6,"sheet_y":5,"short_name":"melon","short_names":["melon"],"text":null,"texts":null,"category":"Foods","sort_order":10,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WATERMELON","unified":"1F349","variations":[],"docomo":null,"au":"E4CD","softbank":"E348","google":"FE054","image":"1f349.png","sheet_x":6,"sheet_y":6,"short_name":"watermelon","short_names":["watermelon"],"text":null,"texts":null,"category":"Foods","sort_order":7,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TANGERINE","unified":"1F34A","variations":[],"docomo":null,"au":"EABA","softbank":"E346","google":"FE052","image":"1f34a.png","sheet_x":6,"sheet_y":7,"short_name":"tangerine","short_names":["tangerine"],"text":null,"texts":null,"category":"Foods","sort_order":4,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEMON","unified":"1F34B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f34b.png","sheet_x":6,"sheet_y":8,"short_name":"lemon","short_names":["lemon"],"text":null,"texts":null,"category":"Foods","sort_order":5,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BANANA","unified":"1F34C","variations":[],"docomo":"E744","au":"EB35","softbank":null,"google":"FE050","image":"1f34c.png","sheet_x":6,"sheet_y":9,"short_name":"banana","short_names":["banana"],"text":null,"texts":null,"category":"Foods","sort_order":6,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PINEAPPLE","unified":"1F34D","variations":[],"docomo":null,"au":"EB33","softbank":null,"google":"FE058","image":"1f34d.png","sheet_x":6,"sheet_y":10,"short_name":"pineapple","short_names":["pineapple"],"text":null,"texts":null,"category":"Foods","sort_order":13,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RED APPLE","unified":"1F34E","variations":[],"docomo":"E745","au":"EAB9","softbank":"E345","google":"FE051","image":"1f34e.png","sheet_x":6,"sheet_y":11,"short_name":"apple","short_names":["apple"],"text":null,"texts":null,"category":"Foods","sort_order":2,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GREEN APPLE","unified":"1F34F","variations":[],"docomo":"E745","au":"EB5A","softbank":"E345","google":"FE05B","image":"1f34f.png","sheet_x":6,"sheet_y":12,"short_name":"green_apple","short_names":["green_apple"],"text":null,"texts":null,"category":"Foods","sort_order":1,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PEAR","unified":"1F350","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f350.png","sheet_x":6,"sheet_y":13,"short_name":"pear","short_names":["pear"],"text":null,"texts":null,"category":"Foods","sort_order":3,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PEACH","unified":"1F351","variations":[],"docomo":null,"au":"EB39","softbank":null,"google":"FE05A","image":"1f351.png","sheet_x":6,"sheet_y":14,"short_name":"peach","short_names":["peach"],"text":null,"texts":null,"category":"Foods","sort_order":12,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHERRIES","unified":"1F352","variations":[],"docomo":"E742","au":"E4D2","softbank":null,"google":"FE04F","image":"1f352.png","sheet_x":6,"sheet_y":15,"short_name":"cherries","short_names":["cherries"],"text":null,"texts":null,"category":"Foods","sort_order":11,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"STRAWBERRY","unified":"1F353","variations":[],"docomo":null,"au":"E4D4","softbank":"E347","google":"FE053","image":"1f353.png","sheet_x":6,"sheet_y":16,"short_name":"strawberry","short_names":["strawberry"],"text":null,"texts":null,"category":"Foods","sort_order":9,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HAMBURGER","unified":"1F354","variations":[],"docomo":"E673","au":"E4D6","softbank":"E120","google":"FE960","image":"1f354.png","sheet_x":6,"sheet_y":17,"short_name":"hamburger","short_names":["hamburger"],"text":null,"texts":null,"category":"Foods","sort_order":40,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SLICE OF PIZZA","unified":"1F355","variations":[],"docomo":null,"au":"EB3B","softbank":null,"google":"FE975","image":"1f355.png","sheet_x":6,"sheet_y":18,"short_name":"pizza","short_names":["pizza"],"text":null,"texts":null,"category":"Foods","sort_order":38,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MEAT ON BONE","unified":"1F356","variations":[],"docomo":null,"au":"E4C4","softbank":null,"google":"FE972","image":"1f356.png","sheet_x":6,"sheet_y":19,"short_name":"meat_on_bone","short_names":["meat_on_bone"],"text":null,"texts":null,"category":"Foods","sort_order":37,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POULTRY LEG","unified":"1F357","variations":[],"docomo":null,"au":"EB3C","softbank":null,"google":"FE976","image":"1f357.png","sheet_x":6,"sheet_y":20,"short_name":"poultry_leg","short_names":["poultry_leg"],"text":null,"texts":null,"category":"Foods","sort_order":36,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RICE CRACKER","unified":"1F358","variations":[],"docomo":null,"au":"EAB3","softbank":"E33D","google":"FE969","image":"1f358.png","sheet_x":6,"sheet_y":21,"short_name":"rice_cracker","short_names":["rice_cracker"],"text":null,"texts":null,"category":"Foods","sort_order":56,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RICE BALL","unified":"1F359","variations":[],"docomo":"E749","au":"E4D5","softbank":"E342","google":"FE961","image":"1f359.png","sheet_x":6,"sheet_y":22,"short_name":"rice_ball","short_names":["rice_ball"],"text":null,"texts":null,"category":"Foods","sort_order":55,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COOKED RICE","unified":"1F35A","variations":[],"docomo":"E74C","au":"EAB4","softbank":"E33E","google":"FE96A","image":"1f35a.png","sheet_x":6,"sheet_y":23,"short_name":"rice","short_names":["rice"],"text":null,"texts":null,"category":"Foods","sort_order":54,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CURRY AND RICE","unified":"1F35B","variations":[],"docomo":null,"au":"EAB6","softbank":"E341","google":"FE96C","image":"1f35b.png","sheet_x":6,"sheet_y":24,"short_name":"curry","short_names":["curry"],"text":null,"texts":null,"category":"Foods","sort_order":53,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"STEAMING BOWL","unified":"1F35C","variations":[],"docomo":"E74C","au":"E5B4","softbank":"E340","google":"FE963","image":"1f35c.png","sheet_x":6,"sheet_y":25,"short_name":"ramen","short_names":["ramen"],"text":null,"texts":null,"category":"Foods","sort_order":48,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPAGHETTI","unified":"1F35D","variations":[],"docomo":null,"au":"EAB5","softbank":"E33F","google":"FE96B","image":"1f35d.png","sheet_x":6,"sheet_y":26,"short_name":"spaghetti","short_names":["spaghetti"],"text":null,"texts":null,"category":"Foods","sort_order":47,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BREAD","unified":"1F35E","variations":[],"docomo":"E74D","au":"EAAF","softbank":"E339","google":"FE964","image":"1f35e.png","sheet_x":6,"sheet_y":27,"short_name":"bread","short_names":["bread"],"text":null,"texts":null,"category":"Foods","sort_order":28,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FRENCH FRIES","unified":"1F35F","variations":[],"docomo":null,"au":"EAB1","softbank":"E33B","google":"FE967","image":"1f35f.png","sheet_x":6,"sheet_y":28,"short_name":"fries","short_names":["fries"],"text":null,"texts":null,"category":"Foods","sort_order":41,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ROASTED SWEET POTATO","unified":"1F360","variations":[],"docomo":null,"au":"EB3A","softbank":null,"google":"FE974","image":"1f360.png","sheet_x":6,"sheet_y":29,"short_name":"sweet_potato","short_names":["sweet_potato"],"text":null,"texts":null,"category":"Foods","sort_order":23,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DANGO","unified":"1F361","variations":[],"docomo":null,"au":"EAB2","softbank":"E33C","google":"FE968","image":"1f361.png","sheet_x":6,"sheet_y":30,"short_name":"dango","short_names":["dango"],"text":null,"texts":null,"category":"Foods","sort_order":58,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ODEN","unified":"1F362","variations":[],"docomo":null,"au":"EAB7","softbank":"E343","google":"FE96D","image":"1f362.png","sheet_x":6,"sheet_y":31,"short_name":"oden","short_names":["oden"],"text":null,"texts":null,"category":"Foods","sort_order":57,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SUSHI","unified":"1F363","variations":[],"docomo":null,"au":"EAB8","softbank":"E344","google":"FE96E","image":"1f363.png","sheet_x":6,"sheet_y":32,"short_name":"sushi","short_names":["sushi"],"text":null,"texts":null,"category":"Foods","sort_order":51,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FRIED SHRIMP","unified":"1F364","variations":[],"docomo":null,"au":"EB70","softbank":null,"google":"FE97F","image":"1f364.png","sheet_x":6,"sheet_y":33,"short_name":"fried_shrimp","short_names":["fried_shrimp"],"text":null,"texts":null,"category":"Foods","sort_order":35,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FISH CAKE WITH SWIRL DESIGN","unified":"1F365","variations":[],"docomo":"E643","au":"E4ED","softbank":null,"google":"FE973","image":"1f365.png","sheet_x":6,"sheet_y":34,"short_name":"fish_cake","short_names":["fish_cake"],"text":null,"texts":null,"category":"Foods","sort_order":50,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SOFT ICE CREAM","unified":"1F366","variations":[],"docomo":null,"au":"EAB0","softbank":"E33A","google":"FE966","image":"1f366.png","sheet_x":6,"sheet_y":35,"short_name":"icecream","short_names":["icecream"],"text":null,"texts":null,"category":"Foods","sort_order":61,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SHAVED ICE","unified":"1F367","variations":[],"docomo":null,"au":"EAEA","softbank":"E43F","google":"FE971","image":"1f367.png","sheet_x":6,"sheet_y":36,"short_name":"shaved_ice","short_names":["shaved_ice"],"text":null,"texts":null,"category":"Foods","sort_order":59,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ICE CREAM","unified":"1F368","variations":[],"docomo":null,"au":"EB4A","softbank":null,"google":"FE977","image":"1f368.png","sheet_x":6,"sheet_y":37,"short_name":"ice_cream","short_names":["ice_cream"],"text":null,"texts":null,"category":"Foods","sort_order":60,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOUGHNUT","unified":"1F369","variations":[],"docomo":null,"au":"EB4B","softbank":null,"google":"FE978","image":"1f369.png","sheet_x":6,"sheet_y":38,"short_name":"doughnut","short_names":["doughnut"],"text":null,"texts":null,"category":"Foods","sort_order":69,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COOKIE","unified":"1F36A","variations":[],"docomo":null,"au":"EB4C","softbank":null,"google":"FE979","image":"1f36a.png","sheet_x":6,"sheet_y":39,"short_name":"cookie","short_names":["cookie"],"text":null,"texts":null,"category":"Foods","sort_order":70,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHOCOLATE BAR","unified":"1F36B","variations":[],"docomo":null,"au":"EB4D","softbank":null,"google":"FE97A","image":"1f36b.png","sheet_x":6,"sheet_y":40,"short_name":"chocolate_bar","short_names":["chocolate_bar"],"text":null,"texts":null,"category":"Foods","sort_order":67,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CANDY","unified":"1F36C","variations":[],"docomo":null,"au":"EB4E","softbank":null,"google":"FE97B","image":"1f36c.png","sheet_x":6,"sheet_y":41,"short_name":"candy","short_names":["candy"],"text":null,"texts":null,"category":"Foods","sort_order":66,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LOLLIPOP","unified":"1F36D","variations":[],"docomo":null,"au":"EB4F","softbank":null,"google":"FE97C","image":"1f36d.png","sheet_x":6,"sheet_y":42,"short_name":"lollipop","short_names":["lollipop"],"text":null,"texts":null,"category":"Foods","sort_order":65,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CUSTARD","unified":"1F36E","variations":[],"docomo":null,"au":"EB56","softbank":null,"google":"FE97D","image":"1f36e.png","sheet_x":6,"sheet_y":43,"short_name":"custard","short_names":["custard"],"text":null,"texts":null,"category":"Foods","sort_order":64,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HONEY POT","unified":"1F36F","variations":[],"docomo":null,"au":"EB59","softbank":null,"google":"FE97E","image":"1f36f.png","sheet_x":6,"sheet_y":44,"short_name":"honey_pot","short_names":["honey_pot"],"text":null,"texts":null,"category":"Foods","sort_order":26,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SHORTCAKE","unified":"1F370","variations":[],"docomo":"E74A","au":"E4D0","softbank":"E046","google":"FE962","image":"1f370.png","sheet_x":6,"sheet_y":45,"short_name":"cake","short_names":["cake"],"text":null,"texts":null,"category":"Foods","sort_order":62,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BENTO BOX","unified":"1F371","variations":[],"docomo":null,"au":"EABD","softbank":"E34C","google":"FE96F","image":"1f371.png","sheet_x":6,"sheet_y":46,"short_name":"bento","short_names":["bento"],"text":null,"texts":null,"category":"Foods","sort_order":52,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POT OF FOOD","unified":"1F372","variations":[],"docomo":null,"au":"EABE","softbank":"E34D","google":"FE970","image":"1f372.png","sheet_x":6,"sheet_y":47,"short_name":"stew","short_names":["stew"],"text":null,"texts":null,"category":"Foods","sort_order":49,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COOKING","unified":"1F373","variations":[],"docomo":null,"au":"E4D1","softbank":"E147","google":"FE965","image":"1f373.png","sheet_x":6,"sheet_y":48,"short_name":"fried_egg","short_names":["fried_egg","cooking"],"text":null,"texts":null,"category":"Foods","sort_order":32,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FORK AND KNIFE","unified":"1F374","variations":[],"docomo":"E66F","au":"E4AC","softbank":"E043","google":"FE980","image":"1f374.png","sheet_x":7,"sheet_y":0,"short_name":"fork_and_knife","short_names":["fork_and_knife"],"text":null,"texts":null,"category":"Foods","sort_order":85,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TEACUP WITHOUT HANDLE","unified":"1F375","variations":[],"docomo":"E71E","au":"EAAE","softbank":"E338","google":"FE984","image":"1f375.png","sheet_x":7,"sheet_y":1,"short_name":"tea","short_names":["tea"],"text":null,"texts":null,"category":"Foods","sort_order":74,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SAKE BOTTLE AND CUP","unified":"1F376","variations":[],"docomo":"E74B","au":"EA97","softbank":"E30B","google":"FE985","image":"1f376.png","sheet_x":7,"sheet_y":2,"short_name":"sake","short_names":["sake"],"text":null,"texts":null,"category":"Foods","sort_order":75,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WINE GLASS","unified":"1F377","variations":[],"docomo":"E756","au":"E4C1","softbank":"E044","google":"FE986","image":"1f377.png","sheet_x":7,"sheet_y":3,"short_name":"wine_glass","short_names":["wine_glass"],"text":null,"texts":null,"category":"Foods","sort_order":79,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COCKTAIL GLASS","unified":"1F378","variations":[],"docomo":"E671","au":"E4C2","softbank":"E044","google":"FE982","image":"1f378.png","sheet_x":7,"sheet_y":4,"short_name":"cocktail","short_names":["cocktail"],"text":null,"texts":null,"category":"Foods","sort_order":81,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TROPICAL DRINK","unified":"1F379","variations":[],"docomo":"E671","au":"EB3E","softbank":"E044","google":"FE988","image":"1f379.png","sheet_x":7,"sheet_y":5,"short_name":"tropical_drink","short_names":["tropical_drink"],"text":null,"texts":null,"category":"Foods","sort_order":82,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BEER MUG","unified":"1F37A","variations":[],"docomo":"E672","au":"E4C3","softbank":"E047","google":"FE983","image":"1f37a.png","sheet_x":7,"sheet_y":6,"short_name":"beer","short_names":["beer"],"text":null,"texts":null,"category":"Foods","sort_order":76,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLINKING BEER MUGS","unified":"1F37B","variations":[],"docomo":"E672","au":"EA98","softbank":"E30C","google":"FE987","image":"1f37b.png","sheet_x":7,"sheet_y":7,"short_name":"beers","short_names":["beers"],"text":null,"texts":null,"category":"Foods","sort_order":77,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BABY BOTTLE","unified":"1F37C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f37c.png","sheet_x":7,"sheet_y":8,"short_name":"baby_bottle","short_names":["baby_bottle"],"text":null,"texts":null,"category":"Foods","sort_order":72,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FORK AND KNIFE WITH PLATE","unified":"1F37D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f37d.png","sheet_x":7,"sheet_y":9,"short_name":"knife_fork_plate","short_names":["knife_fork_plate"],"text":null,"texts":null,"category":"Foods","sort_order":86,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BOTTLE WITH POPPING CORK","unified":"1F37E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f37e.png","sheet_x":7,"sheet_y":10,"short_name":"champagne","short_names":["champagne"],"text":null,"texts":null,"category":"Foods","sort_order":83,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"POPCORN","unified":"1F37F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f37f.png","sheet_x":7,"sheet_y":11,"short_name":"popcorn","short_names":["popcorn"],"text":null,"texts":null,"category":"Foods","sort_order":68,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"RIBBON","unified":"1F380","variations":[],"docomo":"E684","au":"E59F","softbank":"E314","google":"FE50F","image":"1f380.png","sheet_x":7,"sheet_y":12,"short_name":"ribbon","short_names":["ribbon"],"text":null,"texts":null,"category":"Objects","sort_order":101,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WRAPPED PRESENT","unified":"1F381","variations":[],"docomo":"E685","au":"E4CF","softbank":"E112","google":"FE510","image":"1f381.png","sheet_x":7,"sheet_y":13,"short_name":"gift","short_names":["gift"],"text":null,"texts":null,"category":"Objects","sort_order":98,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BIRTHDAY CAKE","unified":"1F382","variations":[],"docomo":"E686","au":"E5A0","softbank":"E34B","google":"FE511","image":"1f382.png","sheet_x":7,"sheet_y":14,"short_name":"birthday","short_names":["birthday"],"text":null,"texts":null,"category":"Foods","sort_order":63,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"JACK-O-LANTERN","unified":"1F383","variations":[],"docomo":null,"au":"EAEE","softbank":"E445","google":"FE51F","image":"1f383.png","sheet_x":7,"sheet_y":15,"short_name":"jack_o_lantern","short_names":["jack_o_lantern"],"text":null,"texts":null,"category":"People","sort_order":87,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHRISTMAS TREE","unified":"1F384","variations":[],"docomo":"E6A4","au":"E4C9","softbank":"E033","google":"FE512","image":"1f384.png","sheet_x":7,"sheet_y":16,"short_name":"christmas_tree","short_names":["christmas_tree"],"text":null,"texts":null,"category":"Nature","sort_order":90,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FATHER CHRISTMAS","unified":"1F385","variations":[],"docomo":null,"au":"EAF0","softbank":"E448","google":"FE513","image":"1f385.png","sheet_x":7,"sheet_y":17,"short_name":"santa","short_names":["santa"],"text":null,"texts":null,"category":"People","sort_order":194,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F385-1F3FB","image":"1f385-1f3fb.png","sheet_x":7,"sheet_y":18,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F385-1F3FC","image":"1f385-1f3fc.png","sheet_x":7,"sheet_y":19,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F385-1F3FD","image":"1f385-1f3fd.png","sheet_x":7,"sheet_y":20,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F385-1F3FE","image":"1f385-1f3fe.png","sheet_x":7,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F385-1F3FF","image":"1f385-1f3ff.png","sheet_x":7,"sheet_y":22,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"FIREWORKS","unified":"1F386","variations":[],"docomo":null,"au":"E5CC","softbank":"E117","google":"FE515","image":"1f386.png","sheet_x":7,"sheet_y":23,"short_name":"fireworks","short_names":["fireworks"],"text":null,"texts":null,"category":"Places","sort_order":112,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FIREWORK SPARKLER","unified":"1F387","variations":[],"docomo":null,"au":"EAEB","softbank":"E440","google":"FE51D","image":"1f387.png","sheet_x":7,"sheet_y":24,"short_name":"sparkler","short_names":["sparkler"],"text":null,"texts":null,"category":"Places","sort_order":111,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BALLOON","unified":"1F388","variations":[],"docomo":null,"au":"EA9B","softbank":"E310","google":"FE516","image":"1f388.png","sheet_x":7,"sheet_y":25,"short_name":"balloon","short_names":["balloon"],"text":null,"texts":null,"category":"Objects","sort_order":99,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PARTY POPPER","unified":"1F389","variations":[],"docomo":null,"au":"EA9C","softbank":"E312","google":"FE517","image":"1f389.png","sheet_x":7,"sheet_y":26,"short_name":"tada","short_names":["tada"],"text":null,"texts":null,"category":"Objects","sort_order":103,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CONFETTI BALL","unified":"1F38A","variations":[],"docomo":null,"au":"E46F","softbank":null,"google":"FE520","image":"1f38a.png","sheet_x":7,"sheet_y":27,"short_name":"confetti_ball","short_names":["confetti_ball"],"text":null,"texts":null,"category":"Objects","sort_order":102,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TANABATA TREE","unified":"1F38B","variations":[],"docomo":null,"au":"EB3D","softbank":null,"google":"FE521","image":"1f38b.png","sheet_x":7,"sheet_y":28,"short_name":"tanabata_tree","short_names":["tanabata_tree"],"text":null,"texts":null,"category":"Nature","sort_order":99,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CROSSED FLAGS","unified":"1F38C","variations":[],"docomo":null,"au":"E5D9","softbank":"E143","google":"FE514","image":"1f38c.png","sheet_x":7,"sheet_y":29,"short_name":"crossed_flags","short_names":["crossed_flags"],"text":null,"texts":null,"category":"Flags","sort_order":118,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PINE DECORATION","unified":"1F38D","variations":[],"docomo":null,"au":"EAE3","softbank":"E436","google":"FE518","image":"1f38d.png","sheet_x":7,"sheet_y":30,"short_name":"bamboo","short_names":["bamboo"],"text":null,"texts":null,"category":"Nature","sort_order":98,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"JAPANESE DOLLS","unified":"1F38E","variations":[],"docomo":null,"au":"EAE4","softbank":"E438","google":"FE519","image":"1f38e.png","sheet_x":7,"sheet_y":31,"short_name":"dolls","short_names":["dolls"],"text":null,"texts":null,"category":"Objects","sort_order":104,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CARP STREAMER","unified":"1F38F","variations":[],"docomo":null,"au":"EAE7","softbank":"E43B","google":"FE51C","image":"1f38f.png","sheet_x":7,"sheet_y":32,"short_name":"flags","short_names":["flags"],"text":null,"texts":null,"category":"Objects","sort_order":100,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WIND CHIME","unified":"1F390","variations":[],"docomo":null,"au":"EAED","softbank":"E442","google":"FE51E","image":"1f390.png","sheet_x":7,"sheet_y":33,"short_name":"wind_chime","short_names":["wind_chime"],"text":null,"texts":null,"category":"Objects","sort_order":106,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOON VIEWING CEREMONY","unified":"1F391","variations":[],"docomo":null,"au":"EAEF","softbank":"E446","google":"FE017","image":"1f391.png","sheet_x":7,"sheet_y":34,"short_name":"rice_scene","short_names":["rice_scene"],"text":null,"texts":null,"category":"Places","sort_order":106,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SCHOOL SATCHEL","unified":"1F392","variations":[],"docomo":null,"au":"EAE6","softbank":"E43A","google":"FE51B","image":"1f392.png","sheet_x":7,"sheet_y":35,"short_name":"school_satchel","short_names":["school_satchel"],"text":null,"texts":null,"category":"People","sort_order":285,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GRADUATION CAP","unified":"1F393","variations":[],"docomo":null,"au":"EAE5","softbank":"E439","google":"FE51A","image":"1f393.png","sheet_x":7,"sheet_y":36,"short_name":"mortar_board","short_names":["mortar_board"],"text":null,"texts":null,"category":"People","sort_order":282,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MILITARY MEDAL","unified":"1F396","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f396.png","sheet_x":7,"sheet_y":37,"short_name":"medal","short_names":["medal"],"text":null,"texts":null,"category":"Activity","sort_order":56,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"REMINDER RIBBON","unified":"1F397","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f397.png","sheet_x":7,"sheet_y":38,"short_name":"reminder_ribbon","short_names":["reminder_ribbon"],"text":null,"texts":null,"category":"Activity","sort_order":62,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"STUDIO MICROPHONE","unified":"1F399","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f399.png","sheet_x":7,"sheet_y":39,"short_name":"studio_microphone","short_names":["studio_microphone"],"text":null,"texts":null,"category":"Objects","sort_order":29,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LEVEL SLIDER","unified":"1F39A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f39a.png","sheet_x":7,"sheet_y":40,"short_name":"level_slider","short_names":["level_slider"],"text":null,"texts":null,"category":"Objects","sort_order":30,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CONTROL KNOBS","unified":"1F39B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f39b.png","sheet_x":7,"sheet_y":41,"short_name":"control_knobs","short_names":["control_knobs"],"text":null,"texts":null,"category":"Objects","sort_order":31,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FILM FRAMES","unified":"1F39E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f39e.png","sheet_x":7,"sheet_y":42,"short_name":"film_frames","short_names":["film_frames"],"text":null,"texts":null,"category":"Objects","sort_order":22,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ADMISSION TICKETS","unified":"1F39F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f39f.png","sheet_x":7,"sheet_y":43,"short_name":"admission_tickets","short_names":["admission_tickets"],"text":null,"texts":null,"category":"Activity","sort_order":64,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CAROUSEL HORSE","unified":"1F3A0","variations":[],"docomo":"E679","au":null,"softbank":null,"google":"FE7FC","image":"1f3a0.png","sheet_x":7,"sheet_y":44,"short_name":"carousel_horse","short_names":["carousel_horse"],"text":null,"texts":null,"category":"Places","sort_order":69,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FERRIS WHEEL","unified":"1F3A1","variations":[],"docomo":null,"au":"E46D","softbank":"E124","google":"FE7FD","image":"1f3a1.png","sheet_x":7,"sheet_y":45,"short_name":"ferris_wheel","short_names":["ferris_wheel"],"text":null,"texts":null,"category":"Places","sort_order":67,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ROLLER COASTER","unified":"1F3A2","variations":[],"docomo":null,"au":"EAE2","softbank":"E433","google":"FE7FE","image":"1f3a2.png","sheet_x":7,"sheet_y":46,"short_name":"roller_coaster","short_names":["roller_coaster"],"text":null,"texts":null,"category":"Places","sort_order":68,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FISHING POLE AND FISH","unified":"1F3A3","variations":[],"docomo":"E751","au":"EB42","softbank":"E019","google":"FE7FF","image":"1f3a3.png","sheet_x":7,"sheet_y":47,"short_name":"fishing_pole_and_fish","short_names":["fishing_pole_and_fish"],"text":null,"texts":null,"category":"Activity","sort_order":17,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MICROPHONE","unified":"1F3A4","variations":[],"docomo":"E676","au":"E503","softbank":"E03C","google":"FE800","image":"1f3a4.png","sheet_x":7,"sheet_y":48,"short_name":"microphone","short_names":["microphone"],"text":null,"texts":null,"category":"Activity","sort_order":72,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOVIE CAMERA","unified":"1F3A5","variations":[],"docomo":"E677","au":"E517","softbank":"E03D","google":"FE801","image":"1f3a5.png","sheet_x":8,"sheet_y":0,"short_name":"movie_camera","short_names":["movie_camera"],"text":null,"texts":null,"category":"Objects","sort_order":20,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CINEMA","unified":"1F3A6","variations":[],"docomo":"E677","au":"E517","softbank":"E507","google":"FE802","image":"1f3a6.png","sheet_x":8,"sheet_y":1,"short_name":"cinema","short_names":["cinema"],"text":null,"texts":null,"category":"Symbols","sort_order":126,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEADPHONE","unified":"1F3A7","variations":[],"docomo":"E67A","au":"E508","softbank":"E30A","google":"FE803","image":"1f3a7.png","sheet_x":8,"sheet_y":2,"short_name":"headphones","short_names":["headphones"],"text":null,"texts":null,"category":"Activity","sort_order":73,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ARTIST PALETTE","unified":"1F3A8","variations":[],"docomo":"E67B","au":"E59C","softbank":"E502","google":"FE804","image":"1f3a8.png","sheet_x":8,"sheet_y":3,"short_name":"art","short_names":["art"],"text":null,"texts":null,"category":"Activity","sort_order":70,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TOP HAT","unified":"1F3A9","variations":[],"docomo":"E67C","au":"EAF5","softbank":"E503","google":"FE805","image":"1f3a9.png","sheet_x":8,"sheet_y":4,"short_name":"tophat","short_names":["tophat"],"text":null,"texts":null,"category":"People","sort_order":281,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CIRCUS TENT","unified":"1F3AA","variations":[],"docomo":"E67D","au":"E59E","softbank":null,"google":"FE806","image":"1f3aa.png","sheet_x":8,"sheet_y":5,"short_name":"circus_tent","short_names":["circus_tent"],"text":null,"texts":null,"category":"Activity","sort_order":65,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TICKET","unified":"1F3AB","variations":[],"docomo":"E67E","au":"E49E","softbank":"E125","google":"FE807","image":"1f3ab.png","sheet_x":8,"sheet_y":6,"short_name":"ticket","short_names":["ticket"],"text":null,"texts":null,"category":"Activity","sort_order":63,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLAPPER BOARD","unified":"1F3AC","variations":[],"docomo":"E6AC","au":"E4BE","softbank":"E324","google":"FE808","image":"1f3ac.png","sheet_x":8,"sheet_y":7,"short_name":"clapper","short_names":["clapper"],"text":null,"texts":null,"category":"Activity","sort_order":71,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PERFORMING ARTS","unified":"1F3AD","variations":[],"docomo":null,"au":"E59D","softbank":"E503","google":"FE809","image":"1f3ad.png","sheet_x":8,"sheet_y":8,"short_name":"performing_arts","short_names":["performing_arts"],"text":null,"texts":null,"category":"Activity","sort_order":69,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"VIDEO GAME","unified":"1F3AE","variations":[],"docomo":"E68B","au":"E4C6","softbank":null,"google":"FE80A","image":"1f3ae.png","sheet_x":8,"sheet_y":9,"short_name":"video_game","short_names":["video_game"],"text":null,"texts":null,"category":"Activity","sort_order":84,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DIRECT HIT","unified":"1F3AF","variations":[],"docomo":null,"au":"E4C5","softbank":"E130","google":"FE80C","image":"1f3af.png","sheet_x":8,"sheet_y":10,"short_name":"dart","short_names":["dart"],"text":null,"texts":null,"category":"Activity","sort_order":82,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SLOT MACHINE","unified":"1F3B0","variations":[],"docomo":null,"au":"E46E","softbank":"E133","google":"FE80D","image":"1f3b0.png","sheet_x":8,"sheet_y":11,"short_name":"slot_machine","short_names":["slot_machine"],"text":null,"texts":null,"category":"Activity","sort_order":85,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BILLIARDS","unified":"1F3B1","variations":[],"docomo":null,"au":"EADD","softbank":"E42C","google":"FE80E","image":"1f3b1.png","sheet_x":8,"sheet_y":12,"short_name":"8ball","short_names":["8ball"],"text":null,"texts":null,"category":"Activity","sort_order":8,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GAME DIE","unified":"1F3B2","variations":[],"docomo":null,"au":"E4C8","softbank":null,"google":"FE80F","image":"1f3b2.png","sheet_x":8,"sheet_y":13,"short_name":"game_die","short_names":["game_die"],"text":null,"texts":null,"category":"Activity","sort_order":81,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BOWLING","unified":"1F3B3","variations":[],"docomo":null,"au":"EB43","softbank":null,"google":"FE810","image":"1f3b3.png","sheet_x":8,"sheet_y":14,"short_name":"bowling","short_names":["bowling"],"text":null,"texts":null,"category":"Activity","sort_order":83,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FLOWER PLAYING CARDS","unified":"1F3B4","variations":[],"docomo":null,"au":"EB6E","softbank":null,"google":"FE811","image":"1f3b4.png","sheet_x":8,"sheet_y":15,"short_name":"flower_playing_cards","short_names":["flower_playing_cards"],"text":null,"texts":null,"category":"Symbols","sort_order":248,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MUSICAL NOTE","unified":"1F3B5","variations":[],"docomo":"E6F6","au":"E5BE","softbank":"E03E","google":"FE813","image":"1f3b5.png","sheet_x":8,"sheet_y":16,"short_name":"musical_note","short_names":["musical_note"],"text":null,"texts":null,"category":"Symbols","sort_order":188,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MULTIPLE MUSICAL NOTES","unified":"1F3B6","variations":[],"docomo":"E6FF","au":"E505","softbank":"E326","google":"FE814","image":"1f3b6.png","sheet_x":8,"sheet_y":17,"short_name":"notes","short_names":["notes"],"text":null,"texts":null,"category":"Symbols","sort_order":189,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SAXOPHONE","unified":"1F3B7","variations":[],"docomo":null,"au":null,"softbank":"E040","google":"FE815","image":"1f3b7.png","sheet_x":8,"sheet_y":18,"short_name":"saxophone","short_names":["saxophone"],"text":null,"texts":null,"category":"Activity","sort_order":77,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GUITAR","unified":"1F3B8","variations":[],"docomo":null,"au":"E506","softbank":"E041","google":"FE816","image":"1f3b8.png","sheet_x":8,"sheet_y":19,"short_name":"guitar","short_names":["guitar"],"text":null,"texts":null,"category":"Activity","sort_order":79,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MUSICAL KEYBOARD","unified":"1F3B9","variations":[],"docomo":null,"au":"EB40","softbank":null,"google":"FE817","image":"1f3b9.png","sheet_x":8,"sheet_y":20,"short_name":"musical_keyboard","short_names":["musical_keyboard"],"text":null,"texts":null,"category":"Activity","sort_order":75,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRUMPET","unified":"1F3BA","variations":[],"docomo":null,"au":"EADC","softbank":"E042","google":"FE818","image":"1f3ba.png","sheet_x":8,"sheet_y":21,"short_name":"trumpet","short_names":["trumpet"],"text":null,"texts":null,"category":"Activity","sort_order":78,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"VIOLIN","unified":"1F3BB","variations":[],"docomo":null,"au":"E507","softbank":null,"google":"FE819","image":"1f3bb.png","sheet_x":8,"sheet_y":22,"short_name":"violin","short_names":["violin"],"text":null,"texts":null,"category":"Activity","sort_order":80,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MUSICAL SCORE","unified":"1F3BC","variations":[],"docomo":"E6FF","au":"EACC","softbank":"E326","google":"FE81A","image":"1f3bc.png","sheet_x":8,"sheet_y":23,"short_name":"musical_score","short_names":["musical_score"],"text":null,"texts":null,"category":"Activity","sort_order":74,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RUNNING SHIRT WITH SASH","unified":"1F3BD","variations":[],"docomo":"E652","au":null,"softbank":null,"google":"FE7D0","image":"1f3bd.png","sheet_x":8,"sheet_y":24,"short_name":"running_shirt_with_sash","short_names":["running_shirt_with_sash"],"text":null,"texts":null,"category":"Activity","sort_order":54,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TENNIS RACQUET AND BALL","unified":"1F3BE","variations":[],"docomo":"E655","au":"E4B7","softbank":"E015","google":"FE7D3","image":"1f3be.png","sheet_x":8,"sheet_y":25,"short_name":"tennis","short_names":["tennis"],"text":null,"texts":null,"category":"Activity","sort_order":5,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SKI AND SKI BOOT","unified":"1F3BF","variations":[],"docomo":"E657","au":"EAAC","softbank":"E013","google":"FE7D5","image":"1f3bf.png","sheet_x":8,"sheet_y":26,"short_name":"ski","short_names":["ski"],"text":null,"texts":null,"category":"Activity","sort_order":21,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BASKETBALL AND HOOP","unified":"1F3C0","variations":[],"docomo":"E658","au":"E59A","softbank":"E42A","google":"FE7D6","image":"1f3c0.png","sheet_x":8,"sheet_y":27,"short_name":"basketball","short_names":["basketball"],"text":null,"texts":null,"category":"Activity","sort_order":2,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHEQUERED FLAG","unified":"1F3C1","variations":[],"docomo":"E659","au":"E4B9","softbank":"E132","google":"FE7D7","image":"1f3c1.png","sheet_x":8,"sheet_y":28,"short_name":"checkered_flag","short_names":["checkered_flag"],"text":null,"texts":null,"category":"Flags","sort_order":3,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SNOWBOARDER","unified":"1F3C2","variations":[],"docomo":"E712","au":"E4B8","softbank":null,"google":"FE7D8","image":"1f3c2.png","sheet_x":8,"sheet_y":29,"short_name":"snowboarder","short_names":["snowboarder"],"text":null,"texts":null,"category":"Activity","sort_order":23,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F3C2-1F3FB","image":"1f3c2-1f3fb.png","sheet_x":8,"sheet_y":30,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F3C2-1F3FC","image":"1f3c2-1f3fc.png","sheet_x":8,"sheet_y":31,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F3C2-1F3FD","image":"1f3c2-1f3fd.png","sheet_x":8,"sheet_y":32,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F3C2-1F3FE","image":"1f3c2-1f3fe.png","sheet_x":8,"sheet_y":33,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F3C2-1F3FF","image":"1f3c2-1f3ff.png","sheet_x":8,"sheet_y":34,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"RUNNER","unified":"1F3C3","variations":[],"docomo":"E733","au":"E46B","softbank":"E115","google":"FE7D9","image":"1f3c3.png","sheet_x":8,"sheet_y":35,"short_name":"runner","short_names":["runner","running"],"text":null,"texts":null,"category":"People","sort_order":233,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F3C3-1F3FB","image":"1f3c3-1f3fb.png","sheet_x":8,"sheet_y":36,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F3C3-1F3FC","image":"1f3c3-1f3fc.png","sheet_x":8,"sheet_y":37,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F3C3-1F3FD","image":"1f3c3-1f3fd.png","sheet_x":8,"sheet_y":38,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F3C3-1F3FE","image":"1f3c3-1f3fe.png","sheet_x":8,"sheet_y":39,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F3C3-1F3FF","image":"1f3c3-1f3ff.png","sheet_x":8,"sheet_y":40,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F3C3-200D-2642-FE0F"},{"name":"SURFER","unified":"1F3C4","variations":[],"docomo":"E712","au":"EB41","softbank":"E017","google":"FE7DA","image":"1f3c4.png","sheet_x":8,"sheet_y":41,"short_name":"surfer","short_names":["surfer"],"text":null,"texts":null,"category":"Activity","sort_order":41,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F3C4-1F3FB","image":"1f3c4-1f3fb.png","sheet_x":8,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F3C4-1F3FC","image":"1f3c4-1f3fc.png","sheet_x":8,"sheet_y":43,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F3C4-1F3FD","image":"1f3c4-1f3fd.png","sheet_x":8,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F3C4-1F3FE","image":"1f3c4-1f3fe.png","sheet_x":8,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F3C4-1F3FF","image":"1f3c4-1f3ff.png","sheet_x":8,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F3C4-200D-2642-FE0F"},{"name":"SPORTS MEDAL","unified":"1F3C5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3c5.png","sheet_x":8,"sheet_y":47,"short_name":"sports_medal","short_names":["sports_medal"],"text":null,"texts":null,"category":"Activity","sort_order":55,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TROPHY","unified":"1F3C6","variations":[],"docomo":null,"au":"E5D3","softbank":"E131","google":"FE7DB","image":"1f3c6.png","sheet_x":8,"sheet_y":48,"short_name":"trophy","short_names":["trophy"],"text":null,"texts":null,"category":"Activity","sort_order":60,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HORSE RACING","unified":"1F3C7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3c7.png","sheet_x":9,"sheet_y":0,"short_name":"horse_racing","short_names":["horse_racing"],"text":null,"texts":null,"category":"Activity","sort_order":49,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F3C7-1F3FB","image":"1f3c7-1f3fb.png","sheet_x":9,"sheet_y":1,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F3C7-1F3FC","image":"1f3c7-1f3fc.png","sheet_x":9,"sheet_y":2,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F3C7-1F3FD","image":"1f3c7-1f3fd.png","sheet_x":9,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F3C7-1F3FE","image":"1f3c7-1f3fe.png","sheet_x":9,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F3C7-1F3FF","image":"1f3c7-1f3ff.png","sheet_x":9,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"AMERICAN FOOTBALL","unified":"1F3C8","variations":[],"docomo":null,"au":"E4BB","softbank":"E42B","google":"FE7DD","image":"1f3c8.png","sheet_x":9,"sheet_y":6,"short_name":"football","short_names":["football"],"text":null,"texts":null,"category":"Activity","sort_order":3,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RUGBY FOOTBALL","unified":"1F3C9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3c9.png","sheet_x":9,"sheet_y":7,"short_name":"rugby_football","short_names":["rugby_football"],"text":null,"texts":null,"category":"Activity","sort_order":7,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SWIMMER","unified":"1F3CA","variations":[],"docomo":null,"au":"EADE","softbank":"E42D","google":"FE7DE","image":"1f3ca.png","sheet_x":9,"sheet_y":8,"short_name":"swimmer","short_names":["swimmer"],"text":null,"texts":null,"category":"Activity","sort_order":43,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F3CA-1F3FB","image":"1f3ca-1f3fb.png","sheet_x":9,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F3CA-1F3FC","image":"1f3ca-1f3fc.png","sheet_x":9,"sheet_y":10,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F3CA-1F3FD","image":"1f3ca-1f3fd.png","sheet_x":9,"sheet_y":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F3CA-1F3FE","image":"1f3ca-1f3fe.png","sheet_x":9,"sheet_y":12,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F3CA-1F3FF","image":"1f3ca-1f3ff.png","sheet_x":9,"sheet_y":13,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F3CA-200D-2642-FE0F"},{"name":"WEIGHT LIFTER","unified":"1F3CB","variations":["1F3CB-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3cb.png","sheet_x":9,"sheet_y":14,"short_name":"weight_lifter","short_names":["weight_lifter"],"text":null,"texts":null,"category":"Activity","sort_order":25,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3CB-1F3FB","image":"1f3cb-1f3fb.png","sheet_x":9,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F3CB-1F3FC","image":"1f3cb-1f3fc.png","sheet_x":9,"sheet_y":16,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F3CB-1F3FD","image":"1f3cb-1f3fd.png","sheet_x":9,"sheet_y":17,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F3CB-1F3FE","image":"1f3cb-1f3fe.png","sheet_x":9,"sheet_y":18,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F3CB-1F3FF","image":"1f3cb-1f3ff.png","sheet_x":9,"sheet_y":19,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}},"obsoleted_by":"1F3CB-FE0F-200D-2642-FE0F"},{"name":"GOLFER","unified":"1F3CC","variations":["1F3CC-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3cc.png","sheet_x":9,"sheet_y":20,"short_name":"golfer","short_names":["golfer"],"text":null,"texts":null,"category":"Activity","sort_order":39,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3CC-1F3FB","image":"1f3cc-1f3fb.png","sheet_x":9,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F3CC-1F3FC","image":"1f3cc-1f3fc.png","sheet_x":9,"sheet_y":22,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F3CC-1F3FD","image":"1f3cc-1f3fd.png","sheet_x":9,"sheet_y":23,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F3CC-1F3FE","image":"1f3cc-1f3fe.png","sheet_x":9,"sheet_y":24,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F3CC-1F3FF","image":"1f3cc-1f3ff.png","sheet_x":9,"sheet_y":25,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}},"obsoleted_by":"1F3CC-FE0F-200D-2642-FE0F"},{"name":"RACING MOTORCYCLE","unified":"1F3CD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3cd.png","sheet_x":9,"sheet_y":26,"short_name":"racing_motorcycle","short_names":["racing_motorcycle"],"text":null,"texts":null,"category":"Places","sort_order":17,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"RACING CAR","unified":"1F3CE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3ce.png","sheet_x":9,"sheet_y":27,"short_name":"racing_car","short_names":["racing_car"],"text":null,"texts":null,"category":"Places","sort_order":6,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CRICKET BAT AND BALL","unified":"1F3CF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3cf.png","sheet_x":9,"sheet_y":28,"short_name":"cricket_bat_and_ball","short_names":["cricket_bat_and_ball"],"text":null,"texts":null,"category":"Activity","sort_order":14,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"VOLLEYBALL","unified":"1F3D0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d0.png","sheet_x":9,"sheet_y":29,"short_name":"volleyball","short_names":["volleyball"],"text":null,"texts":null,"category":"Activity","sort_order":6,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FIELD HOCKEY STICK AND BALL","unified":"1F3D1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d1.png","sheet_x":9,"sheet_y":30,"short_name":"field_hockey_stick_and_ball","short_names":["field_hockey_stick_and_ball"],"text":null,"texts":null,"category":"Activity","sort_order":13,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ICE HOCKEY STICK AND PUCK","unified":"1F3D2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d2.png","sheet_x":9,"sheet_y":31,"short_name":"ice_hockey_stick_and_puck","short_names":["ice_hockey_stick_and_puck"],"text":null,"texts":null,"category":"Activity","sort_order":12,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TABLE TENNIS PADDLE AND BALL","unified":"1F3D3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d3.png","sheet_x":9,"sheet_y":32,"short_name":"table_tennis_paddle_and_ball","short_names":["table_tennis_paddle_and_ball"],"text":null,"texts":null,"category":"Activity","sort_order":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SNOW CAPPED MOUNTAIN","unified":"1F3D4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d4.png","sheet_x":9,"sheet_y":33,"short_name":"snow_capped_mountain","short_names":["snow_capped_mountain"],"text":null,"texts":null,"category":"Places","sort_order":74,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CAMPING","unified":"1F3D5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d5.png","sheet_x":9,"sheet_y":34,"short_name":"camping","short_names":["camping"],"text":null,"texts":null,"category":"Places","sort_order":78,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BEACH WITH UMBRELLA","unified":"1F3D6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d6.png","sheet_x":9,"sheet_y":35,"short_name":"beach_with_umbrella","short_names":["beach_with_umbrella"],"text":null,"texts":null,"category":"Places","sort_order":71,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BUILDING CONSTRUCTION","unified":"1F3D7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d7.png","sheet_x":9,"sheet_y":36,"short_name":"building_construction","short_names":["building_construction"],"text":null,"texts":null,"category":"Places","sort_order":82,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HOUSE BUILDINGS","unified":"1F3D8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d8.png","sheet_x":9,"sheet_y":37,"short_name":"house_buildings","short_names":["house_buildings"],"text":null,"texts":null,"category":"Places","sort_order":86,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CITYSCAPE","unified":"1F3D9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3d9.png","sheet_x":9,"sheet_y":38,"short_name":"cityscape","short_names":["cityscape"],"text":null,"texts":null,"category":"Places","sort_order":115,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DERELICT HOUSE BUILDING","unified":"1F3DA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3da.png","sheet_x":9,"sheet_y":39,"short_name":"derelict_house_building","short_names":["derelict_house_building"],"text":null,"texts":null,"category":"Places","sort_order":87,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CLASSICAL BUILDING","unified":"1F3DB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3db.png","sheet_x":9,"sheet_y":40,"short_name":"classical_building","short_names":["classical_building"],"text":null,"texts":null,"category":"Places","sort_order":99,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DESERT","unified":"1F3DC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3dc.png","sheet_x":9,"sheet_y":41,"short_name":"desert","short_names":["desert"],"text":null,"texts":null,"category":"Places","sort_order":77,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DESERT ISLAND","unified":"1F3DD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3dd.png","sheet_x":9,"sheet_y":42,"short_name":"desert_island","short_names":["desert_island"],"text":null,"texts":null,"category":"Places","sort_order":72,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"NATIONAL PARK","unified":"1F3DE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3de.png","sheet_x":9,"sheet_y":43,"short_name":"national_park","short_names":["national_park"],"text":null,"texts":null,"category":"Places","sort_order":107,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"STADIUM","unified":"1F3DF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3df.png","sheet_x":9,"sheet_y":44,"short_name":"stadium","short_names":["stadium"],"text":null,"texts":null,"category":"Places","sort_order":66,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HOUSE BUILDING","unified":"1F3E0","variations":[],"docomo":"E663","au":"E4AB","softbank":"E036","google":"FE4B0","image":"1f3e0.png","sheet_x":9,"sheet_y":45,"short_name":"house","short_names":["house"],"text":null,"texts":null,"category":"Places","sort_order":84,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HOUSE WITH GARDEN","unified":"1F3E1","variations":[],"docomo":"E663","au":"EB09","softbank":"E036","google":"FE4B1","image":"1f3e1.png","sheet_x":9,"sheet_y":46,"short_name":"house_with_garden","short_names":["house_with_garden"],"text":null,"texts":null,"category":"Places","sort_order":85,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OFFICE BUILDING","unified":"1F3E2","variations":[],"docomo":"E664","au":"E4AD","softbank":"E038","google":"FE4B2","image":"1f3e2.png","sheet_x":9,"sheet_y":47,"short_name":"office","short_names":["office"],"text":null,"texts":null,"category":"Places","sort_order":88,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"JAPANESE POST OFFICE","unified":"1F3E3","variations":[],"docomo":"E665","au":"E5DE","softbank":"E153","google":"FE4B3","image":"1f3e3.png","sheet_x":9,"sheet_y":48,"short_name":"post_office","short_names":["post_office"],"text":null,"texts":null,"category":"Places","sort_order":90,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EUROPEAN POST OFFICE","unified":"1F3E4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3e4.png","sheet_x":10,"sheet_y":0,"short_name":"european_post_office","short_names":["european_post_office"],"text":null,"texts":null,"category":"Places","sort_order":91,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HOSPITAL","unified":"1F3E5","variations":[],"docomo":"E666","au":"E5DF","softbank":"E155","google":"FE4B4","image":"1f3e5.png","sheet_x":10,"sheet_y":1,"short_name":"hospital","short_names":["hospital"],"text":null,"texts":null,"category":"Places","sort_order":92,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BANK","unified":"1F3E6","variations":[],"docomo":"E667","au":"E4AA","softbank":"E14D","google":"FE4B5","image":"1f3e6.png","sheet_x":10,"sheet_y":2,"short_name":"bank","short_names":["bank"],"text":null,"texts":null,"category":"Places","sort_order":93,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"AUTOMATED TELLER MACHINE","unified":"1F3E7","variations":[],"docomo":"E668","au":"E4A3","softbank":"E154","google":"FE4B6","image":"1f3e7.png","sheet_x":10,"sheet_y":3,"short_name":"atm","short_names":["atm"],"text":null,"texts":null,"category":"Symbols","sort_order":111,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HOTEL","unified":"1F3E8","variations":[],"docomo":"E669","au":"EA81","softbank":"E158","google":"FE4B7","image":"1f3e8.png","sheet_x":10,"sheet_y":4,"short_name":"hotel","short_names":["hotel"],"text":null,"texts":null,"category":"Places","sort_order":94,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LOVE HOTEL","unified":"1F3E9","variations":[],"docomo":"E669-E6EF","au":"EAF3","softbank":"E501","google":"FE4B8","image":"1f3e9.png","sheet_x":10,"sheet_y":5,"short_name":"love_hotel","short_names":["love_hotel"],"text":null,"texts":null,"category":"Places","sort_order":97,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CONVENIENCE STORE","unified":"1F3EA","variations":[],"docomo":"E66A","au":"E4A4","softbank":"E156","google":"FE4B9","image":"1f3ea.png","sheet_x":10,"sheet_y":6,"short_name":"convenience_store","short_names":["convenience_store"],"text":null,"texts":null,"category":"Places","sort_order":95,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SCHOOL","unified":"1F3EB","variations":[],"docomo":"E73E","au":"EA80","softbank":"E157","google":"FE4BA","image":"1f3eb.png","sheet_x":10,"sheet_y":7,"short_name":"school","short_names":["school"],"text":null,"texts":null,"category":"Places","sort_order":96,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DEPARTMENT STORE","unified":"1F3EC","variations":[],"docomo":null,"au":"EAF6","softbank":"E504","google":"FE4BD","image":"1f3ec.png","sheet_x":10,"sheet_y":8,"short_name":"department_store","short_names":["department_store"],"text":null,"texts":null,"category":"Places","sort_order":89,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACTORY","unified":"1F3ED","variations":[],"docomo":null,"au":"EAF9","softbank":"E508","google":"FE4C0","image":"1f3ed.png","sheet_x":10,"sheet_y":9,"short_name":"factory","short_names":["factory"],"text":null,"texts":null,"category":"Places","sort_order":83,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"IZAKAYA LANTERN","unified":"1F3EE","variations":[],"docomo":"E74B","au":"E4BD","softbank":"E30B","google":"FE4C2","image":"1f3ee.png","sheet_x":10,"sheet_y":10,"short_name":"izakaya_lantern","short_names":["izakaya_lantern","lantern"],"text":null,"texts":null,"category":"Objects","sort_order":105,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"JAPANESE CASTLE","unified":"1F3EF","variations":[],"docomo":null,"au":"EAF7","softbank":"E505","google":"FE4BE","image":"1f3ef.png","sheet_x":10,"sheet_y":11,"short_name":"japanese_castle","short_names":["japanese_castle"],"text":null,"texts":null,"category":"Places","sort_order":65,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EUROPEAN CASTLE","unified":"1F3F0","variations":[],"docomo":null,"au":"EAF8","softbank":"E506","google":"FE4BF","image":"1f3f0.png","sheet_x":10,"sheet_y":12,"short_name":"european_castle","short_names":["european_castle"],"text":null,"texts":null,"category":"Places","sort_order":64,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WAVING WHITE FLAG","unified":"1F3F3","variations":["1F3F3-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3f3.png","sheet_x":10,"sheet_y":13,"short_name":"waving_white_flag","short_names":["waving_white_flag"],"text":null,"texts":null,"category":"Flags","sort_order":1,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WAVING BLACK FLAG","unified":"1F3F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3f4.png","sheet_x":10,"sheet_y":14,"short_name":"waving_black_flag","short_names":["waving_black_flag"],"text":null,"texts":null,"category":"Flags","sort_order":2,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ROSETTE","unified":"1F3F5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3f5.png","sheet_x":10,"sheet_y":15,"short_name":"rosette","short_names":["rosette"],"text":null,"texts":null,"category":"Activity","sort_order":61,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LABEL","unified":"1F3F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3f7.png","sheet_x":10,"sheet_y":16,"short_name":"label","short_names":["label"],"text":null,"texts":null,"category":"Objects","sort_order":115,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BADMINTON RACQUET AND SHUTTLECOCK","unified":"1F3F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3f8.png","sheet_x":10,"sheet_y":17,"short_name":"badminton_racquet_and_shuttlecock","short_names":["badminton_racquet_and_shuttlecock"],"text":null,"texts":null,"category":"Activity","sort_order":10,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BOW AND ARROW","unified":"1F3F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3f9.png","sheet_x":10,"sheet_y":18,"short_name":"bow_and_arrow","short_names":["bow_and_arrow"],"text":null,"texts":null,"category":"Activity","sort_order":16,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"AMPHORA","unified":"1F3FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3fa.png","sheet_x":10,"sheet_y":19,"short_name":"amphora","short_names":["amphora"],"text":null,"texts":null,"category":"Objects","sort_order":72,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EMOJI MODIFIER FITZPATRICK TYPE-1-2","unified":"1F3FB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3fb.png","sheet_x":10,"sheet_y":20,"short_name":"skin-tone-2","short_names":["skin-tone-2"],"text":null,"texts":null,"category":"Skin Tones","sort_order":1,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EMOJI MODIFIER FITZPATRICK TYPE-3","unified":"1F3FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3fc.png","sheet_x":10,"sheet_y":21,"short_name":"skin-tone-3","short_names":["skin-tone-3"],"text":null,"texts":null,"category":"Skin Tones","sort_order":2,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EMOJI MODIFIER FITZPATRICK TYPE-4","unified":"1F3FD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3fd.png","sheet_x":10,"sheet_y":22,"short_name":"skin-tone-4","short_names":["skin-tone-4"],"text":null,"texts":null,"category":"Skin Tones","sort_order":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EMOJI MODIFIER FITZPATRICK TYPE-5","unified":"1F3FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3fe.png","sheet_x":10,"sheet_y":23,"short_name":"skin-tone-5","short_names":["skin-tone-5"],"text":null,"texts":null,"category":"Skin Tones","sort_order":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EMOJI MODIFIER FITZPATRICK TYPE-6","unified":"1F3FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3ff.png","sheet_x":10,"sheet_y":24,"short_name":"skin-tone-6","short_names":["skin-tone-6"],"text":null,"texts":null,"category":"Skin Tones","sort_order":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"RAT","unified":"1F400","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f400.png","sheet_x":10,"sheet_y":25,"short_name":"rat","short_names":["rat"],"text":null,"texts":null,"category":"Nature","sort_order":84,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOUSE","unified":"1F401","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f401.png","sheet_x":10,"sheet_y":26,"short_name":"mouse2","short_names":["mouse2"],"text":null,"texts":null,"category":"Nature","sort_order":83,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OX","unified":"1F402","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f402.png","sheet_x":10,"sheet_y":27,"short_name":"ox","short_names":["ox"],"text":null,"texts":null,"category":"Nature","sort_order":63,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WATER BUFFALO","unified":"1F403","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f403.png","sheet_x":10,"sheet_y":28,"short_name":"water_buffalo","short_names":["water_buffalo"],"text":null,"texts":null,"category":"Nature","sort_order":62,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COW","unified":"1F404","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f404.png","sheet_x":10,"sheet_y":29,"short_name":"cow2","short_names":["cow2"],"text":null,"texts":null,"category":"Nature","sort_order":64,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TIGER","unified":"1F405","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f405.png","sheet_x":10,"sheet_y":30,"short_name":"tiger2","short_names":["tiger2"],"text":null,"texts":null,"category":"Nature","sort_order":61,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEOPARD","unified":"1F406","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f406.png","sheet_x":10,"sheet_y":31,"short_name":"leopard","short_names":["leopard"],"text":null,"texts":null,"category":"Nature","sort_order":60,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RABBIT","unified":"1F407","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f407.png","sheet_x":10,"sheet_y":32,"short_name":"rabbit2","short_names":["rabbit2"],"text":null,"texts":null,"category":"Nature","sort_order":82,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CAT","unified":"1F408","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f408.png","sheet_x":10,"sheet_y":33,"short_name":"cat2","short_names":["cat2"],"text":null,"texts":null,"category":"Nature","sort_order":78,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DRAGON","unified":"1F409","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f409.png","sheet_x":10,"sheet_y":34,"short_name":"dragon","short_names":["dragon"],"text":null,"texts":null,"category":"Nature","sort_order":87,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CROCODILE","unified":"1F40A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f40a.png","sheet_x":10,"sheet_y":35,"short_name":"crocodile","short_names":["crocodile"],"text":null,"texts":null,"category":"Nature","sort_order":59,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHALE","unified":"1F40B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f40b.png","sheet_x":10,"sheet_y":36,"short_name":"whale2","short_names":["whale2"],"text":null,"texts":null,"category":"Nature","sort_order":58,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SNAIL","unified":"1F40C","variations":[],"docomo":"E74E","au":"EB7E","softbank":null,"google":"FE1B9","image":"1f40c.png","sheet_x":10,"sheet_y":37,"short_name":"snail","short_names":["snail"],"text":null,"texts":null,"category":"Nature","sort_order":38,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SNAKE","unified":"1F40D","variations":[],"docomo":null,"au":"EB22","softbank":"E52D","google":"FE1D3","image":"1f40d.png","sheet_x":10,"sheet_y":38,"short_name":"snake","short_names":["snake"],"text":null,"texts":null,"category":"Nature","sort_order":45,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HORSE","unified":"1F40E","variations":[],"docomo":"E754","au":"E4D8","softbank":"E134","google":"FE7DC","image":"1f40e.png","sheet_x":10,"sheet_y":39,"short_name":"racehorse","short_names":["racehorse"],"text":null,"texts":null,"category":"Nature","sort_order":71,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RAM","unified":"1F40F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f40f.png","sheet_x":10,"sheet_y":40,"short_name":"ram","short_names":["ram"],"text":null,"texts":null,"category":"Nature","sort_order":74,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GOAT","unified":"1F410","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f410.png","sheet_x":10,"sheet_y":41,"short_name":"goat","short_names":["goat"],"text":null,"texts":null,"category":"Nature","sort_order":73,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SHEEP","unified":"1F411","variations":[],"docomo":null,"au":"E48F","softbank":"E529","google":"FE1CF","image":"1f411.png","sheet_x":10,"sheet_y":42,"short_name":"sheep","short_names":["sheep"],"text":null,"texts":null,"category":"Nature","sort_order":75,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MONKEY","unified":"1F412","variations":[],"docomo":null,"au":"E4D9","softbank":"E528","google":"FE1CE","image":"1f412.png","sheet_x":10,"sheet_y":43,"short_name":"monkey","short_names":["monkey"],"text":null,"texts":null,"category":"Nature","sort_order":20,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ROOSTER","unified":"1F413","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f413.png","sheet_x":10,"sheet_y":44,"short_name":"rooster","short_names":["rooster"],"text":null,"texts":null,"category":"Nature","sort_order":79,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHICKEN","unified":"1F414","variations":[],"docomo":null,"au":"EB23","softbank":"E52E","google":"FE1D4","image":"1f414.png","sheet_x":10,"sheet_y":45,"short_name":"chicken","short_names":["chicken"],"text":null,"texts":null,"category":"Nature","sort_order":21,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOG","unified":"1F415","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f415.png","sheet_x":10,"sheet_y":46,"short_name":"dog2","short_names":["dog2"],"text":null,"texts":null,"category":"Nature","sort_order":76,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PIG","unified":"1F416","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f416.png","sheet_x":10,"sheet_y":47,"short_name":"pig2","short_names":["pig2"],"text":null,"texts":null,"category":"Nature","sort_order":72,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BOAR","unified":"1F417","variations":[],"docomo":null,"au":"EB24","softbank":"E52F","google":"FE1D5","image":"1f417.png","sheet_x":10,"sheet_y":48,"short_name":"boar","short_names":["boar"],"text":null,"texts":null,"category":"Nature","sort_order":32,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ELEPHANT","unified":"1F418","variations":[],"docomo":null,"au":"EB1F","softbank":"E526","google":"FE1CC","image":"1f418.png","sheet_x":11,"sheet_y":0,"short_name":"elephant","short_names":["elephant"],"text":null,"texts":null,"category":"Nature","sort_order":68,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OCTOPUS","unified":"1F419","variations":[],"docomo":null,"au":"E5C7","softbank":"E10A","google":"FE1C5","image":"1f419.png","sheet_x":11,"sheet_y":1,"short_name":"octopus","short_names":["octopus"],"text":null,"texts":null,"category":"Nature","sort_order":50,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPIRAL SHELL","unified":"1F41A","variations":[],"docomo":null,"au":"EAEC","softbank":"E441","google":"FE1C6","image":"1f41a.png","sheet_x":11,"sheet_y":2,"short_name":"shell","short_names":["shell"],"text":null,"texts":null,"category":"Nature","sort_order":39,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BUG","unified":"1F41B","variations":[],"docomo":null,"au":"EB1E","softbank":"E525","google":"FE1CB","image":"1f41b.png","sheet_x":11,"sheet_y":3,"short_name":"bug","short_names":["bug"],"text":null,"texts":null,"category":"Nature","sort_order":36,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ANT","unified":"1F41C","variations":[],"docomo":null,"au":"E4DD","softbank":null,"google":"FE1DA","image":"1f41c.png","sheet_x":11,"sheet_y":4,"short_name":"ant","short_names":["ant"],"text":null,"texts":null,"category":"Nature","sort_order":41,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HONEYBEE","unified":"1F41D","variations":[],"docomo":null,"au":"EB57","softbank":null,"google":"FE1E1","image":"1f41d.png","sheet_x":11,"sheet_y":5,"short_name":"bee","short_names":["bee","honeybee"],"text":null,"texts":null,"category":"Nature","sort_order":35,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LADY BEETLE","unified":"1F41E","variations":[],"docomo":null,"au":"EB58","softbank":null,"google":"FE1E2","image":"1f41e.png","sheet_x":11,"sheet_y":6,"short_name":"beetle","short_names":["beetle"],"text":null,"texts":null,"category":"Nature","sort_order":40,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FISH","unified":"1F41F","variations":[],"docomo":"E751","au":"E49A","softbank":"E019","google":"FE1BD","image":"1f41f.png","sheet_x":11,"sheet_y":7,"short_name":"fish","short_names":["fish"],"text":null,"texts":null,"category":"Nature","sort_order":53,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TROPICAL FISH","unified":"1F420","variations":[],"docomo":"E751","au":"EB1D","softbank":"E522","google":"FE1C9","image":"1f420.png","sheet_x":11,"sheet_y":8,"short_name":"tropical_fish","short_names":["tropical_fish"],"text":null,"texts":null,"category":"Nature","sort_order":52,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLOWFISH","unified":"1F421","variations":[],"docomo":"E751","au":"E4D3","softbank":"E019","google":"FE1D9","image":"1f421.png","sheet_x":11,"sheet_y":9,"short_name":"blowfish","short_names":["blowfish"],"text":null,"texts":null,"category":"Nature","sort_order":54,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TURTLE","unified":"1F422","variations":[],"docomo":null,"au":"E5D4","softbank":null,"google":"FE1DC","image":"1f422.png","sheet_x":11,"sheet_y":10,"short_name":"turtle","short_names":["turtle"],"text":null,"texts":null,"category":"Nature","sort_order":44,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HATCHING CHICK","unified":"1F423","variations":[],"docomo":"E74F","au":"E5DB","softbank":"E523","google":"FE1DD","image":"1f423.png","sheet_x":11,"sheet_y":11,"short_name":"hatching_chick","short_names":["hatching_chick"],"text":null,"texts":null,"category":"Nature","sort_order":25,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BABY CHICK","unified":"1F424","variations":[],"docomo":"E74F","au":"E4E0","softbank":"E523","google":"FE1BA","image":"1f424.png","sheet_x":11,"sheet_y":12,"short_name":"baby_chick","short_names":["baby_chick"],"text":null,"texts":null,"category":"Nature","sort_order":24,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FRONT-FACING BABY CHICK","unified":"1F425","variations":[],"docomo":"E74F","au":"EB76","softbank":"E523","google":"FE1BB","image":"1f425.png","sheet_x":11,"sheet_y":13,"short_name":"hatched_chick","short_names":["hatched_chick"],"text":null,"texts":null,"category":"Nature","sort_order":26,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BIRD","unified":"1F426","variations":[],"docomo":"E74F","au":"E4E0","softbank":"E521","google":"FE1C8","image":"1f426.png","sheet_x":11,"sheet_y":14,"short_name":"bird","short_names":["bird"],"text":null,"texts":null,"category":"Nature","sort_order":23,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PENGUIN","unified":"1F427","variations":[],"docomo":"E750","au":"E4DC","softbank":"E055","google":"FE1BC","image":"1f427.png","sheet_x":11,"sheet_y":15,"short_name":"penguin","short_names":["penguin"],"text":null,"texts":null,"category":"Nature","sort_order":22,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KOALA","unified":"1F428","variations":[],"docomo":null,"au":"EB20","softbank":"E527","google":"FE1CD","image":"1f428.png","sheet_x":11,"sheet_y":16,"short_name":"koala","short_names":["koala"],"text":null,"texts":null,"category":"Nature","sort_order":9,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POODLE","unified":"1F429","variations":[],"docomo":"E6A1","au":"E4DF","softbank":"E052","google":"FE1D8","image":"1f429.png","sheet_x":11,"sheet_y":17,"short_name":"poodle","short_names":["poodle"],"text":null,"texts":null,"category":"Nature","sort_order":77,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DROMEDARY CAMEL","unified":"1F42A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f42a.png","sheet_x":11,"sheet_y":18,"short_name":"dromedary_camel","short_names":["dromedary_camel"],"text":null,"texts":null,"category":"Nature","sort_order":66,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BACTRIAN CAMEL","unified":"1F42B","variations":[],"docomo":null,"au":"EB25","softbank":"E530","google":"FE1D6","image":"1f42b.png","sheet_x":11,"sheet_y":19,"short_name":"camel","short_names":["camel"],"text":null,"texts":null,"category":"Nature","sort_order":67,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOLPHIN","unified":"1F42C","variations":[],"docomo":null,"au":"EB1B","softbank":"E520","google":"FE1C7","image":"1f42c.png","sheet_x":11,"sheet_y":20,"short_name":"dolphin","short_names":["dolphin","flipper"],"text":null,"texts":null,"category":"Nature","sort_order":55,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOUSE FACE","unified":"1F42D","variations":[],"docomo":null,"au":"E5C2","softbank":"E053","google":"FE1C2","image":"1f42d.png","sheet_x":11,"sheet_y":21,"short_name":"mouse","short_names":["mouse"],"text":null,"texts":null,"category":"Nature","sort_order":3,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COW FACE","unified":"1F42E","variations":[],"docomo":null,"au":"EB21","softbank":"E52B","google":"FE1D1","image":"1f42e.png","sheet_x":11,"sheet_y":22,"short_name":"cow","short_names":["cow"],"text":null,"texts":null,"category":"Nature","sort_order":12,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TIGER FACE","unified":"1F42F","variations":[],"docomo":null,"au":"E5C0","softbank":"E050","google":"FE1C0","image":"1f42f.png","sheet_x":11,"sheet_y":23,"short_name":"tiger","short_names":["tiger"],"text":null,"texts":null,"category":"Nature","sort_order":10,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RABBIT FACE","unified":"1F430","variations":[],"docomo":null,"au":"E4D7","softbank":"E52C","google":"FE1D2","image":"1f430.png","sheet_x":11,"sheet_y":24,"short_name":"rabbit","short_names":["rabbit"],"text":null,"texts":null,"category":"Nature","sort_order":5,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CAT FACE","unified":"1F431","variations":[],"docomo":"E6A2","au":"E4DB","softbank":"E04F","google":"FE1B8","image":"1f431.png","sheet_x":11,"sheet_y":25,"short_name":"cat","short_names":["cat"],"text":null,"texts":null,"category":"Nature","sort_order":2,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DRAGON FACE","unified":"1F432","variations":[],"docomo":null,"au":"EB3F","softbank":null,"google":"FE1DE","image":"1f432.png","sheet_x":11,"sheet_y":26,"short_name":"dragon_face","short_names":["dragon_face"],"text":null,"texts":null,"category":"Nature","sort_order":88,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPOUTING WHALE","unified":"1F433","variations":[],"docomo":null,"au":"E470","softbank":"E054","google":"FE1C3","image":"1f433.png","sheet_x":11,"sheet_y":27,"short_name":"whale","short_names":["whale"],"text":null,"texts":null,"category":"Nature","sort_order":57,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HORSE FACE","unified":"1F434","variations":[],"docomo":"E754","au":"E4D8","softbank":"E01A","google":"FE1BE","image":"1f434.png","sheet_x":11,"sheet_y":28,"short_name":"horse","short_names":["horse"],"text":null,"texts":null,"category":"Nature","sort_order":33,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MONKEY FACE","unified":"1F435","variations":[],"docomo":null,"au":"E4D9","softbank":"E109","google":"FE1C4","image":"1f435.png","sheet_x":11,"sheet_y":29,"short_name":"monkey_face","short_names":["monkey_face"],"text":null,"texts":[":o)"],"category":"Nature","sort_order":16,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOG FACE","unified":"1F436","variations":[],"docomo":"E6A1","au":"E4E1","softbank":"E052","google":"FE1B7","image":"1f436.png","sheet_x":11,"sheet_y":30,"short_name":"dog","short_names":["dog"],"text":null,"texts":null,"category":"Nature","sort_order":1,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PIG FACE","unified":"1F437","variations":[],"docomo":"E755","au":"E4DE","softbank":"E10B","google":"FE1BF","image":"1f437.png","sheet_x":11,"sheet_y":31,"short_name":"pig","short_names":["pig"],"text":null,"texts":null,"category":"Nature","sort_order":13,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FROG FACE","unified":"1F438","variations":[],"docomo":null,"au":"E4DA","softbank":"E531","google":"FE1D7","image":"1f438.png","sheet_x":11,"sheet_y":32,"short_name":"frog","short_names":["frog"],"text":null,"texts":null,"category":"Nature","sort_order":15,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HAMSTER FACE","unified":"1F439","variations":[],"docomo":null,"au":null,"softbank":"E524","google":"FE1CA","image":"1f439.png","sheet_x":11,"sheet_y":33,"short_name":"hamster","short_names":["hamster"],"text":null,"texts":null,"category":"Nature","sort_order":4,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WOLF FACE","unified":"1F43A","variations":[],"docomo":"E6A1","au":"E4E1","softbank":"E52A","google":"FE1D0","image":"1f43a.png","sheet_x":11,"sheet_y":34,"short_name":"wolf","short_names":["wolf"],"text":null,"texts":null,"category":"Nature","sort_order":31,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BEAR FACE","unified":"1F43B","variations":[],"docomo":null,"au":"E5C1","softbank":"E051","google":"FE1C1","image":"1f43b.png","sheet_x":11,"sheet_y":35,"short_name":"bear","short_names":["bear"],"text":null,"texts":null,"category":"Nature","sort_order":7,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PANDA FACE","unified":"1F43C","variations":[],"docomo":null,"au":"EB46","softbank":null,"google":"FE1DF","image":"1f43c.png","sheet_x":11,"sheet_y":36,"short_name":"panda_face","short_names":["panda_face"],"text":null,"texts":null,"category":"Nature","sort_order":8,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PIG NOSE","unified":"1F43D","variations":[],"docomo":"E755","au":"EB48","softbank":"E10B","google":"FE1E0","image":"1f43d.png","sheet_x":11,"sheet_y":37,"short_name":"pig_nose","short_names":["pig_nose"],"text":null,"texts":null,"category":"Nature","sort_order":14,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PAW PRINTS","unified":"1F43E","variations":[],"docomo":"E698","au":"E4EE","softbank":"E536","google":"FE1DB","image":"1f43e.png","sheet_x":11,"sheet_y":38,"short_name":"feet","short_names":["feet","paw_prints"],"text":null,"texts":null,"category":"Nature","sort_order":86,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHIPMUNK","unified":"1F43F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f43f.png","sheet_x":11,"sheet_y":39,"short_name":"chipmunk","short_names":["chipmunk"],"text":null,"texts":null,"category":"Nature","sort_order":85,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EYES","unified":"1F440","variations":[],"docomo":"E691","au":"E5A4","softbank":"E419","google":"FE190","image":"1f440.png","sheet_x":11,"sheet_y":40,"short_name":"eyes","short_names":["eyes"],"text":null,"texts":null,"category":"People","sort_order":137,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EYE","unified":"1F441","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f441.png","sheet_x":11,"sheet_y":41,"short_name":"eye","short_names":["eye"],"text":null,"texts":null,"category":"People","sort_order":136,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EAR","unified":"1F442","variations":[],"docomo":"E692","au":"E5A5","softbank":"E41B","google":"FE191","image":"1f442.png","sheet_x":11,"sheet_y":42,"short_name":"ear","short_names":["ear"],"text":null,"texts":null,"category":"People","sort_order":133,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F442-1F3FB","image":"1f442-1f3fb.png","sheet_x":11,"sheet_y":43,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F442-1F3FC","image":"1f442-1f3fc.png","sheet_x":11,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F442-1F3FD","image":"1f442-1f3fd.png","sheet_x":11,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F442-1F3FE","image":"1f442-1f3fe.png","sheet_x":11,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F442-1F3FF","image":"1f442-1f3ff.png","sheet_x":11,"sheet_y":47,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"NOSE","unified":"1F443","variations":[],"docomo":null,"au":"EAD0","softbank":"E41A","google":"FE192","image":"1f443.png","sheet_x":11,"sheet_y":48,"short_name":"nose","short_names":["nose"],"text":null,"texts":null,"category":"People","sort_order":134,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F443-1F3FB","image":"1f443-1f3fb.png","sheet_x":12,"sheet_y":0,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F443-1F3FC","image":"1f443-1f3fc.png","sheet_x":12,"sheet_y":1,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F443-1F3FD","image":"1f443-1f3fd.png","sheet_x":12,"sheet_y":2,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F443-1F3FE","image":"1f443-1f3fe.png","sheet_x":12,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F443-1F3FF","image":"1f443-1f3ff.png","sheet_x":12,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"MOUTH","unified":"1F444","variations":[],"docomo":"E6F9","au":"EAD1","softbank":"E41C","google":"FE193","image":"1f444.png","sheet_x":12,"sheet_y":5,"short_name":"lips","short_names":["lips"],"text":null,"texts":null,"category":"People","sort_order":131,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TONGUE","unified":"1F445","variations":[],"docomo":"E728","au":"EB47","softbank":"E409","google":"FE194","image":"1f445.png","sheet_x":12,"sheet_y":6,"short_name":"tongue","short_names":["tongue"],"text":null,"texts":null,"category":"People","sort_order":132,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE UP POINTING BACKHAND INDEX","unified":"1F446","variations":[],"docomo":null,"au":"EA8D","softbank":"E22E","google":"FEB99","image":"1f446.png","sheet_x":12,"sheet_y":7,"short_name":"point_up_2","short_names":["point_up_2"],"text":null,"texts":null,"category":"People","sort_order":114,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F446-1F3FB","image":"1f446-1f3fb.png","sheet_x":12,"sheet_y":8,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F446-1F3FC","image":"1f446-1f3fc.png","sheet_x":12,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F446-1F3FD","image":"1f446-1f3fd.png","sheet_x":12,"sheet_y":10,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F446-1F3FE","image":"1f446-1f3fe.png","sheet_x":12,"sheet_y":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F446-1F3FF","image":"1f446-1f3ff.png","sheet_x":12,"sheet_y":12,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"WHITE DOWN POINTING BACKHAND INDEX","unified":"1F447","variations":[],"docomo":null,"au":"EA8E","softbank":"E22F","google":"FEB9A","image":"1f447.png","sheet_x":12,"sheet_y":13,"short_name":"point_down","short_names":["point_down"],"text":null,"texts":null,"category":"People","sort_order":115,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F447-1F3FB","image":"1f447-1f3fb.png","sheet_x":12,"sheet_y":14,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F447-1F3FC","image":"1f447-1f3fc.png","sheet_x":12,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F447-1F3FD","image":"1f447-1f3fd.png","sheet_x":12,"sheet_y":16,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F447-1F3FE","image":"1f447-1f3fe.png","sheet_x":12,"sheet_y":17,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F447-1F3FF","image":"1f447-1f3ff.png","sheet_x":12,"sheet_y":18,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"WHITE LEFT POINTING BACKHAND INDEX","unified":"1F448","variations":[],"docomo":null,"au":"E4FF","softbank":"E230","google":"FEB9B","image":"1f448.png","sheet_x":12,"sheet_y":19,"short_name":"point_left","short_names":["point_left"],"text":null,"texts":null,"category":"People","sort_order":112,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F448-1F3FB","image":"1f448-1f3fb.png","sheet_x":12,"sheet_y":20,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F448-1F3FC","image":"1f448-1f3fc.png","sheet_x":12,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F448-1F3FD","image":"1f448-1f3fd.png","sheet_x":12,"sheet_y":22,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F448-1F3FE","image":"1f448-1f3fe.png","sheet_x":12,"sheet_y":23,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F448-1F3FF","image":"1f448-1f3ff.png","sheet_x":12,"sheet_y":24,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"WHITE RIGHT POINTING BACKHAND INDEX","unified":"1F449","variations":[],"docomo":null,"au":"E500","softbank":"E231","google":"FEB9C","image":"1f449.png","sheet_x":12,"sheet_y":25,"short_name":"point_right","short_names":["point_right"],"text":null,"texts":null,"category":"People","sort_order":113,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F449-1F3FB","image":"1f449-1f3fb.png","sheet_x":12,"sheet_y":26,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F449-1F3FC","image":"1f449-1f3fc.png","sheet_x":12,"sheet_y":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F449-1F3FD","image":"1f449-1f3fd.png","sheet_x":12,"sheet_y":28,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F449-1F3FE","image":"1f449-1f3fe.png","sheet_x":12,"sheet_y":29,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F449-1F3FF","image":"1f449-1f3ff.png","sheet_x":12,"sheet_y":30,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"FISTED HAND SIGN","unified":"1F44A","variations":[],"docomo":"E6FD","au":"E4F3","softbank":"E00D","google":"FEB96","image":"1f44a.png","sheet_x":12,"sheet_y":31,"short_name":"facepunch","short_names":["facepunch","punch"],"text":null,"texts":null,"category":"People","sort_order":104,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F44A-1F3FB","image":"1f44a-1f3fb.png","sheet_x":12,"sheet_y":32,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F44A-1F3FC","image":"1f44a-1f3fc.png","sheet_x":12,"sheet_y":33,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F44A-1F3FD","image":"1f44a-1f3fd.png","sheet_x":12,"sheet_y":34,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F44A-1F3FE","image":"1f44a-1f3fe.png","sheet_x":12,"sheet_y":35,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F44A-1F3FF","image":"1f44a-1f3ff.png","sheet_x":12,"sheet_y":36,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"WAVING HAND SIGN","unified":"1F44B","variations":[],"docomo":"E695","au":"EAD6","softbank":"E41E","google":"FEB9D","image":"1f44b.png","sheet_x":12,"sheet_y":37,"short_name":"wave","short_names":["wave"],"text":null,"texts":null,"category":"People","sort_order":121,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F44B-1F3FB","image":"1f44b-1f3fb.png","sheet_x":12,"sheet_y":38,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F44B-1F3FC","image":"1f44b-1f3fc.png","sheet_x":12,"sheet_y":39,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F44B-1F3FD","image":"1f44b-1f3fd.png","sheet_x":12,"sheet_y":40,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F44B-1F3FE","image":"1f44b-1f3fe.png","sheet_x":12,"sheet_y":41,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F44B-1F3FF","image":"1f44b-1f3ff.png","sheet_x":12,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"OK HAND SIGN","unified":"1F44C","variations":[],"docomo":"E70B","au":"EAD4","softbank":"E420","google":"FEB9F","image":"1f44c.png","sheet_x":12,"sheet_y":43,"short_name":"ok_hand","short_names":["ok_hand"],"text":null,"texts":null,"category":"People","sort_order":111,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F44C-1F3FB","image":"1f44c-1f3fb.png","sheet_x":12,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F44C-1F3FC","image":"1f44c-1f3fc.png","sheet_x":12,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F44C-1F3FD","image":"1f44c-1f3fd.png","sheet_x":12,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F44C-1F3FE","image":"1f44c-1f3fe.png","sheet_x":12,"sheet_y":47,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F44C-1F3FF","image":"1f44c-1f3ff.png","sheet_x":12,"sheet_y":48,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"THUMBS UP SIGN","unified":"1F44D","variations":[],"docomo":"E727","au":"E4F9","softbank":"E00E","google":"FEB97","image":"1f44d.png","sheet_x":13,"sheet_y":0,"short_name":"+1","short_names":["+1","thumbsup"],"text":null,"texts":null,"category":"People","sort_order":102,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F44D-1F3FB","image":"1f44d-1f3fb.png","sheet_x":13,"sheet_y":1,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F44D-1F3FC","image":"1f44d-1f3fc.png","sheet_x":13,"sheet_y":2,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F44D-1F3FD","image":"1f44d-1f3fd.png","sheet_x":13,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F44D-1F3FE","image":"1f44d-1f3fe.png","sheet_x":13,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F44D-1F3FF","image":"1f44d-1f3ff.png","sheet_x":13,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"THUMBS DOWN SIGN","unified":"1F44E","variations":[],"docomo":"E700","au":"EAD5","softbank":"E421","google":"FEBA0","image":"1f44e.png","sheet_x":13,"sheet_y":6,"short_name":"-1","short_names":["-1","thumbsdown"],"text":null,"texts":null,"category":"People","sort_order":103,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F44E-1F3FB","image":"1f44e-1f3fb.png","sheet_x":13,"sheet_y":7,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F44E-1F3FC","image":"1f44e-1f3fc.png","sheet_x":13,"sheet_y":8,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F44E-1F3FD","image":"1f44e-1f3fd.png","sheet_x":13,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F44E-1F3FE","image":"1f44e-1f3fe.png","sheet_x":13,"sheet_y":10,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F44E-1F3FF","image":"1f44e-1f3ff.png","sheet_x":13,"sheet_y":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"CLAPPING HANDS SIGN","unified":"1F44F","variations":[],"docomo":null,"au":"EAD3","softbank":"E41F","google":"FEB9E","image":"1f44f.png","sheet_x":13,"sheet_y":12,"short_name":"clap","short_names":["clap"],"text":null,"texts":null,"category":"People","sort_order":99,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F44F-1F3FB","image":"1f44f-1f3fb.png","sheet_x":13,"sheet_y":13,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F44F-1F3FC","image":"1f44f-1f3fc.png","sheet_x":13,"sheet_y":14,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F44F-1F3FD","image":"1f44f-1f3fd.png","sheet_x":13,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F44F-1F3FE","image":"1f44f-1f3fe.png","sheet_x":13,"sheet_y":16,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F44F-1F3FF","image":"1f44f-1f3ff.png","sheet_x":13,"sheet_y":17,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"OPEN HANDS SIGN","unified":"1F450","variations":[],"docomo":"E695","au":"EAD6","softbank":"E422","google":"FEBA1","image":"1f450.png","sheet_x":13,"sheet_y":18,"short_name":"open_hands","short_names":["open_hands"],"text":null,"texts":null,"category":"People","sort_order":97,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F450-1F3FB","image":"1f450-1f3fb.png","sheet_x":13,"sheet_y":19,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F450-1F3FC","image":"1f450-1f3fc.png","sheet_x":13,"sheet_y":20,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F450-1F3FD","image":"1f450-1f3fd.png","sheet_x":13,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F450-1F3FE","image":"1f450-1f3fe.png","sheet_x":13,"sheet_y":22,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F450-1F3FF","image":"1f450-1f3ff.png","sheet_x":13,"sheet_y":23,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"CROWN","unified":"1F451","variations":[],"docomo":"E71A","au":"E5C9","softbank":"E10E","google":"FE4D1","image":"1f451.png","sheet_x":13,"sheet_y":24,"short_name":"crown","short_names":["crown"],"text":null,"texts":null,"category":"People","sort_order":283,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WOMANS HAT","unified":"1F452","variations":[],"docomo":null,"au":"EA9E","softbank":"E318","google":"FE4D4","image":"1f452.png","sheet_x":13,"sheet_y":25,"short_name":"womans_hat","short_names":["womans_hat"],"text":null,"texts":null,"category":"People","sort_order":280,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EYEGLASSES","unified":"1F453","variations":[],"docomo":"E69A","au":"E4FE","softbank":null,"google":"FE4CE","image":"1f453.png","sheet_x":13,"sheet_y":26,"short_name":"eyeglasses","short_names":["eyeglasses"],"text":null,"texts":null,"category":"People","sort_order":290,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NECKTIE","unified":"1F454","variations":[],"docomo":null,"au":"EA93","softbank":"E302","google":"FE4D3","image":"1f454.png","sheet_x":13,"sheet_y":27,"short_name":"necktie","short_names":["necktie"],"text":null,"texts":null,"category":"People","sort_order":271,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"T-SHIRT","unified":"1F455","variations":[],"docomo":"E70E","au":"E5B6","softbank":"E006","google":"FE4CF","image":"1f455.png","sheet_x":13,"sheet_y":28,"short_name":"shirt","short_names":["shirt","tshirt"],"text":null,"texts":null,"category":"People","sort_order":269,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"JEANS","unified":"1F456","variations":[],"docomo":"E711","au":"EB77","softbank":null,"google":"FE4D0","image":"1f456.png","sheet_x":13,"sheet_y":29,"short_name":"jeans","short_names":["jeans"],"text":null,"texts":null,"category":"People","sort_order":270,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DRESS","unified":"1F457","variations":[],"docomo":null,"au":"EB6B","softbank":"E319","google":"FE4D5","image":"1f457.png","sheet_x":13,"sheet_y":30,"short_name":"dress","short_names":["dress"],"text":null,"texts":null,"category":"People","sort_order":272,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KIMONO","unified":"1F458","variations":[],"docomo":null,"au":"EAA3","softbank":"E321","google":"FE4D9","image":"1f458.png","sheet_x":13,"sheet_y":31,"short_name":"kimono","short_names":["kimono"],"text":null,"texts":null,"category":"People","sort_order":274,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BIKINI","unified":"1F459","variations":[],"docomo":null,"au":"EAA4","softbank":"E322","google":"FE4DA","image":"1f459.png","sheet_x":13,"sheet_y":32,"short_name":"bikini","short_names":["bikini"],"text":null,"texts":null,"category":"People","sort_order":273,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WOMANS CLOTHES","unified":"1F45A","variations":[],"docomo":"E70E","au":"E50D","softbank":"E006","google":"FE4DB","image":"1f45a.png","sheet_x":13,"sheet_y":33,"short_name":"womans_clothes","short_names":["womans_clothes"],"text":null,"texts":null,"category":"People","sort_order":268,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PURSE","unified":"1F45B","variations":[],"docomo":"E70F","au":"E504","softbank":null,"google":"FE4DC","image":"1f45b.png","sheet_x":13,"sheet_y":34,"short_name":"purse","short_names":["purse"],"text":null,"texts":null,"category":"People","sort_order":287,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HANDBAG","unified":"1F45C","variations":[],"docomo":"E682","au":"E49C","softbank":"E323","google":"FE4F0","image":"1f45c.png","sheet_x":13,"sheet_y":35,"short_name":"handbag","short_names":["handbag"],"text":null,"texts":null,"category":"People","sort_order":288,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POUCH","unified":"1F45D","variations":[],"docomo":"E6AD","au":null,"softbank":null,"google":"FE4F1","image":"1f45d.png","sheet_x":13,"sheet_y":36,"short_name":"pouch","short_names":["pouch"],"text":null,"texts":null,"category":"People","sort_order":286,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MANS SHOE","unified":"1F45E","variations":[],"docomo":"E699","au":"E5B7","softbank":"E007","google":"FE4CC","image":"1f45e.png","sheet_x":13,"sheet_y":37,"short_name":"mans_shoe","short_names":["mans_shoe","shoe"],"text":null,"texts":null,"category":"People","sort_order":278,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ATHLETIC SHOE","unified":"1F45F","variations":[],"docomo":"E699","au":"EB2B","softbank":"E007","google":"FE4CD","image":"1f45f.png","sheet_x":13,"sheet_y":38,"short_name":"athletic_shoe","short_names":["athletic_shoe"],"text":null,"texts":null,"category":"People","sort_order":279,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HIGH-HEELED SHOE","unified":"1F460","variations":[],"docomo":"E674","au":"E51A","softbank":"E13E","google":"FE4D6","image":"1f460.png","sheet_x":13,"sheet_y":39,"short_name":"high_heel","short_names":["high_heel"],"text":null,"texts":null,"category":"People","sort_order":275,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WOMANS SANDAL","unified":"1F461","variations":[],"docomo":"E674","au":"E51A","softbank":"E31A","google":"FE4D7","image":"1f461.png","sheet_x":13,"sheet_y":40,"short_name":"sandal","short_names":["sandal"],"text":null,"texts":null,"category":"People","sort_order":276,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WOMANS BOOTS","unified":"1F462","variations":[],"docomo":null,"au":"EA9F","softbank":"E31B","google":"FE4D8","image":"1f462.png","sheet_x":13,"sheet_y":41,"short_name":"boot","short_names":["boot"],"text":null,"texts":null,"category":"People","sort_order":277,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FOOTPRINTS","unified":"1F463","variations":[],"docomo":"E698","au":"EB2A","softbank":"E536","google":"FE553","image":"1f463.png","sheet_x":13,"sheet_y":42,"short_name":"footprints","short_names":["footprints"],"text":null,"texts":null,"category":"People","sort_order":135,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BUST IN SILHOUETTE","unified":"1F464","variations":[],"docomo":"E6B1","au":null,"softbank":null,"google":"FE19A","image":"1f464.png","sheet_x":13,"sheet_y":43,"short_name":"bust_in_silhouette","short_names":["bust_in_silhouette"],"text":null,"texts":null,"category":"People","sort_order":139,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BUSTS IN SILHOUETTE","unified":"1F465","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f465.png","sheet_x":13,"sheet_y":44,"short_name":"busts_in_silhouette","short_names":["busts_in_silhouette"],"text":null,"texts":null,"category":"People","sort_order":140,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BOY","unified":"1F466","variations":[],"docomo":"E6F0","au":"E4FC","softbank":"E001","google":"FE19B","image":"1f466.png","sheet_x":13,"sheet_y":45,"short_name":"boy","short_names":["boy"],"text":null,"texts":null,"category":"People","sort_order":142,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F466-1F3FB","image":"1f466-1f3fb.png","sheet_x":13,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F466-1F3FC","image":"1f466-1f3fc.png","sheet_x":13,"sheet_y":47,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F466-1F3FD","image":"1f466-1f3fd.png","sheet_x":13,"sheet_y":48,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F466-1F3FE","image":"1f466-1f3fe.png","sheet_x":14,"sheet_y":0,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F466-1F3FF","image":"1f466-1f3ff.png","sheet_x":14,"sheet_y":1,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"GIRL","unified":"1F467","variations":[],"docomo":"E6F0","au":"E4FA","softbank":"E002","google":"FE19C","image":"1f467.png","sheet_x":14,"sheet_y":2,"short_name":"girl","short_names":["girl"],"text":null,"texts":null,"category":"People","sort_order":143,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F467-1F3FB","image":"1f467-1f3fb.png","sheet_x":14,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F467-1F3FC","image":"1f467-1f3fc.png","sheet_x":14,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F467-1F3FD","image":"1f467-1f3fd.png","sheet_x":14,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F467-1F3FE","image":"1f467-1f3fe.png","sheet_x":14,"sheet_y":6,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F467-1F3FF","image":"1f467-1f3ff.png","sheet_x":14,"sheet_y":7,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"MAN","unified":"1F468","variations":[],"docomo":"E6F0","au":"E4FC","softbank":"E004","google":"FE19D","image":"1f468.png","sheet_x":14,"sheet_y":8,"short_name":"man","short_names":["man"],"text":null,"texts":null,"category":"People","sort_order":144,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB","image":"1f468-1f3fb.png","sheet_x":14,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F468-1F3FC","image":"1f468-1f3fc.png","sheet_x":14,"sheet_y":10,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F468-1F3FD","image":"1f468-1f3fd.png","sheet_x":14,"sheet_y":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F468-1F3FE","image":"1f468-1f3fe.png","sheet_x":14,"sheet_y":12,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F468-1F3FF","image":"1f468-1f3ff.png","sheet_x":14,"sheet_y":13,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"WOMAN","unified":"1F469","variations":[],"docomo":"E6F0","au":"E4FA","softbank":"E005","google":"FE19E","image":"1f469.png","sheet_x":14,"sheet_y":14,"short_name":"woman","short_names":["woman"],"text":null,"texts":null,"category":"People","sort_order":145,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB","image":"1f469-1f3fb.png","sheet_x":14,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F469-1F3FC","image":"1f469-1f3fc.png","sheet_x":14,"sheet_y":16,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F469-1F3FD","image":"1f469-1f3fd.png","sheet_x":14,"sheet_y":17,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F469-1F3FE","image":"1f469-1f3fe.png","sheet_x":14,"sheet_y":18,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F469-1F3FF","image":"1f469-1f3ff.png","sheet_x":14,"sheet_y":19,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"FAMILY","unified":"1F46A","variations":[],"docomo":null,"au":"E501","softbank":null,"google":"FE19F","image":"1f46a.png","sheet_x":14,"sheet_y":20,"short_name":"family","short_names":["family","man-woman-boy"],"text":null,"texts":null,"category":"People","sort_order":243,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"obsoleted_by":"1F468-200D-1F469-200D-1F466"},{"name":"MAN AND WOMAN HOLDING HANDS","unified":"1F46B","variations":[],"docomo":null,"au":null,"softbank":"E428","google":"FE1A0","image":"1f46b.png","sheet_x":14,"sheet_y":21,"short_name":"couple","short_names":["couple","man_and_woman_holding_hands"],"text":null,"texts":null,"category":"People","sort_order":234,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TWO MEN HOLDING HANDS","unified":"1F46C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f46c.png","sheet_x":14,"sheet_y":22,"short_name":"two_men_holding_hands","short_names":["two_men_holding_hands"],"text":null,"texts":null,"category":"People","sort_order":236,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TWO WOMEN HOLDING HANDS","unified":"1F46D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f46d.png","sheet_x":14,"sheet_y":23,"short_name":"two_women_holding_hands","short_names":["two_women_holding_hands"],"text":null,"texts":null,"category":"People","sort_order":235,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POLICE OFFICER","unified":"1F46E","variations":[],"docomo":null,"au":"E5DD","softbank":"E152","google":"FE1A1","image":"1f46e.png","sheet_x":14,"sheet_y":24,"short_name":"cop","short_names":["cop"],"text":null,"texts":null,"category":"People","sort_order":154,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F46E-1F3FB","image":"1f46e-1f3fb.png","sheet_x":14,"sheet_y":25,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F46E-1F3FC","image":"1f46e-1f3fc.png","sheet_x":14,"sheet_y":26,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F46E-1F3FD","image":"1f46e-1f3fd.png","sheet_x":14,"sheet_y":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F46E-1F3FE","image":"1f46e-1f3fe.png","sheet_x":14,"sheet_y":28,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F46E-1F3FF","image":"1f46e-1f3ff.png","sheet_x":14,"sheet_y":29,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F46E-200D-2642-FE0F"},{"name":"WOMAN WITH BUNNY EARS","unified":"1F46F","variations":[],"docomo":null,"au":"EADB","softbank":"E429","google":"FE1A2","image":"1f46f.png","sheet_x":14,"sheet_y":30,"short_name":"dancers","short_names":["dancers"],"text":null,"texts":null,"category":"People","sort_order":228,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"obsoleted_by":"1F46F-200D-2640-FE0F"},{"name":"BRIDE WITH VEIL","unified":"1F470","variations":[],"docomo":null,"au":"EAE9","softbank":null,"google":"FE1A3","image":"1f470.png","sheet_x":14,"sheet_y":31,"short_name":"bride_with_veil","short_names":["bride_with_veil"],"text":null,"texts":null,"category":"People","sort_order":197,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F470-1F3FB","image":"1f470-1f3fb.png","sheet_x":14,"sheet_y":32,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F470-1F3FC","image":"1f470-1f3fc.png","sheet_x":14,"sheet_y":33,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F470-1F3FD","image":"1f470-1f3fd.png","sheet_x":14,"sheet_y":34,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F470-1F3FE","image":"1f470-1f3fe.png","sheet_x":14,"sheet_y":35,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F470-1F3FF","image":"1f470-1f3ff.png","sheet_x":14,"sheet_y":36,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"PERSON WITH BLOND HAIR","unified":"1F471","variations":[],"docomo":null,"au":"EB13","softbank":"E515","google":"FE1A4","image":"1f471.png","sheet_x":14,"sheet_y":37,"short_name":"person_with_blond_hair","short_names":["person_with_blond_hair"],"text":null,"texts":null,"category":"People","sort_order":147,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F471-1F3FB","image":"1f471-1f3fb.png","sheet_x":14,"sheet_y":38,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F471-1F3FC","image":"1f471-1f3fc.png","sheet_x":14,"sheet_y":39,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F471-1F3FD","image":"1f471-1f3fd.png","sheet_x":14,"sheet_y":40,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F471-1F3FE","image":"1f471-1f3fe.png","sheet_x":14,"sheet_y":41,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F471-1F3FF","image":"1f471-1f3ff.png","sheet_x":14,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F471-200D-2642-FE0F"},{"name":"MAN WITH GUA PI MAO","unified":"1F472","variations":[],"docomo":null,"au":"EB14","softbank":"E516","google":"FE1A5","image":"1f472.png","sheet_x":14,"sheet_y":43,"short_name":"man_with_gua_pi_mao","short_names":["man_with_gua_pi_mao"],"text":null,"texts":null,"category":"People","sort_order":150,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F472-1F3FB","image":"1f472-1f3fb.png","sheet_x":14,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F472-1F3FC","image":"1f472-1f3fc.png","sheet_x":14,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F472-1F3FD","image":"1f472-1f3fd.png","sheet_x":14,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F472-1F3FE","image":"1f472-1f3fe.png","sheet_x":14,"sheet_y":47,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F472-1F3FF","image":"1f472-1f3ff.png","sheet_x":14,"sheet_y":48,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"MAN WITH TURBAN","unified":"1F473","variations":[],"docomo":null,"au":"EB15","softbank":"E517","google":"FE1A6","image":"1f473.png","sheet_x":15,"sheet_y":0,"short_name":"man_with_turban","short_names":["man_with_turban"],"text":null,"texts":null,"category":"People","sort_order":152,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F473-1F3FB","image":"1f473-1f3fb.png","sheet_x":15,"sheet_y":1,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F473-1F3FC","image":"1f473-1f3fc.png","sheet_x":15,"sheet_y":2,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F473-1F3FD","image":"1f473-1f3fd.png","sheet_x":15,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F473-1F3FE","image":"1f473-1f3fe.png","sheet_x":15,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F473-1F3FF","image":"1f473-1f3ff.png","sheet_x":15,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F473-200D-2642-FE0F"},{"name":"OLDER MAN","unified":"1F474","variations":[],"docomo":null,"au":"EB16","softbank":"E518","google":"FE1A7","image":"1f474.png","sheet_x":15,"sheet_y":6,"short_name":"older_man","short_names":["older_man"],"text":null,"texts":null,"category":"People","sort_order":148,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F474-1F3FB","image":"1f474-1f3fb.png","sheet_x":15,"sheet_y":7,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F474-1F3FC","image":"1f474-1f3fc.png","sheet_x":15,"sheet_y":8,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F474-1F3FD","image":"1f474-1f3fd.png","sheet_x":15,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F474-1F3FE","image":"1f474-1f3fe.png","sheet_x":15,"sheet_y":10,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F474-1F3FF","image":"1f474-1f3ff.png","sheet_x":15,"sheet_y":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"OLDER WOMAN","unified":"1F475","variations":[],"docomo":null,"au":"EB17","softbank":"E519","google":"FE1A8","image":"1f475.png","sheet_x":15,"sheet_y":12,"short_name":"older_woman","short_names":["older_woman"],"text":null,"texts":null,"category":"People","sort_order":149,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F475-1F3FB","image":"1f475-1f3fb.png","sheet_x":15,"sheet_y":13,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F475-1F3FC","image":"1f475-1f3fc.png","sheet_x":15,"sheet_y":14,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F475-1F3FD","image":"1f475-1f3fd.png","sheet_x":15,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F475-1F3FE","image":"1f475-1f3fe.png","sheet_x":15,"sheet_y":16,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F475-1F3FF","image":"1f475-1f3ff.png","sheet_x":15,"sheet_y":17,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"BABY","unified":"1F476","variations":[],"docomo":null,"au":"EB18","softbank":"E51A","google":"FE1A9","image":"1f476.png","sheet_x":15,"sheet_y":18,"short_name":"baby","short_names":["baby"],"text":null,"texts":null,"category":"People","sort_order":141,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F476-1F3FB","image":"1f476-1f3fb.png","sheet_x":15,"sheet_y":19,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F476-1F3FC","image":"1f476-1f3fc.png","sheet_x":15,"sheet_y":20,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F476-1F3FD","image":"1f476-1f3fd.png","sheet_x":15,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F476-1F3FE","image":"1f476-1f3fe.png","sheet_x":15,"sheet_y":22,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F476-1F3FF","image":"1f476-1f3ff.png","sheet_x":15,"sheet_y":23,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"CONSTRUCTION WORKER","unified":"1F477","variations":[],"docomo":null,"au":"EB19","softbank":"E51B","google":"FE1AA","image":"1f477.png","sheet_x":15,"sheet_y":24,"short_name":"construction_worker","short_names":["construction_worker"],"text":null,"texts":null,"category":"People","sort_order":156,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F477-1F3FB","image":"1f477-1f3fb.png","sheet_x":15,"sheet_y":25,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F477-1F3FC","image":"1f477-1f3fc.png","sheet_x":15,"sheet_y":26,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F477-1F3FD","image":"1f477-1f3fd.png","sheet_x":15,"sheet_y":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F477-1F3FE","image":"1f477-1f3fe.png","sheet_x":15,"sheet_y":28,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F477-1F3FF","image":"1f477-1f3ff.png","sheet_x":15,"sheet_y":29,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F477-200D-2642-FE0F"},{"name":"PRINCESS","unified":"1F478","variations":[],"docomo":null,"au":"EB1A","softbank":"E51C","google":"FE1AB","image":"1f478.png","sheet_x":15,"sheet_y":30,"short_name":"princess","short_names":["princess"],"text":null,"texts":null,"category":"People","sort_order":195,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F478-1F3FB","image":"1f478-1f3fb.png","sheet_x":15,"sheet_y":31,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F478-1F3FC","image":"1f478-1f3fc.png","sheet_x":15,"sheet_y":32,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F478-1F3FD","image":"1f478-1f3fd.png","sheet_x":15,"sheet_y":33,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F478-1F3FE","image":"1f478-1f3fe.png","sheet_x":15,"sheet_y":34,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F478-1F3FF","image":"1f478-1f3ff.png","sheet_x":15,"sheet_y":35,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"JAPANESE OGRE","unified":"1F479","variations":[],"docomo":null,"au":"EB44","softbank":null,"google":"FE1AC","image":"1f479.png","sheet_x":15,"sheet_y":36,"short_name":"japanese_ogre","short_names":["japanese_ogre"],"text":null,"texts":null,"category":"People","sort_order":78,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"JAPANESE GOBLIN","unified":"1F47A","variations":[],"docomo":null,"au":"EB45","softbank":null,"google":"FE1AD","image":"1f47a.png","sheet_x":15,"sheet_y":37,"short_name":"japanese_goblin","short_names":["japanese_goblin"],"text":null,"texts":null,"category":"People","sort_order":79,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GHOST","unified":"1F47B","variations":[],"docomo":null,"au":"E4CB","softbank":"E11B","google":"FE1AE","image":"1f47b.png","sheet_x":15,"sheet_y":38,"short_name":"ghost","short_names":["ghost"],"text":null,"texts":null,"category":"People","sort_order":81,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BABY ANGEL","unified":"1F47C","variations":[],"docomo":null,"au":"E5BF","softbank":"E04E","google":"FE1AF","image":"1f47c.png","sheet_x":15,"sheet_y":39,"short_name":"angel","short_names":["angel"],"text":null,"texts":null,"category":"People","sort_order":199,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F47C-1F3FB","image":"1f47c-1f3fb.png","sheet_x":15,"sheet_y":40,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F47C-1F3FC","image":"1f47c-1f3fc.png","sheet_x":15,"sheet_y":41,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F47C-1F3FD","image":"1f47c-1f3fd.png","sheet_x":15,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F47C-1F3FE","image":"1f47c-1f3fe.png","sheet_x":15,"sheet_y":43,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F47C-1F3FF","image":"1f47c-1f3ff.png","sheet_x":15,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"EXTRATERRESTRIAL ALIEN","unified":"1F47D","variations":[],"docomo":null,"au":"E50E","softbank":"E10C","google":"FE1B0","image":"1f47d.png","sheet_x":15,"sheet_y":45,"short_name":"alien","short_names":["alien"],"text":null,"texts":null,"category":"People","sort_order":84,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ALIEN MONSTER","unified":"1F47E","variations":[],"docomo":null,"au":"E4EC","softbank":"E12B","google":"FE1B1","image":"1f47e.png","sheet_x":15,"sheet_y":46,"short_name":"space_invader","short_names":["space_invader"],"text":null,"texts":null,"category":"People","sort_order":85,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"IMP","unified":"1F47F","variations":[],"docomo":null,"au":"E4EF","softbank":"E11A","google":"FE1B2","image":"1f47f.png","sheet_x":15,"sheet_y":47,"short_name":"imp","short_names":["imp"],"text":null,"texts":null,"category":"People","sort_order":77,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SKULL","unified":"1F480","variations":[],"docomo":null,"au":"E4F8","softbank":"E11C","google":"FE1B3","image":"1f480.png","sheet_x":15,"sheet_y":48,"short_name":"skull","short_names":["skull"],"text":null,"texts":null,"category":"People","sort_order":82,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INFORMATION DESK PERSON","unified":"1F481","variations":[],"docomo":null,"au":null,"softbank":"E253","google":"FE1B4","image":"1f481.png","sheet_x":16,"sheet_y":0,"short_name":"information_desk_person","short_names":["information_desk_person"],"text":null,"texts":null,"category":"People","sort_order":203,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F481-1F3FB","image":"1f481-1f3fb.png","sheet_x":16,"sheet_y":1,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F481-1F3FC","image":"1f481-1f3fc.png","sheet_x":16,"sheet_y":2,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F481-1F3FD","image":"1f481-1f3fd.png","sheet_x":16,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F481-1F3FE","image":"1f481-1f3fe.png","sheet_x":16,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F481-1F3FF","image":"1f481-1f3ff.png","sheet_x":16,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F481-200D-2640-FE0F"},{"name":"GUARDSMAN","unified":"1F482","variations":[],"docomo":null,"au":null,"softbank":"E51E","google":"FE1B5","image":"1f482.png","sheet_x":16,"sheet_y":6,"short_name":"guardsman","short_names":["guardsman"],"text":null,"texts":null,"category":"People","sort_order":158,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F482-1F3FB","image":"1f482-1f3fb.png","sheet_x":16,"sheet_y":7,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F482-1F3FC","image":"1f482-1f3fc.png","sheet_x":16,"sheet_y":8,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F482-1F3FD","image":"1f482-1f3fd.png","sheet_x":16,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F482-1F3FE","image":"1f482-1f3fe.png","sheet_x":16,"sheet_y":10,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F482-1F3FF","image":"1f482-1f3ff.png","sheet_x":16,"sheet_y":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F482-200D-2642-FE0F"},{"name":"DANCER","unified":"1F483","variations":[],"docomo":null,"au":"EB1C","softbank":"E51F","google":"FE1B6","image":"1f483.png","sheet_x":16,"sheet_y":12,"short_name":"dancer","short_names":["dancer"],"text":null,"texts":null,"category":"People","sort_order":226,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F483-1F3FB","image":"1f483-1f3fb.png","sheet_x":16,"sheet_y":13,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F483-1F3FC","image":"1f483-1f3fc.png","sheet_x":16,"sheet_y":14,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F483-1F3FD","image":"1f483-1f3fd.png","sheet_x":16,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F483-1F3FE","image":"1f483-1f3fe.png","sheet_x":16,"sheet_y":16,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F483-1F3FF","image":"1f483-1f3ff.png","sheet_x":16,"sheet_y":17,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"LIPSTICK","unified":"1F484","variations":[],"docomo":"E710","au":"E509","softbank":"E31C","google":"FE195","image":"1f484.png","sheet_x":16,"sheet_y":18,"short_name":"lipstick","short_names":["lipstick"],"text":null,"texts":null,"category":"People","sort_order":129,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NAIL POLISH","unified":"1F485","variations":[],"docomo":null,"au":"EAA0","softbank":"E31D","google":"FE196","image":"1f485.png","sheet_x":16,"sheet_y":19,"short_name":"nail_care","short_names":["nail_care"],"text":null,"texts":null,"category":"People","sort_order":127,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F485-1F3FB","image":"1f485-1f3fb.png","sheet_x":16,"sheet_y":20,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F485-1F3FC","image":"1f485-1f3fc.png","sheet_x":16,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F485-1F3FD","image":"1f485-1f3fd.png","sheet_x":16,"sheet_y":22,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F485-1F3FE","image":"1f485-1f3fe.png","sheet_x":16,"sheet_y":23,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F485-1F3FF","image":"1f485-1f3ff.png","sheet_x":16,"sheet_y":24,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"FACE MASSAGE","unified":"1F486","variations":[],"docomo":null,"au":"E50B","softbank":"E31E","google":"FE197","image":"1f486.png","sheet_x":16,"sheet_y":25,"short_name":"massage","short_names":["massage"],"text":null,"texts":null,"category":"People","sort_order":223,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F486-1F3FB","image":"1f486-1f3fb.png","sheet_x":16,"sheet_y":26,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F486-1F3FC","image":"1f486-1f3fc.png","sheet_x":16,"sheet_y":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F486-1F3FD","image":"1f486-1f3fd.png","sheet_x":16,"sheet_y":28,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F486-1F3FE","image":"1f486-1f3fe.png","sheet_x":16,"sheet_y":29,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F486-1F3FF","image":"1f486-1f3ff.png","sheet_x":16,"sheet_y":30,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F486-200D-2640-FE0F"},{"name":"HAIRCUT","unified":"1F487","variations":[],"docomo":"E675","au":"EAA1","softbank":"E31F","google":"FE198","image":"1f487.png","sheet_x":16,"sheet_y":31,"short_name":"haircut","short_names":["haircut"],"text":null,"texts":null,"category":"People","sort_order":221,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F487-1F3FB","image":"1f487-1f3fb.png","sheet_x":16,"sheet_y":32,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F487-1F3FC","image":"1f487-1f3fc.png","sheet_x":16,"sheet_y":33,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F487-1F3FD","image":"1f487-1f3fd.png","sheet_x":16,"sheet_y":34,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F487-1F3FE","image":"1f487-1f3fe.png","sheet_x":16,"sheet_y":35,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F487-1F3FF","image":"1f487-1f3ff.png","sheet_x":16,"sheet_y":36,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F487-200D-2640-FE0F"},{"name":"BARBER POLE","unified":"1F488","variations":[],"docomo":null,"au":"EAA2","softbank":"E320","google":"FE199","image":"1f488.png","sheet_x":16,"sheet_y":37,"short_name":"barber","short_names":["barber"],"text":null,"texts":null,"category":"Objects","sort_order":75,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SYRINGE","unified":"1F489","variations":[],"docomo":null,"au":"E510","softbank":"E13B","google":"FE509","image":"1f489.png","sheet_x":16,"sheet_y":38,"short_name":"syringe","short_names":["syringe"],"text":null,"texts":null,"category":"Objects","sort_order":81,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PILL","unified":"1F48A","variations":[],"docomo":null,"au":"EA9A","softbank":"E30F","google":"FE50A","image":"1f48a.png","sheet_x":16,"sheet_y":39,"short_name":"pill","short_names":["pill"],"text":null,"texts":null,"category":"Objects","sort_order":80,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KISS MARK","unified":"1F48B","variations":[],"docomo":"E6F9","au":"E4EB","softbank":"E003","google":"FE823","image":"1f48b.png","sheet_x":16,"sheet_y":40,"short_name":"kiss","short_names":["kiss"],"text":null,"texts":null,"category":"People","sort_order":130,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LOVE LETTER","unified":"1F48C","variations":[],"docomo":"E717","au":"EB78","softbank":"E103-E328","google":"FE824","image":"1f48c.png","sheet_x":16,"sheet_y":41,"short_name":"love_letter","short_names":["love_letter"],"text":null,"texts":null,"category":"Objects","sort_order":111,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RING","unified":"1F48D","variations":[],"docomo":"E71B","au":"E514","softbank":"E034","google":"FE825","image":"1f48d.png","sheet_x":16,"sheet_y":42,"short_name":"ring","short_names":["ring"],"text":null,"texts":null,"category":"People","sort_order":128,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GEM STONE","unified":"1F48E","variations":[],"docomo":"E71B","au":"E514","softbank":"E035","google":"FE826","image":"1f48e.png","sheet_x":16,"sheet_y":43,"short_name":"gem","short_names":["gem"],"text":null,"texts":null,"category":"Objects","sort_order":53,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KISS","unified":"1F48F","variations":[],"docomo":"E6F9","au":"E5CA","softbank":"E111","google":"FE827","image":"1f48f.png","sheet_x":16,"sheet_y":44,"short_name":"couplekiss","short_names":["couplekiss"],"text":null,"texts":null,"category":"People","sort_order":240,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"obsoleted_by":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F468"},{"name":"BOUQUET","unified":"1F490","variations":[],"docomo":null,"au":"EA95","softbank":"E306","google":"FE828","image":"1f490.png","sheet_x":16,"sheet_y":45,"short_name":"bouquet","short_names":["bouquet"],"text":null,"texts":null,"category":"Nature","sort_order":105,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COUPLE WITH HEART","unified":"1F491","variations":[],"docomo":"E6ED","au":"EADA","softbank":"E425","google":"FE829","image":"1f491.png","sheet_x":16,"sheet_y":46,"short_name":"couple_with_heart","short_names":["couple_with_heart"],"text":null,"texts":null,"category":"People","sort_order":237,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"obsoleted_by":"1F469-200D-2764-FE0F-200D-1F468"},{"name":"WEDDING","unified":"1F492","variations":[],"docomo":null,"au":"E5BB","softbank":"E43D","google":"FE82A","image":"1f492.png","sheet_x":16,"sheet_y":47,"short_name":"wedding","short_names":["wedding"],"text":null,"texts":null,"category":"Places","sort_order":98,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BEATING HEART","unified":"1F493","variations":[],"docomo":"E6ED","au":"EB75","softbank":"E327","google":"FEB0D","image":"1f493.png","sheet_x":16,"sheet_y":48,"short_name":"heartbeat","short_names":["heartbeat"],"text":null,"texts":null,"category":"Symbols","sort_order":11,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BROKEN HEART","unified":"1F494","variations":[],"docomo":"E6EE","au":"E477","softbank":"E023","google":"FEB0E","image":"1f494.png","sheet_x":17,"sheet_y":0,"short_name":"broken_heart","short_names":["broken_heart"],"text":"<\/3","texts":["<\/3"],"category":"Symbols","sort_order":7,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TWO HEARTS","unified":"1F495","variations":[],"docomo":"E6EF","au":"E478","softbank":"E327","google":"FEB0F","image":"1f495.png","sheet_x":17,"sheet_y":1,"short_name":"two_hearts","short_names":["two_hearts"],"text":null,"texts":null,"category":"Symbols","sort_order":9,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPARKLING HEART","unified":"1F496","variations":[],"docomo":"E6EC","au":"EAA6","softbank":"E327","google":"FEB10","image":"1f496.png","sheet_x":17,"sheet_y":2,"short_name":"sparkling_heart","short_names":["sparkling_heart"],"text":null,"texts":null,"category":"Symbols","sort_order":13,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GROWING HEART","unified":"1F497","variations":[],"docomo":"E6ED","au":"EB75","softbank":"E328","google":"FEB11","image":"1f497.png","sheet_x":17,"sheet_y":3,"short_name":"heartpulse","short_names":["heartpulse"],"text":null,"texts":null,"category":"Symbols","sort_order":12,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEART WITH ARROW","unified":"1F498","variations":[],"docomo":"E6EC","au":"E4EA","softbank":"E329","google":"FEB12","image":"1f498.png","sheet_x":17,"sheet_y":4,"short_name":"cupid","short_names":["cupid"],"text":null,"texts":null,"category":"Symbols","sort_order":14,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLUE HEART","unified":"1F499","variations":[],"docomo":"E6EC","au":"EAA7","softbank":"E32A","google":"FEB13","image":"1f499.png","sheet_x":17,"sheet_y":5,"short_name":"blue_heart","short_names":["blue_heart"],"text":"<3","texts":null,"category":"Symbols","sort_order":4,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GREEN HEART","unified":"1F49A","variations":[],"docomo":"E6EC","au":"EAA8","softbank":"E32B","google":"FEB14","image":"1f49a.png","sheet_x":17,"sheet_y":6,"short_name":"green_heart","short_names":["green_heart"],"text":"<3","texts":null,"category":"Symbols","sort_order":3,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"YELLOW HEART","unified":"1F49B","variations":[],"docomo":"E6EC","au":"EAA9","softbank":"E32C","google":"FEB15","image":"1f49b.png","sheet_x":17,"sheet_y":7,"short_name":"yellow_heart","short_names":["yellow_heart"],"text":"<3","texts":null,"category":"Symbols","sort_order":2,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PURPLE HEART","unified":"1F49C","variations":[],"docomo":"E6EC","au":"EAAA","softbank":"E32D","google":"FEB16","image":"1f49c.png","sheet_x":17,"sheet_y":8,"short_name":"purple_heart","short_names":["purple_heart"],"text":"<3","texts":null,"category":"Symbols","sort_order":5,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEART WITH RIBBON","unified":"1F49D","variations":[],"docomo":"E6EC","au":"EB54","softbank":"E437","google":"FEB17","image":"1f49d.png","sheet_x":17,"sheet_y":9,"short_name":"gift_heart","short_names":["gift_heart"],"text":null,"texts":null,"category":"Symbols","sort_order":15,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REVOLVING HEARTS","unified":"1F49E","variations":[],"docomo":"E6ED","au":"E5AF","softbank":"E327","google":"FEB18","image":"1f49e.png","sheet_x":17,"sheet_y":10,"short_name":"revolving_hearts","short_names":["revolving_hearts"],"text":null,"texts":null,"category":"Symbols","sort_order":10,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEART DECORATION","unified":"1F49F","variations":[],"docomo":"E6F8","au":"E595","softbank":"E204","google":"FEB19","image":"1f49f.png","sheet_x":17,"sheet_y":11,"short_name":"heart_decoration","short_names":["heart_decoration"],"text":null,"texts":null,"category":"Symbols","sort_order":16,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DIAMOND SHAPE WITH A DOT INSIDE","unified":"1F4A0","variations":[],"docomo":"E6F8","au":null,"softbank":null,"google":"FEB55","image":"1f4a0.png","sheet_x":17,"sheet_y":12,"short_name":"diamond_shape_with_a_dot_inside","short_names":["diamond_shape_with_a_dot_inside"],"text":null,"texts":null,"category":"Symbols","sort_order":107,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ELECTRIC LIGHT BULB","unified":"1F4A1","variations":[],"docomo":"E6FB","au":"E476","softbank":"E10F","google":"FEB56","image":"1f4a1.png","sheet_x":17,"sheet_y":13,"short_name":"bulb","short_names":["bulb"],"text":null,"texts":null,"category":"Objects","sort_order":41,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ANGER SYMBOL","unified":"1F4A2","variations":[],"docomo":"E6FC","au":"E4E5","softbank":"E334","google":"FEB57","image":"1f4a2.png","sheet_x":17,"sheet_y":14,"short_name":"anger","short_names":["anger"],"text":null,"texts":null,"category":"Symbols","sort_order":76,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BOMB","unified":"1F4A3","variations":[],"docomo":"E6FE","au":"E47A","softbank":"E311","google":"FEB58","image":"1f4a3.png","sheet_x":17,"sheet_y":15,"short_name":"bomb","short_names":["bomb"],"text":null,"texts":null,"category":"Objects","sort_order":64,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SLEEPING SYMBOL","unified":"1F4A4","variations":[],"docomo":"E701","au":"E475","softbank":"E13C","google":"FEB59","image":"1f4a4.png","sheet_x":17,"sheet_y":16,"short_name":"zzz","short_names":["zzz"],"text":null,"texts":null,"category":"Symbols","sort_order":110,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COLLISION SYMBOL","unified":"1F4A5","variations":[],"docomo":"E705","au":"E5B0","softbank":null,"google":"FEB5A","image":"1f4a5.png","sheet_x":17,"sheet_y":17,"short_name":"boom","short_names":["boom","collision"],"text":null,"texts":null,"category":"Nature","sort_order":136,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPLASHING SWEAT SYMBOL","unified":"1F4A6","variations":[],"docomo":"E706","au":"E5B1","softbank":"E331","google":"FEB5B","image":"1f4a6.png","sheet_x":17,"sheet_y":18,"short_name":"sweat_drops","short_names":["sweat_drops"],"text":null,"texts":null,"category":"Nature","sort_order":158,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DROPLET","unified":"1F4A7","variations":[],"docomo":"E707","au":"E4E6","softbank":"E331","google":"FEB5C","image":"1f4a7.png","sheet_x":17,"sheet_y":19,"short_name":"droplet","short_names":["droplet"],"text":null,"texts":null,"category":"Nature","sort_order":157,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DASH SYMBOL","unified":"1F4A8","variations":[],"docomo":"E708","au":"E4F4","softbank":"E330","google":"FEB5D","image":"1f4a8.png","sheet_x":17,"sheet_y":20,"short_name":"dash","short_names":["dash"],"text":null,"texts":null,"category":"Nature","sort_order":153,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PILE OF POO","unified":"1F4A9","variations":[],"docomo":null,"au":"E4F5","softbank":"E05A","google":"FE4F4","image":"1f4a9.png","sheet_x":17,"sheet_y":21,"short_name":"hankey","short_names":["hankey","poop","shit"],"text":null,"texts":null,"category":"People","sort_order":80,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FLEXED BICEPS","unified":"1F4AA","variations":[],"docomo":null,"au":"E4E9","softbank":"E14C","google":"FEB5E","image":"1f4aa.png","sheet_x":17,"sheet_y":22,"short_name":"muscle","short_names":["muscle"],"text":null,"texts":null,"category":"People","sort_order":123,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F4AA-1F3FB","image":"1f4aa-1f3fb.png","sheet_x":17,"sheet_y":23,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F4AA-1F3FC","image":"1f4aa-1f3fc.png","sheet_x":17,"sheet_y":24,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F4AA-1F3FD","image":"1f4aa-1f3fd.png","sheet_x":17,"sheet_y":25,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F4AA-1F3FE","image":"1f4aa-1f3fe.png","sheet_x":17,"sheet_y":26,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F4AA-1F3FF","image":"1f4aa-1f3ff.png","sheet_x":17,"sheet_y":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"DIZZY SYMBOL","unified":"1F4AB","variations":[],"docomo":null,"au":"EB5C","softbank":"E407","google":"FEB5F","image":"1f4ab.png","sheet_x":17,"sheet_y":28,"short_name":"dizzy","short_names":["dizzy"],"text":null,"texts":null,"category":"Nature","sort_order":130,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPEECH BALLOON","unified":"1F4AC","variations":[],"docomo":null,"au":"E4FD","softbank":null,"google":"FE532","image":"1f4ac.png","sheet_x":17,"sheet_y":29,"short_name":"speech_balloon","short_names":["speech_balloon"],"text":null,"texts":null,"category":"Symbols","sort_order":239,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"THOUGHT BALLOON","unified":"1F4AD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4ad.png","sheet_x":17,"sheet_y":30,"short_name":"thought_balloon","short_names":["thought_balloon"],"text":null,"texts":null,"category":"Symbols","sort_order":241,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE FLOWER","unified":"1F4AE","variations":[],"docomo":null,"au":"E4F0","softbank":null,"google":"FEB7A","image":"1f4ae.png","sheet_x":17,"sheet_y":31,"short_name":"white_flower","short_names":["white_flower"],"text":null,"texts":null,"category":"Symbols","sort_order":55,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HUNDRED POINTS SYMBOL","unified":"1F4AF","variations":[],"docomo":null,"au":"E4F2","softbank":null,"google":"FEB7B","image":"1f4af.png","sheet_x":17,"sheet_y":32,"short_name":"100","short_names":["100"],"text":null,"texts":null,"category":"Symbols","sort_order":75,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MONEY BAG","unified":"1F4B0","variations":[],"docomo":"E715","au":"E4C7","softbank":"E12F","google":"FE4DD","image":"1f4b0.png","sheet_x":17,"sheet_y":33,"short_name":"moneybag","short_names":["moneybag"],"text":null,"texts":null,"category":"Objects","sort_order":51,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CURRENCY EXCHANGE","unified":"1F4B1","variations":[],"docomo":null,"au":null,"softbank":"E149","google":"FE4DE","image":"1f4b1.png","sheet_x":17,"sheet_y":34,"short_name":"currency_exchange","short_names":["currency_exchange"],"text":null,"texts":null,"category":"Symbols","sort_order":195,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAVY DOLLAR SIGN","unified":"1F4B2","variations":[],"docomo":"E715","au":"E579","softbank":"E12F","google":"FE4E0","image":"1f4b2.png","sheet_x":17,"sheet_y":35,"short_name":"heavy_dollar_sign","short_names":["heavy_dollar_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":194,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CREDIT CARD","unified":"1F4B3","variations":[],"docomo":null,"au":"E57C","softbank":null,"google":"FE4E1","image":"1f4b3.png","sheet_x":17,"sheet_y":36,"short_name":"credit_card","short_names":["credit_card"],"text":null,"texts":null,"category":"Objects","sort_order":52,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BANKNOTE WITH YEN SIGN","unified":"1F4B4","variations":[],"docomo":"E6D6","au":"E57D","softbank":null,"google":"FE4E2","image":"1f4b4.png","sheet_x":17,"sheet_y":37,"short_name":"yen","short_names":["yen"],"text":null,"texts":null,"category":"Objects","sort_order":48,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BANKNOTE WITH DOLLAR SIGN","unified":"1F4B5","variations":[],"docomo":"E715","au":"E585","softbank":"E12F","google":"FE4E3","image":"1f4b5.png","sheet_x":17,"sheet_y":38,"short_name":"dollar","short_names":["dollar"],"text":null,"texts":null,"category":"Objects","sort_order":47,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BANKNOTE WITH EURO SIGN","unified":"1F4B6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4b6.png","sheet_x":17,"sheet_y":39,"short_name":"euro","short_names":["euro"],"text":null,"texts":null,"category":"Objects","sort_order":49,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BANKNOTE WITH POUND SIGN","unified":"1F4B7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4b7.png","sheet_x":17,"sheet_y":40,"short_name":"pound","short_names":["pound"],"text":null,"texts":null,"category":"Objects","sort_order":50,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MONEY WITH WINGS","unified":"1F4B8","variations":[],"docomo":null,"au":"EB5B","softbank":null,"google":"FE4E4","image":"1f4b8.png","sheet_x":17,"sheet_y":41,"short_name":"money_with_wings","short_names":["money_with_wings"],"text":null,"texts":null,"category":"Objects","sort_order":46,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHART WITH UPWARDS TREND AND YEN SIGN","unified":"1F4B9","variations":[],"docomo":null,"au":"E5DC","softbank":"E14A","google":"FE4DF","image":"1f4b9.png","sheet_x":17,"sheet_y":42,"short_name":"chart","short_names":["chart"],"text":null,"texts":null,"category":"Symbols","sort_order":102,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SEAT","unified":"1F4BA","variations":[],"docomo":"E6B2","au":null,"softbank":"E11F","google":"FE537","image":"1f4ba.png","sheet_x":17,"sheet_y":43,"short_name":"seat","short_names":["seat"],"text":null,"texts":null,"category":"Places","sort_order":45,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PERSONAL COMPUTER","unified":"1F4BB","variations":[],"docomo":"E716","au":"E5B8","softbank":"E00C","google":"FE538","image":"1f4bb.png","sheet_x":17,"sheet_y":44,"short_name":"computer","short_names":["computer"],"text":null,"texts":null,"category":"Objects","sort_order":4,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BRIEFCASE","unified":"1F4BC","variations":[],"docomo":"E682","au":"E5CE","softbank":"E11E","google":"FE53B","image":"1f4bc.png","sheet_x":17,"sheet_y":45,"short_name":"briefcase","short_names":["briefcase"],"text":null,"texts":null,"category":"People","sort_order":289,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MINIDISC","unified":"1F4BD","variations":[],"docomo":null,"au":"E582","softbank":"E316","google":"FE53C","image":"1f4bd.png","sheet_x":17,"sheet_y":46,"short_name":"minidisc","short_names":["minidisc"],"text":null,"texts":null,"category":"Objects","sort_order":12,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FLOPPY DISK","unified":"1F4BE","variations":[],"docomo":null,"au":"E562","softbank":"E316","google":"FE53D","image":"1f4be.png","sheet_x":17,"sheet_y":47,"short_name":"floppy_disk","short_names":["floppy_disk"],"text":null,"texts":null,"category":"Objects","sort_order":13,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OPTICAL DISC","unified":"1F4BF","variations":[],"docomo":"E68C","au":"E50C","softbank":"E126","google":"FE81D","image":"1f4bf.png","sheet_x":17,"sheet_y":48,"short_name":"cd","short_names":["cd"],"text":null,"texts":null,"category":"Objects","sort_order":14,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DVD","unified":"1F4C0","variations":[],"docomo":"E68C","au":"E50C","softbank":"E127","google":"FE81E","image":"1f4c0.png","sheet_x":18,"sheet_y":0,"short_name":"dvd","short_names":["dvd"],"text":null,"texts":null,"category":"Objects","sort_order":15,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FILE FOLDER","unified":"1F4C1","variations":[],"docomo":null,"au":"E58F","softbank":null,"google":"FE543","image":"1f4c1.png","sheet_x":18,"sheet_y":1,"short_name":"file_folder","short_names":["file_folder"],"text":null,"texts":null,"category":"Objects","sort_order":138,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OPEN FILE FOLDER","unified":"1F4C2","variations":[],"docomo":null,"au":"E590","softbank":null,"google":"FE544","image":"1f4c2.png","sheet_x":18,"sheet_y":2,"short_name":"open_file_folder","short_names":["open_file_folder"],"text":null,"texts":null,"category":"Objects","sort_order":139,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PAGE WITH CURL","unified":"1F4C3","variations":[],"docomo":"E689","au":"E561","softbank":"E301","google":"FE540","image":"1f4c3.png","sheet_x":18,"sheet_y":3,"short_name":"page_with_curl","short_names":["page_with_curl"],"text":null,"texts":null,"category":"Objects","sort_order":123,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PAGE FACING UP","unified":"1F4C4","variations":[],"docomo":"E689","au":"E569","softbank":"E301","google":"FE541","image":"1f4c4.png","sheet_x":18,"sheet_y":4,"short_name":"page_facing_up","short_names":["page_facing_up"],"text":null,"texts":null,"category":"Objects","sort_order":124,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CALENDAR","unified":"1F4C5","variations":[],"docomo":null,"au":"E563","softbank":null,"google":"FE542","image":"1f4c5.png","sheet_x":18,"sheet_y":5,"short_name":"date","short_names":["date"],"text":null,"texts":null,"category":"Objects","sort_order":132,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TEAR-OFF CALENDAR","unified":"1F4C6","variations":[],"docomo":null,"au":"E56A","softbank":null,"google":"FE549","image":"1f4c6.png","sheet_x":18,"sheet_y":6,"short_name":"calendar","short_names":["calendar"],"text":null,"texts":null,"category":"Objects","sort_order":131,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CARD INDEX","unified":"1F4C7","variations":[],"docomo":"E683","au":"E56C","softbank":"E148","google":"FE54D","image":"1f4c7.png","sheet_x":18,"sheet_y":7,"short_name":"card_index","short_names":["card_index"],"text":null,"texts":null,"category":"Objects","sort_order":133,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHART WITH UPWARDS TREND","unified":"1F4C8","variations":[],"docomo":null,"au":"E575","softbank":"E14A","google":"FE54B","image":"1f4c8.png","sheet_x":18,"sheet_y":8,"short_name":"chart_with_upwards_trend","short_names":["chart_with_upwards_trend"],"text":null,"texts":null,"category":"Objects","sort_order":127,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHART WITH DOWNWARDS TREND","unified":"1F4C9","variations":[],"docomo":null,"au":"E576","softbank":null,"google":"FE54C","image":"1f4c9.png","sheet_x":18,"sheet_y":9,"short_name":"chart_with_downwards_trend","short_names":["chart_with_downwards_trend"],"text":null,"texts":null,"category":"Objects","sort_order":128,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BAR CHART","unified":"1F4CA","variations":[],"docomo":null,"au":"E574","softbank":"E14A","google":"FE54A","image":"1f4ca.png","sheet_x":18,"sheet_y":10,"short_name":"bar_chart","short_names":["bar_chart"],"text":null,"texts":null,"category":"Objects","sort_order":126,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLIPBOARD","unified":"1F4CB","variations":[],"docomo":"E689","au":"E564","softbank":"E301","google":"FE548","image":"1f4cb.png","sheet_x":18,"sheet_y":11,"short_name":"clipboard","short_names":["clipboard"],"text":null,"texts":null,"category":"Objects","sort_order":137,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PUSHPIN","unified":"1F4CC","variations":[],"docomo":null,"au":"E56D","softbank":null,"google":"FE54E","image":"1f4cc.png","sheet_x":18,"sheet_y":12,"short_name":"pushpin","short_names":["pushpin"],"text":null,"texts":null,"category":"Objects","sort_order":158,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ROUND PUSHPIN","unified":"1F4CD","variations":[],"docomo":null,"au":"E560","softbank":null,"google":"FE53F","image":"1f4cd.png","sheet_x":18,"sheet_y":13,"short_name":"round_pushpin","short_names":["round_pushpin"],"text":null,"texts":null,"category":"Objects","sort_order":159,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PAPERCLIP","unified":"1F4CE","variations":[],"docomo":"E730","au":"E4A0","softbank":null,"google":"FE53A","image":"1f4ce.png","sheet_x":18,"sheet_y":14,"short_name":"paperclip","short_names":["paperclip"],"text":null,"texts":null,"category":"Objects","sort_order":154,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"STRAIGHT RULER","unified":"1F4CF","variations":[],"docomo":null,"au":"E570","softbank":null,"google":"FE550","image":"1f4cf.png","sheet_x":18,"sheet_y":15,"short_name":"straight_ruler","short_names":["straight_ruler"],"text":null,"texts":null,"category":"Objects","sort_order":157,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRIANGULAR RULER","unified":"1F4D0","variations":[],"docomo":null,"au":"E4A2","softbank":null,"google":"FE551","image":"1f4d0.png","sheet_x":18,"sheet_y":16,"short_name":"triangular_ruler","short_names":["triangular_ruler"],"text":null,"texts":null,"category":"Objects","sort_order":156,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BOOKMARK TABS","unified":"1F4D1","variations":[],"docomo":"E689","au":"EB0B","softbank":"E301","google":"FE552","image":"1f4d1.png","sheet_x":18,"sheet_y":17,"short_name":"bookmark_tabs","short_names":["bookmark_tabs"],"text":null,"texts":null,"category":"Objects","sort_order":125,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEDGER","unified":"1F4D2","variations":[],"docomo":"E683","au":"E56E","softbank":"E148","google":"FE54F","image":"1f4d2.png","sheet_x":18,"sheet_y":18,"short_name":"ledger","short_names":["ledger"],"text":null,"texts":null,"category":"Objects","sort_order":145,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NOTEBOOK","unified":"1F4D3","variations":[],"docomo":"E683","au":"E56B","softbank":"E148","google":"FE545","image":"1f4d3.png","sheet_x":18,"sheet_y":19,"short_name":"notebook","short_names":["notebook"],"text":null,"texts":null,"category":"Objects","sort_order":143,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NOTEBOOK WITH DECORATIVE COVER","unified":"1F4D4","variations":[],"docomo":"E683","au":"E49D","softbank":"E148","google":"FE547","image":"1f4d4.png","sheet_x":18,"sheet_y":20,"short_name":"notebook_with_decorative_cover","short_names":["notebook_with_decorative_cover"],"text":null,"texts":null,"category":"Objects","sort_order":144,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOSED BOOK","unified":"1F4D5","variations":[],"docomo":"E683","au":"E568","softbank":"E148","google":"FE502","image":"1f4d5.png","sheet_x":18,"sheet_y":21,"short_name":"closed_book","short_names":["closed_book"],"text":null,"texts":null,"category":"Objects","sort_order":146,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OPEN BOOK","unified":"1F4D6","variations":[],"docomo":"E683","au":"E49F","softbank":"E148","google":"FE546","image":"1f4d6.png","sheet_x":18,"sheet_y":22,"short_name":"book","short_names":["book","open_book"],"text":null,"texts":null,"category":"Objects","sort_order":151,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GREEN BOOK","unified":"1F4D7","variations":[],"docomo":"E683","au":"E565","softbank":"E148","google":"FE4FF","image":"1f4d7.png","sheet_x":18,"sheet_y":23,"short_name":"green_book","short_names":["green_book"],"text":null,"texts":null,"category":"Objects","sort_order":147,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLUE BOOK","unified":"1F4D8","variations":[],"docomo":"E683","au":"E566","softbank":"E148","google":"FE500","image":"1f4d8.png","sheet_x":18,"sheet_y":24,"short_name":"blue_book","short_names":["blue_book"],"text":null,"texts":null,"category":"Objects","sort_order":148,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ORANGE BOOK","unified":"1F4D9","variations":[],"docomo":"E683","au":"E567","softbank":"E148","google":"FE501","image":"1f4d9.png","sheet_x":18,"sheet_y":25,"short_name":"orange_book","short_names":["orange_book"],"text":null,"texts":null,"category":"Objects","sort_order":149,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BOOKS","unified":"1F4DA","variations":[],"docomo":"E683","au":"E56F","softbank":"E148","google":"FE503","image":"1f4da.png","sheet_x":18,"sheet_y":26,"short_name":"books","short_names":["books"],"text":null,"texts":null,"category":"Objects","sort_order":150,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NAME BADGE","unified":"1F4DB","variations":[],"docomo":null,"au":"E51D","softbank":null,"google":"FE504","image":"1f4db.png","sheet_x":18,"sheet_y":27,"short_name":"name_badge","short_names":["name_badge"],"text":null,"texts":null,"category":"Symbols","sort_order":73,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SCROLL","unified":"1F4DC","variations":[],"docomo":"E70A","au":"E55F","softbank":null,"google":"FE4FD","image":"1f4dc.png","sheet_x":18,"sheet_y":28,"short_name":"scroll","short_names":["scroll"],"text":null,"texts":null,"category":"Objects","sort_order":122,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MEMO","unified":"1F4DD","variations":[],"docomo":"E689","au":"EA92","softbank":"E301","google":"FE527","image":"1f4dd.png","sheet_x":18,"sheet_y":29,"short_name":"memo","short_names":["memo","pencil"],"text":null,"texts":null,"category":"Objects","sort_order":166,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TELEPHONE RECEIVER","unified":"1F4DE","variations":[],"docomo":"E687","au":"E51E","softbank":"E009","google":"FE524","image":"1f4de.png","sheet_x":18,"sheet_y":30,"short_name":"telephone_receiver","short_names":["telephone_receiver"],"text":null,"texts":null,"category":"Objects","sort_order":23,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PAGER","unified":"1F4DF","variations":[],"docomo":"E65A","au":"E59B","softbank":null,"google":"FE522","image":"1f4df.png","sheet_x":18,"sheet_y":31,"short_name":"pager","short_names":["pager"],"text":null,"texts":null,"category":"Objects","sort_order":25,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FAX MACHINE","unified":"1F4E0","variations":[],"docomo":"E6D0","au":"E520","softbank":"E00B","google":"FE528","image":"1f4e0.png","sheet_x":18,"sheet_y":32,"short_name":"fax","short_names":["fax"],"text":null,"texts":null,"category":"Objects","sort_order":26,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SATELLITE ANTENNA","unified":"1F4E1","variations":[],"docomo":null,"au":"E4A8","softbank":"E14B","google":"FE531","image":"1f4e1.png","sheet_x":18,"sheet_y":33,"short_name":"satellite_antenna","short_names":["satellite_antenna"],"text":null,"texts":null,"category":"Objects","sort_order":38,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PUBLIC ADDRESS LOUDSPEAKER","unified":"1F4E2","variations":[],"docomo":null,"au":"E511","softbank":"E142","google":"FE52F","image":"1f4e2.png","sheet_x":18,"sheet_y":34,"short_name":"loudspeaker","short_names":["loudspeaker"],"text":null,"texts":null,"category":"Symbols","sort_order":237,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHEERING MEGAPHONE","unified":"1F4E3","variations":[],"docomo":null,"au":"E511","softbank":"E317","google":"FE530","image":"1f4e3.png","sheet_x":18,"sheet_y":35,"short_name":"mega","short_names":["mega"],"text":null,"texts":null,"category":"Symbols","sort_order":236,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OUTBOX TRAY","unified":"1F4E4","variations":[],"docomo":null,"au":"E592","softbank":null,"google":"FE533","image":"1f4e4.png","sheet_x":18,"sheet_y":36,"short_name":"outbox_tray","short_names":["outbox_tray"],"text":null,"texts":null,"category":"Objects","sort_order":113,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INBOX TRAY","unified":"1F4E5","variations":[],"docomo":null,"au":"E593","softbank":null,"google":"FE534","image":"1f4e5.png","sheet_x":18,"sheet_y":37,"short_name":"inbox_tray","short_names":["inbox_tray"],"text":null,"texts":null,"category":"Objects","sort_order":112,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PACKAGE","unified":"1F4E6","variations":[],"docomo":"E685","au":"E51F","softbank":"E112","google":"FE535","image":"1f4e6.png","sheet_x":18,"sheet_y":38,"short_name":"package","short_names":["package"],"text":null,"texts":null,"category":"Objects","sort_order":114,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"E-MAIL SYMBOL","unified":"1F4E7","variations":[],"docomo":"E6D3","au":"EB71","softbank":"E103","google":"FEB92","image":"1f4e7.png","sheet_x":18,"sheet_y":39,"short_name":"e-mail","short_names":["e-mail"],"text":null,"texts":null,"category":"Objects","sort_order":110,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INCOMING ENVELOPE","unified":"1F4E8","variations":[],"docomo":"E6CF","au":"E591","softbank":"E103","google":"FE52A","image":"1f4e8.png","sheet_x":18,"sheet_y":40,"short_name":"incoming_envelope","short_names":["incoming_envelope"],"text":null,"texts":null,"category":"Objects","sort_order":109,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ENVELOPE WITH DOWNWARDS ARROW ABOVE","unified":"1F4E9","variations":[],"docomo":"E6CF","au":"EB62","softbank":"E103","google":"FE52B","image":"1f4e9.png","sheet_x":18,"sheet_y":41,"short_name":"envelope_with_arrow","short_names":["envelope_with_arrow"],"text":null,"texts":null,"category":"Objects","sort_order":108,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOSED MAILBOX WITH LOWERED FLAG","unified":"1F4EA","variations":[],"docomo":"E665","au":"E51B","softbank":"E101","google":"FE52C","image":"1f4ea.png","sheet_x":18,"sheet_y":42,"short_name":"mailbox_closed","short_names":["mailbox_closed"],"text":null,"texts":null,"category":"Objects","sort_order":116,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOSED MAILBOX WITH RAISED FLAG","unified":"1F4EB","variations":[],"docomo":"E665","au":"EB0A","softbank":"E101","google":"FE52D","image":"1f4eb.png","sheet_x":18,"sheet_y":43,"short_name":"mailbox","short_names":["mailbox"],"text":null,"texts":null,"category":"Objects","sort_order":117,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OPEN MAILBOX WITH RAISED FLAG","unified":"1F4EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4ec.png","sheet_x":18,"sheet_y":44,"short_name":"mailbox_with_mail","short_names":["mailbox_with_mail"],"text":null,"texts":null,"category":"Objects","sort_order":118,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OPEN MAILBOX WITH LOWERED FLAG","unified":"1F4ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4ed.png","sheet_x":18,"sheet_y":45,"short_name":"mailbox_with_no_mail","short_names":["mailbox_with_no_mail"],"text":null,"texts":null,"category":"Objects","sort_order":119,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POSTBOX","unified":"1F4EE","variations":[],"docomo":"E665","au":"E51B","softbank":"E102","google":"FE52E","image":"1f4ee.png","sheet_x":18,"sheet_y":46,"short_name":"postbox","short_names":["postbox"],"text":null,"texts":null,"category":"Objects","sort_order":120,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POSTAL HORN","unified":"1F4EF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4ef.png","sheet_x":18,"sheet_y":47,"short_name":"postal_horn","short_names":["postal_horn"],"text":null,"texts":null,"category":"Objects","sort_order":121,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEWSPAPER","unified":"1F4F0","variations":[],"docomo":null,"au":"E58B","softbank":null,"google":"FE822","image":"1f4f0.png","sheet_x":18,"sheet_y":48,"short_name":"newspaper","short_names":["newspaper"],"text":null,"texts":null,"category":"Objects","sort_order":142,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOBILE PHONE","unified":"1F4F1","variations":[],"docomo":"E688","au":"E588","softbank":"E00A","google":"FE525","image":"1f4f1.png","sheet_x":19,"sheet_y":0,"short_name":"iphone","short_names":["iphone"],"text":null,"texts":null,"category":"Objects","sort_order":2,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT","unified":"1F4F2","variations":[],"docomo":"E6CE","au":"EB08","softbank":"E104","google":"FE526","image":"1f4f2.png","sheet_x":19,"sheet_y":1,"short_name":"calling","short_names":["calling"],"text":null,"texts":null,"category":"Objects","sort_order":3,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"VIBRATION MODE","unified":"1F4F3","variations":[],"docomo":null,"au":"EA90","softbank":"E250","google":"FE839","image":"1f4f3.png","sheet_x":19,"sheet_y":2,"short_name":"vibration_mode","short_names":["vibration_mode"],"text":null,"texts":null,"category":"Symbols","sort_order":47,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOBILE PHONE OFF","unified":"1F4F4","variations":[],"docomo":null,"au":"EA91","softbank":"E251","google":"FE83A","image":"1f4f4.png","sheet_x":19,"sheet_y":3,"short_name":"mobile_phone_off","short_names":["mobile_phone_off"],"text":null,"texts":null,"category":"Symbols","sort_order":46,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NO MOBILE PHONES","unified":"1F4F5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4f5.png","sheet_x":19,"sheet_y":4,"short_name":"no_mobile_phones","short_names":["no_mobile_phones"],"text":null,"texts":null,"category":"Symbols","sort_order":83,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ANTENNA WITH BARS","unified":"1F4F6","variations":[],"docomo":null,"au":"EA84","softbank":"E20B","google":"FE838","image":"1f4f6.png","sheet_x":19,"sheet_y":5,"short_name":"signal_strength","short_names":["signal_strength"],"text":null,"texts":null,"category":"Symbols","sort_order":127,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CAMERA","unified":"1F4F7","variations":[],"docomo":"E681","au":"E515","softbank":"E008","google":"FE4EF","image":"1f4f7.png","sheet_x":19,"sheet_y":6,"short_name":"camera","short_names":["camera"],"text":null,"texts":null,"category":"Objects","sort_order":17,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CAMERA WITH FLASH","unified":"1F4F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4f8.png","sheet_x":19,"sheet_y":7,"short_name":"camera_with_flash","short_names":["camera_with_flash"],"text":null,"texts":null,"category":"Objects","sort_order":18,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"VIDEO CAMERA","unified":"1F4F9","variations":[],"docomo":"E677","au":"E57E","softbank":"E03D","google":"FE4F9","image":"1f4f9.png","sheet_x":19,"sheet_y":8,"short_name":"video_camera","short_names":["video_camera"],"text":null,"texts":null,"category":"Objects","sort_order":19,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TELEVISION","unified":"1F4FA","variations":[],"docomo":"E68A","au":"E502","softbank":"E12A","google":"FE81C","image":"1f4fa.png","sheet_x":19,"sheet_y":9,"short_name":"tv","short_names":["tv"],"text":null,"texts":null,"category":"Objects","sort_order":27,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RADIO","unified":"1F4FB","variations":[],"docomo":null,"au":"E5B9","softbank":"E128","google":"FE81F","image":"1f4fb.png","sheet_x":19,"sheet_y":10,"short_name":"radio","short_names":["radio"],"text":null,"texts":null,"category":"Objects","sort_order":28,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"VIDEOCASSETTE","unified":"1F4FC","variations":[],"docomo":null,"au":"E580","softbank":"E129","google":"FE820","image":"1f4fc.png","sheet_x":19,"sheet_y":11,"short_name":"vhs","short_names":["vhs"],"text":null,"texts":null,"category":"Objects","sort_order":16,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FILM PROJECTOR","unified":"1F4FD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4fd.png","sheet_x":19,"sheet_y":12,"short_name":"film_projector","short_names":["film_projector"],"text":null,"texts":null,"category":"Objects","sort_order":21,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PRAYER BEADS","unified":"1F4FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f4ff.png","sheet_x":19,"sheet_y":13,"short_name":"prayer_beads","short_names":["prayer_beads"],"text":null,"texts":null,"category":"Objects","sort_order":74,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TWISTED RIGHTWARDS ARROWS","unified":"1F500","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f500.png","sheet_x":19,"sheet_y":14,"short_name":"twisted_rightwards_arrows","short_names":["twisted_rightwards_arrows"],"text":null,"texts":null,"category":"Symbols","sort_order":183,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS","unified":"1F501","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f501.png","sheet_x":19,"sheet_y":15,"short_name":"repeat","short_names":["repeat"],"text":null,"texts":null,"category":"Symbols","sort_order":184,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY","unified":"1F502","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f502.png","sheet_x":19,"sheet_y":16,"short_name":"repeat_one","short_names":["repeat_one"],"text":null,"texts":null,"category":"Symbols","sort_order":185,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS","unified":"1F503","variations":[],"docomo":"E735","au":"EB0D","softbank":null,"google":"FEB91","image":"1f503.png","sheet_x":19,"sheet_y":17,"short_name":"arrows_clockwise","short_names":["arrows_clockwise"],"text":null,"texts":null,"category":"Symbols","sort_order":187,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS","unified":"1F504","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f504.png","sheet_x":19,"sheet_y":18,"short_name":"arrows_counterclockwise","short_names":["arrows_counterclockwise"],"text":null,"texts":null,"category":"Symbols","sort_order":186,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LOW BRIGHTNESS SYMBOL","unified":"1F505","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f505.png","sheet_x":19,"sheet_y":19,"short_name":"low_brightness","short_names":["low_brightness"],"text":null,"texts":null,"category":"Symbols","sort_order":91,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HIGH BRIGHTNESS SYMBOL","unified":"1F506","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f506.png","sheet_x":19,"sheet_y":20,"short_name":"high_brightness","short_names":["high_brightness"],"text":null,"texts":null,"category":"Symbols","sort_order":92,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPEAKER WITH CANCELLATION STROKE","unified":"1F507","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f507.png","sheet_x":19,"sheet_y":21,"short_name":"mute","short_names":["mute"],"text":null,"texts":null,"category":"Symbols","sort_order":231,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPEAKER","unified":"1F508","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f508.png","sheet_x":19,"sheet_y":22,"short_name":"speaker","short_names":["speaker"],"text":null,"texts":null,"category":"Symbols","sort_order":230,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPEAKER WITH ONE SOUND WAVE","unified":"1F509","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f509.png","sheet_x":19,"sheet_y":23,"short_name":"sound","short_names":["sound"],"text":null,"texts":null,"category":"Symbols","sort_order":232,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPEAKER WITH THREE SOUND WAVES","unified":"1F50A","variations":[],"docomo":null,"au":"E511","softbank":"E141","google":"FE821","image":"1f50a.png","sheet_x":19,"sheet_y":24,"short_name":"loud_sound","short_names":["loud_sound"],"text":null,"texts":null,"category":"Symbols","sort_order":233,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BATTERY","unified":"1F50B","variations":[],"docomo":null,"au":"E584","softbank":null,"google":"FE4FC","image":"1f50b.png","sheet_x":19,"sheet_y":25,"short_name":"battery","short_names":["battery"],"text":null,"texts":null,"category":"Objects","sort_order":39,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ELECTRIC PLUG","unified":"1F50C","variations":[],"docomo":null,"au":"E589","softbank":null,"google":"FE4FE","image":"1f50c.png","sheet_x":19,"sheet_y":26,"short_name":"electric_plug","short_names":["electric_plug"],"text":null,"texts":null,"category":"Objects","sort_order":40,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEFT-POINTING MAGNIFYING GLASS","unified":"1F50D","variations":[],"docomo":"E6DC","au":"E518","softbank":"E114","google":"FEB85","image":"1f50d.png","sheet_x":19,"sheet_y":27,"short_name":"mag","short_names":["mag"],"text":null,"texts":null,"category":"Objects","sort_order":168,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RIGHT-POINTING MAGNIFYING GLASS","unified":"1F50E","variations":[],"docomo":"E6DC","au":"EB05","softbank":"E114","google":"FEB8D","image":"1f50e.png","sheet_x":19,"sheet_y":28,"short_name":"mag_right","short_names":["mag_right"],"text":null,"texts":null,"category":"Objects","sort_order":169,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LOCK WITH INK PEN","unified":"1F50F","variations":[],"docomo":"E6D9","au":"EB0C","softbank":"E144","google":"FEB90","image":"1f50f.png","sheet_x":19,"sheet_y":29,"short_name":"lock_with_ink_pen","short_names":["lock_with_ink_pen"],"text":null,"texts":null,"category":"Objects","sort_order":170,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOSED LOCK WITH KEY","unified":"1F510","variations":[],"docomo":"E6D9","au":"EAFC","softbank":"E144","google":"FEB8A","image":"1f510.png","sheet_x":19,"sheet_y":30,"short_name":"closed_lock_with_key","short_names":["closed_lock_with_key"],"text":null,"texts":null,"category":"Objects","sort_order":171,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KEY","unified":"1F511","variations":[],"docomo":"E6D9","au":"E519","softbank":"E03F","google":"FEB82","image":"1f511.png","sheet_x":19,"sheet_y":31,"short_name":"key","short_names":["key"],"text":null,"texts":null,"category":"Objects","sort_order":89,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LOCK","unified":"1F512","variations":[],"docomo":"E6D9","au":"E51C","softbank":"E144","google":"FEB86","image":"1f512.png","sheet_x":19,"sheet_y":32,"short_name":"lock","short_names":["lock"],"text":null,"texts":null,"category":"Objects","sort_order":172,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OPEN LOCK","unified":"1F513","variations":[],"docomo":"E6D9","au":"E51C","softbank":"E145","google":"FEB87","image":"1f513.png","sheet_x":19,"sheet_y":33,"short_name":"unlock","short_names":["unlock"],"text":null,"texts":null,"category":"Objects","sort_order":173,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BELL","unified":"1F514","variations":[],"docomo":"E713","au":"E512","softbank":"E325","google":"FE4F2","image":"1f514.png","sheet_x":19,"sheet_y":34,"short_name":"bell","short_names":["bell"],"text":null,"texts":null,"category":"Symbols","sort_order":234,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BELL WITH CANCELLATION STROKE","unified":"1F515","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f515.png","sheet_x":19,"sheet_y":35,"short_name":"no_bell","short_names":["no_bell"],"text":null,"texts":null,"category":"Symbols","sort_order":235,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BOOKMARK","unified":"1F516","variations":[],"docomo":null,"au":"EB07","softbank":null,"google":"FEB8F","image":"1f516.png","sheet_x":19,"sheet_y":36,"short_name":"bookmark","short_names":["bookmark"],"text":null,"texts":null,"category":"Objects","sort_order":152,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LINK SYMBOL","unified":"1F517","variations":[],"docomo":null,"au":"E58A","softbank":null,"google":"FEB4B","image":"1f517.png","sheet_x":19,"sheet_y":37,"short_name":"link","short_names":["link"],"text":null,"texts":null,"category":"Objects","sort_order":153,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RADIO BUTTON","unified":"1F518","variations":[],"docomo":null,"au":"EB04","softbank":null,"google":"FEB8C","image":"1f518.png","sheet_x":19,"sheet_y":38,"short_name":"radio_button","short_names":["radio_button"],"text":null,"texts":null,"category":"Symbols","sort_order":209,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BACK WITH LEFTWARDS ARROW ABOVE","unified":"1F519","variations":[],"docomo":null,"au":"EB06","softbank":"E235","google":"FEB8E","image":"1f519.png","sheet_x":19,"sheet_y":39,"short_name":"back","short_names":["back"],"text":null,"texts":null,"category":"Symbols","sort_order":203,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"END WITH LEFTWARDS ARROW ABOVE","unified":"1F51A","variations":[],"docomo":"E6B9","au":null,"softbank":null,"google":"FE01A","image":"1f51a.png","sheet_x":19,"sheet_y":40,"short_name":"end","short_names":["end"],"text":null,"texts":null,"category":"Symbols","sort_order":202,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE","unified":"1F51B","variations":[],"docomo":"E6B8","au":null,"softbank":null,"google":"FE019","image":"1f51b.png","sheet_x":19,"sheet_y":41,"short_name":"on","short_names":["on"],"text":null,"texts":null,"category":"Symbols","sort_order":204,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SOON WITH RIGHTWARDS ARROW ABOVE","unified":"1F51C","variations":[],"docomo":"E6B7","au":null,"softbank":null,"google":"FE018","image":"1f51c.png","sheet_x":19,"sheet_y":42,"short_name":"soon","short_names":["soon"],"text":null,"texts":null,"category":"Symbols","sort_order":206,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TOP WITH UPWARDS ARROW ABOVE","unified":"1F51D","variations":[],"docomo":null,"au":null,"softbank":"E24C","google":"FEB42","image":"1f51d.png","sheet_x":19,"sheet_y":43,"short_name":"top","short_names":["top"],"text":null,"texts":null,"category":"Symbols","sort_order":205,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NO ONE UNDER EIGHTEEN SYMBOL","unified":"1F51E","variations":[],"docomo":null,"au":"EA83","softbank":"E207","google":"FEB25","image":"1f51e.png","sheet_x":19,"sheet_y":44,"short_name":"underage","short_names":["underage"],"text":null,"texts":null,"category":"Symbols","sort_order":82,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KEYCAP TEN","unified":"1F51F","variations":[],"docomo":null,"au":"E52B","softbank":null,"google":"FE83B","image":"1f51f.png","sheet_x":19,"sheet_y":45,"short_name":"keycap_ten","short_names":["keycap_ten"],"text":null,"texts":null,"category":"Symbols","sort_order":150,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INPUT SYMBOL FOR LATIN CAPITAL LETTERS","unified":"1F520","variations":[],"docomo":null,"au":"EAFD","softbank":null,"google":"FEB7C","image":"1f520.png","sheet_x":19,"sheet_y":46,"short_name":"capital_abcd","short_names":["capital_abcd"],"text":null,"texts":null,"category":"Symbols","sort_order":133,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INPUT SYMBOL FOR LATIN SMALL LETTERS","unified":"1F521","variations":[],"docomo":null,"au":"EAFE","softbank":null,"google":"FEB7D","image":"1f521.png","sheet_x":19,"sheet_y":47,"short_name":"abcd","short_names":["abcd"],"text":null,"texts":null,"category":"Symbols","sort_order":132,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INPUT SYMBOL FOR NUMBERS","unified":"1F522","variations":[],"docomo":null,"au":"EAFF","softbank":null,"google":"FEB7E","image":"1f522.png","sheet_x":19,"sheet_y":48,"short_name":"1234","short_names":["1234"],"text":null,"texts":null,"category":"Symbols","sort_order":151,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INPUT SYMBOL FOR SYMBOLS","unified":"1F523","variations":[],"docomo":null,"au":"EB00","softbank":null,"google":"FEB7F","image":"1f523.png","sheet_x":20,"sheet_y":0,"short_name":"symbols","short_names":["symbols"],"text":null,"texts":null,"category":"Symbols","sort_order":129,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"INPUT SYMBOL FOR LATIN LETTERS","unified":"1F524","variations":[],"docomo":null,"au":"EB55","softbank":null,"google":"FEB80","image":"1f524.png","sheet_x":20,"sheet_y":1,"short_name":"abc","short_names":["abc"],"text":null,"texts":null,"category":"Symbols","sort_order":131,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FIRE","unified":"1F525","variations":[],"docomo":null,"au":"E47B","softbank":"E11D","google":"FE4F6","image":"1f525.png","sheet_x":20,"sheet_y":2,"short_name":"fire","short_names":["fire"],"text":null,"texts":null,"category":"Nature","sort_order":135,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ELECTRIC TORCH","unified":"1F526","variations":[],"docomo":"E6FB","au":"E583","softbank":null,"google":"FE4FB","image":"1f526.png","sheet_x":20,"sheet_y":3,"short_name":"flashlight","short_names":["flashlight"],"text":null,"texts":null,"category":"Objects","sort_order":42,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WRENCH","unified":"1F527","variations":[],"docomo":"E718","au":"E587","softbank":null,"google":"FE4C9","image":"1f527.png","sheet_x":20,"sheet_y":4,"short_name":"wrench","short_names":["wrench"],"text":null,"texts":null,"category":"Objects","sort_order":55,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HAMMER","unified":"1F528","variations":[],"docomo":null,"au":"E5CB","softbank":"E116","google":"FE4CA","image":"1f528.png","sheet_x":20,"sheet_y":5,"short_name":"hammer","short_names":["hammer"],"text":null,"texts":null,"category":"Objects","sort_order":56,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NUT AND BOLT","unified":"1F529","variations":[],"docomo":null,"au":"E581","softbank":null,"google":"FE4CB","image":"1f529.png","sheet_x":20,"sheet_y":6,"short_name":"nut_and_bolt","short_names":["nut_and_bolt"],"text":null,"texts":null,"category":"Objects","sort_order":60,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HOCHO","unified":"1F52A","variations":[],"docomo":null,"au":"E57F","softbank":null,"google":"FE4FA","image":"1f52a.png","sheet_x":20,"sheet_y":7,"short_name":"hocho","short_names":["hocho","knife"],"text":null,"texts":null,"category":"Objects","sort_order":65,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PISTOL","unified":"1F52B","variations":[],"docomo":null,"au":"E50A","softbank":"E113","google":"FE4F5","image":"1f52b.png","sheet_x":20,"sheet_y":8,"short_name":"gun","short_names":["gun"],"text":null,"texts":null,"category":"Objects","sort_order":63,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MICROSCOPE","unified":"1F52C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f52c.png","sheet_x":20,"sheet_y":9,"short_name":"microscope","short_names":["microscope"],"text":null,"texts":null,"category":"Objects","sort_order":78,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TELESCOPE","unified":"1F52D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f52d.png","sheet_x":20,"sheet_y":10,"short_name":"telescope","short_names":["telescope"],"text":null,"texts":null,"category":"Objects","sort_order":77,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CRYSTAL BALL","unified":"1F52E","variations":[],"docomo":null,"au":"EA8F","softbank":"E23E","google":"FE4F7","image":"1f52e.png","sheet_x":20,"sheet_y":11,"short_name":"crystal_ball","short_names":["crystal_ball"],"text":null,"texts":null,"category":"Objects","sort_order":73,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SIX POINTED STAR WITH MIDDLE DOT","unified":"1F52F","variations":[],"docomo":null,"au":"EA8F","softbank":"E23E","google":"FE4F8","image":"1f52f.png","sheet_x":20,"sheet_y":12,"short_name":"six_pointed_star","short_names":["six_pointed_star"],"text":null,"texts":null,"category":"Symbols","sort_order":23,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"JAPANESE SYMBOL FOR BEGINNER","unified":"1F530","variations":[],"docomo":null,"au":"E480","softbank":"E209","google":"FE044","image":"1f530.png","sheet_x":20,"sheet_y":13,"short_name":"beginner","short_names":["beginner"],"text":null,"texts":null,"category":"Symbols","sort_order":98,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRIDENT EMBLEM","unified":"1F531","variations":[],"docomo":"E71A","au":"E5C9","softbank":"E031","google":"FE4D2","image":"1f531.png","sheet_x":20,"sheet_y":14,"short_name":"trident","short_names":["trident"],"text":null,"texts":null,"category":"Symbols","sort_order":96,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BLACK SQUARE BUTTON","unified":"1F532","variations":[],"docomo":"E69C","au":"E54B","softbank":"E21A","google":"FEB64","image":"1f532.png","sheet_x":20,"sheet_y":15,"short_name":"black_square_button","short_names":["black_square_button"],"text":null,"texts":null,"category":"Symbols","sort_order":221,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WHITE SQUARE BUTTON","unified":"1F533","variations":[],"docomo":"E69C","au":"E54B","softbank":"E21B","google":"FEB67","image":"1f533.png","sheet_x":20,"sheet_y":16,"short_name":"white_square_button","short_names":["white_square_button"],"text":null,"texts":null,"category":"Symbols","sort_order":220,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LARGE RED CIRCLE","unified":"1F534","variations":[],"docomo":"E69C","au":"E54A","softbank":"E219","google":"FEB63","image":"1f534.png","sheet_x":20,"sheet_y":17,"short_name":"red_circle","short_names":["red_circle"],"text":null,"texts":null,"category":"Symbols","sort_order":212,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LARGE BLUE CIRCLE","unified":"1F535","variations":[],"docomo":"E69C","au":"E54B","softbank":"E21A","google":"FEB64","image":"1f535.png","sheet_x":20,"sheet_y":18,"short_name":"large_blue_circle","short_names":["large_blue_circle"],"text":null,"texts":null,"category":"Symbols","sort_order":213,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LARGE ORANGE DIAMOND","unified":"1F536","variations":[],"docomo":null,"au":"E546","softbank":"E21B","google":"FEB73","image":"1f536.png","sheet_x":20,"sheet_y":19,"short_name":"large_orange_diamond","short_names":["large_orange_diamond"],"text":null,"texts":null,"category":"Symbols","sort_order":218,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LARGE BLUE DIAMOND","unified":"1F537","variations":[],"docomo":null,"au":"E547","softbank":"E21B","google":"FEB74","image":"1f537.png","sheet_x":20,"sheet_y":20,"short_name":"large_blue_diamond","short_names":["large_blue_diamond"],"text":null,"texts":null,"category":"Symbols","sort_order":219,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMALL ORANGE DIAMOND","unified":"1F538","variations":[],"docomo":null,"au":"E536","softbank":"E21B","google":"FEB75","image":"1f538.png","sheet_x":20,"sheet_y":21,"short_name":"small_orange_diamond","short_names":["small_orange_diamond"],"text":null,"texts":null,"category":"Symbols","sort_order":216,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMALL BLUE DIAMOND","unified":"1F539","variations":[],"docomo":null,"au":"E537","softbank":"E21B","google":"FEB76","image":"1f539.png","sheet_x":20,"sheet_y":22,"short_name":"small_blue_diamond","short_names":["small_blue_diamond"],"text":null,"texts":null,"category":"Symbols","sort_order":217,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"UP-POINTING RED TRIANGLE","unified":"1F53A","variations":[],"docomo":null,"au":"E55A","softbank":null,"google":"FEB78","image":"1f53a.png","sheet_x":20,"sheet_y":23,"short_name":"small_red_triangle","short_names":["small_red_triangle"],"text":null,"texts":null,"category":"Symbols","sort_order":214,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOWN-POINTING RED TRIANGLE","unified":"1F53B","variations":[],"docomo":null,"au":"E55B","softbank":null,"google":"FEB79","image":"1f53b.png","sheet_x":20,"sheet_y":24,"short_name":"small_red_triangle_down","short_names":["small_red_triangle_down"],"text":null,"texts":null,"category":"Symbols","sort_order":215,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"UP-POINTING SMALL RED TRIANGLE","unified":"1F53C","variations":[],"docomo":null,"au":"E543","softbank":null,"google":"FEB01","image":"1f53c.png","sheet_x":20,"sheet_y":25,"short_name":"arrow_up_small","short_names":["arrow_up_small"],"text":null,"texts":null,"category":"Symbols","sort_order":167,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOWN-POINTING SMALL RED TRIANGLE","unified":"1F53D","variations":[],"docomo":null,"au":"E542","softbank":null,"google":"FEB00","image":"1f53d.png","sheet_x":20,"sheet_y":26,"short_name":"arrow_down_small","short_names":["arrow_down_small"],"text":null,"texts":null,"category":"Symbols","sort_order":168,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"OM SYMBOL","unified":"1F549","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f549.png","sheet_x":20,"sheet_y":27,"short_name":"om_symbol","short_names":["om_symbol"],"text":null,"texts":null,"category":"Symbols","sort_order":20,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DOVE OF PEACE","unified":"1F54A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f54a.png","sheet_x":20,"sheet_y":28,"short_name":"dove_of_peace","short_names":["dove_of_peace"],"text":null,"texts":null,"category":"Nature","sort_order":81,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"KAABA","unified":"1F54B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f54b.png","sheet_x":20,"sheet_y":29,"short_name":"kaaba","short_names":["kaaba"],"text":null,"texts":null,"category":"Places","sort_order":103,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MOSQUE","unified":"1F54C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f54c.png","sheet_x":20,"sheet_y":30,"short_name":"mosque","short_names":["mosque"],"text":null,"texts":null,"category":"Places","sort_order":101,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SYNAGOGUE","unified":"1F54D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f54d.png","sheet_x":20,"sheet_y":31,"short_name":"synagogue","short_names":["synagogue"],"text":null,"texts":null,"category":"Places","sort_order":102,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MENORAH WITH NINE BRANCHES","unified":"1F54E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f54e.png","sheet_x":20,"sheet_y":32,"short_name":"menorah_with_nine_branches","short_names":["menorah_with_nine_branches"],"text":null,"texts":null,"category":"Symbols","sort_order":24,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CLOCK FACE ONE OCLOCK","unified":"1F550","variations":[],"docomo":"E6BA","au":"E594","softbank":"E024","google":"FE01E","image":"1f550.png","sheet_x":20,"sheet_y":33,"short_name":"clock1","short_names":["clock1"],"text":null,"texts":null,"category":"Symbols","sort_order":250,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE TWO OCLOCK","unified":"1F551","variations":[],"docomo":"E6BA","au":"E594","softbank":"E025","google":"FE01F","image":"1f551.png","sheet_x":20,"sheet_y":34,"short_name":"clock2","short_names":["clock2"],"text":null,"texts":null,"category":"Symbols","sort_order":251,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE THREE OCLOCK","unified":"1F552","variations":[],"docomo":"E6BA","au":"E594","softbank":"E026","google":"FE020","image":"1f552.png","sheet_x":20,"sheet_y":35,"short_name":"clock3","short_names":["clock3"],"text":null,"texts":null,"category":"Symbols","sort_order":252,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE FOUR OCLOCK","unified":"1F553","variations":[],"docomo":"E6BA","au":"E594","softbank":"E027","google":"FE021","image":"1f553.png","sheet_x":20,"sheet_y":36,"short_name":"clock4","short_names":["clock4"],"text":null,"texts":null,"category":"Symbols","sort_order":253,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE FIVE OCLOCK","unified":"1F554","variations":[],"docomo":"E6BA","au":"E594","softbank":"E028","google":"FE022","image":"1f554.png","sheet_x":20,"sheet_y":37,"short_name":"clock5","short_names":["clock5"],"text":null,"texts":null,"category":"Symbols","sort_order":254,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE SIX OCLOCK","unified":"1F555","variations":[],"docomo":"E6BA","au":"E594","softbank":"E029","google":"FE023","image":"1f555.png","sheet_x":20,"sheet_y":38,"short_name":"clock6","short_names":["clock6"],"text":null,"texts":null,"category":"Symbols","sort_order":255,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE SEVEN OCLOCK","unified":"1F556","variations":[],"docomo":"E6BA","au":"E594","softbank":"E02A","google":"FE024","image":"1f556.png","sheet_x":20,"sheet_y":39,"short_name":"clock7","short_names":["clock7"],"text":null,"texts":null,"category":"Symbols","sort_order":256,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE EIGHT OCLOCK","unified":"1F557","variations":[],"docomo":"E6BA","au":"E594","softbank":"E02B","google":"FE025","image":"1f557.png","sheet_x":20,"sheet_y":40,"short_name":"clock8","short_names":["clock8"],"text":null,"texts":null,"category":"Symbols","sort_order":257,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE NINE OCLOCK","unified":"1F558","variations":[],"docomo":"E6BA","au":"E594","softbank":"E02C","google":"FE026","image":"1f558.png","sheet_x":20,"sheet_y":41,"short_name":"clock9","short_names":["clock9"],"text":null,"texts":null,"category":"Symbols","sort_order":258,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE TEN OCLOCK","unified":"1F559","variations":[],"docomo":"E6BA","au":"E594","softbank":"E02D","google":"FE027","image":"1f559.png","sheet_x":20,"sheet_y":42,"short_name":"clock10","short_names":["clock10"],"text":null,"texts":null,"category":"Symbols","sort_order":259,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE ELEVEN OCLOCK","unified":"1F55A","variations":[],"docomo":"E6BA","au":"E594","softbank":"E02E","google":"FE028","image":"1f55a.png","sheet_x":20,"sheet_y":43,"short_name":"clock11","short_names":["clock11"],"text":null,"texts":null,"category":"Symbols","sort_order":260,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE TWELVE OCLOCK","unified":"1F55B","variations":[],"docomo":"E6BA","au":"E594","softbank":"E02F","google":"FE029","image":"1f55b.png","sheet_x":20,"sheet_y":44,"short_name":"clock12","short_names":["clock12"],"text":null,"texts":null,"category":"Symbols","sort_order":261,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE ONE-THIRTY","unified":"1F55C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f55c.png","sheet_x":20,"sheet_y":45,"short_name":"clock130","short_names":["clock130"],"text":null,"texts":null,"category":"Symbols","sort_order":262,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE TWO-THIRTY","unified":"1F55D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f55d.png","sheet_x":20,"sheet_y":46,"short_name":"clock230","short_names":["clock230"],"text":null,"texts":null,"category":"Symbols","sort_order":263,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE THREE-THIRTY","unified":"1F55E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f55e.png","sheet_x":20,"sheet_y":47,"short_name":"clock330","short_names":["clock330"],"text":null,"texts":null,"category":"Symbols","sort_order":264,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE FOUR-THIRTY","unified":"1F55F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f55f.png","sheet_x":20,"sheet_y":48,"short_name":"clock430","short_names":["clock430"],"text":null,"texts":null,"category":"Symbols","sort_order":265,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE FIVE-THIRTY","unified":"1F560","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f560.png","sheet_x":21,"sheet_y":0,"short_name":"clock530","short_names":["clock530"],"text":null,"texts":null,"category":"Symbols","sort_order":266,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE SIX-THIRTY","unified":"1F561","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f561.png","sheet_x":21,"sheet_y":1,"short_name":"clock630","short_names":["clock630"],"text":null,"texts":null,"category":"Symbols","sort_order":267,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE SEVEN-THIRTY","unified":"1F562","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f562.png","sheet_x":21,"sheet_y":2,"short_name":"clock730","short_names":["clock730"],"text":null,"texts":null,"category":"Symbols","sort_order":268,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE EIGHT-THIRTY","unified":"1F563","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f563.png","sheet_x":21,"sheet_y":3,"short_name":"clock830","short_names":["clock830"],"text":null,"texts":null,"category":"Symbols","sort_order":269,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE NINE-THIRTY","unified":"1F564","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f564.png","sheet_x":21,"sheet_y":4,"short_name":"clock930","short_names":["clock930"],"text":null,"texts":null,"category":"Symbols","sort_order":270,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE TEN-THIRTY","unified":"1F565","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f565.png","sheet_x":21,"sheet_y":5,"short_name":"clock1030","short_names":["clock1030"],"text":null,"texts":null,"category":"Symbols","sort_order":271,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE ELEVEN-THIRTY","unified":"1F566","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f566.png","sheet_x":21,"sheet_y":6,"short_name":"clock1130","short_names":["clock1130"],"text":null,"texts":null,"category":"Symbols","sort_order":272,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CLOCK FACE TWELVE-THIRTY","unified":"1F567","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f567.png","sheet_x":21,"sheet_y":7,"short_name":"clock1230","short_names":["clock1230"],"text":null,"texts":null,"category":"Symbols","sort_order":273,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CANDLE","unified":"1F56F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f56f.png","sheet_x":21,"sheet_y":8,"short_name":"candle","short_names":["candle"],"text":null,"texts":null,"category":"Objects","sort_order":43,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MANTELPIECE CLOCK","unified":"1F570","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f570.png","sheet_x":21,"sheet_y":9,"short_name":"mantelpiece_clock","short_names":["mantelpiece_clock"],"text":null,"texts":null,"category":"Objects","sort_order":35,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HOLE","unified":"1F573","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f573.png","sheet_x":21,"sheet_y":10,"short_name":"hole","short_names":["hole"],"text":null,"texts":null,"category":"Objects","sort_order":79,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MAN IN BUSINESS SUIT LEVITATING","unified":"1F574","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f574.png","sheet_x":21,"sheet_y":11,"short_name":"man_in_business_suit_levitating","short_names":["man_in_business_suit_levitating"],"text":null,"texts":null,"category":"People","sort_order":225,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F574-1F3FB","image":"1f574-1f3fb.png","sheet_x":21,"sheet_y":12,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F574-1F3FC","image":"1f574-1f3fc.png","sheet_x":21,"sheet_y":13,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F574-1F3FD","image":"1f574-1f3fd.png","sheet_x":21,"sheet_y":14,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F574-1F3FE","image":"1f574-1f3fe.png","sheet_x":21,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F574-1F3FF","image":"1f574-1f3ff.png","sheet_x":21,"sheet_y":16,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"SLEUTH OR SPY","unified":"1F575","variations":["1F575-FE0F"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f575.png","sheet_x":21,"sheet_y":17,"short_name":"sleuth_or_spy","short_names":["sleuth_or_spy"],"text":null,"texts":null,"category":"People","sort_order":160,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F575-1F3FB","image":"1f575-1f3fb.png","sheet_x":21,"sheet_y":18,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F575-1F3FC","image":"1f575-1f3fc.png","sheet_x":21,"sheet_y":19,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F575-1F3FD","image":"1f575-1f3fd.png","sheet_x":21,"sheet_y":20,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F575-1F3FE","image":"1f575-1f3fe.png","sheet_x":21,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F575-1F3FF","image":"1f575-1f3ff.png","sheet_x":21,"sheet_y":22,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}},"obsoleted_by":"1F575-FE0F-200D-2642-FE0F"},{"name":"DARK SUNGLASSES","unified":"1F576","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f576.png","sheet_x":21,"sheet_y":23,"short_name":"dark_sunglasses","short_names":["dark_sunglasses"],"text":null,"texts":null,"category":"People","sort_order":291,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SPIDER","unified":"1F577","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f577.png","sheet_x":21,"sheet_y":24,"short_name":"spider","short_names":["spider"],"text":null,"texts":null,"category":"Nature","sort_order":42,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SPIDER WEB","unified":"1F578","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f578.png","sheet_x":21,"sheet_y":25,"short_name":"spider_web","short_names":["spider_web"],"text":null,"texts":null,"category":"Nature","sort_order":43,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"JOYSTICK","unified":"1F579","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f579.png","sheet_x":21,"sheet_y":26,"short_name":"joystick","short_names":["joystick"],"text":null,"texts":null,"category":"Objects","sort_order":10,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MAN DANCING","unified":"1F57A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f57a.png","sheet_x":21,"sheet_y":27,"short_name":"man_dancing","short_names":["man_dancing"],"text":null,"texts":null,"category":"People","sort_order":227,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F57A-1F3FB","image":"1f57a-1f3fb.png","sheet_x":21,"sheet_y":28,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F57A-1F3FC","image":"1f57a-1f3fc.png","sheet_x":21,"sheet_y":29,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F57A-1F3FD","image":"1f57a-1f3fd.png","sheet_x":21,"sheet_y":30,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F57A-1F3FE","image":"1f57a-1f3fe.png","sheet_x":21,"sheet_y":31,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F57A-1F3FF","image":"1f57a-1f3ff.png","sheet_x":21,"sheet_y":32,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"LINKED PAPERCLIPS","unified":"1F587","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f587.png","sheet_x":21,"sheet_y":33,"short_name":"linked_paperclips","short_names":["linked_paperclips"],"text":null,"texts":null,"category":"Objects","sort_order":155,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LOWER LEFT BALLPOINT PEN","unified":"1F58A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f58a.png","sheet_x":21,"sheet_y":34,"short_name":"lower_left_ballpoint_pen","short_names":["lower_left_ballpoint_pen"],"text":null,"texts":null,"category":"Objects","sort_order":161,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LOWER LEFT FOUNTAIN PEN","unified":"1F58B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f58b.png","sheet_x":21,"sheet_y":35,"short_name":"lower_left_fountain_pen","short_names":["lower_left_fountain_pen"],"text":null,"texts":null,"category":"Objects","sort_order":162,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LOWER LEFT PAINTBRUSH","unified":"1F58C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f58c.png","sheet_x":21,"sheet_y":36,"short_name":"lower_left_paintbrush","short_names":["lower_left_paintbrush"],"text":null,"texts":null,"category":"Objects","sort_order":164,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LOWER LEFT CRAYON","unified":"1F58D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f58d.png","sheet_x":21,"sheet_y":37,"short_name":"lower_left_crayon","short_names":["lower_left_crayon"],"text":null,"texts":null,"category":"Objects","sort_order":165,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"RAISED HAND WITH FINGERS SPLAYED","unified":"1F590","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f590.png","sheet_x":21,"sheet_y":38,"short_name":"raised_hand_with_fingers_splayed","short_names":["raised_hand_with_fingers_splayed"],"text":null,"texts":null,"category":"People","sort_order":119,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F590-1F3FB","image":"1f590-1f3fb.png","sheet_x":21,"sheet_y":39,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F590-1F3FC","image":"1f590-1f3fc.png","sheet_x":21,"sheet_y":40,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F590-1F3FD","image":"1f590-1f3fd.png","sheet_x":21,"sheet_y":41,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F590-1F3FE","image":"1f590-1f3fe.png","sheet_x":21,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F590-1F3FF","image":"1f590-1f3ff.png","sheet_x":21,"sheet_y":43,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"REVERSED HAND WITH MIDDLE FINGER EXTENDED","unified":"1F595","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f595.png","sheet_x":21,"sheet_y":44,"short_name":"middle_finger","short_names":["middle_finger","reversed_hand_with_middle_finger_extended"],"text":null,"texts":null,"category":"People","sort_order":124,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F595-1F3FB","image":"1f595-1f3fb.png","sheet_x":21,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F595-1F3FC","image":"1f595-1f3fc.png","sheet_x":21,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F595-1F3FD","image":"1f595-1f3fd.png","sheet_x":21,"sheet_y":47,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F595-1F3FE","image":"1f595-1f3fe.png","sheet_x":21,"sheet_y":48,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F595-1F3FF","image":"1f595-1f3ff.png","sheet_x":22,"sheet_y":0,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS","unified":"1F596","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f596.png","sheet_x":22,"sheet_y":1,"short_name":"spock-hand","short_names":["spock-hand"],"text":null,"texts":null,"category":"People","sort_order":120,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F596-1F3FB","image":"1f596-1f3fb.png","sheet_x":22,"sheet_y":2,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F596-1F3FC","image":"1f596-1f3fc.png","sheet_x":22,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F596-1F3FD","image":"1f596-1f3fd.png","sheet_x":22,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F596-1F3FE","image":"1f596-1f3fe.png","sheet_x":22,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F596-1F3FF","image":"1f596-1f3ff.png","sheet_x":22,"sheet_y":6,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"BLACK HEART","unified":"1F5A4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5a4.png","sheet_x":22,"sheet_y":7,"short_name":"black_heart","short_names":["black_heart"],"text":null,"texts":null,"category":"Symbols","sort_order":6,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DESKTOP COMPUTER","unified":"1F5A5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5a5.png","sheet_x":22,"sheet_y":8,"short_name":"desktop_computer","short_names":["desktop_computer"],"text":null,"texts":null,"category":"Objects","sort_order":6,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PRINTER","unified":"1F5A8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5a8.png","sheet_x":22,"sheet_y":9,"short_name":"printer","short_names":["printer"],"text":null,"texts":null,"category":"Objects","sort_order":7,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"THREE BUTTON MOUSE","unified":"1F5B1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5b1.png","sheet_x":22,"sheet_y":10,"short_name":"three_button_mouse","short_names":["three_button_mouse"],"text":null,"texts":null,"category":"Objects","sort_order":8,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TRACKBALL","unified":"1F5B2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5b2.png","sheet_x":22,"sheet_y":11,"short_name":"trackball","short_names":["trackball"],"text":null,"texts":null,"category":"Objects","sort_order":9,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FRAME WITH PICTURE","unified":"1F5BC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5bc.png","sheet_x":22,"sheet_y":12,"short_name":"frame_with_picture","short_names":["frame_with_picture"],"text":null,"texts":null,"category":"Objects","sort_order":95,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CARD INDEX DIVIDERS","unified":"1F5C2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5c2.png","sheet_x":22,"sheet_y":13,"short_name":"card_index_dividers","short_names":["card_index_dividers"],"text":null,"texts":null,"category":"Objects","sort_order":140,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CARD FILE BOX","unified":"1F5C3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5c3.png","sheet_x":22,"sheet_y":14,"short_name":"card_file_box","short_names":["card_file_box"],"text":null,"texts":null,"category":"Objects","sort_order":134,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FILE CABINET","unified":"1F5C4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5c4.png","sheet_x":22,"sheet_y":15,"short_name":"file_cabinet","short_names":["file_cabinet"],"text":null,"texts":null,"category":"Objects","sort_order":136,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WASTEBASKET","unified":"1F5D1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5d1.png","sheet_x":22,"sheet_y":16,"short_name":"wastebasket","short_names":["wastebasket"],"text":null,"texts":null,"category":"Objects","sort_order":44,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SPIRAL NOTE PAD","unified":"1F5D2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5d2.png","sheet_x":22,"sheet_y":17,"short_name":"spiral_note_pad","short_names":["spiral_note_pad"],"text":null,"texts":null,"category":"Objects","sort_order":129,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SPIRAL CALENDAR PAD","unified":"1F5D3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5d3.png","sheet_x":22,"sheet_y":18,"short_name":"spiral_calendar_pad","short_names":["spiral_calendar_pad"],"text":null,"texts":null,"category":"Objects","sort_order":130,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"COMPRESSION","unified":"1F5DC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5dc.png","sheet_x":22,"sheet_y":19,"short_name":"compression","short_names":["compression"],"text":null,"texts":null,"category":"Objects","sort_order":11,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"OLD KEY","unified":"1F5DD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5dd.png","sheet_x":22,"sheet_y":20,"short_name":"old_key","short_names":["old_key"],"text":null,"texts":null,"category":"Objects","sort_order":90,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ROLLED-UP NEWSPAPER","unified":"1F5DE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5de.png","sheet_x":22,"sheet_y":21,"short_name":"rolled_up_newspaper","short_names":["rolled_up_newspaper"],"text":null,"texts":null,"category":"Objects","sort_order":141,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DAGGER KNIFE","unified":"1F5E1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5e1.png","sheet_x":22,"sheet_y":22,"short_name":"dagger_knife","short_names":["dagger_knife"],"text":null,"texts":null,"category":"Objects","sort_order":66,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SPEAKING HEAD IN SILHOUETTE","unified":"1F5E3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5e3.png","sheet_x":22,"sheet_y":23,"short_name":"speaking_head_in_silhouette","short_names":["speaking_head_in_silhouette"],"text":null,"texts":null,"category":"People","sort_order":138,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LEFT SPEECH BUBBLE","unified":"1F5E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5e8.png","sheet_x":22,"sheet_y":24,"short_name":"left_speech_bubble","short_names":["left_speech_bubble"],"text":null,"texts":null,"category":"Symbols","sort_order":240,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"RIGHT ANGER BUBBLE","unified":"1F5EF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5ef.png","sheet_x":22,"sheet_y":25,"short_name":"right_anger_bubble","short_names":["right_anger_bubble"],"text":null,"texts":null,"category":"Symbols","sort_order":242,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BALLOT BOX WITH BALLOT","unified":"1F5F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5f3.png","sheet_x":22,"sheet_y":26,"short_name":"ballot_box_with_ballot","short_names":["ballot_box_with_ballot"],"text":null,"texts":null,"category":"Objects","sort_order":135,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WORLD MAP","unified":"1F5FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f5fa.png","sheet_x":22,"sheet_y":27,"short_name":"world_map","short_names":["world_map"],"text":null,"texts":null,"category":"Places","sort_order":59,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MOUNT FUJI","unified":"1F5FB","variations":[],"docomo":"E740","au":"E5BD","softbank":"E03B","google":"FE4C3","image":"1f5fb.png","sheet_x":22,"sheet_y":28,"short_name":"mount_fuji","short_names":["mount_fuji"],"text":null,"texts":null,"category":"Places","sort_order":75,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TOKYO TOWER","unified":"1F5FC","variations":[],"docomo":null,"au":"E4C0","softbank":"E509","google":"FE4C4","image":"1f5fc.png","sheet_x":22,"sheet_y":29,"short_name":"tokyo_tower","short_names":["tokyo_tower"],"text":null,"texts":null,"category":"Places","sort_order":63,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"STATUE OF LIBERTY","unified":"1F5FD","variations":[],"docomo":null,"au":null,"softbank":"E51D","google":"FE4C6","image":"1f5fd.png","sheet_x":22,"sheet_y":30,"short_name":"statue_of_liberty","short_names":["statue_of_liberty"],"text":null,"texts":null,"category":"Places","sort_order":61,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SILHOUETTE OF JAPAN","unified":"1F5FE","variations":[],"docomo":null,"au":"E572","softbank":null,"google":"FE4C7","image":"1f5fe.png","sheet_x":22,"sheet_y":31,"short_name":"japan","short_names":["japan"],"text":null,"texts":null,"category":"Places","sort_order":105,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOYAI","unified":"1F5FF","variations":[],"docomo":null,"au":"EB6C","softbank":null,"google":"FE4C8","image":"1f5ff.png","sheet_x":22,"sheet_y":32,"short_name":"moyai","short_names":["moyai"],"text":null,"texts":null,"category":"Places","sort_order":60,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GRINNING FACE","unified":"1F600","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f600.png","sheet_x":22,"sheet_y":33,"short_name":"grinning","short_names":["grinning"],"text":":D","texts":null,"category":"People","sort_order":1,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GRINNING FACE WITH SMILING EYES","unified":"1F601","variations":[],"docomo":"E753","au":"EB80","softbank":"E404","google":"FE333","image":"1f601.png","sheet_x":22,"sheet_y":34,"short_name":"grin","short_names":["grin"],"text":null,"texts":null,"category":"People","sort_order":4,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH TEARS OF JOY","unified":"1F602","variations":[],"docomo":"E72A","au":"EB64","softbank":"E412","google":"FE334","image":"1f602.png","sheet_x":22,"sheet_y":35,"short_name":"joy","short_names":["joy"],"text":null,"texts":null,"category":"People","sort_order":7,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH OPEN MOUTH","unified":"1F603","variations":[],"docomo":"E6F0","au":"E471","softbank":"E057","google":"FE330","image":"1f603.png","sheet_x":22,"sheet_y":36,"short_name":"smiley","short_names":["smiley"],"text":":)","texts":["=)","=-)"],"category":"People","sort_order":2,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH OPEN MOUTH AND SMILING EYES","unified":"1F604","variations":[],"docomo":"E6F0","au":"E471","softbank":"E415","google":"FE338","image":"1f604.png","sheet_x":22,"sheet_y":37,"short_name":"smile","short_names":["smile"],"text":":)","texts":["C:","c:",":D",":-D"],"category":"People","sort_order":3,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH OPEN MOUTH AND COLD SWEAT","unified":"1F605","variations":[],"docomo":"E722","au":"E471-E5B1","softbank":"E415-E331","google":"FE331","image":"1f605.png","sheet_x":22,"sheet_y":38,"short_name":"sweat_smile","short_names":["sweat_smile"],"text":null,"texts":null,"category":"People","sort_order":6,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES","unified":"1F606","variations":[],"docomo":"E72A","au":"EAC5","softbank":"E40A","google":"FE332","image":"1f606.png","sheet_x":22,"sheet_y":39,"short_name":"laughing","short_names":["laughing","satisfied"],"text":null,"texts":[":>",":->"],"category":"People","sort_order":5,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH HALO","unified":"1F607","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f607.png","sheet_x":22,"sheet_y":40,"short_name":"innocent","short_names":["innocent"],"text":null,"texts":null,"category":"People","sort_order":11,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH HORNS","unified":"1F608","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f608.png","sheet_x":22,"sheet_y":41,"short_name":"smiling_imp","short_names":["smiling_imp"],"text":null,"texts":null,"category":"People","sort_order":76,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WINKING FACE","unified":"1F609","variations":[],"docomo":"E729","au":"E5C3","softbank":"E405","google":"FE347","image":"1f609.png","sheet_x":22,"sheet_y":42,"short_name":"wink","short_names":["wink"],"text":";)","texts":[";)",";-)"],"category":"People","sort_order":14,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH SMILING EYES","unified":"1F60A","variations":[],"docomo":"E6F0","au":"EACD","softbank":"E056","google":"FE335","image":"1f60a.png","sheet_x":22,"sheet_y":43,"short_name":"blush","short_names":["blush"],"text":":)","texts":null,"category":"People","sort_order":10,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE SAVOURING DELICIOUS FOOD","unified":"1F60B","variations":[],"docomo":"E752","au":"EACD","softbank":"E056","google":"FE32B","image":"1f60b.png","sheet_x":22,"sheet_y":44,"short_name":"yum","short_names":["yum"],"text":null,"texts":null,"category":"People","sort_order":21,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RELIEVED FACE","unified":"1F60C","variations":[],"docomo":"E721","au":"EAC5","softbank":"E40A","google":"FE33E","image":"1f60c.png","sheet_x":22,"sheet_y":45,"short_name":"relieved","short_names":["relieved"],"text":null,"texts":null,"category":"People","sort_order":15,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH HEART-SHAPED EYES","unified":"1F60D","variations":[],"docomo":"E726","au":"E5C4","softbank":"E106","google":"FE327","image":"1f60d.png","sheet_x":22,"sheet_y":46,"short_name":"heart_eyes","short_names":["heart_eyes"],"text":null,"texts":null,"category":"People","sort_order":16,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING FACE WITH SUNGLASSES","unified":"1F60E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f60e.png","sheet_x":22,"sheet_y":47,"short_name":"sunglasses","short_names":["sunglasses"],"text":null,"texts":["8)"],"category":"People","sort_order":28,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMIRKING FACE","unified":"1F60F","variations":[],"docomo":"E72C","au":"EABF","softbank":"E402","google":"FE343","image":"1f60f.png","sheet_x":22,"sheet_y":48,"short_name":"smirk","short_names":["smirk"],"text":null,"texts":null,"category":"People","sort_order":31,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NEUTRAL FACE","unified":"1F610","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f610.png","sheet_x":23,"sheet_y":0,"short_name":"neutral_face","short_names":["neutral_face"],"text":null,"texts":[":|",":-|"],"category":"People","sort_order":47,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"EXPRESSIONLESS FACE","unified":"1F611","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f611.png","sheet_x":23,"sheet_y":1,"short_name":"expressionless","short_names":["expressionless"],"text":null,"texts":null,"category":"People","sort_order":48,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"UNAMUSED FACE","unified":"1F612","variations":[],"docomo":"E725","au":"EAC9","softbank":"E40E","google":"FE326","image":"1f612.png","sheet_x":23,"sheet_y":2,"short_name":"unamused","short_names":["unamused"],"text":":(","texts":null,"category":"People","sort_order":32,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH COLD SWEAT","unified":"1F613","variations":[],"docomo":"E723","au":"E5C6","softbank":"E108","google":"FE344","image":"1f613.png","sheet_x":23,"sheet_y":3,"short_name":"sweat","short_names":["sweat"],"text":null,"texts":null,"category":"People","sort_order":63,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PENSIVE FACE","unified":"1F614","variations":[],"docomo":"E720","au":"EAC0","softbank":"E403","google":"FE340","image":"1f614.png","sheet_x":23,"sheet_y":4,"short_name":"pensive","short_names":["pensive"],"text":null,"texts":null,"category":"People","sort_order":34,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CONFUSED FACE","unified":"1F615","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f615.png","sheet_x":23,"sheet_y":5,"short_name":"confused","short_names":["confused"],"text":null,"texts":[":\\",":-\\",":\/",":-\/"],"category":"People","sort_order":36,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CONFOUNDED FACE","unified":"1F616","variations":[],"docomo":"E6F3","au":"EAC3","softbank":"E407","google":"FE33F","image":"1f616.png","sheet_x":23,"sheet_y":6,"short_name":"confounded","short_names":["confounded"],"text":null,"texts":null,"category":"People","sort_order":40,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KISSING FACE","unified":"1F617","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f617.png","sheet_x":23,"sheet_y":7,"short_name":"kissing","short_names":["kissing"],"text":null,"texts":null,"category":"People","sort_order":18,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE THROWING A KISS","unified":"1F618","variations":[],"docomo":"E726","au":"EACF","softbank":"E418","google":"FE32C","image":"1f618.png","sheet_x":23,"sheet_y":8,"short_name":"kissing_heart","short_names":["kissing_heart"],"text":null,"texts":[":*",":-*"],"category":"People","sort_order":17,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KISSING FACE WITH SMILING EYES","unified":"1F619","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f619.png","sheet_x":23,"sheet_y":9,"short_name":"kissing_smiling_eyes","short_names":["kissing_smiling_eyes"],"text":null,"texts":null,"category":"People","sort_order":19,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KISSING FACE WITH CLOSED EYES","unified":"1F61A","variations":[],"docomo":"E726","au":"EACE","softbank":"E417","google":"FE32D","image":"1f61a.png","sheet_x":23,"sheet_y":10,"short_name":"kissing_closed_eyes","short_names":["kissing_closed_eyes"],"text":null,"texts":null,"category":"People","sort_order":20,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH STUCK-OUT TONGUE","unified":"1F61B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f61b.png","sheet_x":23,"sheet_y":11,"short_name":"stuck_out_tongue","short_names":["stuck_out_tongue"],"text":":p","texts":[":p",":-p",":P",":-P",":b",":-b"],"category":"People","sort_order":24,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH STUCK-OUT TONGUE AND WINKING EYE","unified":"1F61C","variations":[],"docomo":"E728","au":"E4E7","softbank":"E105","google":"FE329","image":"1f61c.png","sheet_x":23,"sheet_y":12,"short_name":"stuck_out_tongue_winking_eye","short_names":["stuck_out_tongue_winking_eye"],"text":";p","texts":[";p",";-p",";b",";-b",";P",";-P"],"category":"People","sort_order":22,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES","unified":"1F61D","variations":[],"docomo":"E728","au":"E4E7","softbank":"E409","google":"FE32A","image":"1f61d.png","sheet_x":23,"sheet_y":13,"short_name":"stuck_out_tongue_closed_eyes","short_names":["stuck_out_tongue_closed_eyes"],"text":null,"texts":null,"category":"People","sort_order":23,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DISAPPOINTED FACE","unified":"1F61E","variations":[],"docomo":"E6F2","au":"EAC0","softbank":"E058","google":"FE323","image":"1f61e.png","sheet_x":23,"sheet_y":14,"short_name":"disappointed","short_names":["disappointed"],"text":":(","texts":["):",":(",":-("],"category":"People","sort_order":33,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WORRIED FACE","unified":"1F61F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f61f.png","sheet_x":23,"sheet_y":15,"short_name":"worried","short_names":["worried"],"text":null,"texts":null,"category":"People","sort_order":35,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ANGRY FACE","unified":"1F620","variations":[],"docomo":"E6F1","au":"E472","softbank":"E059","google":"FE320","image":"1f620.png","sheet_x":23,"sheet_y":16,"short_name":"angry","short_names":["angry"],"text":null,"texts":[">:(",">:-("],"category":"People","sort_order":44,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POUTING FACE","unified":"1F621","variations":[],"docomo":"E724","au":"EB5D","softbank":"E416","google":"FE33D","image":"1f621.png","sheet_x":23,"sheet_y":17,"short_name":"rage","short_names":["rage"],"text":null,"texts":null,"category":"People","sort_order":45,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CRYING FACE","unified":"1F622","variations":[],"docomo":"E72E","au":"EB69","softbank":"E413","google":"FE339","image":"1f622.png","sheet_x":23,"sheet_y":18,"short_name":"cry","short_names":["cry"],"text":":'(","texts":[":'("],"category":"People","sort_order":59,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PERSEVERING FACE","unified":"1F623","variations":[],"docomo":"E72B","au":"EAC2","softbank":"E406","google":"FE33C","image":"1f623.png","sheet_x":23,"sheet_y":19,"short_name":"persevere","short_names":["persevere"],"text":null,"texts":null,"category":"People","sort_order":39,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH LOOK OF TRIUMPH","unified":"1F624","variations":[],"docomo":"E753","au":"EAC1","softbank":"E404","google":"FE328","image":"1f624.png","sheet_x":23,"sheet_y":20,"short_name":"triumph","short_names":["triumph"],"text":null,"texts":null,"category":"People","sort_order":43,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DISAPPOINTED BUT RELIEVED FACE","unified":"1F625","variations":[],"docomo":"E723","au":"E5C6","softbank":"E401","google":"FE345","image":"1f625.png","sheet_x":23,"sheet_y":21,"short_name":"disappointed_relieved","short_names":["disappointed_relieved"],"text":null,"texts":null,"category":"People","sort_order":60,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FROWNING FACE WITH OPEN MOUTH","unified":"1F626","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f626.png","sheet_x":23,"sheet_y":22,"short_name":"frowning","short_names":["frowning"],"text":null,"texts":null,"category":"People","sort_order":50,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ANGUISHED FACE","unified":"1F627","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f627.png","sheet_x":23,"sheet_y":23,"short_name":"anguished","short_names":["anguished"],"text":null,"texts":["D:"],"category":"People","sort_order":51,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FEARFUL FACE","unified":"1F628","variations":[],"docomo":"E757","au":"EAC6","softbank":"E40B","google":"FE33B","image":"1f628.png","sheet_x":23,"sheet_y":24,"short_name":"fearful","short_names":["fearful"],"text":null,"texts":null,"category":"People","sort_order":57,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WEARY FACE","unified":"1F629","variations":[],"docomo":"E6F3","au":"EB67","softbank":"E403","google":"FE321","image":"1f629.png","sheet_x":23,"sheet_y":25,"short_name":"weary","short_names":["weary"],"text":null,"texts":null,"category":"People","sort_order":42,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SLEEPY FACE","unified":"1F62A","variations":[],"docomo":"E701","au":"EAC4","softbank":"E408","google":"FE342","image":"1f62a.png","sheet_x":23,"sheet_y":26,"short_name":"sleepy","short_names":["sleepy"],"text":null,"texts":null,"category":"People","sort_order":64,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TIRED FACE","unified":"1F62B","variations":[],"docomo":"E72B","au":"E474","softbank":"E406","google":"FE346","image":"1f62b.png","sheet_x":23,"sheet_y":27,"short_name":"tired_face","short_names":["tired_face"],"text":null,"texts":null,"category":"People","sort_order":41,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GRIMACING FACE","unified":"1F62C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f62c.png","sheet_x":23,"sheet_y":28,"short_name":"grimacing","short_names":["grimacing"],"text":null,"texts":null,"category":"People","sort_order":69,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LOUDLY CRYING FACE","unified":"1F62D","variations":[],"docomo":"E72D","au":"E473","softbank":"E411","google":"FE33A","image":"1f62d.png","sheet_x":23,"sheet_y":29,"short_name":"sob","short_names":["sob"],"text":":'(","texts":null,"category":"People","sort_order":62,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH OPEN MOUTH","unified":"1F62E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f62e.png","sheet_x":23,"sheet_y":30,"short_name":"open_mouth","short_names":["open_mouth"],"text":null,"texts":[":o",":-o",":O",":-O"],"category":"People","sort_order":52,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HUSHED FACE","unified":"1F62F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f62f.png","sheet_x":23,"sheet_y":31,"short_name":"hushed","short_names":["hushed"],"text":null,"texts":null,"category":"People","sort_order":49,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH OPEN MOUTH AND COLD SWEAT","unified":"1F630","variations":[],"docomo":"E723","au":"EACB","softbank":"E40F","google":"FE325","image":"1f630.png","sheet_x":23,"sheet_y":32,"short_name":"cold_sweat","short_names":["cold_sweat"],"text":null,"texts":null,"category":"People","sort_order":58,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE SCREAMING IN FEAR","unified":"1F631","variations":[],"docomo":"E757","au":"E5C5","softbank":"E107","google":"FE341","image":"1f631.png","sheet_x":23,"sheet_y":33,"short_name":"scream","short_names":["scream"],"text":null,"texts":null,"category":"People","sort_order":56,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ASTONISHED FACE","unified":"1F632","variations":[],"docomo":"E6F4","au":"EACA","softbank":"E410","google":"FE322","image":"1f632.png","sheet_x":23,"sheet_y":34,"short_name":"astonished","short_names":["astonished"],"text":null,"texts":null,"category":"People","sort_order":53,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FLUSHED FACE","unified":"1F633","variations":[],"docomo":"E72A","au":"EAC8","softbank":"E40D","google":"FE32F","image":"1f633.png","sheet_x":23,"sheet_y":35,"short_name":"flushed","short_names":["flushed"],"text":null,"texts":null,"category":"People","sort_order":55,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SLEEPING FACE","unified":"1F634","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f634.png","sheet_x":23,"sheet_y":36,"short_name":"sleeping","short_names":["sleeping"],"text":null,"texts":null,"category":"People","sort_order":65,"added_in":"6.1","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DIZZY FACE","unified":"1F635","variations":[],"docomo":"E6F4","au":"E5AE","softbank":"E406","google":"FE324","image":"1f635.png","sheet_x":23,"sheet_y":37,"short_name":"dizzy_face","short_names":["dizzy_face"],"text":null,"texts":null,"category":"People","sort_order":54,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITHOUT MOUTH","unified":"1F636","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f636.png","sheet_x":23,"sheet_y":38,"short_name":"no_mouth","short_names":["no_mouth"],"text":null,"texts":null,"category":"People","sort_order":46,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FACE WITH MEDICAL MASK","unified":"1F637","variations":[],"docomo":null,"au":"EAC7","softbank":"E40C","google":"FE32E","image":"1f637.png","sheet_x":23,"sheet_y":39,"short_name":"mask","short_names":["mask"],"text":null,"texts":null,"category":"People","sort_order":73,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"GRINNING CAT FACE WITH SMILING EYES","unified":"1F638","variations":[],"docomo":"E753","au":"EB7F","softbank":"E404","google":"FE349","image":"1f638.png","sheet_x":23,"sheet_y":40,"short_name":"smile_cat","short_names":["smile_cat"],"text":null,"texts":null,"category":"People","sort_order":89,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CAT FACE WITH TEARS OF JOY","unified":"1F639","variations":[],"docomo":"E72A","au":"EB63","softbank":"E412","google":"FE34A","image":"1f639.png","sheet_x":23,"sheet_y":41,"short_name":"joy_cat","short_names":["joy_cat"],"text":null,"texts":null,"category":"People","sort_order":90,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING CAT FACE WITH OPEN MOUTH","unified":"1F63A","variations":[],"docomo":"E6F0","au":"EB61","softbank":"E057","google":"FE348","image":"1f63a.png","sheet_x":23,"sheet_y":42,"short_name":"smiley_cat","short_names":["smiley_cat"],"text":null,"texts":null,"category":"People","sort_order":88,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMILING CAT FACE WITH HEART-SHAPED EYES","unified":"1F63B","variations":[],"docomo":"E726","au":"EB65","softbank":"E106","google":"FE34C","image":"1f63b.png","sheet_x":23,"sheet_y":43,"short_name":"heart_eyes_cat","short_names":["heart_eyes_cat"],"text":null,"texts":null,"category":"People","sort_order":91,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CAT FACE WITH WRY SMILE","unified":"1F63C","variations":[],"docomo":"E753","au":"EB6A","softbank":"E404","google":"FE34F","image":"1f63c.png","sheet_x":23,"sheet_y":44,"short_name":"smirk_cat","short_names":["smirk_cat"],"text":null,"texts":null,"category":"People","sort_order":92,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"KISSING CAT FACE WITH CLOSED EYES","unified":"1F63D","variations":[],"docomo":"E726","au":"EB60","softbank":"E418","google":"FE34B","image":"1f63d.png","sheet_x":23,"sheet_y":45,"short_name":"kissing_cat","short_names":["kissing_cat"],"text":null,"texts":null,"category":"People","sort_order":93,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POUTING CAT FACE","unified":"1F63E","variations":[],"docomo":"E724","au":"EB5E","softbank":"E416","google":"FE34E","image":"1f63e.png","sheet_x":23,"sheet_y":46,"short_name":"pouting_cat","short_names":["pouting_cat"],"text":null,"texts":null,"category":"People","sort_order":96,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CRYING CAT FACE","unified":"1F63F","variations":[],"docomo":"E72E","au":"EB68","softbank":"E413","google":"FE34D","image":"1f63f.png","sheet_x":23,"sheet_y":47,"short_name":"crying_cat_face","short_names":["crying_cat_face"],"text":null,"texts":null,"category":"People","sort_order":95,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WEARY CAT FACE","unified":"1F640","variations":[],"docomo":"E6F3","au":"EB66","softbank":"E403","google":"FE350","image":"1f640.png","sheet_x":23,"sheet_y":48,"short_name":"scream_cat","short_names":["scream_cat"],"text":null,"texts":null,"category":"People","sort_order":94,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SLIGHTLY FROWNING FACE","unified":"1F641","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f641.png","sheet_x":24,"sheet_y":0,"short_name":"slightly_frowning_face","short_names":["slightly_frowning_face"],"text":null,"texts":null,"category":"People","sort_order":37,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SLIGHTLY SMILING FACE","unified":"1F642","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f642.png","sheet_x":24,"sheet_y":1,"short_name":"slightly_smiling_face","short_names":["slightly_smiling_face"],"text":null,"texts":[":)","(:",":-)"],"category":"People","sort_order":12,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"UPSIDE-DOWN FACE","unified":"1F643","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f643.png","sheet_x":24,"sheet_y":2,"short_name":"upside_down_face","short_names":["upside_down_face"],"text":null,"texts":null,"category":"People","sort_order":13,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FACE WITH ROLLING EYES","unified":"1F644","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f644.png","sheet_x":24,"sheet_y":3,"short_name":"face_with_rolling_eyes","short_names":["face_with_rolling_eyes"],"text":null,"texts":null,"category":"People","sort_order":66,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FACE WITH NO GOOD GESTURE","unified":"1F645","variations":[],"docomo":"E72F","au":"EAD7","softbank":"E423","google":"FE351","image":"1f645.png","sheet_x":24,"sheet_y":4,"short_name":"no_good","short_names":["no_good"],"text":null,"texts":null,"category":"People","sort_order":205,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F645-1F3FB","image":"1f645-1f3fb.png","sheet_x":24,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F645-1F3FC","image":"1f645-1f3fc.png","sheet_x":24,"sheet_y":6,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F645-1F3FD","image":"1f645-1f3fd.png","sheet_x":24,"sheet_y":7,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F645-1F3FE","image":"1f645-1f3fe.png","sheet_x":24,"sheet_y":8,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F645-1F3FF","image":"1f645-1f3ff.png","sheet_x":24,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F645-200D-2640-FE0F"},{"name":"FACE WITH OK GESTURE","unified":"1F646","variations":[],"docomo":"E70B","au":"EAD8","softbank":"E424","google":"FE352","image":"1f646.png","sheet_x":24,"sheet_y":10,"short_name":"ok_woman","short_names":["ok_woman"],"text":null,"texts":null,"category":"People","sort_order":207,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F646-1F3FB","image":"1f646-1f3fb.png","sheet_x":24,"sheet_y":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F646-1F3FC","image":"1f646-1f3fc.png","sheet_x":24,"sheet_y":12,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F646-1F3FD","image":"1f646-1f3fd.png","sheet_x":24,"sheet_y":13,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F646-1F3FE","image":"1f646-1f3fe.png","sheet_x":24,"sheet_y":14,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F646-1F3FF","image":"1f646-1f3ff.png","sheet_x":24,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F646-200D-2640-FE0F"},{"name":"PERSON BOWING DEEPLY","unified":"1F647","variations":[],"docomo":null,"au":"EAD9","softbank":"E426","google":"FE353","image":"1f647.png","sheet_x":24,"sheet_y":16,"short_name":"bow","short_names":["bow"],"text":null,"texts":null,"category":"People","sort_order":202,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F647-1F3FB","image":"1f647-1f3fb.png","sheet_x":24,"sheet_y":17,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F647-1F3FC","image":"1f647-1f3fc.png","sheet_x":24,"sheet_y":18,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F647-1F3FD","image":"1f647-1f3fd.png","sheet_x":24,"sheet_y":19,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F647-1F3FE","image":"1f647-1f3fe.png","sheet_x":24,"sheet_y":20,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F647-1F3FF","image":"1f647-1f3ff.png","sheet_x":24,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F647-200D-2642-FE0F"},{"name":"SEE-NO-EVIL MONKEY","unified":"1F648","variations":[],"docomo":null,"au":"EB50","softbank":null,"google":"FE354","image":"1f648.png","sheet_x":24,"sheet_y":22,"short_name":"see_no_evil","short_names":["see_no_evil"],"text":null,"texts":null,"category":"Nature","sort_order":17,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HEAR-NO-EVIL MONKEY","unified":"1F649","variations":[],"docomo":null,"au":"EB52","softbank":null,"google":"FE356","image":"1f649.png","sheet_x":24,"sheet_y":23,"short_name":"hear_no_evil","short_names":["hear_no_evil"],"text":null,"texts":null,"category":"Nature","sort_order":18,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SPEAK-NO-EVIL MONKEY","unified":"1F64A","variations":[],"docomo":null,"au":"EB51","softbank":null,"google":"FE355","image":"1f64a.png","sheet_x":24,"sheet_y":24,"short_name":"speak_no_evil","short_names":["speak_no_evil"],"text":null,"texts":null,"category":"Nature","sort_order":19,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HAPPY PERSON RAISING ONE HAND","unified":"1F64B","variations":[],"docomo":null,"au":"EB85","softbank":"E012","google":"FE357","image":"1f64b.png","sheet_x":24,"sheet_y":25,"short_name":"raising_hand","short_names":["raising_hand"],"text":null,"texts":null,"category":"People","sort_order":209,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F64B-1F3FB","image":"1f64b-1f3fb.png","sheet_x":24,"sheet_y":26,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F64B-1F3FC","image":"1f64b-1f3fc.png","sheet_x":24,"sheet_y":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F64B-1F3FD","image":"1f64b-1f3fd.png","sheet_x":24,"sheet_y":28,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F64B-1F3FE","image":"1f64b-1f3fe.png","sheet_x":24,"sheet_y":29,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F64B-1F3FF","image":"1f64b-1f3ff.png","sheet_x":24,"sheet_y":30,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F64B-200D-2640-FE0F"},{"name":"PERSON RAISING BOTH HANDS IN CELEBRATION","unified":"1F64C","variations":[],"docomo":null,"au":"EB86","softbank":"E427","google":"FE358","image":"1f64c.png","sheet_x":24,"sheet_y":31,"short_name":"raised_hands","short_names":["raised_hands"],"text":null,"texts":null,"category":"People","sort_order":98,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F64C-1F3FB","image":"1f64c-1f3fb.png","sheet_x":24,"sheet_y":32,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F64C-1F3FC","image":"1f64c-1f3fc.png","sheet_x":24,"sheet_y":33,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F64C-1F3FD","image":"1f64c-1f3fd.png","sheet_x":24,"sheet_y":34,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F64C-1F3FE","image":"1f64c-1f3fe.png","sheet_x":24,"sheet_y":35,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F64C-1F3FF","image":"1f64c-1f3ff.png","sheet_x":24,"sheet_y":36,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"PERSON FROWNING","unified":"1F64D","variations":[],"docomo":"E6F3","au":"EB87","softbank":"E403","google":"FE359","image":"1f64d.png","sheet_x":24,"sheet_y":37,"short_name":"person_frowning","short_names":["person_frowning"],"text":null,"texts":null,"category":"People","sort_order":219,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F64D-1F3FB","image":"1f64d-1f3fb.png","sheet_x":24,"sheet_y":38,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F64D-1F3FC","image":"1f64d-1f3fc.png","sheet_x":24,"sheet_y":39,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F64D-1F3FD","image":"1f64d-1f3fd.png","sheet_x":24,"sheet_y":40,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F64D-1F3FE","image":"1f64d-1f3fe.png","sheet_x":24,"sheet_y":41,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F64D-1F3FF","image":"1f64d-1f3ff.png","sheet_x":24,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F64D-200D-2640-FE0F"},{"name":"PERSON WITH POUTING FACE","unified":"1F64E","variations":[],"docomo":"E6F1","au":"EB88","softbank":"E416","google":"FE35A","image":"1f64e.png","sheet_x":24,"sheet_y":43,"short_name":"person_with_pouting_face","short_names":["person_with_pouting_face"],"text":null,"texts":null,"category":"People","sort_order":217,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F64E-1F3FB","image":"1f64e-1f3fb.png","sheet_x":24,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F64E-1F3FC","image":"1f64e-1f3fc.png","sheet_x":24,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F64E-1F3FD","image":"1f64e-1f3fd.png","sheet_x":24,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F64E-1F3FE","image":"1f64e-1f3fe.png","sheet_x":24,"sheet_y":47,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F64E-1F3FF","image":"1f64e-1f3ff.png","sheet_x":24,"sheet_y":48,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F64E-200D-2640-FE0F"},{"name":"PERSON WITH FOLDED HANDS","unified":"1F64F","variations":[],"docomo":null,"au":"EAD2","softbank":"E41D","google":"FE35B","image":"1f64f.png","sheet_x":25,"sheet_y":0,"short_name":"pray","short_names":["pray"],"text":null,"texts":null,"category":"People","sort_order":100,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F64F-1F3FB","image":"1f64f-1f3fb.png","sheet_x":25,"sheet_y":1,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F64F-1F3FC","image":"1f64f-1f3fc.png","sheet_x":25,"sheet_y":2,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F64F-1F3FD","image":"1f64f-1f3fd.png","sheet_x":25,"sheet_y":3,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F64F-1F3FE","image":"1f64f-1f3fe.png","sheet_x":25,"sheet_y":4,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F64F-1F3FF","image":"1f64f-1f3ff.png","sheet_x":25,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"ROCKET","unified":"1F680","variations":[],"docomo":null,"au":"E5C8","softbank":"E10D","google":"FE7ED","image":"1f680.png","sheet_x":25,"sheet_y":6,"short_name":"rocket","short_names":["rocket"],"text":null,"texts":null,"category":"Places","sort_order":43,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HELICOPTER","unified":"1F681","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f681.png","sheet_x":25,"sheet_y":7,"short_name":"helicopter","short_names":["helicopter"],"text":null,"texts":null,"category":"Places","sort_order":38,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"STEAM LOCOMOTIVE","unified":"1F682","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f682.png","sheet_x":25,"sheet_y":8,"short_name":"steam_locomotive","short_names":["steam_locomotive"],"text":null,"texts":null,"category":"Places","sort_order":33,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RAILWAY CAR","unified":"1F683","variations":[],"docomo":"E65B","au":"E4B5","softbank":"E01E","google":"FE7DF","image":"1f683.png","sheet_x":25,"sheet_y":9,"short_name":"railway_car","short_names":["railway_car"],"text":null,"texts":null,"category":"Places","sort_order":26,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HIGH-SPEED TRAIN","unified":"1F684","variations":[],"docomo":"E65D","au":"E4B0","softbank":"E435","google":"FE7E2","image":"1f684.png","sheet_x":25,"sheet_y":10,"short_name":"bullettrain_side","short_names":["bullettrain_side"],"text":null,"texts":null,"category":"Places","sort_order":30,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HIGH-SPEED TRAIN WITH BULLET NOSE","unified":"1F685","variations":[],"docomo":"E65D","au":"E4B0","softbank":"E01F","google":"FE7E3","image":"1f685.png","sheet_x":25,"sheet_y":11,"short_name":"bullettrain_front","short_names":["bullettrain_front"],"text":null,"texts":null,"category":"Places","sort_order":31,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRAIN","unified":"1F686","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f686.png","sheet_x":25,"sheet_y":12,"short_name":"train2","short_names":["train2"],"text":null,"texts":null,"category":"Places","sort_order":34,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"METRO","unified":"1F687","variations":[],"docomo":"E65C","au":"E5BC","softbank":"E434","google":"FE7E0","image":"1f687.png","sheet_x":25,"sheet_y":13,"short_name":"metro","short_names":["metro"],"text":null,"texts":null,"category":"Places","sort_order":35,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LIGHT RAIL","unified":"1F688","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f688.png","sheet_x":25,"sheet_y":14,"short_name":"light_rail","short_names":["light_rail"],"text":null,"texts":null,"category":"Places","sort_order":32,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"STATION","unified":"1F689","variations":[],"docomo":null,"au":"EB6D","softbank":"E039","google":"FE7EC","image":"1f689.png","sheet_x":25,"sheet_y":15,"short_name":"station","short_names":["station"],"text":null,"texts":null,"category":"Places","sort_order":37,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRAM","unified":"1F68A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f68a.png","sheet_x":25,"sheet_y":16,"short_name":"tram","short_names":["tram"],"text":null,"texts":null,"category":"Places","sort_order":36,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRAM CAR","unified":"1F68B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f68b.png","sheet_x":25,"sheet_y":17,"short_name":"train","short_names":["train"],"text":null,"texts":null,"category":"Places","sort_order":27,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BUS","unified":"1F68C","variations":[],"docomo":"E660","au":"E4AF","softbank":"E159","google":"FE7E6","image":"1f68c.png","sheet_x":25,"sheet_y":18,"short_name":"bus","short_names":["bus"],"text":null,"texts":null,"category":"Places","sort_order":4,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ONCOMING BUS","unified":"1F68D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f68d.png","sheet_x":25,"sheet_y":19,"short_name":"oncoming_bus","short_names":["oncoming_bus"],"text":null,"texts":null,"category":"Places","sort_order":20,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TROLLEYBUS","unified":"1F68E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f68e.png","sheet_x":25,"sheet_y":20,"short_name":"trolleybus","short_names":["trolleybus"],"text":null,"texts":null,"category":"Places","sort_order":5,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BUS STOP","unified":"1F68F","variations":[],"docomo":null,"au":"E4A7","softbank":"E150","google":"FE7E7","image":"1f68f.png","sheet_x":25,"sheet_y":21,"short_name":"busstop","short_names":["busstop"],"text":null,"texts":null,"category":"Places","sort_order":56,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MINIBUS","unified":"1F690","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f690.png","sheet_x":25,"sheet_y":22,"short_name":"minibus","short_names":["minibus"],"text":null,"texts":null,"category":"Places","sort_order":10,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"AMBULANCE","unified":"1F691","variations":[],"docomo":null,"au":"EAE0","softbank":"E431","google":"FE7F3","image":"1f691.png","sheet_x":25,"sheet_y":23,"short_name":"ambulance","short_names":["ambulance"],"text":null,"texts":null,"category":"Places","sort_order":8,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"FIRE ENGINE","unified":"1F692","variations":[],"docomo":null,"au":"EADF","softbank":"E430","google":"FE7F2","image":"1f692.png","sheet_x":25,"sheet_y":24,"short_name":"fire_engine","short_names":["fire_engine"],"text":null,"texts":null,"category":"Places","sort_order":9,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POLICE CAR","unified":"1F693","variations":[],"docomo":null,"au":"EAE1","softbank":"E432","google":"FE7F4","image":"1f693.png","sheet_x":25,"sheet_y":25,"short_name":"police_car","short_names":["police_car"],"text":null,"texts":null,"category":"Places","sort_order":7,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ONCOMING POLICE CAR","unified":"1F694","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f694.png","sheet_x":25,"sheet_y":26,"short_name":"oncoming_police_car","short_names":["oncoming_police_car"],"text":null,"texts":null,"category":"Places","sort_order":19,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TAXI","unified":"1F695","variations":[],"docomo":"E65E","au":"E4B1","softbank":"E15A","google":"FE7EF","image":"1f695.png","sheet_x":25,"sheet_y":27,"short_name":"taxi","short_names":["taxi"],"text":null,"texts":null,"category":"Places","sort_order":2,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ONCOMING TAXI","unified":"1F696","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f696.png","sheet_x":25,"sheet_y":28,"short_name":"oncoming_taxi","short_names":["oncoming_taxi"],"text":null,"texts":null,"category":"Places","sort_order":22,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"AUTOMOBILE","unified":"1F697","variations":[],"docomo":"E65E","au":"E4B1","softbank":"E01B","google":"FE7E4","image":"1f697.png","sheet_x":25,"sheet_y":29,"short_name":"car","short_names":["car","red_car"],"text":null,"texts":null,"category":"Places","sort_order":1,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ONCOMING AUTOMOBILE","unified":"1F698","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f698.png","sheet_x":25,"sheet_y":30,"short_name":"oncoming_automobile","short_names":["oncoming_automobile"],"text":null,"texts":null,"category":"Places","sort_order":21,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RECREATIONAL VEHICLE","unified":"1F699","variations":[],"docomo":"E65F","au":"E4B1","softbank":"E42E","google":"FE7E5","image":"1f699.png","sheet_x":25,"sheet_y":31,"short_name":"blue_car","short_names":["blue_car"],"text":null,"texts":null,"category":"Places","sort_order":3,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DELIVERY TRUCK","unified":"1F69A","variations":[],"docomo":null,"au":"E4B2","softbank":"E42F","google":"FE7F1","image":"1f69a.png","sheet_x":25,"sheet_y":32,"short_name":"truck","short_names":["truck"],"text":null,"texts":null,"category":"Places","sort_order":11,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ARTICULATED LORRY","unified":"1F69B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f69b.png","sheet_x":25,"sheet_y":33,"short_name":"articulated_lorry","short_names":["articulated_lorry"],"text":null,"texts":null,"category":"Places","sort_order":12,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRACTOR","unified":"1F69C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f69c.png","sheet_x":25,"sheet_y":34,"short_name":"tractor","short_names":["tractor"],"text":null,"texts":null,"category":"Places","sort_order":13,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MONORAIL","unified":"1F69D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f69d.png","sheet_x":25,"sheet_y":35,"short_name":"monorail","short_names":["monorail"],"text":null,"texts":null,"category":"Places","sort_order":29,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOUNTAIN RAILWAY","unified":"1F69E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f69e.png","sheet_x":25,"sheet_y":36,"short_name":"mountain_railway","short_names":["mountain_railway"],"text":null,"texts":null,"category":"Places","sort_order":28,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SUSPENSION RAILWAY","unified":"1F69F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f69f.png","sheet_x":25,"sheet_y":37,"short_name":"suspension_railway","short_names":["suspension_railway"],"text":null,"texts":null,"category":"Places","sort_order":25,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MOUNTAIN CABLEWAY","unified":"1F6A0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6a0.png","sheet_x":25,"sheet_y":38,"short_name":"mountain_cableway","short_names":["mountain_cableway"],"text":null,"texts":null,"category":"Places","sort_order":24,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"AERIAL TRAMWAY","unified":"1F6A1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6a1.png","sheet_x":25,"sheet_y":39,"short_name":"aerial_tramway","short_names":["aerial_tramway"],"text":null,"texts":null,"category":"Places","sort_order":23,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SHIP","unified":"1F6A2","variations":[],"docomo":"E661","au":"EA82","softbank":"E202","google":"FE7E8","image":"1f6a2.png","sheet_x":25,"sheet_y":40,"short_name":"ship","short_names":["ship"],"text":null,"texts":null,"category":"Places","sort_order":52,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"ROWBOAT","unified":"1F6A3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6a3.png","sheet_x":25,"sheet_y":41,"short_name":"rowboat","short_names":["rowboat"],"text":null,"texts":null,"category":"Activity","sort_order":48,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F6A3-1F3FB","image":"1f6a3-1f3fb.png","sheet_x":25,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F6A3-1F3FC","image":"1f6a3-1f3fc.png","sheet_x":25,"sheet_y":43,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F6A3-1F3FD","image":"1f6a3-1f3fd.png","sheet_x":25,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F6A3-1F3FE","image":"1f6a3-1f3fe.png","sheet_x":25,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F6A3-1F3FF","image":"1f6a3-1f3ff.png","sheet_x":25,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}},"obsoleted_by":"1F6A3-200D-2642-FE0F"},{"name":"SPEEDBOAT","unified":"1F6A4","variations":[],"docomo":"E6A3","au":"E4B4","softbank":"E135","google":"FE7EE","image":"1f6a4.png","sheet_x":25,"sheet_y":47,"short_name":"speedboat","short_names":["speedboat"],"text":null,"texts":null,"category":"Places","sort_order":49,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"HORIZONTAL TRAFFIC LIGHT","unified":"1F6A5","variations":[],"docomo":"E66D","au":"E46A","softbank":"E14E","google":"FE7F7","image":"1f6a5.png","sheet_x":25,"sheet_y":48,"short_name":"traffic_light","short_names":["traffic_light"],"text":null,"texts":null,"category":"Places","sort_order":58,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"VERTICAL TRAFFIC LIGHT","unified":"1F6A6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6a6.png","sheet_x":26,"sheet_y":0,"short_name":"vertical_traffic_light","short_names":["vertical_traffic_light"],"text":null,"texts":null,"category":"Places","sort_order":57,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CONSTRUCTION SIGN","unified":"1F6A7","variations":[],"docomo":null,"au":"E5D7","softbank":"E137","google":"FE7F8","image":"1f6a7.png","sheet_x":26,"sheet_y":1,"short_name":"construction","short_names":["construction"],"text":null,"texts":null,"category":"Places","sort_order":54,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POLICE CARS REVOLVING LIGHT","unified":"1F6A8","variations":[],"docomo":null,"au":"EB73","softbank":"E432","google":"FE7F9","image":"1f6a8.png","sheet_x":26,"sheet_y":2,"short_name":"rotating_light","short_names":["rotating_light"],"text":null,"texts":null,"category":"Places","sort_order":18,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TRIANGULAR FLAG ON POST","unified":"1F6A9","variations":[],"docomo":"E6DE","au":"EB2C","softbank":null,"google":"FEB22","image":"1f6a9.png","sheet_x":26,"sheet_y":3,"short_name":"triangular_flag_on_post","short_names":["triangular_flag_on_post"],"text":null,"texts":null,"category":"Flags","sort_order":4,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DOOR","unified":"1F6AA","variations":[],"docomo":"E714","au":null,"softbank":null,"google":"FE4F3","image":"1f6aa.png","sheet_x":26,"sheet_y":4,"short_name":"door","short_names":["door"],"text":null,"texts":null,"category":"Objects","sort_order":91,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NO ENTRY SIGN","unified":"1F6AB","variations":[],"docomo":"E738","au":"E541","softbank":null,"google":"FEB48","image":"1f6ab.png","sheet_x":26,"sheet_y":5,"short_name":"no_entry_sign","short_names":["no_entry_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":74,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SMOKING SYMBOL","unified":"1F6AC","variations":[],"docomo":"E67F","au":"E47D","softbank":"E30E","google":"FEB1E","image":"1f6ac.png","sheet_x":26,"sheet_y":6,"short_name":"smoking","short_names":["smoking"],"text":null,"texts":null,"category":"Objects","sort_order":69,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NO SMOKING SYMBOL","unified":"1F6AD","variations":[],"docomo":"E680","au":"E47E","softbank":"E208","google":"FEB1F","image":"1f6ad.png","sheet_x":26,"sheet_y":7,"short_name":"no_smoking","short_names":["no_smoking"],"text":null,"texts":null,"category":"Symbols","sort_order":84,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PUT LITTER IN ITS PLACE SYMBOL","unified":"1F6AE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6ae.png","sheet_x":26,"sheet_y":8,"short_name":"put_litter_in_its_place","short_names":["put_litter_in_its_place"],"text":null,"texts":null,"category":"Symbols","sort_order":125,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"DO NOT LITTER SYMBOL","unified":"1F6AF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6af.png","sheet_x":26,"sheet_y":9,"short_name":"do_not_litter","short_names":["do_not_litter"],"text":null,"texts":null,"category":"Symbols","sort_order":79,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"POTABLE WATER SYMBOL","unified":"1F6B0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b0.png","sheet_x":26,"sheet_y":10,"short_name":"potable_water","short_names":["potable_water"],"text":null,"texts":null,"category":"Objects","sort_order":84,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NON-POTABLE WATER SYMBOL","unified":"1F6B1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b1.png","sheet_x":26,"sheet_y":11,"short_name":"non-potable_water","short_names":["non-potable_water"],"text":null,"texts":null,"category":"Symbols","sort_order":81,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BICYCLE","unified":"1F6B2","variations":[],"docomo":"E71D","au":"E4AE","softbank":"E136","google":"FE7EB","image":"1f6b2.png","sheet_x":26,"sheet_y":12,"short_name":"bike","short_names":["bike"],"text":null,"texts":null,"category":"Places","sort_order":15,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"NO BICYCLES","unified":"1F6B3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b3.png","sheet_x":26,"sheet_y":13,"short_name":"no_bicycles","short_names":["no_bicycles"],"text":null,"texts":null,"category":"Symbols","sort_order":80,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BICYCLIST","unified":"1F6B4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b4.png","sheet_x":26,"sheet_y":14,"short_name":"bicyclist","short_names":["bicyclist"],"text":null,"texts":null,"category":"Activity","sort_order":51,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F6B4-1F3FB","image":"1f6b4-1f3fb.png","sheet_x":26,"sheet_y":15,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F6B4-1F3FC","image":"1f6b4-1f3fc.png","sheet_x":26,"sheet_y":16,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F6B4-1F3FD","image":"1f6b4-1f3fd.png","sheet_x":26,"sheet_y":17,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F6B4-1F3FE","image":"1f6b4-1f3fe.png","sheet_x":26,"sheet_y":18,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F6B4-1F3FF","image":"1f6b4-1f3ff.png","sheet_x":26,"sheet_y":19,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F6B4-200D-2642-FE0F"},{"name":"MOUNTAIN BICYCLIST","unified":"1F6B5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b5.png","sheet_x":26,"sheet_y":20,"short_name":"mountain_bicyclist","short_names":["mountain_bicyclist"],"text":null,"texts":null,"category":"Activity","sort_order":53,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F6B5-1F3FB","image":"1f6b5-1f3fb.png","sheet_x":26,"sheet_y":21,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F6B5-1F3FC","image":"1f6b5-1f3fc.png","sheet_x":26,"sheet_y":22,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F6B5-1F3FD","image":"1f6b5-1f3fd.png","sheet_x":26,"sheet_y":23,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F6B5-1F3FE","image":"1f6b5-1f3fe.png","sheet_x":26,"sheet_y":24,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F6B5-1F3FF","image":"1f6b5-1f3ff.png","sheet_x":26,"sheet_y":25,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F6B5-200D-2642-FE0F"},{"name":"PEDESTRIAN","unified":"1F6B6","variations":[],"docomo":"E733","au":"EB72","softbank":"E201","google":"FE7F0","image":"1f6b6.png","sheet_x":26,"sheet_y":26,"short_name":"walking","short_names":["walking"],"text":null,"texts":null,"category":"People","sort_order":231,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F6B6-1F3FB","image":"1f6b6-1f3fb.png","sheet_x":26,"sheet_y":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F6B6-1F3FC","image":"1f6b6-1f3fc.png","sheet_x":26,"sheet_y":28,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F6B6-1F3FD","image":"1f6b6-1f3fd.png","sheet_x":26,"sheet_y":29,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F6B6-1F3FE","image":"1f6b6-1f3fe.png","sheet_x":26,"sheet_y":30,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F6B6-1F3FF","image":"1f6b6-1f3ff.png","sheet_x":26,"sheet_y":31,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}},"obsoleted_by":"1F6B6-200D-2642-FE0F"},{"name":"NO PEDESTRIANS","unified":"1F6B7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b7.png","sheet_x":26,"sheet_y":32,"short_name":"no_pedestrians","short_names":["no_pedestrians"],"text":null,"texts":null,"category":"Symbols","sort_order":78,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CHILDREN CROSSING","unified":"1F6B8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b8.png","sheet_x":26,"sheet_y":33,"short_name":"children_crossing","short_names":["children_crossing"],"text":null,"texts":null,"category":"Symbols","sort_order":95,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"MENS SYMBOL","unified":"1F6B9","variations":[],"docomo":null,"au":null,"softbank":"E138","google":"FEB33","image":"1f6b9.png","sheet_x":26,"sheet_y":34,"short_name":"mens","short_names":["mens"],"text":null,"texts":null,"category":"Symbols","sort_order":121,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WOMENS SYMBOL","unified":"1F6BA","variations":[],"docomo":null,"au":null,"softbank":"E139","google":"FEB34","image":"1f6ba.png","sheet_x":26,"sheet_y":35,"short_name":"womens","short_names":["womens"],"text":null,"texts":null,"category":"Symbols","sort_order":122,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"RESTROOM","unified":"1F6BB","variations":[],"docomo":"E66E","au":"E4A5","softbank":"E151","google":"FE506","image":"1f6bb.png","sheet_x":26,"sheet_y":36,"short_name":"restroom","short_names":["restroom"],"text":null,"texts":null,"category":"Symbols","sort_order":124,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BABY SYMBOL","unified":"1F6BC","variations":[],"docomo":null,"au":"EB18","softbank":"E13A","google":"FEB35","image":"1f6bc.png","sheet_x":26,"sheet_y":37,"short_name":"baby_symbol","short_names":["baby_symbol"],"text":null,"texts":null,"category":"Symbols","sort_order":123,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"TOILET","unified":"1F6BD","variations":[],"docomo":"E66E","au":"E4A5","softbank":"E140","google":"FE507","image":"1f6bd.png","sheet_x":26,"sheet_y":38,"short_name":"toilet","short_names":["toilet"],"text":null,"texts":null,"category":"Objects","sort_order":83,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"WATER CLOSET","unified":"1F6BE","variations":[],"docomo":"E66E","au":"E4A5","softbank":"E309","google":"FE508","image":"1f6be.png","sheet_x":26,"sheet_y":39,"short_name":"wc","short_names":["wc"],"text":null,"texts":null,"category":"Symbols","sort_order":112,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"SHOWER","unified":"1F6BF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6bf.png","sheet_x":26,"sheet_y":40,"short_name":"shower","short_names":["shower"],"text":null,"texts":null,"category":"Objects","sort_order":85,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BATH","unified":"1F6C0","variations":[],"docomo":"E6F7","au":"E5D8","softbank":"E13F","google":"FE505","image":"1f6c0.png","sheet_x":26,"sheet_y":41,"short_name":"bath","short_names":["bath"],"text":null,"texts":null,"category":"Objects","sort_order":87,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true,"skin_variations":{"1F3FB":{"unified":"1F6C0-1F3FB","image":"1f6c0-1f3fb.png","sheet_x":26,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FC":{"unified":"1F6C0-1F3FC","image":"1f6c0-1f3fc.png","sheet_x":26,"sheet_y":43,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FD":{"unified":"1F6C0-1F3FD","image":"1f6c0-1f3fd.png","sheet_x":26,"sheet_y":44,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FE":{"unified":"1F6C0-1F3FE","image":"1f6c0-1f3fe.png","sheet_x":26,"sheet_y":45,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},"1F3FF":{"unified":"1F6C0-1F3FF","image":"1f6c0-1f3ff.png","sheet_x":26,"sheet_y":46,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true}}},{"name":"BATHTUB","unified":"1F6C1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6c1.png","sheet_x":26,"sheet_y":47,"short_name":"bathtub","short_names":["bathtub"],"text":null,"texts":null,"category":"Objects","sort_order":86,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"PASSPORT CONTROL","unified":"1F6C2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6c2.png","sheet_x":26,"sheet_y":48,"short_name":"passport_control","short_names":["passport_control"],"text":null,"texts":null,"category":"Symbols","sort_order":117,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"CUSTOMS","unified":"1F6C3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6c3.png","sheet_x":27,"sheet_y":0,"short_name":"customs","short_names":["customs"],"text":null,"texts":null,"category":"Symbols","sort_order":118,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"BAGGAGE CLAIM","unified":"1F6C4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6c4.png","sheet_x":27,"sheet_y":1,"short_name":"baggage_claim","short_names":["baggage_claim"],"text":null,"texts":null,"category":"Symbols","sort_order":119,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"LEFT LUGGAGE","unified":"1F6C5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6c5.png","sheet_x":27,"sheet_y":2,"short_name":"left_luggage","short_names":["left_luggage"],"text":null,"texts":null,"category":"Symbols","sort_order":120,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"COUCH AND LAMP","unified":"1F6CB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6cb.png","sheet_x":27,"sheet_y":3,"short_name":"couch_and_lamp","short_names":["couch_and_lamp"],"text":null,"texts":null,"category":"Objects","sort_order":92,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SLEEPING ACCOMMODATION","unified":"1F6CC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6cc.png","sheet_x":27,"sheet_y":4,"short_name":"sleeping_accommodation","short_names":["sleeping_accommodation"],"text":null,"texts":null,"category":"Objects","sort_order":94,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6CC-1F3FB","image":"1f6cc-1f3fb.png","sheet_x":27,"sheet_y":5,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F6CC-1F3FC","image":"1f6cc-1f3fc.png","sheet_x":27,"sheet_y":6,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F6CC-1F3FD","image":"1f6cc-1f3fd.png","sheet_x":27,"sheet_y":7,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F6CC-1F3FE","image":"1f6cc-1f3fe.png","sheet_x":27,"sheet_y":8,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F6CC-1F3FF","image":"1f6cc-1f3ff.png","sheet_x":27,"sheet_y":9,"added_in":"8.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"SHOPPING BAGS","unified":"1F6CD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6cd.png","sheet_x":27,"sheet_y":10,"short_name":"shopping_bags","short_names":["shopping_bags"],"text":null,"texts":null,"category":"Objects","sort_order":96,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BELLHOP BELL","unified":"1F6CE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6ce.png","sheet_x":27,"sheet_y":11,"short_name":"bellhop_bell","short_names":["bellhop_bell"],"text":null,"texts":null,"category":"Objects","sort_order":88,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BED","unified":"1F6CF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6cf.png","sheet_x":27,"sheet_y":12,"short_name":"bed","short_names":["bed"],"text":null,"texts":null,"category":"Objects","sort_order":93,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PLACE OF WORSHIP","unified":"1F6D0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6d0.png","sheet_x":27,"sheet_y":13,"short_name":"place_of_worship","short_names":["place_of_worship"],"text":null,"texts":null,"category":"Symbols","sort_order":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"OCTAGONAL SIGN","unified":"1F6D1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6d1.png","sheet_x":27,"sheet_y":14,"short_name":"octagonal_sign","short_names":["octagonal_sign"],"text":null,"texts":null,"category":"Symbols","sort_order":71,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SHOPPING TROLLEY","unified":"1F6D2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6d2.png","sheet_x":27,"sheet_y":15,"short_name":"shopping_trolley","short_names":["shopping_trolley"],"text":null,"texts":null,"category":"Objects","sort_order":97,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HAMMER AND WRENCH","unified":"1F6E0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6e0.png","sheet_x":27,"sheet_y":16,"short_name":"hammer_and_wrench","short_names":["hammer_and_wrench"],"text":null,"texts":null,"category":"Objects","sort_order":58,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SHIELD","unified":"1F6E1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6e1.png","sheet_x":27,"sheet_y":17,"short_name":"shield","short_names":["shield"],"text":null,"texts":null,"category":"Objects","sort_order":68,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"OIL DRUM","unified":"1F6E2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6e2.png","sheet_x":27,"sheet_y":18,"short_name":"oil_drum","short_names":["oil_drum"],"text":null,"texts":null,"category":"Objects","sort_order":45,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MOTORWAY","unified":"1F6E3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6e3.png","sheet_x":27,"sheet_y":19,"short_name":"motorway","short_names":["motorway"],"text":null,"texts":null,"category":"Places","sort_order":81,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"RAILWAY TRACK","unified":"1F6E4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6e4.png","sheet_x":27,"sheet_y":20,"short_name":"railway_track","short_names":["railway_track"],"text":null,"texts":null,"category":"Places","sort_order":80,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MOTOR BOAT","unified":"1F6E5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6e5.png","sheet_x":27,"sheet_y":21,"short_name":"motor_boat","short_names":["motor_boat"],"text":null,"texts":null,"category":"Places","sort_order":48,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SMALL AIRPLANE","unified":"1F6E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6e9.png","sheet_x":27,"sheet_y":22,"short_name":"small_airplane","short_names":["small_airplane"],"text":null,"texts":null,"category":"Places","sort_order":39,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"AIRPLANE DEPARTURE","unified":"1F6EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6eb.png","sheet_x":27,"sheet_y":23,"short_name":"airplane_departure","short_names":["airplane_departure"],"text":null,"texts":null,"category":"Places","sort_order":41,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"AIRPLANE ARRIVING","unified":"1F6EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6ec.png","sheet_x":27,"sheet_y":24,"short_name":"airplane_arriving","short_names":["airplane_arriving"],"text":null,"texts":null,"category":"Places","sort_order":42,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SATELLITE","unified":"1F6F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6f0.png","sheet_x":27,"sheet_y":25,"short_name":"satellite","short_names":["satellite"],"text":null,"texts":null,"category":"Places","sort_order":44,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PASSENGER SHIP","unified":"1F6F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6f3.png","sheet_x":27,"sheet_y":26,"short_name":"passenger_ship","short_names":["passenger_ship"],"text":null,"texts":null,"category":"Places","sort_order":50,"added_in":"7.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SCOOTER","unified":"1F6F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6f4.png","sheet_x":27,"sheet_y":27,"short_name":"scooter","short_names":["scooter"],"text":null,"texts":null,"category":"Places","sort_order":14,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MOTOR SCOOTER","unified":"1F6F5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6f5.png","sheet_x":27,"sheet_y":28,"short_name":"motor_scooter","short_names":["motor_scooter"],"text":null,"texts":null,"category":"Places","sort_order":16,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CANOE","unified":"1F6F6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6f6.png","sheet_x":27,"sheet_y":29,"short_name":"canoe","short_names":["canoe"],"text":null,"texts":null,"category":"Places","sort_order":46,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ZIPPER-MOUTH FACE","unified":"1F910","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f910.png","sheet_x":27,"sheet_y":30,"short_name":"zipper_mouth_face","short_names":["zipper_mouth_face"],"text":null,"texts":null,"category":"People","sort_order":70,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MONEY-MOUTH FACE","unified":"1F911","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f911.png","sheet_x":27,"sheet_y":31,"short_name":"money_mouth_face","short_names":["money_mouth_face"],"text":null,"texts":null,"category":"People","sort_order":25,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FACE WITH THERMOMETER","unified":"1F912","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f912.png","sheet_x":27,"sheet_y":32,"short_name":"face_with_thermometer","short_names":["face_with_thermometer"],"text":null,"texts":null,"category":"People","sort_order":74,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"NERD FACE","unified":"1F913","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f913.png","sheet_x":27,"sheet_y":33,"short_name":"nerd_face","short_names":["nerd_face"],"text":null,"texts":null,"category":"People","sort_order":27,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"THINKING FACE","unified":"1F914","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f914.png","sheet_x":27,"sheet_y":34,"short_name":"thinking_face","short_names":["thinking_face"],"text":null,"texts":null,"category":"People","sort_order":67,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FACE WITH HEAD-BANDAGE","unified":"1F915","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f915.png","sheet_x":27,"sheet_y":35,"short_name":"face_with_head_bandage","short_names":["face_with_head_bandage"],"text":null,"texts":null,"category":"People","sort_order":75,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ROBOT FACE","unified":"1F916","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f916.png","sheet_x":27,"sheet_y":36,"short_name":"robot_face","short_names":["robot_face"],"text":null,"texts":null,"category":"People","sort_order":86,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HUGGING FACE","unified":"1F917","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f917.png","sheet_x":27,"sheet_y":37,"short_name":"hugging_face","short_names":["hugging_face"],"text":null,"texts":null,"category":"People","sort_order":26,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SIGN OF THE HORNS","unified":"1F918","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f918.png","sheet_x":27,"sheet_y":38,"short_name":"the_horns","short_names":["the_horns","sign_of_the_horns"],"text":null,"texts":null,"category":"People","sort_order":110,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F918-1F3FB","image":"1f918-1f3fb.png","sheet_x":27,"sheet_y":39,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F918-1F3FC","image":"1f918-1f3fc.png","sheet_x":27,"sheet_y":40,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F918-1F3FD","image":"1f918-1f3fd.png","sheet_x":27,"sheet_y":41,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F918-1F3FE","image":"1f918-1f3fe.png","sheet_x":27,"sheet_y":42,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F918-1F3FF","image":"1f918-1f3ff.png","sheet_x":27,"sheet_y":43,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"CALL ME HAND","unified":"1F919","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f919.png","sheet_x":27,"sheet_y":44,"short_name":"call_me_hand","short_names":["call_me_hand"],"text":null,"texts":null,"category":"People","sort_order":122,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F919-1F3FB","image":"1f919-1f3fb.png","sheet_x":27,"sheet_y":45,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F919-1F3FC","image":"1f919-1f3fc.png","sheet_x":27,"sheet_y":46,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F919-1F3FD","image":"1f919-1f3fd.png","sheet_x":27,"sheet_y":47,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F919-1F3FE","image":"1f919-1f3fe.png","sheet_x":27,"sheet_y":48,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F919-1F3FF","image":"1f919-1f3ff.png","sheet_x":28,"sheet_y":0,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"RAISED BACK OF HAND","unified":"1F91A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f91a.png","sheet_x":28,"sheet_y":1,"short_name":"raised_back_of_hand","short_names":["raised_back_of_hand"],"text":null,"texts":null,"category":"People","sort_order":118,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F91A-1F3FB","image":"1f91a-1f3fb.png","sheet_x":28,"sheet_y":2,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F91A-1F3FC","image":"1f91a-1f3fc.png","sheet_x":28,"sheet_y":3,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F91A-1F3FD","image":"1f91a-1f3fd.png","sheet_x":28,"sheet_y":4,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F91A-1F3FE","image":"1f91a-1f3fe.png","sheet_x":28,"sheet_y":5,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F91A-1F3FF","image":"1f91a-1f3ff.png","sheet_x":28,"sheet_y":6,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"LEFT-FACING FIST","unified":"1F91B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f91b.png","sheet_x":28,"sheet_y":7,"short_name":"left-facing_fist","short_names":["left-facing_fist"],"text":null,"texts":null,"category":"People","sort_order":106,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F91B-1F3FB","image":"1f91b-1f3fb.png","sheet_x":28,"sheet_y":8,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F91B-1F3FC","image":"1f91b-1f3fc.png","sheet_x":28,"sheet_y":9,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F91B-1F3FD","image":"1f91b-1f3fd.png","sheet_x":28,"sheet_y":10,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F91B-1F3FE","image":"1f91b-1f3fe.png","sheet_x":28,"sheet_y":11,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F91B-1F3FF","image":"1f91b-1f3ff.png","sheet_x":28,"sheet_y":12,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"RIGHT-FACING FIST","unified":"1F91C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f91c.png","sheet_x":28,"sheet_y":13,"short_name":"right-facing_fist","short_names":["right-facing_fist"],"text":null,"texts":null,"category":"People","sort_order":107,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F91C-1F3FB","image":"1f91c-1f3fb.png","sheet_x":28,"sheet_y":14,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F91C-1F3FC","image":"1f91c-1f3fc.png","sheet_x":28,"sheet_y":15,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F91C-1F3FD","image":"1f91c-1f3fd.png","sheet_x":28,"sheet_y":16,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F91C-1F3FE","image":"1f91c-1f3fe.png","sheet_x":28,"sheet_y":17,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F91C-1F3FF","image":"1f91c-1f3ff.png","sheet_x":28,"sheet_y":18,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"HANDSHAKE","unified":"1F91D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f91d.png","sheet_x":28,"sheet_y":19,"short_name":"handshake","short_names":["handshake"],"text":null,"texts":null,"category":"People","sort_order":101,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HAND WITH INDEX AND MIDDLE FINGERS CROSSED","unified":"1F91E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f91e.png","sheet_x":28,"sheet_y":20,"short_name":"hand_with_index_and_middle_fingers_crossed","short_names":["hand_with_index_and_middle_fingers_crossed"],"text":null,"texts":null,"category":"People","sort_order":108,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F91E-1F3FB","image":"1f91e-1f3fb.png","sheet_x":28,"sheet_y":21,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F91E-1F3FC","image":"1f91e-1f3fc.png","sheet_x":28,"sheet_y":22,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F91E-1F3FD","image":"1f91e-1f3fd.png","sheet_x":28,"sheet_y":23,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F91E-1F3FE","image":"1f91e-1f3fe.png","sheet_x":28,"sheet_y":24,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F91E-1F3FF","image":"1f91e-1f3ff.png","sheet_x":28,"sheet_y":25,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"FACE WITH COWBOY HAT","unified":"1F920","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f920.png","sheet_x":28,"sheet_y":26,"short_name":"face_with_cowboy_hat","short_names":["face_with_cowboy_hat"],"text":null,"texts":null,"category":"People","sort_order":30,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CLOWN FACE","unified":"1F921","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f921.png","sheet_x":28,"sheet_y":27,"short_name":"clown_face","short_names":["clown_face"],"text":null,"texts":null,"category":"People","sort_order":29,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"NAUSEATED FACE","unified":"1F922","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f922.png","sheet_x":28,"sheet_y":28,"short_name":"nauseated_face","short_names":["nauseated_face"],"text":null,"texts":null,"category":"People","sort_order":71,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"ROLLING ON THE FLOOR LAUGHING","unified":"1F923","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f923.png","sheet_x":28,"sheet_y":29,"short_name":"rolling_on_the_floor_laughing","short_names":["rolling_on_the_floor_laughing"],"text":null,"texts":null,"category":"People","sort_order":8,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DROOLING FACE","unified":"1F924","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f924.png","sheet_x":28,"sheet_y":30,"short_name":"drooling_face","short_names":["drooling_face"],"text":null,"texts":null,"category":"People","sort_order":61,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LYING FACE","unified":"1F925","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f925.png","sheet_x":28,"sheet_y":31,"short_name":"lying_face","short_names":["lying_face"],"text":null,"texts":null,"category":"People","sort_order":68,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FACE PALM","unified":"1F926","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f926.png","sheet_x":28,"sheet_y":32,"short_name":"face_palm","short_names":["face_palm"],"text":null,"texts":null,"category":"People","sort_order":211,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F926-1F3FB","image":"1f926-1f3fb.png","sheet_x":28,"sheet_y":33,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F926-1F3FC","image":"1f926-1f3fc.png","sheet_x":28,"sheet_y":34,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F926-1F3FD","image":"1f926-1f3fd.png","sheet_x":28,"sheet_y":35,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F926-1F3FE","image":"1f926-1f3fe.png","sheet_x":28,"sheet_y":36,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F926-1F3FF","image":"1f926-1f3ff.png","sheet_x":28,"sheet_y":37,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"SNEEZING FACE","unified":"1F927","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f927.png","sheet_x":28,"sheet_y":38,"short_name":"sneezing_face","short_names":["sneezing_face"],"text":null,"texts":null,"category":"People","sort_order":72,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PREGNANT WOMAN","unified":"1F930","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f930.png","sheet_x":28,"sheet_y":39,"short_name":"pregnant_woman","short_names":["pregnant_woman"],"text":null,"texts":null,"category":"People","sort_order":200,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F930-1F3FB","image":"1f930-1f3fb.png","sheet_x":28,"sheet_y":40,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F930-1F3FC","image":"1f930-1f3fc.png","sheet_x":28,"sheet_y":41,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F930-1F3FD","image":"1f930-1f3fd.png","sheet_x":28,"sheet_y":42,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F930-1F3FE","image":"1f930-1f3fe.png","sheet_x":28,"sheet_y":43,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F930-1F3FF","image":"1f930-1f3ff.png","sheet_x":28,"sheet_y":44,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"SELFIE","unified":"1F933","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f933.png","sheet_x":28,"sheet_y":45,"short_name":"selfie","short_names":["selfie"],"text":null,"texts":null,"category":"People","sort_order":126,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F933-1F3FB","image":"1f933-1f3fb.png","sheet_x":28,"sheet_y":46,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F933-1F3FC","image":"1f933-1f3fc.png","sheet_x":28,"sheet_y":47,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F933-1F3FD","image":"1f933-1f3fd.png","sheet_x":28,"sheet_y":48,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F933-1F3FE","image":"1f933-1f3fe.png","sheet_x":29,"sheet_y":0,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F933-1F3FF","image":"1f933-1f3ff.png","sheet_x":29,"sheet_y":1,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"PRINCE","unified":"1F934","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f934.png","sheet_x":29,"sheet_y":2,"short_name":"prince","short_names":["prince"],"text":null,"texts":null,"category":"People","sort_order":196,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F934-1F3FB","image":"1f934-1f3fb.png","sheet_x":29,"sheet_y":3,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F934-1F3FC","image":"1f934-1f3fc.png","sheet_x":29,"sheet_y":4,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F934-1F3FD","image":"1f934-1f3fd.png","sheet_x":29,"sheet_y":5,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F934-1F3FE","image":"1f934-1f3fe.png","sheet_x":29,"sheet_y":6,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F934-1F3FF","image":"1f934-1f3ff.png","sheet_x":29,"sheet_y":7,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"MAN IN TUXEDO","unified":"1F935","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f935.png","sheet_x":29,"sheet_y":8,"short_name":"man_in_tuxedo","short_names":["man_in_tuxedo"],"text":null,"texts":null,"category":"People","sort_order":198,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F935-1F3FB","image":"1f935-1f3fb.png","sheet_x":29,"sheet_y":9,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F935-1F3FC","image":"1f935-1f3fc.png","sheet_x":29,"sheet_y":10,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F935-1F3FD","image":"1f935-1f3fd.png","sheet_x":29,"sheet_y":11,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F935-1F3FE","image":"1f935-1f3fe.png","sheet_x":29,"sheet_y":12,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F935-1F3FF","image":"1f935-1f3ff.png","sheet_x":29,"sheet_y":13,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"MOTHER CHRISTMAS","unified":"1F936","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f936.png","sheet_x":29,"sheet_y":14,"short_name":"mother_christmas","short_names":["mother_christmas"],"text":null,"texts":null,"category":"People","sort_order":193,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F936-1F3FB","image":"1f936-1f3fb.png","sheet_x":29,"sheet_y":15,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F936-1F3FC","image":"1f936-1f3fc.png","sheet_x":29,"sheet_y":16,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F936-1F3FD","image":"1f936-1f3fd.png","sheet_x":29,"sheet_y":17,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F936-1F3FE","image":"1f936-1f3fe.png","sheet_x":29,"sheet_y":18,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F936-1F3FF","image":"1f936-1f3ff.png","sheet_x":29,"sheet_y":19,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"SHRUG","unified":"1F937","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f937.png","sheet_x":29,"sheet_y":20,"short_name":"shrug","short_names":["shrug"],"text":null,"texts":null,"category":"People","sort_order":214,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F937-1F3FB","image":"1f937-1f3fb.png","sheet_x":29,"sheet_y":21,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F937-1F3FC","image":"1f937-1f3fc.png","sheet_x":29,"sheet_y":22,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F937-1F3FD","image":"1f937-1f3fd.png","sheet_x":29,"sheet_y":23,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F937-1F3FE","image":"1f937-1f3fe.png","sheet_x":29,"sheet_y":24,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F937-1F3FF","image":"1f937-1f3ff.png","sheet_x":29,"sheet_y":25,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"PERSON DOING CARTWHEEL","unified":"1F938","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f938.png","sheet_x":29,"sheet_y":26,"short_name":"person_doing_cartwheel","short_names":["person_doing_cartwheel"],"text":null,"texts":null,"category":"Activity","sort_order":30,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F938-1F3FB","image":"1f938-1f3fb.png","sheet_x":29,"sheet_y":27,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F938-1F3FC","image":"1f938-1f3fc.png","sheet_x":29,"sheet_y":28,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F938-1F3FD","image":"1f938-1f3fd.png","sheet_x":29,"sheet_y":29,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F938-1F3FE","image":"1f938-1f3fe.png","sheet_x":29,"sheet_y":30,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F938-1F3FF","image":"1f938-1f3ff.png","sheet_x":29,"sheet_y":31,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"JUGGLING","unified":"1F939","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f939.png","sheet_x":29,"sheet_y":32,"short_name":"juggling","short_names":["juggling"],"text":null,"texts":null,"category":"Activity","sort_order":66,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F939-1F3FB","image":"1f939-1f3fb.png","sheet_x":29,"sheet_y":33,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F939-1F3FC","image":"1f939-1f3fc.png","sheet_x":29,"sheet_y":34,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F939-1F3FD","image":"1f939-1f3fd.png","sheet_x":29,"sheet_y":35,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F939-1F3FE","image":"1f939-1f3fe.png","sheet_x":29,"sheet_y":36,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F939-1F3FF","image":"1f939-1f3ff.png","sheet_x":29,"sheet_y":37,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"FENCER","unified":"1F93A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93a.png","sheet_x":29,"sheet_y":38,"short_name":"fencer","short_names":["fencer"],"text":null,"texts":null,"category":"Activity","sort_order":26,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WRESTLERS","unified":"1F93C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93c.png","sheet_x":29,"sheet_y":39,"short_name":"wrestlers","short_names":["wrestlers"],"text":null,"texts":null,"category":"Activity","sort_order":27,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"WATER POLO","unified":"1F93D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93d.png","sheet_x":29,"sheet_y":40,"short_name":"water_polo","short_names":["water_polo"],"text":null,"texts":null,"category":"Activity","sort_order":44,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F93D-1F3FB","image":"1f93d-1f3fb.png","sheet_x":29,"sheet_y":41,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F93D-1F3FC","image":"1f93d-1f3fc.png","sheet_x":29,"sheet_y":42,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F93D-1F3FD","image":"1f93d-1f3fd.png","sheet_x":29,"sheet_y":43,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F93D-1F3FE","image":"1f93d-1f3fe.png","sheet_x":29,"sheet_y":44,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F93D-1F3FF","image":"1f93d-1f3ff.png","sheet_x":29,"sheet_y":45,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"HANDBALL","unified":"1F93E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93e.png","sheet_x":29,"sheet_y":46,"short_name":"handball","short_names":["handball"],"text":null,"texts":null,"category":"Activity","sort_order":35,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F93E-1F3FB","image":"1f93e-1f3fb.png","sheet_x":29,"sheet_y":47,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F93E-1F3FC","image":"1f93e-1f3fc.png","sheet_x":29,"sheet_y":48,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F93E-1F3FD","image":"1f93e-1f3fd.png","sheet_x":30,"sheet_y":0,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F93E-1F3FE","image":"1f93e-1f3fe.png","sheet_x":30,"sheet_y":1,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F93E-1F3FF","image":"1f93e-1f3ff.png","sheet_x":30,"sheet_y":2,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false}}},{"name":"WILTED FLOWER","unified":"1F940","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f940.png","sheet_x":30,"sheet_y":3,"short_name":"wilted_flower","short_names":["wilted_flower"],"text":null,"texts":null,"category":"Nature","sort_order":108,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DRUM WITH DRUMSTICKS","unified":"1F941","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f941.png","sheet_x":30,"sheet_y":4,"short_name":"drum_with_drumsticks","short_names":["drum_with_drumsticks"],"text":null,"texts":null,"category":"Activity","sort_order":76,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CLINKING GLASSES","unified":"1F942","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f942.png","sheet_x":30,"sheet_y":5,"short_name":"clinking_glasses","short_names":["clinking_glasses"],"text":null,"texts":null,"category":"Foods","sort_order":78,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TUMBLER GLASS","unified":"1F943","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f943.png","sheet_x":30,"sheet_y":6,"short_name":"tumbler_glass","short_names":["tumbler_glass"],"text":null,"texts":null,"category":"Foods","sort_order":80,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SPOON","unified":"1F944","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f944.png","sheet_x":30,"sheet_y":7,"short_name":"spoon","short_names":["spoon"],"text":null,"texts":null,"category":"Foods","sort_order":84,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"GOAL NET","unified":"1F945","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f945.png","sheet_x":30,"sheet_y":8,"short_name":"goal_net","short_names":["goal_net"],"text":null,"texts":null,"category":"Activity","sort_order":11,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FIRST PLACE MEDAL","unified":"1F947","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f947.png","sheet_x":30,"sheet_y":9,"short_name":"first_place_medal","short_names":["first_place_medal"],"text":null,"texts":null,"category":"Activity","sort_order":57,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SECOND PLACE MEDAL","unified":"1F948","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f948.png","sheet_x":30,"sheet_y":10,"short_name":"second_place_medal","short_names":["second_place_medal"],"text":null,"texts":null,"category":"Activity","sort_order":58,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"THIRD PLACE MEDAL","unified":"1F949","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f949.png","sheet_x":30,"sheet_y":11,"short_name":"third_place_medal","short_names":["third_place_medal"],"text":null,"texts":null,"category":"Activity","sort_order":59,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BOXING GLOVE","unified":"1F94A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f94a.png","sheet_x":30,"sheet_y":12,"short_name":"boxing_glove","short_names":["boxing_glove"],"text":null,"texts":null,"category":"Activity","sort_order":18,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"MARTIAL ARTS UNIFORM","unified":"1F94B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f94b.png","sheet_x":30,"sheet_y":13,"short_name":"martial_arts_uniform","short_names":["martial_arts_uniform"],"text":null,"texts":null,"category":"Activity","sort_order":19,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CROISSANT","unified":"1F950","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f950.png","sheet_x":30,"sheet_y":14,"short_name":"croissant","short_names":["croissant"],"text":null,"texts":null,"category":"Foods","sort_order":27,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"AVOCADO","unified":"1F951","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f951.png","sheet_x":30,"sheet_y":15,"short_name":"avocado","short_names":["avocado"],"text":null,"texts":null,"category":"Foods","sort_order":15,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CUCUMBER","unified":"1F952","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f952.png","sheet_x":30,"sheet_y":16,"short_name":"cucumber","short_names":["cucumber"],"text":null,"texts":null,"category":"Foods","sort_order":18,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BACON","unified":"1F953","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f953.png","sheet_x":30,"sheet_y":17,"short_name":"bacon","short_names":["bacon"],"text":null,"texts":null,"category":"Foods","sort_order":33,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"POTATO","unified":"1F954","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f954.png","sheet_x":30,"sheet_y":18,"short_name":"potato","short_names":["potato"],"text":null,"texts":null,"category":"Foods","sort_order":22,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CARROT","unified":"1F955","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f955.png","sheet_x":30,"sheet_y":19,"short_name":"carrot","short_names":["carrot"],"text":null,"texts":null,"category":"Foods","sort_order":19,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BAGUETTE BREAD","unified":"1F956","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f956.png","sheet_x":30,"sheet_y":20,"short_name":"baguette_bread","short_names":["baguette_bread"],"text":null,"texts":null,"category":"Foods","sort_order":29,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"GREEN SALAD","unified":"1F957","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f957.png","sheet_x":30,"sheet_y":21,"short_name":"green_salad","short_names":["green_salad"],"text":null,"texts":null,"category":"Foods","sort_order":45,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SHALLOW PAN OF FOOD","unified":"1F958","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f958.png","sheet_x":30,"sheet_y":22,"short_name":"shallow_pan_of_food","short_names":["shallow_pan_of_food"],"text":null,"texts":null,"category":"Foods","sort_order":46,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"STUFFED FLATBREAD","unified":"1F959","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f959.png","sheet_x":30,"sheet_y":23,"short_name":"stuffed_flatbread","short_names":["stuffed_flatbread"],"text":null,"texts":null,"category":"Foods","sort_order":42,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EGG","unified":"1F95A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f95a.png","sheet_x":30,"sheet_y":24,"short_name":"egg","short_names":["egg"],"text":null,"texts":null,"category":"Foods","sort_order":31,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"GLASS OF MILK","unified":"1F95B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f95b.png","sheet_x":30,"sheet_y":25,"short_name":"glass_of_milk","short_names":["glass_of_milk"],"text":null,"texts":null,"category":"Foods","sort_order":71,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PEANUTS","unified":"1F95C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f95c.png","sheet_x":30,"sheet_y":26,"short_name":"peanuts","short_names":["peanuts"],"text":null,"texts":null,"category":"Foods","sort_order":25,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"KIWIFRUIT","unified":"1F95D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f95d.png","sheet_x":30,"sheet_y":27,"short_name":"kiwifruit","short_names":["kiwifruit"],"text":null,"texts":null,"category":"Foods","sort_order":14,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"PANCAKES","unified":"1F95E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f95e.png","sheet_x":30,"sheet_y":28,"short_name":"pancakes","short_names":["pancakes"],"text":null,"texts":null,"category":"Foods","sort_order":34,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CRAB","unified":"1F980","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f980.png","sheet_x":30,"sheet_y":29,"short_name":"crab","short_names":["crab"],"text":null,"texts":null,"category":"Nature","sort_order":48,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LION FACE","unified":"1F981","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f981.png","sheet_x":30,"sheet_y":30,"short_name":"lion_face","short_names":["lion_face"],"text":null,"texts":null,"category":"Nature","sort_order":11,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SCORPION","unified":"1F982","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f982.png","sheet_x":30,"sheet_y":31,"short_name":"scorpion","short_names":["scorpion"],"text":null,"texts":null,"category":"Nature","sort_order":47,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"TURKEY","unified":"1F983","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f983.png","sheet_x":30,"sheet_y":32,"short_name":"turkey","short_names":["turkey"],"text":null,"texts":null,"category":"Nature","sort_order":80,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"UNICORN FACE","unified":"1F984","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f984.png","sheet_x":30,"sheet_y":33,"short_name":"unicorn_face","short_names":["unicorn_face"],"text":null,"texts":null,"category":"Nature","sort_order":34,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"EAGLE","unified":"1F985","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f985.png","sheet_x":30,"sheet_y":34,"short_name":"eagle","short_names":["eagle"],"text":null,"texts":null,"category":"Nature","sort_order":28,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DUCK","unified":"1F986","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f986.png","sheet_x":30,"sheet_y":35,"short_name":"duck","short_names":["duck"],"text":null,"texts":null,"category":"Nature","sort_order":27,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BAT","unified":"1F987","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f987.png","sheet_x":30,"sheet_y":36,"short_name":"bat","short_names":["bat"],"text":null,"texts":null,"category":"Nature","sort_order":30,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SHARK","unified":"1F988","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f988.png","sheet_x":30,"sheet_y":37,"short_name":"shark","short_names":["shark"],"text":null,"texts":null,"category":"Nature","sort_order":56,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"OWL","unified":"1F989","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f989.png","sheet_x":30,"sheet_y":38,"short_name":"owl","short_names":["owl"],"text":null,"texts":null,"category":"Nature","sort_order":29,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"FOX FACE","unified":"1F98A","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f98a.png","sheet_x":30,"sheet_y":39,"short_name":"fox_face","short_names":["fox_face"],"text":null,"texts":null,"category":"Nature","sort_order":6,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"BUTTERFLY","unified":"1F98B","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f98b.png","sheet_x":30,"sheet_y":40,"short_name":"butterfly","short_names":["butterfly"],"text":null,"texts":null,"category":"Nature","sort_order":37,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"DEER","unified":"1F98C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f98c.png","sheet_x":30,"sheet_y":41,"short_name":"deer","short_names":["deer"],"text":null,"texts":null,"category":"Nature","sort_order":65,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"GORILLA","unified":"1F98D","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f98d.png","sheet_x":30,"sheet_y":42,"short_name":"gorilla","short_names":["gorilla"],"text":null,"texts":null,"category":"Nature","sort_order":70,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"LIZARD","unified":"1F98E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f98e.png","sheet_x":30,"sheet_y":43,"short_name":"lizard","short_names":["lizard"],"text":null,"texts":null,"category":"Nature","sort_order":46,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"RHINOCEROS","unified":"1F98F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f98f.png","sheet_x":30,"sheet_y":44,"short_name":"rhinoceros","short_names":["rhinoceros"],"text":null,"texts":null,"category":"Nature","sort_order":69,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SHRIMP","unified":"1F990","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f990.png","sheet_x":30,"sheet_y":45,"short_name":"shrimp","short_names":["shrimp"],"text":null,"texts":null,"category":"Nature","sort_order":51,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"SQUID","unified":"1F991","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f991.png","sheet_x":30,"sheet_y":46,"short_name":"squid","short_names":["squid"],"text":null,"texts":null,"category":"Nature","sort_order":49,"added_in":"9.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"CHEESE WEDGE","unified":"1F9C0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f9c0.png","sheet_x":30,"sheet_y":47,"short_name":"cheese_wedge","short_names":["cheese_wedge"],"text":null,"texts":null,"category":"Foods","sort_order":30,"added_in":"8.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"HASH KEY","unified":"0023-20E3","variations":["0023-FE0F-20E3"],"docomo":"E6E0","au":"EB84","softbank":"E210","google":"FE82C","image":"0023-20e3.png","sheet_x":30,"sheet_y":48,"short_name":"hash","short_names":["hash"],"text":null,"texts":null,"category":"Symbols","sort_order":152,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":null,"unified":"002A-20E3","variations":["002A-FE0F-20E3"],"docomo":null,"au":null,"softbank":null,"google":null,"image":"002a-20e3.png","sheet_x":31,"sheet_y":0,"short_name":"keycap_star","short_names":["keycap_star"],"text":null,"texts":null,"category":"Symbols","sort_order":153,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 0","unified":"0030-20E3","variations":["0030-FE0F-20E3"],"docomo":"E6EB","au":"E5AC","softbank":"E225","google":"FE837","image":"0030-20e3.png","sheet_x":31,"sheet_y":1,"short_name":"zero","short_names":["zero"],"text":null,"texts":null,"category":"Symbols","sort_order":140,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 1","unified":"0031-20E3","variations":["0031-FE0F-20E3"],"docomo":"E6E2","au":"E522","softbank":"E21C","google":"FE82E","image":"0031-20e3.png","sheet_x":31,"sheet_y":2,"short_name":"one","short_names":["one"],"text":null,"texts":null,"category":"Symbols","sort_order":141,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 2","unified":"0032-20E3","variations":["0032-FE0F-20E3"],"docomo":"E6E3","au":"E523","softbank":"E21D","google":"FE82F","image":"0032-20e3.png","sheet_x":31,"sheet_y":3,"short_name":"two","short_names":["two"],"text":null,"texts":null,"category":"Symbols","sort_order":142,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 3","unified":"0033-20E3","variations":["0033-FE0F-20E3"],"docomo":"E6E4","au":"E524","softbank":"E21E","google":"FE830","image":"0033-20e3.png","sheet_x":31,"sheet_y":4,"short_name":"three","short_names":["three"],"text":null,"texts":null,"category":"Symbols","sort_order":143,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 4","unified":"0034-20E3","variations":["0034-FE0F-20E3"],"docomo":"E6E5","au":"E525","softbank":"E21F","google":"FE831","image":"0034-20e3.png","sheet_x":31,"sheet_y":5,"short_name":"four","short_names":["four"],"text":null,"texts":null,"category":"Symbols","sort_order":144,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 5","unified":"0035-20E3","variations":["0035-FE0F-20E3"],"docomo":"E6E6","au":"E526","softbank":"E220","google":"FE832","image":"0035-20e3.png","sheet_x":31,"sheet_y":6,"short_name":"five","short_names":["five"],"text":null,"texts":null,"category":"Symbols","sort_order":145,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 6","unified":"0036-20E3","variations":["0036-FE0F-20E3"],"docomo":"E6E7","au":"E527","softbank":"E221","google":"FE833","image":"0036-20e3.png","sheet_x":31,"sheet_y":7,"short_name":"six","short_names":["six"],"text":null,"texts":null,"category":"Symbols","sort_order":146,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 7","unified":"0037-20E3","variations":["0037-FE0F-20E3"],"docomo":"E6E8","au":"E528","softbank":"E222","google":"FE834","image":"0037-20e3.png","sheet_x":31,"sheet_y":8,"short_name":"seven","short_names":["seven"],"text":null,"texts":null,"category":"Symbols","sort_order":147,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 8","unified":"0038-20E3","variations":["0038-FE0F-20E3"],"docomo":"E6E9","au":"E529","softbank":"E223","google":"FE835","image":"0038-20e3.png","sheet_x":31,"sheet_y":9,"short_name":"eight","short_names":["eight"],"text":null,"texts":null,"category":"Symbols","sort_order":148,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"KEYCAP 9","unified":"0039-20E3","variations":["0039-FE0F-20E3"],"docomo":"E6EA","au":"E52A","softbank":"E224","google":"FE836","image":"0039-20e3.png","sheet_x":31,"sheet_y":10,"short_name":"nine","short_names":["nine"],"text":null,"texts":null,"category":"Symbols","sort_order":149,"added_in":null,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":false,"has_img_messenger":false},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AC","unified":"1F1E6-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1e8.png","sheet_x":31,"sheet_y":11,"short_name":"flag-ac","short_names":["flag-ac"],"text":null,"texts":null,"category":"Flags","sort_order":254,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AD","unified":"1F1E6-1F1E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1e9.png","sheet_x":31,"sheet_y":12,"short_name":"flag-ad","short_names":["flag-ad"],"text":null,"texts":null,"category":"Flags","sort_order":11,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AE","unified":"1F1E6-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1ea.png","sheet_x":31,"sheet_y":13,"short_name":"flag-ae","short_names":["flag-ae"],"text":null,"texts":null,"category":"Flags","sort_order":239,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AF","unified":"1F1E6-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1eb.png","sheet_x":31,"sheet_y":14,"short_name":"flag-af","short_names":["flag-af"],"text":null,"texts":null,"category":"Flags","sort_order":6,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AG","unified":"1F1E6-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1ec.png","sheet_x":31,"sheet_y":15,"short_name":"flag-ag","short_names":["flag-ag"],"text":null,"texts":null,"category":"Flags","sort_order":15,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AI","unified":"1F1E6-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1ee.png","sheet_x":31,"sheet_y":16,"short_name":"flag-ai","short_names":["flag-ai"],"text":null,"texts":null,"category":"Flags","sort_order":13,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AL","unified":"1F1E6-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1f1.png","sheet_x":31,"sheet_y":17,"short_name":"flag-al","short_names":["flag-al"],"text":null,"texts":null,"category":"Flags","sort_order":8,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AM","unified":"1F1E6-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1f2.png","sheet_x":31,"sheet_y":18,"short_name":"flag-am","short_names":["flag-am"],"text":null,"texts":null,"category":"Flags","sort_order":17,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AO","unified":"1F1E6-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1f4.png","sheet_x":31,"sheet_y":19,"short_name":"flag-ao","short_names":["flag-ao"],"text":null,"texts":null,"category":"Flags","sort_order":12,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AQ","unified":"1F1E6-1F1F6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1f6.png","sheet_x":31,"sheet_y":20,"short_name":"flag-aq","short_names":["flag-aq"],"text":null,"texts":null,"category":"Flags","sort_order":14,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AR","unified":"1F1E6-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1f7.png","sheet_x":31,"sheet_y":21,"short_name":"flag-ar","short_names":["flag-ar"],"text":null,"texts":null,"category":"Flags","sort_order":16,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AS","unified":"1F1E6-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1f8.png","sheet_x":31,"sheet_y":22,"short_name":"flag-as","short_names":["flag-as"],"text":null,"texts":null,"category":"Flags","sort_order":10,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AT","unified":"1F1E6-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1f9.png","sheet_x":31,"sheet_y":23,"short_name":"flag-at","short_names":["flag-at"],"text":null,"texts":null,"category":"Flags","sort_order":20,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AU","unified":"1F1E6-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1fa.png","sheet_x":31,"sheet_y":24,"short_name":"flag-au","short_names":["flag-au"],"text":null,"texts":null,"category":"Flags","sort_order":19,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AW","unified":"1F1E6-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1fc.png","sheet_x":31,"sheet_y":25,"short_name":"flag-aw","short_names":["flag-aw"],"text":null,"texts":null,"category":"Flags","sort_order":18,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AX","unified":"1F1E6-1F1FD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1fd.png","sheet_x":31,"sheet_y":26,"short_name":"flag-ax","short_names":["flag-ax"],"text":null,"texts":null,"category":"Flags","sort_order":7,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS AZ","unified":"1F1E6-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e6-1f1ff.png","sheet_x":31,"sheet_y":27,"short_name":"flag-az","short_names":["flag-az"],"text":null,"texts":null,"category":"Flags","sort_order":21,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BA","unified":"1F1E7-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1e6.png","sheet_x":31,"sheet_y":28,"short_name":"flag-ba","short_names":["flag-ba"],"text":null,"texts":null,"category":"Flags","sort_order":34,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BB","unified":"1F1E7-1F1E7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1e7.png","sheet_x":31,"sheet_y":29,"short_name":"flag-bb","short_names":["flag-bb"],"text":null,"texts":null,"category":"Flags","sort_order":25,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BD","unified":"1F1E7-1F1E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1e9.png","sheet_x":31,"sheet_y":30,"short_name":"flag-bd","short_names":["flag-bd"],"text":null,"texts":null,"category":"Flags","sort_order":24,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BE","unified":"1F1E7-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1ea.png","sheet_x":31,"sheet_y":31,"short_name":"flag-be","short_names":["flag-be"],"text":null,"texts":null,"category":"Flags","sort_order":27,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BF","unified":"1F1E7-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1eb.png","sheet_x":31,"sheet_y":32,"short_name":"flag-bf","short_names":["flag-bf"],"text":null,"texts":null,"category":"Flags","sort_order":41,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BG","unified":"1F1E7-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1ec.png","sheet_x":31,"sheet_y":33,"short_name":"flag-bg","short_names":["flag-bg"],"text":null,"texts":null,"category":"Flags","sort_order":40,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BH","unified":"1F1E7-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1ed.png","sheet_x":31,"sheet_y":34,"short_name":"flag-bh","short_names":["flag-bh"],"text":null,"texts":null,"category":"Flags","sort_order":23,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BI","unified":"1F1E7-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1ee.png","sheet_x":31,"sheet_y":35,"short_name":"flag-bi","short_names":["flag-bi"],"text":null,"texts":null,"category":"Flags","sort_order":42,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BJ","unified":"1F1E7-1F1EF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1ef.png","sheet_x":31,"sheet_y":36,"short_name":"flag-bj","short_names":["flag-bj"],"text":null,"texts":null,"category":"Flags","sort_order":29,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BL","unified":"1F1E7-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1f1.png","sheet_x":31,"sheet_y":37,"short_name":"flag-bl","short_names":["flag-bl"],"text":null,"texts":null,"category":"Flags","sort_order":191,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BM","unified":"1F1E7-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1f2.png","sheet_x":31,"sheet_y":38,"short_name":"flag-bm","short_names":["flag-bm"],"text":null,"texts":null,"category":"Flags","sort_order":30,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BN","unified":"1F1E7-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1f3.png","sheet_x":31,"sheet_y":39,"short_name":"flag-bn","short_names":["flag-bn"],"text":null,"texts":null,"category":"Flags","sort_order":39,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BO","unified":"1F1E7-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1f4.png","sheet_x":31,"sheet_y":40,"short_name":"flag-bo","short_names":["flag-bo"],"text":null,"texts":null,"category":"Flags","sort_order":32,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BQ","unified":"1F1E7-1F1F6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1f6.png","sheet_x":31,"sheet_y":41,"short_name":"flag-bq","short_names":["flag-bq"],"text":null,"texts":null,"category":"Flags","sort_order":33,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BR","unified":"1F1E7-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1f7.png","sheet_x":31,"sheet_y":42,"short_name":"flag-br","short_names":["flag-br"],"text":null,"texts":null,"category":"Flags","sort_order":36,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BS","unified":"1F1E7-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1f8.png","sheet_x":31,"sheet_y":43,"short_name":"flag-bs","short_names":["flag-bs"],"text":null,"texts":null,"category":"Flags","sort_order":22,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BT","unified":"1F1E7-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1f9.png","sheet_x":31,"sheet_y":44,"short_name":"flag-bt","short_names":["flag-bt"],"text":null,"texts":null,"category":"Flags","sort_order":31,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BV","unified":"1F1E7-1F1FB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1fb.png","sheet_x":31,"sheet_y":45,"short_name":"flag-bv","short_names":["flag-bv"],"text":null,"texts":null,"category":"Flags","sort_order":255,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BW","unified":"1F1E7-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1fc.png","sheet_x":31,"sheet_y":46,"short_name":"flag-bw","short_names":["flag-bw"],"text":null,"texts":null,"category":"Flags","sort_order":35,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BY","unified":"1F1E7-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1fe.png","sheet_x":31,"sheet_y":47,"short_name":"flag-by","short_names":["flag-by"],"text":null,"texts":null,"category":"Flags","sort_order":26,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS BZ","unified":"1F1E7-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e7-1f1ff.png","sheet_x":31,"sheet_y":48,"short_name":"flag-bz","short_names":["flag-bz"],"text":null,"texts":null,"category":"Flags","sort_order":28,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CA","unified":"1F1E8-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1e6.png","sheet_x":32,"sheet_y":0,"short_name":"flag-ca","short_names":["flag-ca"],"text":null,"texts":null,"category":"Flags","sort_order":46,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CC","unified":"1F1E8-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1e8.png","sheet_x":32,"sheet_y":1,"short_name":"flag-cc","short_names":["flag-cc"],"text":null,"texts":null,"category":"Flags","sort_order":54,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CD","unified":"1F1E8-1F1E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1e9.png","sheet_x":32,"sheet_y":2,"short_name":"flag-cd","short_names":["flag-cd"],"text":null,"texts":null,"category":"Flags","sort_order":58,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CF","unified":"1F1E8-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1eb.png","sheet_x":32,"sheet_y":3,"short_name":"flag-cf","short_names":["flag-cf"],"text":null,"texts":null,"category":"Flags","sort_order":49,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CG","unified":"1F1E8-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1ec.png","sheet_x":32,"sheet_y":4,"short_name":"flag-cg","short_names":["flag-cg"],"text":null,"texts":null,"category":"Flags","sort_order":57,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CH","unified":"1F1E8-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1ed.png","sheet_x":32,"sheet_y":5,"short_name":"flag-ch","short_names":["flag-ch"],"text":null,"texts":null,"category":"Flags","sort_order":221,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CI","unified":"1F1E8-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1ee.png","sheet_x":32,"sheet_y":6,"short_name":"flag-ci","short_names":["flag-ci"],"text":null,"texts":null,"category":"Flags","sort_order":61,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CK","unified":"1F1E8-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1f0.png","sheet_x":32,"sheet_y":7,"short_name":"flag-ck","short_names":["flag-ck"],"text":null,"texts":null,"category":"Flags","sort_order":59,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CL","unified":"1F1E8-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1f1.png","sheet_x":32,"sheet_y":8,"short_name":"flag-cl","short_names":["flag-cl"],"text":null,"texts":null,"category":"Flags","sort_order":51,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CM","unified":"1F1E8-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1f2.png","sheet_x":32,"sheet_y":9,"short_name":"flag-cm","short_names":["flag-cm"],"text":null,"texts":null,"category":"Flags","sort_order":45,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CN","unified":"1F1E8-1F1F3","variations":[],"docomo":null,"au":"EB11","softbank":"E513","google":"FE4ED","image":"1f1e8-1f1f3.png","sheet_x":32,"sheet_y":10,"short_name":"flag-cn","short_names":["flag-cn","cn"],"text":null,"texts":null,"category":"Flags","sort_order":52,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CO","unified":"1F1E8-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1f4.png","sheet_x":32,"sheet_y":11,"short_name":"flag-co","short_names":["flag-co"],"text":null,"texts":null,"category":"Flags","sort_order":55,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CP","unified":"1F1E8-1F1F5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1f5.png","sheet_x":32,"sheet_y":12,"short_name":"flag-cp","short_names":["flag-cp"],"text":null,"texts":null,"category":"Flags","sort_order":256,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":false},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CR","unified":"1F1E8-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1f7.png","sheet_x":32,"sheet_y":13,"short_name":"flag-cr","short_names":["flag-cr"],"text":null,"texts":null,"category":"Flags","sort_order":60,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CU","unified":"1F1E8-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1fa.png","sheet_x":32,"sheet_y":14,"short_name":"flag-cu","short_names":["flag-cu"],"text":null,"texts":null,"category":"Flags","sort_order":63,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CV","unified":"1F1E8-1F1FB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1fb.png","sheet_x":32,"sheet_y":15,"short_name":"flag-cv","short_names":["flag-cv"],"text":null,"texts":null,"category":"Flags","sort_order":43,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CW","unified":"1F1E8-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1fc.png","sheet_x":32,"sheet_y":16,"short_name":"flag-cw","short_names":["flag-cw"],"text":null,"texts":null,"category":"Flags","sort_order":64,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CX","unified":"1F1E8-1F1FD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1fd.png","sheet_x":32,"sheet_y":17,"short_name":"flag-cx","short_names":["flag-cx"],"text":null,"texts":null,"category":"Flags","sort_order":53,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CY","unified":"1F1E8-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1fe.png","sheet_x":32,"sheet_y":18,"short_name":"flag-cy","short_names":["flag-cy"],"text":null,"texts":null,"category":"Flags","sort_order":65,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS CZ","unified":"1F1E8-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e8-1f1ff.png","sheet_x":32,"sheet_y":19,"short_name":"flag-cz","short_names":["flag-cz"],"text":null,"texts":null,"category":"Flags","sort_order":66,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS DE","unified":"1F1E9-1F1EA","variations":[],"docomo":null,"au":"EB0E","softbank":"E50E","google":"FE4E8","image":"1f1e9-1f1ea.png","sheet_x":32,"sheet_y":20,"short_name":"flag-de","short_names":["flag-de","de"],"text":null,"texts":null,"category":"Flags","sort_order":90,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS DG","unified":"1F1E9-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e9-1f1ec.png","sheet_x":32,"sheet_y":21,"short_name":"flag-dg","short_names":["flag-dg"],"text":null,"texts":null,"category":"Flags","sort_order":257,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS DJ","unified":"1F1E9-1F1EF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e9-1f1ef.png","sheet_x":32,"sheet_y":22,"short_name":"flag-dj","short_names":["flag-dj"],"text":null,"texts":null,"category":"Flags","sort_order":68,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS DK","unified":"1F1E9-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e9-1f1f0.png","sheet_x":32,"sheet_y":23,"short_name":"flag-dk","short_names":["flag-dk"],"text":null,"texts":null,"category":"Flags","sort_order":67,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS DM","unified":"1F1E9-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e9-1f1f2.png","sheet_x":32,"sheet_y":24,"short_name":"flag-dm","short_names":["flag-dm"],"text":null,"texts":null,"category":"Flags","sort_order":69,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS DO","unified":"1F1E9-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e9-1f1f4.png","sheet_x":32,"sheet_y":25,"short_name":"flag-do","short_names":["flag-do"],"text":null,"texts":null,"category":"Flags","sort_order":70,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS DZ","unified":"1F1E9-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1e9-1f1ff.png","sheet_x":32,"sheet_y":26,"short_name":"flag-dz","short_names":["flag-dz"],"text":null,"texts":null,"category":"Flags","sort_order":9,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS EA","unified":"1F1EA-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ea-1f1e6.png","sheet_x":32,"sheet_y":27,"short_name":"flag-ea","short_names":["flag-ea"],"text":null,"texts":null,"category":"Flags","sort_order":258,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS EC","unified":"1F1EA-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ea-1f1e8.png","sheet_x":32,"sheet_y":28,"short_name":"flag-ec","short_names":["flag-ec"],"text":null,"texts":null,"category":"Flags","sort_order":71,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS EE","unified":"1F1EA-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ea-1f1ea.png","sheet_x":32,"sheet_y":29,"short_name":"flag-ee","short_names":["flag-ee"],"text":null,"texts":null,"category":"Flags","sort_order":76,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS EG","unified":"1F1EA-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ea-1f1ec.png","sheet_x":32,"sheet_y":30,"short_name":"flag-eg","short_names":["flag-eg"],"text":null,"texts":null,"category":"Flags","sort_order":72,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS EH","unified":"1F1EA-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ea-1f1ed.png","sheet_x":32,"sheet_y":31,"short_name":"flag-eh","short_names":["flag-eh"],"text":null,"texts":null,"category":"Flags","sort_order":250,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ER","unified":"1F1EA-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ea-1f1f7.png","sheet_x":32,"sheet_y":32,"short_name":"flag-er","short_names":["flag-er"],"text":null,"texts":null,"category":"Flags","sort_order":75,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ES","unified":"1F1EA-1F1F8","variations":[],"docomo":null,"au":"E5D5","softbank":"E511","google":"FE4EB","image":"1f1ea-1f1f8.png","sheet_x":32,"sheet_y":33,"short_name":"flag-es","short_names":["flag-es","es"],"text":null,"texts":null,"category":"Flags","sort_order":215,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ET","unified":"1F1EA-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ea-1f1f9.png","sheet_x":32,"sheet_y":34,"short_name":"flag-et","short_names":["flag-et"],"text":null,"texts":null,"category":"Flags","sort_order":77,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS EU","unified":"1F1EA-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ea-1f1fa.png","sheet_x":32,"sheet_y":35,"short_name":"flag-eu","short_names":["flag-eu"],"text":null,"texts":null,"category":"Flags","sort_order":78,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS FI","unified":"1F1EB-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1eb-1f1ee.png","sheet_x":32,"sheet_y":36,"short_name":"flag-fi","short_names":["flag-fi"],"text":null,"texts":null,"category":"Flags","sort_order":82,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS FJ","unified":"1F1EB-1F1EF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1eb-1f1ef.png","sheet_x":32,"sheet_y":37,"short_name":"flag-fj","short_names":["flag-fj"],"text":null,"texts":null,"category":"Flags","sort_order":81,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS FK","unified":"1F1EB-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1eb-1f1f0.png","sheet_x":32,"sheet_y":38,"short_name":"flag-fk","short_names":["flag-fk"],"text":null,"texts":null,"category":"Flags","sort_order":79,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS FM","unified":"1F1EB-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1eb-1f1f2.png","sheet_x":32,"sheet_y":39,"short_name":"flag-fm","short_names":["flag-fm"],"text":null,"texts":null,"category":"Flags","sort_order":150,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS FO","unified":"1F1EB-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1eb-1f1f4.png","sheet_x":32,"sheet_y":40,"short_name":"flag-fo","short_names":["flag-fo"],"text":null,"texts":null,"category":"Flags","sort_order":80,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS FR","unified":"1F1EB-1F1F7","variations":[],"docomo":null,"au":"EAFA","softbank":"E50D","google":"FE4E7","image":"1f1eb-1f1f7.png","sheet_x":32,"sheet_y":41,"short_name":"flag-fr","short_names":["flag-fr","fr"],"text":null,"texts":null,"category":"Flags","sort_order":83,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GA","unified":"1F1EC-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1e6.png","sheet_x":32,"sheet_y":42,"short_name":"flag-ga","short_names":["flag-ga"],"text":null,"texts":null,"category":"Flags","sort_order":87,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GB","unified":"1F1EC-1F1E7","variations":[],"docomo":null,"au":"EB10","softbank":"E510","google":"FE4EA","image":"1f1ec-1f1e7.png","sheet_x":32,"sheet_y":43,"short_name":"flag-gb","short_names":["flag-gb","gb","uk"],"text":null,"texts":null,"category":"Flags","sort_order":240,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GD","unified":"1F1EC-1F1E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1e9.png","sheet_x":32,"sheet_y":44,"short_name":"flag-gd","short_names":["flag-gd"],"text":null,"texts":null,"category":"Flags","sort_order":95,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GE","unified":"1F1EC-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1ea.png","sheet_x":32,"sheet_y":45,"short_name":"flag-ge","short_names":["flag-ge"],"text":null,"texts":null,"category":"Flags","sort_order":89,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GF","unified":"1F1EC-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1eb.png","sheet_x":32,"sheet_y":46,"short_name":"flag-gf","short_names":["flag-gf"],"text":null,"texts":null,"category":"Flags","sort_order":84,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GG","unified":"1F1EC-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1ec.png","sheet_x":32,"sheet_y":47,"short_name":"flag-gg","short_names":["flag-gg"],"text":null,"texts":null,"category":"Flags","sort_order":99,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GH","unified":"1F1EC-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1ed.png","sheet_x":32,"sheet_y":48,"short_name":"flag-gh","short_names":["flag-gh"],"text":null,"texts":null,"category":"Flags","sort_order":91,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GI","unified":"1F1EC-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1ee.png","sheet_x":33,"sheet_y":0,"short_name":"flag-gi","short_names":["flag-gi"],"text":null,"texts":null,"category":"Flags","sort_order":92,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GL","unified":"1F1EC-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1f1.png","sheet_x":33,"sheet_y":1,"short_name":"flag-gl","short_names":["flag-gl"],"text":null,"texts":null,"category":"Flags","sort_order":94,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GM","unified":"1F1EC-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1f2.png","sheet_x":33,"sheet_y":2,"short_name":"flag-gm","short_names":["flag-gm"],"text":null,"texts":null,"category":"Flags","sort_order":88,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GN","unified":"1F1EC-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1f3.png","sheet_x":33,"sheet_y":3,"short_name":"flag-gn","short_names":["flag-gn"],"text":null,"texts":null,"category":"Flags","sort_order":100,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GP","unified":"1F1EC-1F1F5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1f5.png","sheet_x":33,"sheet_y":4,"short_name":"flag-gp","short_names":["flag-gp"],"text":null,"texts":null,"category":"Flags","sort_order":96,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GQ","unified":"1F1EC-1F1F6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1f6.png","sheet_x":33,"sheet_y":5,"short_name":"flag-gq","short_names":["flag-gq"],"text":null,"texts":null,"category":"Flags","sort_order":74,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GR","unified":"1F1EC-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1f7.png","sheet_x":33,"sheet_y":6,"short_name":"flag-gr","short_names":["flag-gr"],"text":null,"texts":null,"category":"Flags","sort_order":93,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GS","unified":"1F1EC-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1f8.png","sheet_x":33,"sheet_y":7,"short_name":"flag-gs","short_names":["flag-gs"],"text":null,"texts":null,"category":"Flags","sort_order":212,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GT","unified":"1F1EC-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1f9.png","sheet_x":33,"sheet_y":8,"short_name":"flag-gt","short_names":["flag-gt"],"text":null,"texts":null,"category":"Flags","sort_order":98,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GU","unified":"1F1EC-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1fa.png","sheet_x":33,"sheet_y":9,"short_name":"flag-gu","short_names":["flag-gu"],"text":null,"texts":null,"category":"Flags","sort_order":97,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GW","unified":"1F1EC-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1fc.png","sheet_x":33,"sheet_y":10,"short_name":"flag-gw","short_names":["flag-gw"],"text":null,"texts":null,"category":"Flags","sort_order":101,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS GY","unified":"1F1EC-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ec-1f1fe.png","sheet_x":33,"sheet_y":11,"short_name":"flag-gy","short_names":["flag-gy"],"text":null,"texts":null,"category":"Flags","sort_order":102,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS HK","unified":"1F1ED-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ed-1f1f0.png","sheet_x":33,"sheet_y":12,"short_name":"flag-hk","short_names":["flag-hk"],"text":null,"texts":null,"category":"Flags","sort_order":105,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS HM","unified":"1F1ED-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ed-1f1f2.png","sheet_x":33,"sheet_y":13,"short_name":"flag-hm","short_names":["flag-hm"],"text":null,"texts":null,"category":"Flags","sort_order":259,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS HN","unified":"1F1ED-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ed-1f1f3.png","sheet_x":33,"sheet_y":14,"short_name":"flag-hn","short_names":["flag-hn"],"text":null,"texts":null,"category":"Flags","sort_order":104,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS HR","unified":"1F1ED-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ed-1f1f7.png","sheet_x":33,"sheet_y":15,"short_name":"flag-hr","short_names":["flag-hr"],"text":null,"texts":null,"category":"Flags","sort_order":62,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS HT","unified":"1F1ED-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ed-1f1f9.png","sheet_x":33,"sheet_y":16,"short_name":"flag-ht","short_names":["flag-ht"],"text":null,"texts":null,"category":"Flags","sort_order":103,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS HU","unified":"1F1ED-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ed-1f1fa.png","sheet_x":33,"sheet_y":17,"short_name":"flag-hu","short_names":["flag-hu"],"text":null,"texts":null,"category":"Flags","sort_order":106,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IC","unified":"1F1EE-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1e8.png","sheet_x":33,"sheet_y":18,"short_name":"flag-ic","short_names":["flag-ic"],"text":null,"texts":null,"category":"Flags","sort_order":47,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ID","unified":"1F1EE-1F1E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1e9.png","sheet_x":33,"sheet_y":19,"short_name":"flag-id","short_names":["flag-id"],"text":null,"texts":null,"category":"Flags","sort_order":109,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IE","unified":"1F1EE-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1ea.png","sheet_x":33,"sheet_y":20,"short_name":"flag-ie","short_names":["flag-ie"],"text":null,"texts":null,"category":"Flags","sort_order":112,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IL","unified":"1F1EE-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1f1.png","sheet_x":33,"sheet_y":21,"short_name":"flag-il","short_names":["flag-il"],"text":null,"texts":null,"category":"Flags","sort_order":114,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IM","unified":"1F1EE-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1f2.png","sheet_x":33,"sheet_y":22,"short_name":"flag-im","short_names":["flag-im"],"text":null,"texts":null,"category":"Flags","sort_order":113,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IN","unified":"1F1EE-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1f3.png","sheet_x":33,"sheet_y":23,"short_name":"flag-in","short_names":["flag-in"],"text":null,"texts":null,"category":"Flags","sort_order":108,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IO","unified":"1F1EE-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1f4.png","sheet_x":33,"sheet_y":24,"short_name":"flag-io","short_names":["flag-io"],"text":null,"texts":null,"category":"Flags","sort_order":37,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IQ","unified":"1F1EE-1F1F6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1f6.png","sheet_x":33,"sheet_y":25,"short_name":"flag-iq","short_names":["flag-iq"],"text":null,"texts":null,"category":"Flags","sort_order":111,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IR","unified":"1F1EE-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1f7.png","sheet_x":33,"sheet_y":26,"short_name":"flag-ir","short_names":["flag-ir"],"text":null,"texts":null,"category":"Flags","sort_order":110,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IS","unified":"1F1EE-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ee-1f1f8.png","sheet_x":33,"sheet_y":27,"short_name":"flag-is","short_names":["flag-is"],"text":null,"texts":null,"category":"Flags","sort_order":107,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS IT","unified":"1F1EE-1F1F9","variations":[],"docomo":null,"au":"EB0F","softbank":"E50F","google":"FE4E9","image":"1f1ee-1f1f9.png","sheet_x":33,"sheet_y":28,"short_name":"flag-it","short_names":["flag-it","it"],"text":null,"texts":null,"category":"Flags","sort_order":115,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS JE","unified":"1F1EF-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ef-1f1ea.png","sheet_x":33,"sheet_y":29,"short_name":"flag-je","short_names":["flag-je"],"text":null,"texts":null,"category":"Flags","sort_order":119,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS JM","unified":"1F1EF-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ef-1f1f2.png","sheet_x":33,"sheet_y":30,"short_name":"flag-jm","short_names":["flag-jm"],"text":null,"texts":null,"category":"Flags","sort_order":116,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS JO","unified":"1F1EF-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ef-1f1f4.png","sheet_x":33,"sheet_y":31,"short_name":"flag-jo","short_names":["flag-jo"],"text":null,"texts":null,"category":"Flags","sort_order":120,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS JP","unified":"1F1EF-1F1F5","variations":[],"docomo":null,"au":"E4CC","softbank":"E50B","google":"FE4E5","image":"1f1ef-1f1f5.png","sheet_x":33,"sheet_y":32,"short_name":"flag-jp","short_names":["flag-jp","jp"],"text":null,"texts":null,"category":"Flags","sort_order":117,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KE","unified":"1F1F0-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1ea.png","sheet_x":33,"sheet_y":33,"short_name":"flag-ke","short_names":["flag-ke"],"text":null,"texts":null,"category":"Flags","sort_order":122,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KG","unified":"1F1F0-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1ec.png","sheet_x":33,"sheet_y":34,"short_name":"flag-kg","short_names":["flag-kg"],"text":null,"texts":null,"category":"Flags","sort_order":126,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KH","unified":"1F1F0-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1ed.png","sheet_x":33,"sheet_y":35,"short_name":"flag-kh","short_names":["flag-kh"],"text":null,"texts":null,"category":"Flags","sort_order":44,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KI","unified":"1F1F0-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1ee.png","sheet_x":33,"sheet_y":36,"short_name":"flag-ki","short_names":["flag-ki"],"text":null,"texts":null,"category":"Flags","sort_order":123,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KM","unified":"1F1F0-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1f2.png","sheet_x":33,"sheet_y":37,"short_name":"flag-km","short_names":["flag-km"],"text":null,"texts":null,"category":"Flags","sort_order":56,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KN","unified":"1F1F0-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1f3.png","sheet_x":33,"sheet_y":38,"short_name":"flag-kn","short_names":["flag-kn"],"text":null,"texts":null,"category":"Flags","sort_order":193,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KP","unified":"1F1F0-1F1F5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1f5.png","sheet_x":33,"sheet_y":39,"short_name":"flag-kp","short_names":["flag-kp"],"text":null,"texts":null,"category":"Flags","sort_order":171,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KR","unified":"1F1F0-1F1F7","variations":[],"docomo":null,"au":"EB12","softbank":"E514","google":"FE4EE","image":"1f1f0-1f1f7.png","sheet_x":33,"sheet_y":40,"short_name":"flag-kr","short_names":["flag-kr","kr"],"text":null,"texts":null,"category":"Flags","sort_order":213,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KW","unified":"1F1F0-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1fc.png","sheet_x":33,"sheet_y":41,"short_name":"flag-kw","short_names":["flag-kw"],"text":null,"texts":null,"category":"Flags","sort_order":125,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KY","unified":"1F1F0-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1fe.png","sheet_x":33,"sheet_y":42,"short_name":"flag-ky","short_names":["flag-ky"],"text":null,"texts":null,"category":"Flags","sort_order":48,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS KZ","unified":"1F1F0-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f0-1f1ff.png","sheet_x":33,"sheet_y":43,"short_name":"flag-kz","short_names":["flag-kz"],"text":null,"texts":null,"category":"Flags","sort_order":121,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LA","unified":"1F1F1-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1e6.png","sheet_x":33,"sheet_y":44,"short_name":"flag-la","short_names":["flag-la"],"text":null,"texts":null,"category":"Flags","sort_order":127,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LB","unified":"1F1F1-1F1E7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1e7.png","sheet_x":33,"sheet_y":45,"short_name":"flag-lb","short_names":["flag-lb"],"text":null,"texts":null,"category":"Flags","sort_order":129,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LC","unified":"1F1F1-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1e8.png","sheet_x":33,"sheet_y":46,"short_name":"flag-lc","short_names":["flag-lc"],"text":null,"texts":null,"category":"Flags","sort_order":194,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LI","unified":"1F1F1-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1ee.png","sheet_x":33,"sheet_y":47,"short_name":"flag-li","short_names":["flag-li"],"text":null,"texts":null,"category":"Flags","sort_order":133,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LK","unified":"1F1F1-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1f0.png","sheet_x":33,"sheet_y":48,"short_name":"flag-lk","short_names":["flag-lk"],"text":null,"texts":null,"category":"Flags","sort_order":216,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LR","unified":"1F1F1-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1f7.png","sheet_x":34,"sheet_y":0,"short_name":"flag-lr","short_names":["flag-lr"],"text":null,"texts":null,"category":"Flags","sort_order":131,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LS","unified":"1F1F1-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1f8.png","sheet_x":34,"sheet_y":1,"short_name":"flag-ls","short_names":["flag-ls"],"text":null,"texts":null,"category":"Flags","sort_order":130,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LT","unified":"1F1F1-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1f9.png","sheet_x":34,"sheet_y":2,"short_name":"flag-lt","short_names":["flag-lt"],"text":null,"texts":null,"category":"Flags","sort_order":134,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LU","unified":"1F1F1-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1fa.png","sheet_x":34,"sheet_y":3,"short_name":"flag-lu","short_names":["flag-lu"],"text":null,"texts":null,"category":"Flags","sort_order":135,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LV","unified":"1F1F1-1F1FB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1fb.png","sheet_x":34,"sheet_y":4,"short_name":"flag-lv","short_names":["flag-lv"],"text":null,"texts":null,"category":"Flags","sort_order":128,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS LY","unified":"1F1F1-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f1-1f1fe.png","sheet_x":34,"sheet_y":5,"short_name":"flag-ly","short_names":["flag-ly"],"text":null,"texts":null,"category":"Flags","sort_order":132,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MA","unified":"1F1F2-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1e6.png","sheet_x":34,"sheet_y":6,"short_name":"flag-ma","short_names":["flag-ma"],"text":null,"texts":null,"category":"Flags","sort_order":156,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MC","unified":"1F1F2-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1e8.png","sheet_x":34,"sheet_y":7,"short_name":"flag-mc","short_names":["flag-mc"],"text":null,"texts":null,"category":"Flags","sort_order":152,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MD","unified":"1F1F2-1F1E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1e9.png","sheet_x":34,"sheet_y":8,"short_name":"flag-md","short_names":["flag-md"],"text":null,"texts":null,"category":"Flags","sort_order":151,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ME","unified":"1F1F2-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1ea.png","sheet_x":34,"sheet_y":9,"short_name":"flag-me","short_names":["flag-me"],"text":null,"texts":null,"category":"Flags","sort_order":154,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MF","unified":"1F1F2-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1eb.png","sheet_x":34,"sheet_y":10,"short_name":"flag-mf","short_names":["flag-mf"],"text":null,"texts":null,"category":"Flags","sort_order":260,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MG","unified":"1F1F2-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1ec.png","sheet_x":34,"sheet_y":11,"short_name":"flag-mg","short_names":["flag-mg"],"text":null,"texts":null,"category":"Flags","sort_order":138,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MH","unified":"1F1F2-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1ed.png","sheet_x":34,"sheet_y":12,"short_name":"flag-mh","short_names":["flag-mh"],"text":null,"texts":null,"category":"Flags","sort_order":144,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MK","unified":"1F1F2-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f0.png","sheet_x":34,"sheet_y":13,"short_name":"flag-mk","short_names":["flag-mk"],"text":null,"texts":null,"category":"Flags","sort_order":137,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ML","unified":"1F1F2-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f1.png","sheet_x":34,"sheet_y":14,"short_name":"flag-ml","short_names":["flag-ml"],"text":null,"texts":null,"category":"Flags","sort_order":142,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MM","unified":"1F1F2-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f2.png","sheet_x":34,"sheet_y":15,"short_name":"flag-mm","short_names":["flag-mm"],"text":null,"texts":null,"category":"Flags","sort_order":158,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MN","unified":"1F1F2-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f3.png","sheet_x":34,"sheet_y":16,"short_name":"flag-mn","short_names":["flag-mn"],"text":null,"texts":null,"category":"Flags","sort_order":153,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MO","unified":"1F1F2-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f4.png","sheet_x":34,"sheet_y":17,"short_name":"flag-mo","short_names":["flag-mo"],"text":null,"texts":null,"category":"Flags","sort_order":136,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MP","unified":"1F1F2-1F1F5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f5.png","sheet_x":34,"sheet_y":18,"short_name":"flag-mp","short_names":["flag-mp"],"text":null,"texts":null,"category":"Flags","sort_order":170,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MQ","unified":"1F1F2-1F1F6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f6.png","sheet_x":34,"sheet_y":19,"short_name":"flag-mq","short_names":["flag-mq"],"text":null,"texts":null,"category":"Flags","sort_order":145,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MR","unified":"1F1F2-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f7.png","sheet_x":34,"sheet_y":20,"short_name":"flag-mr","short_names":["flag-mr"],"text":null,"texts":null,"category":"Flags","sort_order":146,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MS","unified":"1F1F2-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f8.png","sheet_x":34,"sheet_y":21,"short_name":"flag-ms","short_names":["flag-ms"],"text":null,"texts":null,"category":"Flags","sort_order":155,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MT","unified":"1F1F2-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1f9.png","sheet_x":34,"sheet_y":22,"short_name":"flag-mt","short_names":["flag-mt"],"text":null,"texts":null,"category":"Flags","sort_order":143,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MU","unified":"1F1F2-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1fa.png","sheet_x":34,"sheet_y":23,"short_name":"flag-mu","short_names":["flag-mu"],"text":null,"texts":null,"category":"Flags","sort_order":147,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MV","unified":"1F1F2-1F1FB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1fb.png","sheet_x":34,"sheet_y":24,"short_name":"flag-mv","short_names":["flag-mv"],"text":null,"texts":null,"category":"Flags","sort_order":141,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MW","unified":"1F1F2-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1fc.png","sheet_x":34,"sheet_y":25,"short_name":"flag-mw","short_names":["flag-mw"],"text":null,"texts":null,"category":"Flags","sort_order":139,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MX","unified":"1F1F2-1F1FD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1fd.png","sheet_x":34,"sheet_y":26,"short_name":"flag-mx","short_names":["flag-mx"],"text":null,"texts":null,"category":"Flags","sort_order":149,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MY","unified":"1F1F2-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1fe.png","sheet_x":34,"sheet_y":27,"short_name":"flag-my","short_names":["flag-my"],"text":null,"texts":null,"category":"Flags","sort_order":140,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS MZ","unified":"1F1F2-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f2-1f1ff.png","sheet_x":34,"sheet_y":28,"short_name":"flag-mz","short_names":["flag-mz"],"text":null,"texts":null,"category":"Flags","sort_order":157,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NA","unified":"1F1F3-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1e6.png","sheet_x":34,"sheet_y":29,"short_name":"flag-na","short_names":["flag-na"],"text":null,"texts":null,"category":"Flags","sort_order":159,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NC","unified":"1F1F3-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1e8.png","sheet_x":34,"sheet_y":30,"short_name":"flag-nc","short_names":["flag-nc"],"text":null,"texts":null,"category":"Flags","sort_order":163,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NE","unified":"1F1F3-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1ea.png","sheet_x":34,"sheet_y":31,"short_name":"flag-ne","short_names":["flag-ne"],"text":null,"texts":null,"category":"Flags","sort_order":166,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NF","unified":"1F1F3-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1eb.png","sheet_x":34,"sheet_y":32,"short_name":"flag-nf","short_names":["flag-nf"],"text":null,"texts":null,"category":"Flags","sort_order":169,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NG","unified":"1F1F3-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1ec.png","sheet_x":34,"sheet_y":33,"short_name":"flag-ng","short_names":["flag-ng"],"text":null,"texts":null,"category":"Flags","sort_order":167,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NI","unified":"1F1F3-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1ee.png","sheet_x":34,"sheet_y":34,"short_name":"flag-ni","short_names":["flag-ni"],"text":null,"texts":null,"category":"Flags","sort_order":165,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NL","unified":"1F1F3-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1f1.png","sheet_x":34,"sheet_y":35,"short_name":"flag-nl","short_names":["flag-nl"],"text":null,"texts":null,"category":"Flags","sort_order":162,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NO","unified":"1F1F3-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1f4.png","sheet_x":34,"sheet_y":36,"short_name":"flag-no","short_names":["flag-no"],"text":null,"texts":null,"category":"Flags","sort_order":172,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NP","unified":"1F1F3-1F1F5","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1f5.png","sheet_x":34,"sheet_y":37,"short_name":"flag-np","short_names":["flag-np"],"text":null,"texts":null,"category":"Flags","sort_order":161,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NR","unified":"1F1F3-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1f7.png","sheet_x":34,"sheet_y":38,"short_name":"flag-nr","short_names":["flag-nr"],"text":null,"texts":null,"category":"Flags","sort_order":160,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NU","unified":"1F1F3-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1fa.png","sheet_x":34,"sheet_y":39,"short_name":"flag-nu","short_names":["flag-nu"],"text":null,"texts":null,"category":"Flags","sort_order":168,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS NZ","unified":"1F1F3-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f3-1f1ff.png","sheet_x":34,"sheet_y":40,"short_name":"flag-nz","short_names":["flag-nz"],"text":null,"texts":null,"category":"Flags","sort_order":164,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS OM","unified":"1F1F4-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f4-1f1f2.png","sheet_x":34,"sheet_y":41,"short_name":"flag-om","short_names":["flag-om"],"text":null,"texts":null,"category":"Flags","sort_order":173,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PA","unified":"1F1F5-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1e6.png","sheet_x":34,"sheet_y":42,"short_name":"flag-pa","short_names":["flag-pa"],"text":null,"texts":null,"category":"Flags","sort_order":177,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PE","unified":"1F1F5-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1ea.png","sheet_x":34,"sheet_y":43,"short_name":"flag-pe","short_names":["flag-pe"],"text":null,"texts":null,"category":"Flags","sort_order":180,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PF","unified":"1F1F5-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1eb.png","sheet_x":34,"sheet_y":44,"short_name":"flag-pf","short_names":["flag-pf"],"text":null,"texts":null,"category":"Flags","sort_order":85,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PG","unified":"1F1F5-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1ec.png","sheet_x":34,"sheet_y":45,"short_name":"flag-pg","short_names":["flag-pg"],"text":null,"texts":null,"category":"Flags","sort_order":178,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PH","unified":"1F1F5-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1ed.png","sheet_x":34,"sheet_y":46,"short_name":"flag-ph","short_names":["flag-ph"],"text":null,"texts":null,"category":"Flags","sort_order":181,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PK","unified":"1F1F5-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1f0.png","sheet_x":34,"sheet_y":47,"short_name":"flag-pk","short_names":["flag-pk"],"text":null,"texts":null,"category":"Flags","sort_order":174,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PL","unified":"1F1F5-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1f1.png","sheet_x":34,"sheet_y":48,"short_name":"flag-pl","short_names":["flag-pl"],"text":null,"texts":null,"category":"Flags","sort_order":183,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PM","unified":"1F1F5-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1f2.png","sheet_x":35,"sheet_y":0,"short_name":"flag-pm","short_names":["flag-pm"],"text":null,"texts":null,"category":"Flags","sort_order":195,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PN","unified":"1F1F5-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1f3.png","sheet_x":35,"sheet_y":1,"short_name":"flag-pn","short_names":["flag-pn"],"text":null,"texts":null,"category":"Flags","sort_order":182,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PR","unified":"1F1F5-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1f7.png","sheet_x":35,"sheet_y":2,"short_name":"flag-pr","short_names":["flag-pr"],"text":null,"texts":null,"category":"Flags","sort_order":185,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PS","unified":"1F1F5-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1f8.png","sheet_x":35,"sheet_y":3,"short_name":"flag-ps","short_names":["flag-ps"],"text":null,"texts":null,"category":"Flags","sort_order":176,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PT","unified":"1F1F5-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1f9.png","sheet_x":35,"sheet_y":4,"short_name":"flag-pt","short_names":["flag-pt"],"text":null,"texts":null,"category":"Flags","sort_order":184,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PW","unified":"1F1F5-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1fc.png","sheet_x":35,"sheet_y":5,"short_name":"flag-pw","short_names":["flag-pw"],"text":null,"texts":null,"category":"Flags","sort_order":175,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS PY","unified":"1F1F5-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f5-1f1fe.png","sheet_x":35,"sheet_y":6,"short_name":"flag-py","short_names":["flag-py"],"text":null,"texts":null,"category":"Flags","sort_order":179,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS QA","unified":"1F1F6-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f6-1f1e6.png","sheet_x":35,"sheet_y":7,"short_name":"flag-qa","short_names":["flag-qa"],"text":null,"texts":null,"category":"Flags","sort_order":186,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS RE","unified":"1F1F7-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f7-1f1ea.png","sheet_x":35,"sheet_y":8,"short_name":"flag-re","short_names":["flag-re"],"text":null,"texts":null,"category":"Flags","sort_order":187,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS RO","unified":"1F1F7-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f7-1f1f4.png","sheet_x":35,"sheet_y":9,"short_name":"flag-ro","short_names":["flag-ro"],"text":null,"texts":null,"category":"Flags","sort_order":188,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS RS","unified":"1F1F7-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f7-1f1f8.png","sheet_x":35,"sheet_y":10,"short_name":"flag-rs","short_names":["flag-rs"],"text":null,"texts":null,"category":"Flags","sort_order":202,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS RU","unified":"1F1F7-1F1FA","variations":[],"docomo":null,"au":"E5D6","softbank":"E512","google":"FE4EC","image":"1f1f7-1f1fa.png","sheet_x":35,"sheet_y":11,"short_name":"flag-ru","short_names":["flag-ru","ru"],"text":null,"texts":null,"category":"Flags","sort_order":189,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS RW","unified":"1F1F7-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f7-1f1fc.png","sheet_x":35,"sheet_y":12,"short_name":"flag-rw","short_names":["flag-rw"],"text":null,"texts":null,"category":"Flags","sort_order":190,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SA","unified":"1F1F8-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1e6.png","sheet_x":35,"sheet_y":13,"short_name":"flag-sa","short_names":["flag-sa"],"text":null,"texts":null,"category":"Flags","sort_order":200,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SB","unified":"1F1F8-1F1E7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1e7.png","sheet_x":35,"sheet_y":14,"short_name":"flag-sb","short_names":["flag-sb"],"text":null,"texts":null,"category":"Flags","sort_order":209,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SC","unified":"1F1F8-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1e8.png","sheet_x":35,"sheet_y":15,"short_name":"flag-sc","short_names":["flag-sc"],"text":null,"texts":null,"category":"Flags","sort_order":203,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SD","unified":"1F1F8-1F1E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1e9.png","sheet_x":35,"sheet_y":16,"short_name":"flag-sd","short_names":["flag-sd"],"text":null,"texts":null,"category":"Flags","sort_order":217,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SE","unified":"1F1F8-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1ea.png","sheet_x":35,"sheet_y":17,"short_name":"flag-se","short_names":["flag-se"],"text":null,"texts":null,"category":"Flags","sort_order":220,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SG","unified":"1F1F8-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1ec.png","sheet_x":35,"sheet_y":18,"short_name":"flag-sg","short_names":["flag-sg"],"text":null,"texts":null,"category":"Flags","sort_order":205,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SH","unified":"1F1F8-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1ed.png","sheet_x":35,"sheet_y":19,"short_name":"flag-sh","short_names":["flag-sh"],"text":null,"texts":null,"category":"Flags","sort_order":192,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SI","unified":"1F1F8-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1ee.png","sheet_x":35,"sheet_y":20,"short_name":"flag-si","short_names":["flag-si"],"text":null,"texts":null,"category":"Flags","sort_order":208,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SJ","unified":"1F1F8-1F1EF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1ef.png","sheet_x":35,"sheet_y":21,"short_name":"flag-sj","short_names":["flag-sj"],"text":null,"texts":null,"category":"Flags","sort_order":261,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SK","unified":"1F1F8-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1f0.png","sheet_x":35,"sheet_y":22,"short_name":"flag-sk","short_names":["flag-sk"],"text":null,"texts":null,"category":"Flags","sort_order":207,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SL","unified":"1F1F8-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1f1.png","sheet_x":35,"sheet_y":23,"short_name":"flag-sl","short_names":["flag-sl"],"text":null,"texts":null,"category":"Flags","sort_order":204,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SM","unified":"1F1F8-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1f2.png","sheet_x":35,"sheet_y":24,"short_name":"flag-sm","short_names":["flag-sm"],"text":null,"texts":null,"category":"Flags","sort_order":198,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SN","unified":"1F1F8-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1f3.png","sheet_x":35,"sheet_y":25,"short_name":"flag-sn","short_names":["flag-sn"],"text":null,"texts":null,"category":"Flags","sort_order":201,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SO","unified":"1F1F8-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1f4.png","sheet_x":35,"sheet_y":26,"short_name":"flag-so","short_names":["flag-so"],"text":null,"texts":null,"category":"Flags","sort_order":210,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SR","unified":"1F1F8-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1f7.png","sheet_x":35,"sheet_y":27,"short_name":"flag-sr","short_names":["flag-sr"],"text":null,"texts":null,"category":"Flags","sort_order":218,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SS","unified":"1F1F8-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1f8.png","sheet_x":35,"sheet_y":28,"short_name":"flag-ss","short_names":["flag-ss"],"text":null,"texts":null,"category":"Flags","sort_order":214,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ST","unified":"1F1F8-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1f9.png","sheet_x":35,"sheet_y":29,"short_name":"flag-st","short_names":["flag-st"],"text":null,"texts":null,"category":"Flags","sort_order":199,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SV","unified":"1F1F8-1F1FB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1fb.png","sheet_x":35,"sheet_y":30,"short_name":"flag-sv","short_names":["flag-sv"],"text":null,"texts":null,"category":"Flags","sort_order":73,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SX","unified":"1F1F8-1F1FD","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1fd.png","sheet_x":35,"sheet_y":31,"short_name":"flag-sx","short_names":["flag-sx"],"text":null,"texts":null,"category":"Flags","sort_order":206,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SY","unified":"1F1F8-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1fe.png","sheet_x":35,"sheet_y":32,"short_name":"flag-sy","short_names":["flag-sy"],"text":null,"texts":null,"category":"Flags","sort_order":222,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS SZ","unified":"1F1F8-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f8-1f1ff.png","sheet_x":35,"sheet_y":33,"short_name":"flag-sz","short_names":["flag-sz"],"text":null,"texts":null,"category":"Flags","sort_order":219,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TA","unified":"1F1F9-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1e6.png","sheet_x":35,"sheet_y":34,"short_name":"flag-ta","short_names":["flag-ta"],"text":null,"texts":null,"category":"Flags","sort_order":262,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TC","unified":"1F1F9-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1e8.png","sheet_x":35,"sheet_y":35,"short_name":"flag-tc","short_names":["flag-tc"],"text":null,"texts":null,"category":"Flags","sort_order":235,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TD","unified":"1F1F9-1F1E9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1e9.png","sheet_x":35,"sheet_y":36,"short_name":"flag-td","short_names":["flag-td"],"text":null,"texts":null,"category":"Flags","sort_order":50,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TF","unified":"1F1F9-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1eb.png","sheet_x":35,"sheet_y":37,"short_name":"flag-tf","short_names":["flag-tf"],"text":null,"texts":null,"category":"Flags","sort_order":86,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TG","unified":"1F1F9-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1ec.png","sheet_x":35,"sheet_y":38,"short_name":"flag-tg","short_names":["flag-tg"],"text":null,"texts":null,"category":"Flags","sort_order":228,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TH","unified":"1F1F9-1F1ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1ed.png","sheet_x":35,"sheet_y":39,"short_name":"flag-th","short_names":["flag-th"],"text":null,"texts":null,"category":"Flags","sort_order":226,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TJ","unified":"1F1F9-1F1EF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1ef.png","sheet_x":35,"sheet_y":40,"short_name":"flag-tj","short_names":["flag-tj"],"text":null,"texts":null,"category":"Flags","sort_order":224,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TK","unified":"1F1F9-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1f0.png","sheet_x":35,"sheet_y":41,"short_name":"flag-tk","short_names":["flag-tk"],"text":null,"texts":null,"category":"Flags","sort_order":229,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TL","unified":"1F1F9-1F1F1","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1f1.png","sheet_x":35,"sheet_y":42,"short_name":"flag-tl","short_names":["flag-tl"],"text":null,"texts":null,"category":"Flags","sort_order":227,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TM","unified":"1F1F9-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1f2.png","sheet_x":35,"sheet_y":43,"short_name":"flag-tm","short_names":["flag-tm"],"text":null,"texts":null,"category":"Flags","sort_order":234,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TN","unified":"1F1F9-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1f3.png","sheet_x":35,"sheet_y":44,"short_name":"flag-tn","short_names":["flag-tn"],"text":null,"texts":null,"category":"Flags","sort_order":232,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TO","unified":"1F1F9-1F1F4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1f4.png","sheet_x":35,"sheet_y":45,"short_name":"flag-to","short_names":["flag-to"],"text":null,"texts":null,"category":"Flags","sort_order":230,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TR","unified":"1F1F9-1F1F7","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1f7.png","sheet_x":35,"sheet_y":46,"short_name":"flag-tr","short_names":["flag-tr"],"text":null,"texts":null,"category":"Flags","sort_order":233,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TT","unified":"1F1F9-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1f9.png","sheet_x":35,"sheet_y":47,"short_name":"flag-tt","short_names":["flag-tt"],"text":null,"texts":null,"category":"Flags","sort_order":231,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TV","unified":"1F1F9-1F1FB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1fb.png","sheet_x":35,"sheet_y":48,"short_name":"flag-tv","short_names":["flag-tv"],"text":null,"texts":null,"category":"Flags","sort_order":236,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TW","unified":"1F1F9-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1fc.png","sheet_x":36,"sheet_y":0,"short_name":"flag-tw","short_names":["flag-tw"],"text":null,"texts":null,"category":"Flags","sort_order":223,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS TZ","unified":"1F1F9-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1f9-1f1ff.png","sheet_x":36,"sheet_y":1,"short_name":"flag-tz","short_names":["flag-tz"],"text":null,"texts":null,"category":"Flags","sort_order":225,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS UA","unified":"1F1FA-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fa-1f1e6.png","sheet_x":36,"sheet_y":2,"short_name":"flag-ua","short_names":["flag-ua"],"text":null,"texts":null,"category":"Flags","sort_order":238,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS UG","unified":"1F1FA-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fa-1f1ec.png","sheet_x":36,"sheet_y":3,"short_name":"flag-ug","short_names":["flag-ug"],"text":null,"texts":null,"category":"Flags","sort_order":237,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS UM","unified":"1F1FA-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fa-1f1f2.png","sheet_x":36,"sheet_y":4,"short_name":"flag-um","short_names":["flag-um"],"text":null,"texts":null,"category":"Flags","sort_order":263,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS UN","unified":"1F1FA-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fa-1f1f3.png","sheet_x":36,"sheet_y":5,"short_name":"flag-un","short_names":["flag-un"],"text":null,"texts":null,"category":"Flags","sort_order":264,"added_in":"6.0","has_img_apple":false,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},{"name":"REGIONAL INDICATOR SYMBOL LETTERS US","unified":"1F1FA-1F1F8","variations":[],"docomo":null,"au":"E573","softbank":"E50C","google":"FE4E6","image":"1f1fa-1f1f8.png","sheet_x":36,"sheet_y":6,"short_name":"flag-us","short_names":["flag-us","us"],"text":null,"texts":null,"category":"Flags","sort_order":241,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS UY","unified":"1F1FA-1F1FE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fa-1f1fe.png","sheet_x":36,"sheet_y":7,"short_name":"flag-uy","short_names":["flag-uy"],"text":null,"texts":null,"category":"Flags","sort_order":243,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS UZ","unified":"1F1FA-1F1FF","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fa-1f1ff.png","sheet_x":36,"sheet_y":8,"short_name":"flag-uz","short_names":["flag-uz"],"text":null,"texts":null,"category":"Flags","sort_order":244,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS VA","unified":"1F1FB-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fb-1f1e6.png","sheet_x":36,"sheet_y":9,"short_name":"flag-va","short_names":["flag-va"],"text":null,"texts":null,"category":"Flags","sort_order":246,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS VC","unified":"1F1FB-1F1E8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fb-1f1e8.png","sheet_x":36,"sheet_y":10,"short_name":"flag-vc","short_names":["flag-vc"],"text":null,"texts":null,"category":"Flags","sort_order":196,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS VE","unified":"1F1FB-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fb-1f1ea.png","sheet_x":36,"sheet_y":11,"short_name":"flag-ve","short_names":["flag-ve"],"text":null,"texts":null,"category":"Flags","sort_order":247,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS VG","unified":"1F1FB-1F1EC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fb-1f1ec.png","sheet_x":36,"sheet_y":12,"short_name":"flag-vg","short_names":["flag-vg"],"text":null,"texts":null,"category":"Flags","sort_order":38,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS VI","unified":"1F1FB-1F1EE","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fb-1f1ee.png","sheet_x":36,"sheet_y":13,"short_name":"flag-vi","short_names":["flag-vi"],"text":null,"texts":null,"category":"Flags","sort_order":242,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS VN","unified":"1F1FB-1F1F3","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fb-1f1f3.png","sheet_x":36,"sheet_y":14,"short_name":"flag-vn","short_names":["flag-vn"],"text":null,"texts":null,"category":"Flags","sort_order":248,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS VU","unified":"1F1FB-1F1FA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fb-1f1fa.png","sheet_x":36,"sheet_y":15,"short_name":"flag-vu","short_names":["flag-vu"],"text":null,"texts":null,"category":"Flags","sort_order":245,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS WF","unified":"1F1FC-1F1EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fc-1f1eb.png","sheet_x":36,"sheet_y":16,"short_name":"flag-wf","short_names":["flag-wf"],"text":null,"texts":null,"category":"Flags","sort_order":249,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS WS","unified":"1F1FC-1F1F8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fc-1f1f8.png","sheet_x":36,"sheet_y":17,"short_name":"flag-ws","short_names":["flag-ws"],"text":null,"texts":null,"category":"Flags","sort_order":197,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS XK","unified":"1F1FD-1F1F0","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fd-1f1f0.png","sheet_x":36,"sheet_y":18,"short_name":"flag-xk","short_names":["flag-xk"],"text":null,"texts":null,"category":"Flags","sort_order":124,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS YE","unified":"1F1FE-1F1EA","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fe-1f1ea.png","sheet_x":36,"sheet_y":19,"short_name":"flag-ye","short_names":["flag-ye"],"text":null,"texts":null,"category":"Flags","sort_order":251,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS YT","unified":"1F1FE-1F1F9","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1fe-1f1f9.png","sheet_x":36,"sheet_y":20,"short_name":"flag-yt","short_names":["flag-yt"],"text":null,"texts":null,"category":"Flags","sort_order":148,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ZA","unified":"1F1FF-1F1E6","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ff-1f1e6.png","sheet_x":36,"sheet_y":21,"short_name":"flag-za","short_names":["flag-za"],"text":null,"texts":null,"category":"Flags","sort_order":211,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ZM","unified":"1F1FF-1F1F2","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ff-1f1f2.png","sheet_x":36,"sheet_y":22,"short_name":"flag-zm","short_names":["flag-zm"],"text":null,"texts":null,"category":"Flags","sort_order":252,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":"REGIONAL INDICATOR SYMBOL LETTERS ZW","unified":"1F1FF-1F1FC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f1ff-1f1fc.png","sheet_x":36,"sheet_y":23,"short_name":"flag-zw","short_names":["flag-zw"],"text":null,"texts":null,"category":"Flags","sort_order":253,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F33E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f33e.png","sheet_x":36,"sheet_y":24,"short_name":"male-farmer","short_names":["male-farmer"],"text":null,"texts":null,"category":"People","sort_order":164,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F33E","image":"1f468-1f3fb-200d-1f33e.png","sheet_x":36,"sheet_y":25,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F33E","image":"1f468-1f3fc-200d-1f33e.png","sheet_x":36,"sheet_y":26,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F33E","image":"1f468-1f3fd-200d-1f33e.png","sheet_x":36,"sheet_y":27,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F33E","image":"1f468-1f3fe-200d-1f33e.png","sheet_x":36,"sheet_y":28,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F33E","image":"1f468-1f3ff-200d-1f33e.png","sheet_x":36,"sheet_y":29,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F373","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f373.png","sheet_x":36,"sheet_y":30,"short_name":"male-cook","short_names":["male-cook"],"text":null,"texts":null,"category":"People","sort_order":166,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F373","image":"1f468-1f3fb-200d-1f373.png","sheet_x":36,"sheet_y":31,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F373","image":"1f468-1f3fc-200d-1f373.png","sheet_x":36,"sheet_y":32,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F373","image":"1f468-1f3fd-200d-1f373.png","sheet_x":36,"sheet_y":33,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F373","image":"1f468-1f3fe-200d-1f373.png","sheet_x":36,"sheet_y":34,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F373","image":"1f468-1f3ff-200d-1f373.png","sheet_x":36,"sheet_y":35,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F393","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f393.png","sheet_x":36,"sheet_y":36,"short_name":"male-student","short_names":["male-student"],"text":null,"texts":null,"category":"People","sort_order":168,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F393","image":"1f468-1f3fb-200d-1f393.png","sheet_x":36,"sheet_y":37,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F393","image":"1f468-1f3fc-200d-1f393.png","sheet_x":36,"sheet_y":38,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F393","image":"1f468-1f3fd-200d-1f393.png","sheet_x":36,"sheet_y":39,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F393","image":"1f468-1f3fe-200d-1f393.png","sheet_x":36,"sheet_y":40,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F393","image":"1f468-1f3ff-200d-1f393.png","sheet_x":36,"sheet_y":41,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F3A4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f3a4.png","sheet_x":36,"sheet_y":42,"short_name":"male-singer","short_names":["male-singer"],"text":null,"texts":null,"category":"People","sort_order":170,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F3A4","image":"1f468-1f3fb-200d-1f3a4.png","sheet_x":36,"sheet_y":43,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F3A4","image":"1f468-1f3fc-200d-1f3a4.png","sheet_x":36,"sheet_y":44,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F3A4","image":"1f468-1f3fd-200d-1f3a4.png","sheet_x":36,"sheet_y":45,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F3A4","image":"1f468-1f3fe-200d-1f3a4.png","sheet_x":36,"sheet_y":46,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F3A4","image":"1f468-1f3ff-200d-1f3a4.png","sheet_x":36,"sheet_y":47,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F3A8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f3a8.png","sheet_x":36,"sheet_y":48,"short_name":"male-artist","short_names":["male-artist"],"text":null,"texts":null,"category":"People","sort_order":184,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F3A8","image":"1f468-1f3fb-200d-1f3a8.png","sheet_x":37,"sheet_y":0,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F3A8","image":"1f468-1f3fc-200d-1f3a8.png","sheet_x":37,"sheet_y":1,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F3A8","image":"1f468-1f3fd-200d-1f3a8.png","sheet_x":37,"sheet_y":2,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F3A8","image":"1f468-1f3fe-200d-1f3a8.png","sheet_x":37,"sheet_y":3,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F3A8","image":"1f468-1f3ff-200d-1f3a8.png","sheet_x":37,"sheet_y":4,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F3EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f3eb.png","sheet_x":37,"sheet_y":5,"short_name":"male-teacher","short_names":["male-teacher"],"text":null,"texts":null,"category":"People","sort_order":172,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F3EB","image":"1f468-1f3fb-200d-1f3eb.png","sheet_x":37,"sheet_y":6,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F3EB","image":"1f468-1f3fc-200d-1f3eb.png","sheet_x":37,"sheet_y":7,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F3EB","image":"1f468-1f3fd-200d-1f3eb.png","sheet_x":37,"sheet_y":8,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F3EB","image":"1f468-1f3fe-200d-1f3eb.png","sheet_x":37,"sheet_y":9,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F3EB","image":"1f468-1f3ff-200d-1f3eb.png","sheet_x":37,"sheet_y":10,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F3ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f3ed.png","sheet_x":37,"sheet_y":11,"short_name":"male-factory-worker","short_names":["male-factory-worker"],"text":null,"texts":null,"category":"People","sort_order":174,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F3ED","image":"1f468-1f3fb-200d-1f3ed.png","sheet_x":37,"sheet_y":12,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F3ED","image":"1f468-1f3fc-200d-1f3ed.png","sheet_x":37,"sheet_y":13,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F3ED","image":"1f468-1f3fd-200d-1f3ed.png","sheet_x":37,"sheet_y":14,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F3ED","image":"1f468-1f3fe-200d-1f3ed.png","sheet_x":37,"sheet_y":15,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F3ED","image":"1f468-1f3ff-200d-1f3ed.png","sheet_x":37,"sheet_y":16,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f466.png","sheet_x":37,"sheet_y":17,"short_name":"man-boy","short_names":["man-boy"],"text":null,"texts":null,"category":"People","sort_order":263,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F468-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f467.png","sheet_x":37,"sheet_y":18,"short_name":"man-girl","short_names":["man-girl"],"text":null,"texts":null,"category":"People","sort_order":264,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F468-200D-1F4BB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f4bb.png","sheet_x":37,"sheet_y":19,"short_name":"male-technologist","short_names":["male-technologist"],"text":null,"texts":null,"category":"People","sort_order":176,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F4BB","image":"1f468-1f3fb-200d-1f4bb.png","sheet_x":37,"sheet_y":20,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F4BB","image":"1f468-1f3fc-200d-1f4bb.png","sheet_x":37,"sheet_y":21,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F4BB","image":"1f468-1f3fd-200d-1f4bb.png","sheet_x":37,"sheet_y":22,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F4BB","image":"1f468-1f3fe-200d-1f4bb.png","sheet_x":37,"sheet_y":23,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F4BB","image":"1f468-1f3ff-200d-1f4bb.png","sheet_x":37,"sheet_y":24,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F4BC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f4bc.png","sheet_x":37,"sheet_y":25,"short_name":"male-office-worker","short_names":["male-office-worker"],"text":null,"texts":null,"category":"People","sort_order":178,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F4BC","image":"1f468-1f3fb-200d-1f4bc.png","sheet_x":37,"sheet_y":26,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F4BC","image":"1f468-1f3fc-200d-1f4bc.png","sheet_x":37,"sheet_y":27,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F4BC","image":"1f468-1f3fd-200d-1f4bc.png","sheet_x":37,"sheet_y":28,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F4BC","image":"1f468-1f3fe-200d-1f4bc.png","sheet_x":37,"sheet_y":29,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F4BC","image":"1f468-1f3ff-200d-1f4bc.png","sheet_x":37,"sheet_y":30,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F527","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f527.png","sheet_x":37,"sheet_y":31,"short_name":"male-mechanic","short_names":["male-mechanic"],"text":null,"texts":null,"category":"People","sort_order":180,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F527","image":"1f468-1f3fb-200d-1f527.png","sheet_x":37,"sheet_y":32,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F527","image":"1f468-1f3fc-200d-1f527.png","sheet_x":37,"sheet_y":33,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F527","image":"1f468-1f3fd-200d-1f527.png","sheet_x":37,"sheet_y":34,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F527","image":"1f468-1f3fe-200d-1f527.png","sheet_x":37,"sheet_y":35,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F527","image":"1f468-1f3ff-200d-1f527.png","sheet_x":37,"sheet_y":36,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F52C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f52c.png","sheet_x":37,"sheet_y":37,"short_name":"male-scientist","short_names":["male-scientist"],"text":null,"texts":null,"category":"People","sort_order":182,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F52C","image":"1f468-1f3fb-200d-1f52c.png","sheet_x":37,"sheet_y":38,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F52C","image":"1f468-1f3fc-200d-1f52c.png","sheet_x":37,"sheet_y":39,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F52C","image":"1f468-1f3fd-200d-1f52c.png","sheet_x":37,"sheet_y":40,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F52C","image":"1f468-1f3fe-200d-1f52c.png","sheet_x":37,"sheet_y":41,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F52C","image":"1f468-1f3ff-200d-1f52c.png","sheet_x":37,"sheet_y":42,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F680","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f680.png","sheet_x":37,"sheet_y":43,"short_name":"male-astronaut","short_names":["male-astronaut"],"text":null,"texts":null,"category":"People","sort_order":190,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F680","image":"1f468-1f3fb-200d-1f680.png","sheet_x":37,"sheet_y":44,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F680","image":"1f468-1f3fc-200d-1f680.png","sheet_x":37,"sheet_y":45,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F680","image":"1f468-1f3fd-200d-1f680.png","sheet_x":37,"sheet_y":46,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F680","image":"1f468-1f3fe-200d-1f680.png","sheet_x":37,"sheet_y":47,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F680","image":"1f468-1f3ff-200d-1f680.png","sheet_x":37,"sheet_y":48,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-1F692","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f692.png","sheet_x":38,"sheet_y":0,"short_name":"male-firefighter","short_names":["male-firefighter"],"text":null,"texts":null,"category":"People","sort_order":186,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-1F692","image":"1f468-1f3fb-200d-1f692.png","sheet_x":38,"sheet_y":1,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-1F692","image":"1f468-1f3fc-200d-1f692.png","sheet_x":38,"sheet_y":2,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-1F692","image":"1f468-1f3fd-200d-1f692.png","sheet_x":38,"sheet_y":3,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-1F692","image":"1f468-1f3fe-200d-1f692.png","sheet_x":38,"sheet_y":4,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-1F692","image":"1f468-1f3ff-200d-1f692.png","sheet_x":38,"sheet_y":5,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F33E","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f33e.png","sheet_x":38,"sheet_y":6,"short_name":"female-farmer","short_names":["female-farmer"],"text":null,"texts":null,"category":"People","sort_order":163,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F33E","image":"1f469-1f3fb-200d-1f33e.png","sheet_x":38,"sheet_y":7,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F33E","image":"1f469-1f3fc-200d-1f33e.png","sheet_x":38,"sheet_y":8,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F33E","image":"1f469-1f3fd-200d-1f33e.png","sheet_x":38,"sheet_y":9,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F33E","image":"1f469-1f3fe-200d-1f33e.png","sheet_x":38,"sheet_y":10,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F33E","image":"1f469-1f3ff-200d-1f33e.png","sheet_x":38,"sheet_y":11,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F373","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f373.png","sheet_x":38,"sheet_y":12,"short_name":"female-cook","short_names":["female-cook"],"text":null,"texts":null,"category":"People","sort_order":165,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F373","image":"1f469-1f3fb-200d-1f373.png","sheet_x":38,"sheet_y":13,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F373","image":"1f469-1f3fc-200d-1f373.png","sheet_x":38,"sheet_y":14,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F373","image":"1f469-1f3fd-200d-1f373.png","sheet_x":38,"sheet_y":15,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F373","image":"1f469-1f3fe-200d-1f373.png","sheet_x":38,"sheet_y":16,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F373","image":"1f469-1f3ff-200d-1f373.png","sheet_x":38,"sheet_y":17,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F393","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f393.png","sheet_x":38,"sheet_y":18,"short_name":"female-student","short_names":["female-student"],"text":null,"texts":null,"category":"People","sort_order":167,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F393","image":"1f469-1f3fb-200d-1f393.png","sheet_x":38,"sheet_y":19,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F393","image":"1f469-1f3fc-200d-1f393.png","sheet_x":38,"sheet_y":20,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F393","image":"1f469-1f3fd-200d-1f393.png","sheet_x":38,"sheet_y":21,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F393","image":"1f469-1f3fe-200d-1f393.png","sheet_x":38,"sheet_y":22,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F393","image":"1f469-1f3ff-200d-1f393.png","sheet_x":38,"sheet_y":23,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F3A4","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f3a4.png","sheet_x":38,"sheet_y":24,"short_name":"female-singer","short_names":["female-singer"],"text":null,"texts":null,"category":"People","sort_order":169,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F3A4","image":"1f469-1f3fb-200d-1f3a4.png","sheet_x":38,"sheet_y":25,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F3A4","image":"1f469-1f3fc-200d-1f3a4.png","sheet_x":38,"sheet_y":26,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F3A4","image":"1f469-1f3fd-200d-1f3a4.png","sheet_x":38,"sheet_y":27,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F3A4","image":"1f469-1f3fe-200d-1f3a4.png","sheet_x":38,"sheet_y":28,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F3A4","image":"1f469-1f3ff-200d-1f3a4.png","sheet_x":38,"sheet_y":29,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F3A8","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f3a8.png","sheet_x":38,"sheet_y":30,"short_name":"female-artist","short_names":["female-artist"],"text":null,"texts":null,"category":"People","sort_order":183,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F3A8","image":"1f469-1f3fb-200d-1f3a8.png","sheet_x":38,"sheet_y":31,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F3A8","image":"1f469-1f3fc-200d-1f3a8.png","sheet_x":38,"sheet_y":32,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F3A8","image":"1f469-1f3fd-200d-1f3a8.png","sheet_x":38,"sheet_y":33,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F3A8","image":"1f469-1f3fe-200d-1f3a8.png","sheet_x":38,"sheet_y":34,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F3A8","image":"1f469-1f3ff-200d-1f3a8.png","sheet_x":38,"sheet_y":35,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F3EB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f3eb.png","sheet_x":38,"sheet_y":36,"short_name":"female-teacher","short_names":["female-teacher"],"text":null,"texts":null,"category":"People","sort_order":171,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F3EB","image":"1f469-1f3fb-200d-1f3eb.png","sheet_x":38,"sheet_y":37,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F3EB","image":"1f469-1f3fc-200d-1f3eb.png","sheet_x":38,"sheet_y":38,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F3EB","image":"1f469-1f3fd-200d-1f3eb.png","sheet_x":38,"sheet_y":39,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F3EB","image":"1f469-1f3fe-200d-1f3eb.png","sheet_x":38,"sheet_y":40,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F3EB","image":"1f469-1f3ff-200d-1f3eb.png","sheet_x":38,"sheet_y":41,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F3ED","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f3ed.png","sheet_x":38,"sheet_y":42,"short_name":"female-factory-worker","short_names":["female-factory-worker"],"text":null,"texts":null,"category":"People","sort_order":173,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F3ED","image":"1f469-1f3fb-200d-1f3ed.png","sheet_x":38,"sheet_y":43,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F3ED","image":"1f469-1f3fc-200d-1f3ed.png","sheet_x":38,"sheet_y":44,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F3ED","image":"1f469-1f3fd-200d-1f3ed.png","sheet_x":38,"sheet_y":45,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F3ED","image":"1f469-1f3fe-200d-1f3ed.png","sheet_x":38,"sheet_y":46,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F3ED","image":"1f469-1f3ff-200d-1f3ed.png","sheet_x":38,"sheet_y":47,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f466.png","sheet_x":38,"sheet_y":48,"short_name":"woman-boy","short_names":["woman-boy"],"text":null,"texts":null,"category":"People","sort_order":258,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F469-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f467.png","sheet_x":39,"sheet_y":0,"short_name":"woman-girl","short_names":["woman-girl"],"text":null,"texts":null,"category":"People","sort_order":259,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F469-200D-1F4BB","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f4bb.png","sheet_x":39,"sheet_y":1,"short_name":"female-technologist","short_names":["female-technologist"],"text":null,"texts":null,"category":"People","sort_order":175,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F4BB","image":"1f469-1f3fb-200d-1f4bb.png","sheet_x":39,"sheet_y":2,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F4BB","image":"1f469-1f3fc-200d-1f4bb.png","sheet_x":39,"sheet_y":3,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F4BB","image":"1f469-1f3fd-200d-1f4bb.png","sheet_x":39,"sheet_y":4,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F4BB","image":"1f469-1f3fe-200d-1f4bb.png","sheet_x":39,"sheet_y":5,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F4BB","image":"1f469-1f3ff-200d-1f4bb.png","sheet_x":39,"sheet_y":6,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F4BC","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f4bc.png","sheet_x":39,"sheet_y":7,"short_name":"female-office-worker","short_names":["female-office-worker"],"text":null,"texts":null,"category":"People","sort_order":177,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F4BC","image":"1f469-1f3fb-200d-1f4bc.png","sheet_x":39,"sheet_y":8,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F4BC","image":"1f469-1f3fc-200d-1f4bc.png","sheet_x":39,"sheet_y":9,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F4BC","image":"1f469-1f3fd-200d-1f4bc.png","sheet_x":39,"sheet_y":10,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F4BC","image":"1f469-1f3fe-200d-1f4bc.png","sheet_x":39,"sheet_y":11,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F4BC","image":"1f469-1f3ff-200d-1f4bc.png","sheet_x":39,"sheet_y":12,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F527","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f527.png","sheet_x":39,"sheet_y":13,"short_name":"female-mechanic","short_names":["female-mechanic"],"text":null,"texts":null,"category":"People","sort_order":179,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F527","image":"1f469-1f3fb-200d-1f527.png","sheet_x":39,"sheet_y":14,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F527","image":"1f469-1f3fc-200d-1f527.png","sheet_x":39,"sheet_y":15,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F527","image":"1f469-1f3fd-200d-1f527.png","sheet_x":39,"sheet_y":16,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F527","image":"1f469-1f3fe-200d-1f527.png","sheet_x":39,"sheet_y":17,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F527","image":"1f469-1f3ff-200d-1f527.png","sheet_x":39,"sheet_y":18,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F52C","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f52c.png","sheet_x":39,"sheet_y":19,"short_name":"female-scientist","short_names":["female-scientist"],"text":null,"texts":null,"category":"People","sort_order":181,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F52C","image":"1f469-1f3fb-200d-1f52c.png","sheet_x":39,"sheet_y":20,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F52C","image":"1f469-1f3fc-200d-1f52c.png","sheet_x":39,"sheet_y":21,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F52C","image":"1f469-1f3fd-200d-1f52c.png","sheet_x":39,"sheet_y":22,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F52C","image":"1f469-1f3fe-200d-1f52c.png","sheet_x":39,"sheet_y":23,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F52C","image":"1f469-1f3ff-200d-1f52c.png","sheet_x":39,"sheet_y":24,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F680","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f680.png","sheet_x":39,"sheet_y":25,"short_name":"female-astronaut","short_names":["female-astronaut"],"text":null,"texts":null,"category":"People","sort_order":189,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F680","image":"1f469-1f3fb-200d-1f680.png","sheet_x":39,"sheet_y":26,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F680","image":"1f469-1f3fc-200d-1f680.png","sheet_x":39,"sheet_y":27,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F680","image":"1f469-1f3fd-200d-1f680.png","sheet_x":39,"sheet_y":28,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F680","image":"1f469-1f3fe-200d-1f680.png","sheet_x":39,"sheet_y":29,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F680","image":"1f469-1f3ff-200d-1f680.png","sheet_x":39,"sheet_y":30,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-1F692","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f692.png","sheet_x":39,"sheet_y":31,"short_name":"female-firefighter","short_names":["female-firefighter"],"text":null,"texts":null,"category":"People","sort_order":185,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-1F692","image":"1f469-1f3fb-200d-1f692.png","sheet_x":39,"sheet_y":32,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-1F692","image":"1f469-1f3fc-200d-1f692.png","sheet_x":39,"sheet_y":33,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-1F692","image":"1f469-1f3fd-200d-1f692.png","sheet_x":39,"sheet_y":34,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-1F692","image":"1f469-1f3fe-200d-1f692.png","sheet_x":39,"sheet_y":35,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-1F692","image":"1f469-1f3ff-200d-1f692.png","sheet_x":39,"sheet_y":36,"has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false}}},{"name":null,"unified":"1F3C3-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3c3-200d-2640-fe0f.png","sheet_x":39,"sheet_y":37,"short_name":"woman-running","short_names":["woman-running"],"text":null,"texts":null,"category":"People","sort_order":232,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3C3-1F3FB-200D-2640-FE0F","image":"1f3c3-1f3fb-200d-2640-fe0f.png","sheet_x":39,"sheet_y":38,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3C3-1F3FC-200D-2640-FE0F","image":"1f3c3-1f3fc-200d-2640-fe0f.png","sheet_x":39,"sheet_y":39,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3C3-1F3FD-200D-2640-FE0F","image":"1f3c3-1f3fd-200d-2640-fe0f.png","sheet_x":39,"sheet_y":40,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3C3-1F3FE-200D-2640-FE0F","image":"1f3c3-1f3fe-200d-2640-fe0f.png","sheet_x":39,"sheet_y":41,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3C3-1F3FF-200D-2640-FE0F","image":"1f3c3-1f3ff-200d-2640-fe0f.png","sheet_x":39,"sheet_y":42,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F3C3-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3c3-200d-2642-fe0f.png","sheet_x":39,"sheet_y":43,"short_name":"man-running","short_names":["man-running"],"text":null,"texts":null,"category":"People","sort_order":304,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3C3-1F3FB-200D-2642-FE0F","image":"1f3c3-1f3fb-200d-2642-fe0f.png","sheet_x":39,"sheet_y":44,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3C3-1F3FC-200D-2642-FE0F","image":"1f3c3-1f3fc-200d-2642-fe0f.png","sheet_x":39,"sheet_y":45,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3C3-1F3FD-200D-2642-FE0F","image":"1f3c3-1f3fd-200d-2642-fe0f.png","sheet_x":39,"sheet_y":46,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3C3-1F3FE-200D-2642-FE0F","image":"1f3c3-1f3fe-200d-2642-fe0f.png","sheet_x":39,"sheet_y":47,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3C3-1F3FF-200D-2642-FE0F","image":"1f3c3-1f3ff-200d-2642-fe0f.png","sheet_x":39,"sheet_y":48,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F3C3"},{"name":null,"unified":"1F3C4-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3c4-200d-2640-fe0f.png","sheet_x":40,"sheet_y":0,"short_name":"woman-surfing","short_names":["woman-surfing"],"text":null,"texts":null,"category":"Activity","sort_order":40,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3C4-1F3FB-200D-2640-FE0F","image":"1f3c4-1f3fb-200d-2640-fe0f.png","sheet_x":40,"sheet_y":1,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3C4-1F3FC-200D-2640-FE0F","image":"1f3c4-1f3fc-200d-2640-fe0f.png","sheet_x":40,"sheet_y":2,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3C4-1F3FD-200D-2640-FE0F","image":"1f3c4-1f3fd-200d-2640-fe0f.png","sheet_x":40,"sheet_y":3,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3C4-1F3FE-200D-2640-FE0F","image":"1f3c4-1f3fe-200d-2640-fe0f.png","sheet_x":40,"sheet_y":4,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3C4-1F3FF-200D-2640-FE0F","image":"1f3c4-1f3ff-200d-2640-fe0f.png","sheet_x":40,"sheet_y":5,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F3C4-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3c4-200d-2642-fe0f.png","sheet_x":40,"sheet_y":6,"short_name":"man-surfing","short_names":["man-surfing"],"text":null,"texts":null,"category":"Activity","sort_order":89,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3C4-1F3FB-200D-2642-FE0F","image":"1f3c4-1f3fb-200d-2642-fe0f.png","sheet_x":40,"sheet_y":7,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3C4-1F3FC-200D-2642-FE0F","image":"1f3c4-1f3fc-200d-2642-fe0f.png","sheet_x":40,"sheet_y":8,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3C4-1F3FD-200D-2642-FE0F","image":"1f3c4-1f3fd-200d-2642-fe0f.png","sheet_x":40,"sheet_y":9,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3C4-1F3FE-200D-2642-FE0F","image":"1f3c4-1f3fe-200d-2642-fe0f.png","sheet_x":40,"sheet_y":10,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3C4-1F3FF-200D-2642-FE0F","image":"1f3c4-1f3ff-200d-2642-fe0f.png","sheet_x":40,"sheet_y":11,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F3C4"},{"name":null,"unified":"1F3CA-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3ca-200d-2640-fe0f.png","sheet_x":40,"sheet_y":12,"short_name":"woman-swimming","short_names":["woman-swimming"],"text":null,"texts":null,"category":"Activity","sort_order":42,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3CA-1F3FB-200D-2640-FE0F","image":"1f3ca-1f3fb-200d-2640-fe0f.png","sheet_x":40,"sheet_y":13,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3CA-1F3FC-200D-2640-FE0F","image":"1f3ca-1f3fc-200d-2640-fe0f.png","sheet_x":40,"sheet_y":14,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3CA-1F3FD-200D-2640-FE0F","image":"1f3ca-1f3fd-200d-2640-fe0f.png","sheet_x":40,"sheet_y":15,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3CA-1F3FE-200D-2640-FE0F","image":"1f3ca-1f3fe-200d-2640-fe0f.png","sheet_x":40,"sheet_y":16,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3CA-1F3FF-200D-2640-FE0F","image":"1f3ca-1f3ff-200d-2640-fe0f.png","sheet_x":40,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F3CA-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3ca-200d-2642-fe0f.png","sheet_x":40,"sheet_y":18,"short_name":"man-swimming","short_names":["man-swimming"],"text":null,"texts":null,"category":"Activity","sort_order":90,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3CA-1F3FB-200D-2642-FE0F","image":"1f3ca-1f3fb-200d-2642-fe0f.png","sheet_x":40,"sheet_y":19,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3CA-1F3FC-200D-2642-FE0F","image":"1f3ca-1f3fc-200d-2642-fe0f.png","sheet_x":40,"sheet_y":20,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3CA-1F3FD-200D-2642-FE0F","image":"1f3ca-1f3fd-200d-2642-fe0f.png","sheet_x":40,"sheet_y":21,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3CA-1F3FE-200D-2642-FE0F","image":"1f3ca-1f3fe-200d-2642-fe0f.png","sheet_x":40,"sheet_y":22,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3CA-1F3FF-200D-2642-FE0F","image":"1f3ca-1f3ff-200d-2642-fe0f.png","sheet_x":40,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F3CA"},{"name":null,"unified":"1F3CB-FE0F-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3cb-fe0f-200d-2640-fe0f.png","sheet_x":40,"sheet_y":24,"short_name":"woman-lifting-weights","short_names":["woman-lifting-weights"],"text":null,"texts":null,"category":"Activity","sort_order":24,"added_in":"7.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3CB-1F3FB-200D-2640-FE0F","image":"1f3cb-1f3fb-200d-2640-fe0f.png","sheet_x":40,"sheet_y":25,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3CB-1F3FC-200D-2640-FE0F","image":"1f3cb-1f3fc-200d-2640-fe0f.png","sheet_x":40,"sheet_y":26,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3CB-1F3FD-200D-2640-FE0F","image":"1f3cb-1f3fd-200d-2640-fe0f.png","sheet_x":40,"sheet_y":27,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3CB-1F3FE-200D-2640-FE0F","image":"1f3cb-1f3fe-200d-2640-fe0f.png","sheet_x":40,"sheet_y":28,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3CB-1F3FF-200D-2640-FE0F","image":"1f3cb-1f3ff-200d-2640-fe0f.png","sheet_x":40,"sheet_y":29,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F3CB-FE0F-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3cb-fe0f-200d-2642-fe0f.png","sheet_x":40,"sheet_y":30,"short_name":"man-lifting-weights","short_names":["man-lifting-weights"],"text":null,"texts":null,"category":"Activity","sort_order":87,"added_in":"7.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3CB-1F3FB-200D-2642-FE0F","image":"1f3cb-1f3fb-200d-2642-fe0f.png","sheet_x":40,"sheet_y":31,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3CB-1F3FC-200D-2642-FE0F","image":"1f3cb-1f3fc-200d-2642-fe0f.png","sheet_x":40,"sheet_y":32,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3CB-1F3FD-200D-2642-FE0F","image":"1f3cb-1f3fd-200d-2642-fe0f.png","sheet_x":40,"sheet_y":33,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3CB-1F3FE-200D-2642-FE0F","image":"1f3cb-1f3fe-200d-2642-fe0f.png","sheet_x":40,"sheet_y":34,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3CB-1F3FF-200D-2642-FE0F","image":"1f3cb-1f3ff-200d-2642-fe0f.png","sheet_x":40,"sheet_y":35,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F3CB"},{"name":null,"unified":"1F3CC-FE0F-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3cc-fe0f-200d-2640-fe0f.png","sheet_x":40,"sheet_y":36,"short_name":"woman-golfing","short_names":["woman-golfing"],"text":null,"texts":null,"category":"Activity","sort_order":38,"added_in":"7.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3CC-1F3FB-200D-2640-FE0F","image":"1f3cc-1f3fb-200d-2640-fe0f.png","sheet_x":40,"sheet_y":37,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3CC-1F3FC-200D-2640-FE0F","image":"1f3cc-1f3fc-200d-2640-fe0f.png","sheet_x":40,"sheet_y":38,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3CC-1F3FD-200D-2640-FE0F","image":"1f3cc-1f3fd-200d-2640-fe0f.png","sheet_x":40,"sheet_y":39,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3CC-1F3FE-200D-2640-FE0F","image":"1f3cc-1f3fe-200d-2640-fe0f.png","sheet_x":40,"sheet_y":40,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3CC-1F3FF-200D-2640-FE0F","image":"1f3cc-1f3ff-200d-2640-fe0f.png","sheet_x":40,"sheet_y":41,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F3CC-FE0F-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3cc-fe0f-200d-2642-fe0f.png","sheet_x":40,"sheet_y":42,"short_name":"man-golfing","short_names":["man-golfing"],"text":null,"texts":null,"category":"Activity","sort_order":88,"added_in":"7.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F3CC-1F3FB-200D-2642-FE0F","image":"1f3cc-1f3fb-200d-2642-fe0f.png","sheet_x":40,"sheet_y":43,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F3CC-1F3FC-200D-2642-FE0F","image":"1f3cc-1f3fc-200d-2642-fe0f.png","sheet_x":40,"sheet_y":44,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F3CC-1F3FD-200D-2642-FE0F","image":"1f3cc-1f3fd-200d-2642-fe0f.png","sheet_x":40,"sheet_y":45,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F3CC-1F3FE-200D-2642-FE0F","image":"1f3cc-1f3fe-200d-2642-fe0f.png","sheet_x":40,"sheet_y":46,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F3CC-1F3FF-200D-2642-FE0F","image":"1f3cc-1f3ff-200d-2642-fe0f.png","sheet_x":40,"sheet_y":47,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F3CC"},{"name":null,"unified":"1F3F3-FE0F-200D-1F308","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f3f3-fe0f-200d-1f308.png","sheet_x":40,"sheet_y":48,"short_name":"rainbow-flag","short_names":["rainbow-flag"],"text":null,"texts":null,"category":"Flags","sort_order":5,"added_in":"7.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F441-FE0F-200D-1F5E8-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f441-fe0f-200d-1f5e8-fe0f.png","sheet_x":41,"sheet_y":0,"short_name":"eye-in-speech-bubble","short_names":["eye-in-speech-bubble"],"text":null,"texts":null,"category":"Symbols","sort_order":238,"added_in":"7.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":false,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},{"name":null,"unified":"1F468-200D-1F466-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f466-200d-1f466.png","sheet_x":41,"sheet_y":1,"short_name":"man-boy-boy","short_names":["man-boy-boy"],"text":null,"texts":null,"category":"People","sort_order":266,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F468-200D-1F467-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f467-200d-1f466.png","sheet_x":41,"sheet_y":2,"short_name":"man-girl-boy","short_names":["man-girl-boy"],"text":null,"texts":null,"category":"People","sort_order":265,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F468-200D-1F467-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f467-200d-1f467.png","sheet_x":41,"sheet_y":3,"short_name":"man-girl-girl","short_names":["man-girl-girl"],"text":null,"texts":null,"category":"People","sort_order":267,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F468-200D-1F468-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f468-200d-1f466.png","sheet_x":41,"sheet_y":4,"short_name":"man-man-boy","short_names":["man-man-boy"],"text":null,"texts":null,"category":"People","sort_order":253,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F468-200D-1F466-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f468-200d-1f466-200d-1f466.png","sheet_x":41,"sheet_y":5,"short_name":"man-man-boy-boy","short_names":["man-man-boy-boy"],"text":null,"texts":null,"category":"People","sort_order":256,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F468-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f468-200d-1f467.png","sheet_x":41,"sheet_y":6,"short_name":"man-man-girl","short_names":["man-man-girl"],"text":null,"texts":null,"category":"People","sort_order":254,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F468-200D-1F467-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f468-200d-1f467-200d-1f466.png","sheet_x":41,"sheet_y":7,"short_name":"man-man-girl-boy","short_names":["man-man-girl-boy"],"text":null,"texts":null,"category":"People","sort_order":255,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F468-200D-1F467-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f468-200d-1f467-200d-1f467.png","sheet_x":41,"sheet_y":8,"short_name":"man-man-girl-girl","short_names":["man-man-girl-girl"],"text":null,"texts":null,"category":"People","sort_order":257,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F469-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f469-200d-1f466.png","sheet_x":41,"sheet_y":9,"short_name":"man-woman-boy","short_names":["man-woman-boy","family"],"text":null,"texts":null,"category":"People","sort_order":294,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true,"obsoletes":"1F46A"},{"name":null,"unified":"1F468-200D-1F469-200D-1F466-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f469-200d-1f466-200d-1f466.png","sheet_x":41,"sheet_y":10,"short_name":"man-woman-boy-boy","short_names":["man-woman-boy-boy"],"text":null,"texts":null,"category":"People","sort_order":246,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F469-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f469-200d-1f467.png","sheet_x":41,"sheet_y":11,"short_name":"man-woman-girl","short_names":["man-woman-girl"],"text":null,"texts":null,"category":"People","sort_order":244,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F469-200D-1F467-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f469-200d-1f467-200d-1f466.png","sheet_x":41,"sheet_y":12,"short_name":"man-woman-girl-boy","short_names":["man-woman-girl-boy"],"text":null,"texts":null,"category":"People","sort_order":245,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-1F469-200D-1F467-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-1f469-200d-1f467-200d-1f467.png","sheet_x":41,"sheet_y":13,"short_name":"man-woman-girl-girl","short_names":["man-woman-girl-girl"],"text":null,"texts":null,"category":"People","sort_order":247,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-2695-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-2695-fe0f.png","sheet_x":41,"sheet_y":14,"short_name":"male-doctor","short_names":["male-doctor"],"text":null,"texts":null,"category":"People","sort_order":162,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-2695-FE0F","image":"1f468-1f3fb-200d-2695-fe0f.png","sheet_x":41,"sheet_y":15,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-2695-FE0F","image":"1f468-1f3fc-200d-2695-fe0f.png","sheet_x":41,"sheet_y":16,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-2695-FE0F","image":"1f468-1f3fd-200d-2695-fe0f.png","sheet_x":41,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-2695-FE0F","image":"1f468-1f3fe-200d-2695-fe0f.png","sheet_x":41,"sheet_y":18,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-2695-FE0F","image":"1f468-1f3ff-200d-2695-fe0f.png","sheet_x":41,"sheet_y":19,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-2696-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-2696-fe0f.png","sheet_x":41,"sheet_y":20,"short_name":"male-judge","short_names":["male-judge"],"text":null,"texts":null,"category":"People","sort_order":192,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-2696-FE0F","image":"1f468-1f3fb-200d-2696-fe0f.png","sheet_x":41,"sheet_y":21,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-2696-FE0F","image":"1f468-1f3fc-200d-2696-fe0f.png","sheet_x":41,"sheet_y":22,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-2696-FE0F","image":"1f468-1f3fd-200d-2696-fe0f.png","sheet_x":41,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-2696-FE0F","image":"1f468-1f3fe-200d-2696-fe0f.png","sheet_x":41,"sheet_y":24,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-2696-FE0F","image":"1f468-1f3ff-200d-2696-fe0f.png","sheet_x":41,"sheet_y":25,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-2708-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-2708-fe0f.png","sheet_x":41,"sheet_y":26,"short_name":"male-pilot","short_names":["male-pilot"],"text":null,"texts":null,"category":"People","sort_order":188,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F468-1F3FB-200D-2708-FE0F","image":"1f468-1f3fb-200d-2708-fe0f.png","sheet_x":41,"sheet_y":27,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F468-1F3FC-200D-2708-FE0F","image":"1f468-1f3fc-200d-2708-fe0f.png","sheet_x":41,"sheet_y":28,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F468-1F3FD-200D-2708-FE0F","image":"1f468-1f3fd-200d-2708-fe0f.png","sheet_x":41,"sheet_y":29,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F468-1F3FE-200D-2708-FE0F","image":"1f468-1f3fe-200d-2708-fe0f.png","sheet_x":41,"sheet_y":30,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F468-1F3FF-200D-2708-FE0F","image":"1f468-1f3ff-200d-2708-fe0f.png","sheet_x":41,"sheet_y":31,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F468-200D-2764-FE0F-200D-1F468","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-2764-fe0f-200d-1f468.png","sheet_x":41,"sheet_y":32,"short_name":"man-heart-man","short_names":["man-heart-man"],"text":null,"texts":null,"category":"People","sort_order":239,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F468-200D-2764-FE0F-200D-1F48B-200D-1F468","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.png","sheet_x":41,"sheet_y":33,"short_name":"man-kiss-man","short_names":["man-kiss-man"],"text":null,"texts":null,"category":"People","sort_order":242,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F469-200D-1F466-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f466-200d-1f466.png","sheet_x":41,"sheet_y":34,"short_name":"woman-boy-boy","short_names":["woman-boy-boy"],"text":null,"texts":null,"category":"People","sort_order":261,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F469-200D-1F467-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f467-200d-1f466.png","sheet_x":41,"sheet_y":35,"short_name":"woman-girl-boy","short_names":["woman-girl-boy"],"text":null,"texts":null,"category":"People","sort_order":260,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F469-200D-1F467-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f467-200d-1f467.png","sheet_x":41,"sheet_y":36,"short_name":"woman-girl-girl","short_names":["woman-girl-girl"],"text":null,"texts":null,"category":"People","sort_order":262,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false},{"name":null,"unified":"1F469-200D-1F469-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f469-200d-1f466.png","sheet_x":41,"sheet_y":37,"short_name":"woman-woman-boy","short_names":["woman-woman-boy"],"text":null,"texts":null,"category":"People","sort_order":248,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F469-200D-1F469-200D-1F466-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f469-200d-1f466-200d-1f466.png","sheet_x":41,"sheet_y":38,"short_name":"woman-woman-boy-boy","short_names":["woman-woman-boy-boy"],"text":null,"texts":null,"category":"People","sort_order":251,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F469-200D-1F469-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f469-200d-1f467.png","sheet_x":41,"sheet_y":39,"short_name":"woman-woman-girl","short_names":["woman-woman-girl"],"text":null,"texts":null,"category":"People","sort_order":249,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F469-200D-1F469-200D-1F467-200D-1F466","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f469-200d-1f467-200d-1f466.png","sheet_x":41,"sheet_y":40,"short_name":"woman-woman-girl-boy","short_names":["woman-woman-girl-boy"],"text":null,"texts":null,"category":"People","sort_order":250,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F469-200D-1F469-200D-1F467-200D-1F467","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-1f469-200d-1f467-200d-1f467.png","sheet_x":41,"sheet_y":41,"short_name":"woman-woman-girl-girl","short_names":["woman-woman-girl-girl"],"text":null,"texts":null,"category":"People","sort_order":252,"added_in":"6.0","has_img_apple":true,"has_img_google":true,"has_img_twitter":true,"has_img_emojione":true,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F469-200D-2695-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-2695-fe0f.png","sheet_x":41,"sheet_y":42,"short_name":"female-doctor","short_names":["female-doctor"],"text":null,"texts":null,"category":"People","sort_order":161,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-2695-FE0F","image":"1f469-1f3fb-200d-2695-fe0f.png","sheet_x":41,"sheet_y":43,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-2695-FE0F","image":"1f469-1f3fc-200d-2695-fe0f.png","sheet_x":41,"sheet_y":44,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-2695-FE0F","image":"1f469-1f3fd-200d-2695-fe0f.png","sheet_x":41,"sheet_y":45,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-2695-FE0F","image":"1f469-1f3fe-200d-2695-fe0f.png","sheet_x":41,"sheet_y":46,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-2695-FE0F","image":"1f469-1f3ff-200d-2695-fe0f.png","sheet_x":41,"sheet_y":47,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-2696-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-2696-fe0f.png","sheet_x":41,"sheet_y":48,"short_name":"female-judge","short_names":["female-judge"],"text":null,"texts":null,"category":"People","sort_order":191,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-2696-FE0F","image":"1f469-1f3fb-200d-2696-fe0f.png","sheet_x":42,"sheet_y":0,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-2696-FE0F","image":"1f469-1f3fc-200d-2696-fe0f.png","sheet_x":42,"sheet_y":1,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-2696-FE0F","image":"1f469-1f3fd-200d-2696-fe0f.png","sheet_x":42,"sheet_y":2,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-2696-FE0F","image":"1f469-1f3fe-200d-2696-fe0f.png","sheet_x":42,"sheet_y":3,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-2696-FE0F","image":"1f469-1f3ff-200d-2696-fe0f.png","sheet_x":42,"sheet_y":4,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-2708-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-2708-fe0f.png","sheet_x":42,"sheet_y":5,"short_name":"female-pilot","short_names":["female-pilot"],"text":null,"texts":null,"category":"People","sort_order":187,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F469-1F3FB-200D-2708-FE0F","image":"1f469-1f3fb-200d-2708-fe0f.png","sheet_x":42,"sheet_y":6,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F469-1F3FC-200D-2708-FE0F","image":"1f469-1f3fc-200d-2708-fe0f.png","sheet_x":42,"sheet_y":7,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F469-1F3FD-200D-2708-FE0F","image":"1f469-1f3fd-200d-2708-fe0f.png","sheet_x":42,"sheet_y":8,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F469-1F3FE-200D-2708-FE0F","image":"1f469-1f3fe-200d-2708-fe0f.png","sheet_x":42,"sheet_y":9,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F469-1F3FF-200D-2708-FE0F","image":"1f469-1f3ff-200d-2708-fe0f.png","sheet_x":42,"sheet_y":10,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F469-200D-2764-FE0F-200D-1F468","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-2764-fe0f-200d-1f468.png","sheet_x":42,"sheet_y":11,"short_name":"woman-heart-man","short_names":["woman-heart-man"],"text":null,"texts":null,"category":"People","sort_order":295,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"obsoletes":"1F491"},{"name":null,"unified":"1F469-200D-2764-FE0F-200D-1F469","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-2764-fe0f-200d-1f469.png","sheet_x":42,"sheet_y":12,"short_name":"woman-heart-woman","short_names":["woman-heart-woman"],"text":null,"texts":null,"category":"People","sort_order":238,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F468","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468.png","sheet_x":42,"sheet_y":13,"short_name":"woman-kiss-man","short_names":["woman-kiss-man"],"text":null,"texts":null,"category":"People","sort_order":296,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":false,"obsoletes":"1F48F"},{"name":null,"unified":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F469","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.png","sheet_x":42,"sheet_y":14,"short_name":"woman-kiss-woman","short_names":["woman-kiss-woman"],"text":null,"texts":null,"category":"People","sort_order":241,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":true,"has_img_messenger":true},{"name":null,"unified":"1F46E-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f46e-200d-2640-fe0f.png","sheet_x":42,"sheet_y":15,"short_name":"female-police-officer","short_names":["female-police-officer"],"text":null,"texts":null,"category":"People","sort_order":153,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F46E-1F3FB-200D-2640-FE0F","image":"1f46e-1f3fb-200d-2640-fe0f.png","sheet_x":42,"sheet_y":16,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F46E-1F3FC-200D-2640-FE0F","image":"1f46e-1f3fc-200d-2640-fe0f.png","sheet_x":42,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F46E-1F3FD-200D-2640-FE0F","image":"1f46e-1f3fd-200d-2640-fe0f.png","sheet_x":42,"sheet_y":18,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F46E-1F3FE-200D-2640-FE0F","image":"1f46e-1f3fe-200d-2640-fe0f.png","sheet_x":42,"sheet_y":19,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F46E-1F3FF-200D-2640-FE0F","image":"1f46e-1f3ff-200d-2640-fe0f.png","sheet_x":42,"sheet_y":20,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F46E-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f46e-200d-2642-fe0f.png","sheet_x":42,"sheet_y":21,"short_name":"male-police-officer","short_names":["male-police-officer"],"text":null,"texts":null,"category":"People","sort_order":297,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F46E-1F3FB-200D-2642-FE0F","image":"1f46e-1f3fb-200d-2642-fe0f.png","sheet_x":42,"sheet_y":22,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F46E-1F3FC-200D-2642-FE0F","image":"1f46e-1f3fc-200d-2642-fe0f.png","sheet_x":42,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F46E-1F3FD-200D-2642-FE0F","image":"1f46e-1f3fd-200d-2642-fe0f.png","sheet_x":42,"sheet_y":24,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F46E-1F3FE-200D-2642-FE0F","image":"1f46e-1f3fe-200d-2642-fe0f.png","sheet_x":42,"sheet_y":25,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F46E-1F3FF-200D-2642-FE0F","image":"1f46e-1f3ff-200d-2642-fe0f.png","sheet_x":42,"sheet_y":26,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F46E"},{"name":null,"unified":"1F46F-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f46f-200d-2640-fe0f.png","sheet_x":42,"sheet_y":27,"short_name":"woman-with-bunny-ears-partying","short_names":["woman-with-bunny-ears-partying"],"text":null,"texts":null,"category":"People","sort_order":303,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"obsoletes":"1F46F"},{"name":null,"unified":"1F46F-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f46f-200d-2642-fe0f.png","sheet_x":42,"sheet_y":28,"short_name":"man-with-bunny-ears-partying","short_names":["man-with-bunny-ears-partying"],"text":null,"texts":null,"category":"People","sort_order":229,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},{"name":null,"unified":"1F471-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f471-200d-2640-fe0f.png","sheet_x":42,"sheet_y":29,"short_name":"blond-haired-woman","short_names":["blond-haired-woman"],"text":null,"texts":null,"category":"People","sort_order":146,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F471-1F3FB-200D-2640-FE0F","image":"1f471-1f3fb-200d-2640-fe0f.png","sheet_x":42,"sheet_y":30,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F471-1F3FC-200D-2640-FE0F","image":"1f471-1f3fc-200d-2640-fe0f.png","sheet_x":42,"sheet_y":31,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F471-1F3FD-200D-2640-FE0F","image":"1f471-1f3fd-200d-2640-fe0f.png","sheet_x":42,"sheet_y":32,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F471-1F3FE-200D-2640-FE0F","image":"1f471-1f3fe-200d-2640-fe0f.png","sheet_x":42,"sheet_y":33,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F471-1F3FF-200D-2640-FE0F","image":"1f471-1f3ff-200d-2640-fe0f.png","sheet_x":42,"sheet_y":34,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F471-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f471-200d-2642-fe0f.png","sheet_x":42,"sheet_y":35,"short_name":"blond-haired-man","short_names":["blond-haired-man"],"text":null,"texts":null,"category":"People","sort_order":298,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F471-1F3FB-200D-2642-FE0F","image":"1f471-1f3fb-200d-2642-fe0f.png","sheet_x":42,"sheet_y":36,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F471-1F3FC-200D-2642-FE0F","image":"1f471-1f3fc-200d-2642-fe0f.png","sheet_x":42,"sheet_y":37,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F471-1F3FD-200D-2642-FE0F","image":"1f471-1f3fd-200d-2642-fe0f.png","sheet_x":42,"sheet_y":38,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F471-1F3FE-200D-2642-FE0F","image":"1f471-1f3fe-200d-2642-fe0f.png","sheet_x":42,"sheet_y":39,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F471-1F3FF-200D-2642-FE0F","image":"1f471-1f3ff-200d-2642-fe0f.png","sheet_x":42,"sheet_y":40,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F471"},{"name":null,"unified":"1F473-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f473-200d-2640-fe0f.png","sheet_x":42,"sheet_y":41,"short_name":"woman-wearing-turban","short_names":["woman-wearing-turban"],"text":null,"texts":null,"category":"People","sort_order":151,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F473-1F3FB-200D-2640-FE0F","image":"1f473-1f3fb-200d-2640-fe0f.png","sheet_x":42,"sheet_y":42,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F473-1F3FC-200D-2640-FE0F","image":"1f473-1f3fc-200d-2640-fe0f.png","sheet_x":42,"sheet_y":43,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F473-1F3FD-200D-2640-FE0F","image":"1f473-1f3fd-200d-2640-fe0f.png","sheet_x":42,"sheet_y":44,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F473-1F3FE-200D-2640-FE0F","image":"1f473-1f3fe-200d-2640-fe0f.png","sheet_x":42,"sheet_y":45,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F473-1F3FF-200D-2640-FE0F","image":"1f473-1f3ff-200d-2640-fe0f.png","sheet_x":42,"sheet_y":46,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F473-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f473-200d-2642-fe0f.png","sheet_x":42,"sheet_y":47,"short_name":"man-wearing-turban","short_names":["man-wearing-turban"],"text":null,"texts":null,"category":"People","sort_order":299,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F473-1F3FB-200D-2642-FE0F","image":"1f473-1f3fb-200d-2642-fe0f.png","sheet_x":42,"sheet_y":48,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F473-1F3FC-200D-2642-FE0F","image":"1f473-1f3fc-200d-2642-fe0f.png","sheet_x":43,"sheet_y":0,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F473-1F3FD-200D-2642-FE0F","image":"1f473-1f3fd-200d-2642-fe0f.png","sheet_x":43,"sheet_y":1,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F473-1F3FE-200D-2642-FE0F","image":"1f473-1f3fe-200d-2642-fe0f.png","sheet_x":43,"sheet_y":2,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F473-1F3FF-200D-2642-FE0F","image":"1f473-1f3ff-200d-2642-fe0f.png","sheet_x":43,"sheet_y":3,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F473"},{"name":null,"unified":"1F477-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f477-200d-2640-fe0f.png","sheet_x":43,"sheet_y":4,"short_name":"female-construction-worker","short_names":["female-construction-worker"],"text":null,"texts":null,"category":"People","sort_order":155,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F477-1F3FB-200D-2640-FE0F","image":"1f477-1f3fb-200d-2640-fe0f.png","sheet_x":43,"sheet_y":5,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F477-1F3FC-200D-2640-FE0F","image":"1f477-1f3fc-200d-2640-fe0f.png","sheet_x":43,"sheet_y":6,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F477-1F3FD-200D-2640-FE0F","image":"1f477-1f3fd-200d-2640-fe0f.png","sheet_x":43,"sheet_y":7,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F477-1F3FE-200D-2640-FE0F","image":"1f477-1f3fe-200d-2640-fe0f.png","sheet_x":43,"sheet_y":8,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F477-1F3FF-200D-2640-FE0F","image":"1f477-1f3ff-200d-2640-fe0f.png","sheet_x":43,"sheet_y":9,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F477-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f477-200d-2642-fe0f.png","sheet_x":43,"sheet_y":10,"short_name":"male-construction-worker","short_names":["male-construction-worker"],"text":null,"texts":null,"category":"People","sort_order":300,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F477-1F3FB-200D-2642-FE0F","image":"1f477-1f3fb-200d-2642-fe0f.png","sheet_x":43,"sheet_y":11,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F477-1F3FC-200D-2642-FE0F","image":"1f477-1f3fc-200d-2642-fe0f.png","sheet_x":43,"sheet_y":12,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F477-1F3FD-200D-2642-FE0F","image":"1f477-1f3fd-200d-2642-fe0f.png","sheet_x":43,"sheet_y":13,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F477-1F3FE-200D-2642-FE0F","image":"1f477-1f3fe-200d-2642-fe0f.png","sheet_x":43,"sheet_y":14,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F477-1F3FF-200D-2642-FE0F","image":"1f477-1f3ff-200d-2642-fe0f.png","sheet_x":43,"sheet_y":15,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F477"},{"name":null,"unified":"1F481-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f481-200d-2640-fe0f.png","sheet_x":43,"sheet_y":16,"short_name":"woman-tipping-hand","short_names":["woman-tipping-hand"],"text":null,"texts":null,"category":"People","sort_order":308,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F481-1F3FB-200D-2640-FE0F","image":"1f481-1f3fb-200d-2640-fe0f.png","sheet_x":43,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F481-1F3FC-200D-2640-FE0F","image":"1f481-1f3fc-200d-2640-fe0f.png","sheet_x":43,"sheet_y":18,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F481-1F3FD-200D-2640-FE0F","image":"1f481-1f3fd-200d-2640-fe0f.png","sheet_x":43,"sheet_y":19,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F481-1F3FE-200D-2640-FE0F","image":"1f481-1f3fe-200d-2640-fe0f.png","sheet_x":43,"sheet_y":20,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F481-1F3FF-200D-2640-FE0F","image":"1f481-1f3ff-200d-2640-fe0f.png","sheet_x":43,"sheet_y":21,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F481"},{"name":null,"unified":"1F481-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f481-200d-2642-fe0f.png","sheet_x":43,"sheet_y":22,"short_name":"man-tipping-hand","short_names":["man-tipping-hand"],"text":null,"texts":null,"category":"People","sort_order":204,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F481-1F3FB-200D-2642-FE0F","image":"1f481-1f3fb-200d-2642-fe0f.png","sheet_x":43,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F481-1F3FC-200D-2642-FE0F","image":"1f481-1f3fc-200d-2642-fe0f.png","sheet_x":43,"sheet_y":24,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F481-1F3FD-200D-2642-FE0F","image":"1f481-1f3fd-200d-2642-fe0f.png","sheet_x":43,"sheet_y":25,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F481-1F3FE-200D-2642-FE0F","image":"1f481-1f3fe-200d-2642-fe0f.png","sheet_x":43,"sheet_y":26,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F481-1F3FF-200D-2642-FE0F","image":"1f481-1f3ff-200d-2642-fe0f.png","sheet_x":43,"sheet_y":27,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F482-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f482-200d-2640-fe0f.png","sheet_x":43,"sheet_y":28,"short_name":"female-guard","short_names":["female-guard"],"text":null,"texts":null,"category":"People","sort_order":157,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F482-1F3FB-200D-2640-FE0F","image":"1f482-1f3fb-200d-2640-fe0f.png","sheet_x":43,"sheet_y":29,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F482-1F3FC-200D-2640-FE0F","image":"1f482-1f3fc-200d-2640-fe0f.png","sheet_x":43,"sheet_y":30,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F482-1F3FD-200D-2640-FE0F","image":"1f482-1f3fd-200d-2640-fe0f.png","sheet_x":43,"sheet_y":31,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F482-1F3FE-200D-2640-FE0F","image":"1f482-1f3fe-200d-2640-fe0f.png","sheet_x":43,"sheet_y":32,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F482-1F3FF-200D-2640-FE0F","image":"1f482-1f3ff-200d-2640-fe0f.png","sheet_x":43,"sheet_y":33,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F482-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f482-200d-2642-fe0f.png","sheet_x":43,"sheet_y":34,"short_name":"male-guard","short_names":["male-guard"],"text":null,"texts":null,"category":"People","sort_order":301,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F482-1F3FB-200D-2642-FE0F","image":"1f482-1f3fb-200d-2642-fe0f.png","sheet_x":43,"sheet_y":35,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F482-1F3FC-200D-2642-FE0F","image":"1f482-1f3fc-200d-2642-fe0f.png","sheet_x":43,"sheet_y":36,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F482-1F3FD-200D-2642-FE0F","image":"1f482-1f3fd-200d-2642-fe0f.png","sheet_x":43,"sheet_y":37,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F482-1F3FE-200D-2642-FE0F","image":"1f482-1f3fe-200d-2642-fe0f.png","sheet_x":43,"sheet_y":38,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F482-1F3FF-200D-2642-FE0F","image":"1f482-1f3ff-200d-2642-fe0f.png","sheet_x":43,"sheet_y":39,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F482"},{"name":null,"unified":"1F486-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f486-200d-2640-fe0f.png","sheet_x":43,"sheet_y":40,"short_name":"woman-getting-massage","short_names":["woman-getting-massage"],"text":null,"texts":null,"category":"People","sort_order":305,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F486-1F3FB-200D-2640-FE0F","image":"1f486-1f3fb-200d-2640-fe0f.png","sheet_x":43,"sheet_y":41,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F486-1F3FC-200D-2640-FE0F","image":"1f486-1f3fc-200d-2640-fe0f.png","sheet_x":43,"sheet_y":42,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F486-1F3FD-200D-2640-FE0F","image":"1f486-1f3fd-200d-2640-fe0f.png","sheet_x":43,"sheet_y":43,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F486-1F3FE-200D-2640-FE0F","image":"1f486-1f3fe-200d-2640-fe0f.png","sheet_x":43,"sheet_y":44,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F486-1F3FF-200D-2640-FE0F","image":"1f486-1f3ff-200d-2640-fe0f.png","sheet_x":43,"sheet_y":45,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F486"},{"name":null,"unified":"1F486-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f486-200d-2642-fe0f.png","sheet_x":43,"sheet_y":46,"short_name":"man-getting-massage","short_names":["man-getting-massage"],"text":null,"texts":null,"category":"People","sort_order":224,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F486-1F3FB-200D-2642-FE0F","image":"1f486-1f3fb-200d-2642-fe0f.png","sheet_x":43,"sheet_y":47,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F486-1F3FC-200D-2642-FE0F","image":"1f486-1f3fc-200d-2642-fe0f.png","sheet_x":43,"sheet_y":48,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F486-1F3FD-200D-2642-FE0F","image":"1f486-1f3fd-200d-2642-fe0f.png","sheet_x":44,"sheet_y":0,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F486-1F3FE-200D-2642-FE0F","image":"1f486-1f3fe-200d-2642-fe0f.png","sheet_x":44,"sheet_y":1,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F486-1F3FF-200D-2642-FE0F","image":"1f486-1f3ff-200d-2642-fe0f.png","sheet_x":44,"sheet_y":2,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F487-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f487-200d-2640-fe0f.png","sheet_x":44,"sheet_y":3,"short_name":"woman-getting-haircut","short_names":["woman-getting-haircut"],"text":null,"texts":null,"category":"People","sort_order":306,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F487-1F3FB-200D-2640-FE0F","image":"1f487-1f3fb-200d-2640-fe0f.png","sheet_x":44,"sheet_y":4,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F487-1F3FC-200D-2640-FE0F","image":"1f487-1f3fc-200d-2640-fe0f.png","sheet_x":44,"sheet_y":5,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F487-1F3FD-200D-2640-FE0F","image":"1f487-1f3fd-200d-2640-fe0f.png","sheet_x":44,"sheet_y":6,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F487-1F3FE-200D-2640-FE0F","image":"1f487-1f3fe-200d-2640-fe0f.png","sheet_x":44,"sheet_y":7,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F487-1F3FF-200D-2640-FE0F","image":"1f487-1f3ff-200d-2640-fe0f.png","sheet_x":44,"sheet_y":8,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F487"},{"name":null,"unified":"1F487-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f487-200d-2642-fe0f.png","sheet_x":44,"sheet_y":9,"short_name":"man-getting-haircut","short_names":["man-getting-haircut"],"text":null,"texts":null,"category":"People","sort_order":222,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F487-1F3FB-200D-2642-FE0F","image":"1f487-1f3fb-200d-2642-fe0f.png","sheet_x":44,"sheet_y":10,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F487-1F3FC-200D-2642-FE0F","image":"1f487-1f3fc-200d-2642-fe0f.png","sheet_x":44,"sheet_y":11,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F487-1F3FD-200D-2642-FE0F","image":"1f487-1f3fd-200d-2642-fe0f.png","sheet_x":44,"sheet_y":12,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F487-1F3FE-200D-2642-FE0F","image":"1f487-1f3fe-200d-2642-fe0f.png","sheet_x":44,"sheet_y":13,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F487-1F3FF-200D-2642-FE0F","image":"1f487-1f3ff-200d-2642-fe0f.png","sheet_x":44,"sheet_y":14,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F575-FE0F-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f575-fe0f-200d-2640-fe0f.png","sheet_x":44,"sheet_y":15,"short_name":"female-detective","short_names":["female-detective"],"text":null,"texts":null,"category":"People","sort_order":159,"added_in":"7.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F575-1F3FB-200D-2640-FE0F","image":"1f575-1f3fb-200d-2640-fe0f.png","sheet_x":44,"sheet_y":16,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F575-1F3FC-200D-2640-FE0F","image":"1f575-1f3fc-200d-2640-fe0f.png","sheet_x":44,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F575-1F3FD-200D-2640-FE0F","image":"1f575-1f3fd-200d-2640-fe0f.png","sheet_x":44,"sheet_y":18,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F575-1F3FE-200D-2640-FE0F","image":"1f575-1f3fe-200d-2640-fe0f.png","sheet_x":44,"sheet_y":19,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F575-1F3FF-200D-2640-FE0F","image":"1f575-1f3ff-200d-2640-fe0f.png","sheet_x":44,"sheet_y":20,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F575-FE0F-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f575-fe0f-200d-2642-fe0f.png","sheet_x":44,"sheet_y":21,"short_name":"male-detective","short_names":["male-detective"],"text":null,"texts":null,"category":"People","sort_order":302,"added_in":"7.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F575-1F3FB-200D-2642-FE0F","image":"1f575-1f3fb-200d-2642-fe0f.png","sheet_x":44,"sheet_y":22,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F575-1F3FC-200D-2642-FE0F","image":"1f575-1f3fc-200d-2642-fe0f.png","sheet_x":44,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F575-1F3FD-200D-2642-FE0F","image":"1f575-1f3fd-200d-2642-fe0f.png","sheet_x":44,"sheet_y":24,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F575-1F3FE-200D-2642-FE0F","image":"1f575-1f3fe-200d-2642-fe0f.png","sheet_x":44,"sheet_y":25,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F575-1F3FF-200D-2642-FE0F","image":"1f575-1f3ff-200d-2642-fe0f.png","sheet_x":44,"sheet_y":26,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F575"},{"name":null,"unified":"1F645-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f645-200d-2640-fe0f.png","sheet_x":44,"sheet_y":27,"short_name":"woman-gesturing-no","short_names":["woman-gesturing-no"],"text":null,"texts":null,"category":"People","sort_order":309,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F645-1F3FB-200D-2640-FE0F","image":"1f645-1f3fb-200d-2640-fe0f.png","sheet_x":44,"sheet_y":28,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F645-1F3FC-200D-2640-FE0F","image":"1f645-1f3fc-200d-2640-fe0f.png","sheet_x":44,"sheet_y":29,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F645-1F3FD-200D-2640-FE0F","image":"1f645-1f3fd-200d-2640-fe0f.png","sheet_x":44,"sheet_y":30,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F645-1F3FE-200D-2640-FE0F","image":"1f645-1f3fe-200d-2640-fe0f.png","sheet_x":44,"sheet_y":31,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F645-1F3FF-200D-2640-FE0F","image":"1f645-1f3ff-200d-2640-fe0f.png","sheet_x":44,"sheet_y":32,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F645"},{"name":null,"unified":"1F645-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f645-200d-2642-fe0f.png","sheet_x":44,"sheet_y":33,"short_name":"man-gesturing-no","short_names":["man-gesturing-no"],"text":null,"texts":null,"category":"People","sort_order":206,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F645-1F3FB-200D-2642-FE0F","image":"1f645-1f3fb-200d-2642-fe0f.png","sheet_x":44,"sheet_y":34,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F645-1F3FC-200D-2642-FE0F","image":"1f645-1f3fc-200d-2642-fe0f.png","sheet_x":44,"sheet_y":35,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F645-1F3FD-200D-2642-FE0F","image":"1f645-1f3fd-200d-2642-fe0f.png","sheet_x":44,"sheet_y":36,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F645-1F3FE-200D-2642-FE0F","image":"1f645-1f3fe-200d-2642-fe0f.png","sheet_x":44,"sheet_y":37,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F645-1F3FF-200D-2642-FE0F","image":"1f645-1f3ff-200d-2642-fe0f.png","sheet_x":44,"sheet_y":38,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F646-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f646-200d-2640-fe0f.png","sheet_x":44,"sheet_y":39,"short_name":"woman-gesturing-ok","short_names":["woman-gesturing-ok"],"text":null,"texts":null,"category":"People","sort_order":310,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F646-1F3FB-200D-2640-FE0F","image":"1f646-1f3fb-200d-2640-fe0f.png","sheet_x":44,"sheet_y":40,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F646-1F3FC-200D-2640-FE0F","image":"1f646-1f3fc-200d-2640-fe0f.png","sheet_x":44,"sheet_y":41,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F646-1F3FD-200D-2640-FE0F","image":"1f646-1f3fd-200d-2640-fe0f.png","sheet_x":44,"sheet_y":42,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F646-1F3FE-200D-2640-FE0F","image":"1f646-1f3fe-200d-2640-fe0f.png","sheet_x":44,"sheet_y":43,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F646-1F3FF-200D-2640-FE0F","image":"1f646-1f3ff-200d-2640-fe0f.png","sheet_x":44,"sheet_y":44,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F646"},{"name":null,"unified":"1F646-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f646-200d-2642-fe0f.png","sheet_x":44,"sheet_y":45,"short_name":"man-gesturing-ok","short_names":["man-gesturing-ok"],"text":null,"texts":null,"category":"People","sort_order":208,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F646-1F3FB-200D-2642-FE0F","image":"1f646-1f3fb-200d-2642-fe0f.png","sheet_x":44,"sheet_y":46,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F646-1F3FC-200D-2642-FE0F","image":"1f646-1f3fc-200d-2642-fe0f.png","sheet_x":44,"sheet_y":47,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F646-1F3FD-200D-2642-FE0F","image":"1f646-1f3fd-200d-2642-fe0f.png","sheet_x":44,"sheet_y":48,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F646-1F3FE-200D-2642-FE0F","image":"1f646-1f3fe-200d-2642-fe0f.png","sheet_x":45,"sheet_y":0,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F646-1F3FF-200D-2642-FE0F","image":"1f646-1f3ff-200d-2642-fe0f.png","sheet_x":45,"sheet_y":1,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F647-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f647-200d-2640-fe0f.png","sheet_x":45,"sheet_y":2,"short_name":"woman-bowing","short_names":["woman-bowing"],"text":null,"texts":null,"category":"People","sort_order":201,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F647-1F3FB-200D-2640-FE0F","image":"1f647-1f3fb-200d-2640-fe0f.png","sheet_x":45,"sheet_y":3,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F647-1F3FC-200D-2640-FE0F","image":"1f647-1f3fc-200d-2640-fe0f.png","sheet_x":45,"sheet_y":4,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F647-1F3FD-200D-2640-FE0F","image":"1f647-1f3fd-200d-2640-fe0f.png","sheet_x":45,"sheet_y":5,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F647-1F3FE-200D-2640-FE0F","image":"1f647-1f3fe-200d-2640-fe0f.png","sheet_x":45,"sheet_y":6,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F647-1F3FF-200D-2640-FE0F","image":"1f647-1f3ff-200d-2640-fe0f.png","sheet_x":45,"sheet_y":7,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F647-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f647-200d-2642-fe0f.png","sheet_x":45,"sheet_y":8,"short_name":"man-bowing","short_names":["man-bowing"],"text":null,"texts":null,"category":"People","sort_order":311,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F647-1F3FB-200D-2642-FE0F","image":"1f647-1f3fb-200d-2642-fe0f.png","sheet_x":45,"sheet_y":9,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F647-1F3FC-200D-2642-FE0F","image":"1f647-1f3fc-200d-2642-fe0f.png","sheet_x":45,"sheet_y":10,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F647-1F3FD-200D-2642-FE0F","image":"1f647-1f3fd-200d-2642-fe0f.png","sheet_x":45,"sheet_y":11,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F647-1F3FE-200D-2642-FE0F","image":"1f647-1f3fe-200d-2642-fe0f.png","sheet_x":45,"sheet_y":12,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F647-1F3FF-200D-2642-FE0F","image":"1f647-1f3ff-200d-2642-fe0f.png","sheet_x":45,"sheet_y":13,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F647"},{"name":null,"unified":"1F64B-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f64b-200d-2640-fe0f.png","sheet_x":45,"sheet_y":14,"short_name":"woman-raising-hand","short_names":["woman-raising-hand"],"text":null,"texts":null,"category":"People","sort_order":312,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F64B-1F3FB-200D-2640-FE0F","image":"1f64b-1f3fb-200d-2640-fe0f.png","sheet_x":45,"sheet_y":15,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F64B-1F3FC-200D-2640-FE0F","image":"1f64b-1f3fc-200d-2640-fe0f.png","sheet_x":45,"sheet_y":16,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F64B-1F3FD-200D-2640-FE0F","image":"1f64b-1f3fd-200d-2640-fe0f.png","sheet_x":45,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F64B-1F3FE-200D-2640-FE0F","image":"1f64b-1f3fe-200d-2640-fe0f.png","sheet_x":45,"sheet_y":18,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F64B-1F3FF-200D-2640-FE0F","image":"1f64b-1f3ff-200d-2640-fe0f.png","sheet_x":45,"sheet_y":19,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F64B"},{"name":null,"unified":"1F64B-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f64b-200d-2642-fe0f.png","sheet_x":45,"sheet_y":20,"short_name":"man-raising-hand","short_names":["man-raising-hand"],"text":null,"texts":null,"category":"People","sort_order":210,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F64B-1F3FB-200D-2642-FE0F","image":"1f64b-1f3fb-200d-2642-fe0f.png","sheet_x":45,"sheet_y":21,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F64B-1F3FC-200D-2642-FE0F","image":"1f64b-1f3fc-200d-2642-fe0f.png","sheet_x":45,"sheet_y":22,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F64B-1F3FD-200D-2642-FE0F","image":"1f64b-1f3fd-200d-2642-fe0f.png","sheet_x":45,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F64B-1F3FE-200D-2642-FE0F","image":"1f64b-1f3fe-200d-2642-fe0f.png","sheet_x":45,"sheet_y":24,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F64B-1F3FF-200D-2642-FE0F","image":"1f64b-1f3ff-200d-2642-fe0f.png","sheet_x":45,"sheet_y":25,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F64D-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f64d-200d-2640-fe0f.png","sheet_x":45,"sheet_y":26,"short_name":"woman-frowning","short_names":["woman-frowning"],"text":null,"texts":null,"category":"People","sort_order":313,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F64D-1F3FB-200D-2640-FE0F","image":"1f64d-1f3fb-200d-2640-fe0f.png","sheet_x":45,"sheet_y":27,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F64D-1F3FC-200D-2640-FE0F","image":"1f64d-1f3fc-200d-2640-fe0f.png","sheet_x":45,"sheet_y":28,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F64D-1F3FD-200D-2640-FE0F","image":"1f64d-1f3fd-200d-2640-fe0f.png","sheet_x":45,"sheet_y":29,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F64D-1F3FE-200D-2640-FE0F","image":"1f64d-1f3fe-200d-2640-fe0f.png","sheet_x":45,"sheet_y":30,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F64D-1F3FF-200D-2640-FE0F","image":"1f64d-1f3ff-200d-2640-fe0f.png","sheet_x":45,"sheet_y":31,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F64D"},{"name":null,"unified":"1F64D-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f64d-200d-2642-fe0f.png","sheet_x":45,"sheet_y":32,"short_name":"man-frowning","short_names":["man-frowning"],"text":null,"texts":null,"category":"People","sort_order":220,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F64D-1F3FB-200D-2642-FE0F","image":"1f64d-1f3fb-200d-2642-fe0f.png","sheet_x":45,"sheet_y":33,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F64D-1F3FC-200D-2642-FE0F","image":"1f64d-1f3fc-200d-2642-fe0f.png","sheet_x":45,"sheet_y":34,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F64D-1F3FD-200D-2642-FE0F","image":"1f64d-1f3fd-200d-2642-fe0f.png","sheet_x":45,"sheet_y":35,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F64D-1F3FE-200D-2642-FE0F","image":"1f64d-1f3fe-200d-2642-fe0f.png","sheet_x":45,"sheet_y":36,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F64D-1F3FF-200D-2642-FE0F","image":"1f64d-1f3ff-200d-2642-fe0f.png","sheet_x":45,"sheet_y":37,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F64E-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f64e-200d-2640-fe0f.png","sheet_x":45,"sheet_y":38,"short_name":"woman-pouting","short_names":["woman-pouting"],"text":null,"texts":null,"category":"People","sort_order":314,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F64E-1F3FB-200D-2640-FE0F","image":"1f64e-1f3fb-200d-2640-fe0f.png","sheet_x":45,"sheet_y":39,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F64E-1F3FC-200D-2640-FE0F","image":"1f64e-1f3fc-200d-2640-fe0f.png","sheet_x":45,"sheet_y":40,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F64E-1F3FD-200D-2640-FE0F","image":"1f64e-1f3fd-200d-2640-fe0f.png","sheet_x":45,"sheet_y":41,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F64E-1F3FE-200D-2640-FE0F","image":"1f64e-1f3fe-200d-2640-fe0f.png","sheet_x":45,"sheet_y":42,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F64E-1F3FF-200D-2640-FE0F","image":"1f64e-1f3ff-200d-2640-fe0f.png","sheet_x":45,"sheet_y":43,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F64E"},{"name":null,"unified":"1F64E-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f64e-200d-2642-fe0f.png","sheet_x":45,"sheet_y":44,"short_name":"man-pouting","short_names":["man-pouting"],"text":null,"texts":null,"category":"People","sort_order":218,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F64E-1F3FB-200D-2642-FE0F","image":"1f64e-1f3fb-200d-2642-fe0f.png","sheet_x":45,"sheet_y":45,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F64E-1F3FC-200D-2642-FE0F","image":"1f64e-1f3fc-200d-2642-fe0f.png","sheet_x":45,"sheet_y":46,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F64E-1F3FD-200D-2642-FE0F","image":"1f64e-1f3fd-200d-2642-fe0f.png","sheet_x":45,"sheet_y":47,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F64E-1F3FE-200D-2642-FE0F","image":"1f64e-1f3fe-200d-2642-fe0f.png","sheet_x":45,"sheet_y":48,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F64E-1F3FF-200D-2642-FE0F","image":"1f64e-1f3ff-200d-2642-fe0f.png","sheet_x":46,"sheet_y":0,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F6A3-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6a3-200d-2640-fe0f.png","sheet_x":46,"sheet_y":1,"short_name":"woman-rowing-boat","short_names":["woman-rowing-boat"],"text":null,"texts":null,"category":"Activity","sort_order":47,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6A3-1F3FB-200D-2640-FE0F","image":"1f6a3-1f3fb-200d-2640-fe0f.png","sheet_x":46,"sheet_y":2,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F6A3-1F3FC-200D-2640-FE0F","image":"1f6a3-1f3fc-200d-2640-fe0f.png","sheet_x":46,"sheet_y":3,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F6A3-1F3FD-200D-2640-FE0F","image":"1f6a3-1f3fd-200d-2640-fe0f.png","sheet_x":46,"sheet_y":4,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F6A3-1F3FE-200D-2640-FE0F","image":"1f6a3-1f3fe-200d-2640-fe0f.png","sheet_x":46,"sheet_y":5,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F6A3-1F3FF-200D-2640-FE0F","image":"1f6a3-1f3ff-200d-2640-fe0f.png","sheet_x":46,"sheet_y":6,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F6A3-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6a3-200d-2642-fe0f.png","sheet_x":46,"sheet_y":7,"short_name":"man-rowing-boat","short_names":["man-rowing-boat"],"text":null,"texts":null,"category":"Activity","sort_order":91,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6A3-1F3FB-200D-2642-FE0F","image":"1f6a3-1f3fb-200d-2642-fe0f.png","sheet_x":46,"sheet_y":8,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F6A3-1F3FC-200D-2642-FE0F","image":"1f6a3-1f3fc-200d-2642-fe0f.png","sheet_x":46,"sheet_y":9,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F6A3-1F3FD-200D-2642-FE0F","image":"1f6a3-1f3fd-200d-2642-fe0f.png","sheet_x":46,"sheet_y":10,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F6A3-1F3FE-200D-2642-FE0F","image":"1f6a3-1f3fe-200d-2642-fe0f.png","sheet_x":46,"sheet_y":11,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F6A3-1F3FF-200D-2642-FE0F","image":"1f6a3-1f3ff-200d-2642-fe0f.png","sheet_x":46,"sheet_y":12,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F6A3"},{"name":null,"unified":"1F6B4-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b4-200d-2640-fe0f.png","sheet_x":46,"sheet_y":13,"short_name":"woman-biking","short_names":["woman-biking"],"text":null,"texts":null,"category":"Activity","sort_order":50,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6B4-1F3FB-200D-2640-FE0F","image":"1f6b4-1f3fb-200d-2640-fe0f.png","sheet_x":46,"sheet_y":14,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F6B4-1F3FC-200D-2640-FE0F","image":"1f6b4-1f3fc-200d-2640-fe0f.png","sheet_x":46,"sheet_y":15,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F6B4-1F3FD-200D-2640-FE0F","image":"1f6b4-1f3fd-200d-2640-fe0f.png","sheet_x":46,"sheet_y":16,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F6B4-1F3FE-200D-2640-FE0F","image":"1f6b4-1f3fe-200d-2640-fe0f.png","sheet_x":46,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F6B4-1F3FF-200D-2640-FE0F","image":"1f6b4-1f3ff-200d-2640-fe0f.png","sheet_x":46,"sheet_y":18,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F6B4-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b4-200d-2642-fe0f.png","sheet_x":46,"sheet_y":19,"short_name":"man-biking","short_names":["man-biking"],"text":null,"texts":null,"category":"Activity","sort_order":92,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6B4-1F3FB-200D-2642-FE0F","image":"1f6b4-1f3fb-200d-2642-fe0f.png","sheet_x":46,"sheet_y":20,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F6B4-1F3FC-200D-2642-FE0F","image":"1f6b4-1f3fc-200d-2642-fe0f.png","sheet_x":46,"sheet_y":21,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F6B4-1F3FD-200D-2642-FE0F","image":"1f6b4-1f3fd-200d-2642-fe0f.png","sheet_x":46,"sheet_y":22,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F6B4-1F3FE-200D-2642-FE0F","image":"1f6b4-1f3fe-200d-2642-fe0f.png","sheet_x":46,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F6B4-1F3FF-200D-2642-FE0F","image":"1f6b4-1f3ff-200d-2642-fe0f.png","sheet_x":46,"sheet_y":24,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F6B4"},{"name":null,"unified":"1F6B5-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b5-200d-2640-fe0f.png","sheet_x":46,"sheet_y":25,"short_name":"woman-mountain-biking","short_names":["woman-mountain-biking"],"text":null,"texts":null,"category":"Activity","sort_order":52,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6B5-1F3FB-200D-2640-FE0F","image":"1f6b5-1f3fb-200d-2640-fe0f.png","sheet_x":46,"sheet_y":26,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F6B5-1F3FC-200D-2640-FE0F","image":"1f6b5-1f3fc-200d-2640-fe0f.png","sheet_x":46,"sheet_y":27,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F6B5-1F3FD-200D-2640-FE0F","image":"1f6b5-1f3fd-200d-2640-fe0f.png","sheet_x":46,"sheet_y":28,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F6B5-1F3FE-200D-2640-FE0F","image":"1f6b5-1f3fe-200d-2640-fe0f.png","sheet_x":46,"sheet_y":29,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F6B5-1F3FF-200D-2640-FE0F","image":"1f6b5-1f3ff-200d-2640-fe0f.png","sheet_x":46,"sheet_y":30,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F6B5-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b5-200d-2642-fe0f.png","sheet_x":46,"sheet_y":31,"short_name":"man-mountain-biking","short_names":["man-mountain-biking"],"text":null,"texts":null,"category":"Activity","sort_order":93,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6B5-1F3FB-200D-2642-FE0F","image":"1f6b5-1f3fb-200d-2642-fe0f.png","sheet_x":46,"sheet_y":32,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F6B5-1F3FC-200D-2642-FE0F","image":"1f6b5-1f3fc-200d-2642-fe0f.png","sheet_x":46,"sheet_y":33,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F6B5-1F3FD-200D-2642-FE0F","image":"1f6b5-1f3fd-200d-2642-fe0f.png","sheet_x":46,"sheet_y":34,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F6B5-1F3FE-200D-2642-FE0F","image":"1f6b5-1f3fe-200d-2642-fe0f.png","sheet_x":46,"sheet_y":35,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F6B5-1F3FF-200D-2642-FE0F","image":"1f6b5-1f3ff-200d-2642-fe0f.png","sheet_x":46,"sheet_y":36,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F6B5"},{"name":null,"unified":"1F6B6-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b6-200d-2640-fe0f.png","sheet_x":46,"sheet_y":37,"short_name":"woman-walking","short_names":["woman-walking"],"text":null,"texts":null,"category":"People","sort_order":230,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6B6-1F3FB-200D-2640-FE0F","image":"1f6b6-1f3fb-200d-2640-fe0f.png","sheet_x":46,"sheet_y":38,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F6B6-1F3FC-200D-2640-FE0F","image":"1f6b6-1f3fc-200d-2640-fe0f.png","sheet_x":46,"sheet_y":39,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F6B6-1F3FD-200D-2640-FE0F","image":"1f6b6-1f3fd-200d-2640-fe0f.png","sheet_x":46,"sheet_y":40,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F6B6-1F3FE-200D-2640-FE0F","image":"1f6b6-1f3fe-200d-2640-fe0f.png","sheet_x":46,"sheet_y":41,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F6B6-1F3FF-200D-2640-FE0F","image":"1f6b6-1f3ff-200d-2640-fe0f.png","sheet_x":46,"sheet_y":42,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F6B6-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f6b6-200d-2642-fe0f.png","sheet_x":46,"sheet_y":43,"short_name":"man-walking","short_names":["man-walking"],"text":null,"texts":null,"category":"People","sort_order":307,"added_in":"6.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F6B6-1F3FB-200D-2642-FE0F","image":"1f6b6-1f3fb-200d-2642-fe0f.png","sheet_x":46,"sheet_y":44,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F6B6-1F3FC-200D-2642-FE0F","image":"1f6b6-1f3fc-200d-2642-fe0f.png","sheet_x":46,"sheet_y":45,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F6B6-1F3FD-200D-2642-FE0F","image":"1f6b6-1f3fd-200d-2642-fe0f.png","sheet_x":46,"sheet_y":46,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F6B6-1F3FE-200D-2642-FE0F","image":"1f6b6-1f3fe-200d-2642-fe0f.png","sheet_x":46,"sheet_y":47,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F6B6-1F3FF-200D-2642-FE0F","image":"1f6b6-1f3ff-200d-2642-fe0f.png","sheet_x":46,"sheet_y":48,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"1F6B6"},{"name":null,"unified":"1F926-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f926-200d-2640-fe0f.png","sheet_x":47,"sheet_y":0,"short_name":"woman-facepalming","short_names":["woman-facepalming"],"text":null,"texts":null,"category":"People","sort_order":212,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F926-1F3FB-200D-2640-FE0F","image":"1f926-1f3fb-200d-2640-fe0f.png","sheet_x":47,"sheet_y":1,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F926-1F3FC-200D-2640-FE0F","image":"1f926-1f3fc-200d-2640-fe0f.png","sheet_x":47,"sheet_y":2,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F926-1F3FD-200D-2640-FE0F","image":"1f926-1f3fd-200d-2640-fe0f.png","sheet_x":47,"sheet_y":3,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F926-1F3FE-200D-2640-FE0F","image":"1f926-1f3fe-200d-2640-fe0f.png","sheet_x":47,"sheet_y":4,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F926-1F3FF-200D-2640-FE0F","image":"1f926-1f3ff-200d-2640-fe0f.png","sheet_x":47,"sheet_y":5,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F926-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f926-200d-2642-fe0f.png","sheet_x":47,"sheet_y":6,"short_name":"man-facepalming","short_names":["man-facepalming"],"text":null,"texts":null,"category":"People","sort_order":213,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F926-1F3FB-200D-2642-FE0F","image":"1f926-1f3fb-200d-2642-fe0f.png","sheet_x":47,"sheet_y":7,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F926-1F3FC-200D-2642-FE0F","image":"1f926-1f3fc-200d-2642-fe0f.png","sheet_x":47,"sheet_y":8,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F926-1F3FD-200D-2642-FE0F","image":"1f926-1f3fd-200d-2642-fe0f.png","sheet_x":47,"sheet_y":9,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F926-1F3FE-200D-2642-FE0F","image":"1f926-1f3fe-200d-2642-fe0f.png","sheet_x":47,"sheet_y":10,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F926-1F3FF-200D-2642-FE0F","image":"1f926-1f3ff-200d-2642-fe0f.png","sheet_x":47,"sheet_y":11,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F937-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f937-200d-2640-fe0f.png","sheet_x":47,"sheet_y":12,"short_name":"woman-shrugging","short_names":["woman-shrugging"],"text":null,"texts":null,"category":"People","sort_order":215,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F937-1F3FB-200D-2640-FE0F","image":"1f937-1f3fb-200d-2640-fe0f.png","sheet_x":47,"sheet_y":13,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F937-1F3FC-200D-2640-FE0F","image":"1f937-1f3fc-200d-2640-fe0f.png","sheet_x":47,"sheet_y":14,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F937-1F3FD-200D-2640-FE0F","image":"1f937-1f3fd-200d-2640-fe0f.png","sheet_x":47,"sheet_y":15,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F937-1F3FE-200D-2640-FE0F","image":"1f937-1f3fe-200d-2640-fe0f.png","sheet_x":47,"sheet_y":16,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F937-1F3FF-200D-2640-FE0F","image":"1f937-1f3ff-200d-2640-fe0f.png","sheet_x":47,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F937-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f937-200d-2642-fe0f.png","sheet_x":47,"sheet_y":18,"short_name":"man-shrugging","short_names":["man-shrugging"],"text":null,"texts":null,"category":"People","sort_order":216,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F937-1F3FB-200D-2642-FE0F","image":"1f937-1f3fb-200d-2642-fe0f.png","sheet_x":47,"sheet_y":19,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F937-1F3FC-200D-2642-FE0F","image":"1f937-1f3fc-200d-2642-fe0f.png","sheet_x":47,"sheet_y":20,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F937-1F3FD-200D-2642-FE0F","image":"1f937-1f3fd-200d-2642-fe0f.png","sheet_x":47,"sheet_y":21,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F937-1F3FE-200D-2642-FE0F","image":"1f937-1f3fe-200d-2642-fe0f.png","sheet_x":47,"sheet_y":22,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F937-1F3FF-200D-2642-FE0F","image":"1f937-1f3ff-200d-2642-fe0f.png","sheet_x":47,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F938-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f938-200d-2640-fe0f.png","sheet_x":47,"sheet_y":24,"short_name":"woman-cartwheeling","short_names":["woman-cartwheeling"],"text":null,"texts":null,"category":"Activity","sort_order":31,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F938-1F3FB-200D-2640-FE0F","image":"1f938-1f3fb-200d-2640-fe0f.png","sheet_x":47,"sheet_y":25,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F938-1F3FC-200D-2640-FE0F","image":"1f938-1f3fc-200d-2640-fe0f.png","sheet_x":47,"sheet_y":26,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F938-1F3FD-200D-2640-FE0F","image":"1f938-1f3fd-200d-2640-fe0f.png","sheet_x":47,"sheet_y":27,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F938-1F3FE-200D-2640-FE0F","image":"1f938-1f3fe-200d-2640-fe0f.png","sheet_x":47,"sheet_y":28,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F938-1F3FF-200D-2640-FE0F","image":"1f938-1f3ff-200d-2640-fe0f.png","sheet_x":47,"sheet_y":29,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F938-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f938-200d-2642-fe0f.png","sheet_x":47,"sheet_y":30,"short_name":"man-cartwheeling","short_names":["man-cartwheeling"],"text":null,"texts":null,"category":"Activity","sort_order":32,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F938-1F3FB-200D-2642-FE0F","image":"1f938-1f3fb-200d-2642-fe0f.png","sheet_x":47,"sheet_y":31,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F938-1F3FC-200D-2642-FE0F","image":"1f938-1f3fc-200d-2642-fe0f.png","sheet_x":47,"sheet_y":32,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F938-1F3FD-200D-2642-FE0F","image":"1f938-1f3fd-200d-2642-fe0f.png","sheet_x":47,"sheet_y":33,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F938-1F3FE-200D-2642-FE0F","image":"1f938-1f3fe-200d-2642-fe0f.png","sheet_x":47,"sheet_y":34,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F938-1F3FF-200D-2642-FE0F","image":"1f938-1f3ff-200d-2642-fe0f.png","sheet_x":47,"sheet_y":35,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F939-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f939-200d-2640-fe0f.png","sheet_x":47,"sheet_y":36,"short_name":"woman-juggling","short_names":["woman-juggling"],"text":null,"texts":null,"category":"Activity","sort_order":67,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F939-1F3FB-200D-2640-FE0F","image":"1f939-1f3fb-200d-2640-fe0f.png","sheet_x":47,"sheet_y":37,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F939-1F3FC-200D-2640-FE0F","image":"1f939-1f3fc-200d-2640-fe0f.png","sheet_x":47,"sheet_y":38,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F939-1F3FD-200D-2640-FE0F","image":"1f939-1f3fd-200d-2640-fe0f.png","sheet_x":47,"sheet_y":39,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F939-1F3FE-200D-2640-FE0F","image":"1f939-1f3fe-200d-2640-fe0f.png","sheet_x":47,"sheet_y":40,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F939-1F3FF-200D-2640-FE0F","image":"1f939-1f3ff-200d-2640-fe0f.png","sheet_x":47,"sheet_y":41,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F939-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f939-200d-2642-fe0f.png","sheet_x":47,"sheet_y":42,"short_name":"man-juggling","short_names":["man-juggling"],"text":null,"texts":null,"category":"Activity","sort_order":68,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F939-1F3FB-200D-2642-FE0F","image":"1f939-1f3fb-200d-2642-fe0f.png","sheet_x":47,"sheet_y":43,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F939-1F3FC-200D-2642-FE0F","image":"1f939-1f3fc-200d-2642-fe0f.png","sheet_x":47,"sheet_y":44,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F939-1F3FD-200D-2642-FE0F","image":"1f939-1f3fd-200d-2642-fe0f.png","sheet_x":47,"sheet_y":45,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F939-1F3FE-200D-2642-FE0F","image":"1f939-1f3fe-200d-2642-fe0f.png","sheet_x":47,"sheet_y":46,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F939-1F3FF-200D-2642-FE0F","image":"1f939-1f3ff-200d-2642-fe0f.png","sheet_x":47,"sheet_y":47,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F93C-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93c-200d-2640-fe0f.png","sheet_x":47,"sheet_y":48,"short_name":"woman-wrestling","short_names":["woman-wrestling"],"text":null,"texts":null,"category":"Activity","sort_order":28,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},{"name":null,"unified":"1F93C-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93c-200d-2642-fe0f.png","sheet_x":48,"sheet_y":0,"short_name":"man-wrestling","short_names":["man-wrestling"],"text":null,"texts":null,"category":"Activity","sort_order":29,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},{"name":null,"unified":"1F93D-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93d-200d-2640-fe0f.png","sheet_x":48,"sheet_y":1,"short_name":"woman-playing-water-polo","short_names":["woman-playing-water-polo"],"text":null,"texts":null,"category":"Activity","sort_order":45,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F93D-1F3FB-200D-2640-FE0F","image":"1f93d-1f3fb-200d-2640-fe0f.png","sheet_x":48,"sheet_y":2,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F93D-1F3FC-200D-2640-FE0F","image":"1f93d-1f3fc-200d-2640-fe0f.png","sheet_x":48,"sheet_y":3,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F93D-1F3FD-200D-2640-FE0F","image":"1f93d-1f3fd-200d-2640-fe0f.png","sheet_x":48,"sheet_y":4,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F93D-1F3FE-200D-2640-FE0F","image":"1f93d-1f3fe-200d-2640-fe0f.png","sheet_x":48,"sheet_y":5,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F93D-1F3FF-200D-2640-FE0F","image":"1f93d-1f3ff-200d-2640-fe0f.png","sheet_x":48,"sheet_y":6,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F93D-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93d-200d-2642-fe0f.png","sheet_x":48,"sheet_y":7,"short_name":"man-playing-water-polo","short_names":["man-playing-water-polo"],"text":null,"texts":null,"category":"Activity","sort_order":46,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F93D-1F3FB-200D-2642-FE0F","image":"1f93d-1f3fb-200d-2642-fe0f.png","sheet_x":48,"sheet_y":8,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F93D-1F3FC-200D-2642-FE0F","image":"1f93d-1f3fc-200d-2642-fe0f.png","sheet_x":48,"sheet_y":9,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F93D-1F3FD-200D-2642-FE0F","image":"1f93d-1f3fd-200d-2642-fe0f.png","sheet_x":48,"sheet_y":10,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F93D-1F3FE-200D-2642-FE0F","image":"1f93d-1f3fe-200d-2642-fe0f.png","sheet_x":48,"sheet_y":11,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F93D-1F3FF-200D-2642-FE0F","image":"1f93d-1f3ff-200d-2642-fe0f.png","sheet_x":48,"sheet_y":12,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F93E-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93e-200d-2640-fe0f.png","sheet_x":48,"sheet_y":13,"short_name":"woman-playing-handball","short_names":["woman-playing-handball"],"text":null,"texts":null,"category":"Activity","sort_order":36,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F93E-1F3FB-200D-2640-FE0F","image":"1f93e-1f3fb-200d-2640-fe0f.png","sheet_x":48,"sheet_y":14,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F93E-1F3FC-200D-2640-FE0F","image":"1f93e-1f3fc-200d-2640-fe0f.png","sheet_x":48,"sheet_y":15,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F93E-1F3FD-200D-2640-FE0F","image":"1f93e-1f3fd-200d-2640-fe0f.png","sheet_x":48,"sheet_y":16,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F93E-1F3FE-200D-2640-FE0F","image":"1f93e-1f3fe-200d-2640-fe0f.png","sheet_x":48,"sheet_y":17,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F93E-1F3FF-200D-2640-FE0F","image":"1f93e-1f3ff-200d-2640-fe0f.png","sheet_x":48,"sheet_y":18,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"1F93E-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"1f93e-200d-2642-fe0f.png","sheet_x":48,"sheet_y":19,"short_name":"man-playing-handball","short_names":["man-playing-handball"],"text":null,"texts":null,"category":"Activity","sort_order":37,"added_in":"9.0","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"1F93E-1F3FB-200D-2642-FE0F","image":"1f93e-1f3fb-200d-2642-fe0f.png","sheet_x":48,"sheet_y":20,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"1F93E-1F3FC-200D-2642-FE0F","image":"1f93e-1f3fc-200d-2642-fe0f.png","sheet_x":48,"sheet_y":21,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"1F93E-1F3FD-200D-2642-FE0F","image":"1f93e-1f3fd-200d-2642-fe0f.png","sheet_x":48,"sheet_y":22,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"1F93E-1F3FE-200D-2642-FE0F","image":"1f93e-1f3fe-200d-2642-fe0f.png","sheet_x":48,"sheet_y":23,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"1F93E-1F3FF-200D-2642-FE0F","image":"1f93e-1f3ff-200d-2642-fe0f.png","sheet_x":48,"sheet_y":24,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"26F9-FE0F-200D-2640-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26f9-fe0f-200d-2640-fe0f.png","sheet_x":48,"sheet_y":25,"short_name":"woman-bouncing-ball","short_names":["woman-bouncing-ball"],"text":null,"texts":null,"category":"Activity","sort_order":33,"added_in":"5.2","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"26F9-1F3FB-200D-2640-FE0F","image":"26f9-1f3fb-200d-2640-fe0f.png","sheet_x":48,"sheet_y":26,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"26F9-1F3FC-200D-2640-FE0F","image":"26f9-1f3fc-200d-2640-fe0f.png","sheet_x":48,"sheet_y":27,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"26F9-1F3FD-200D-2640-FE0F","image":"26f9-1f3fd-200d-2640-fe0f.png","sheet_x":48,"sheet_y":28,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"26F9-1F3FE-200D-2640-FE0F","image":"26f9-1f3fe-200d-2640-fe0f.png","sheet_x":48,"sheet_y":29,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"26F9-1F3FF-200D-2640-FE0F","image":"26f9-1f3ff-200d-2640-fe0f.png","sheet_x":48,"sheet_y":30,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}}},{"name":null,"unified":"26F9-FE0F-200D-2642-FE0F","variations":[],"docomo":null,"au":null,"softbank":null,"google":null,"image":"26f9-fe0f-200d-2642-fe0f.png","sheet_x":48,"sheet_y":31,"short_name":"man-bouncing-ball","short_names":["man-bouncing-ball"],"text":null,"texts":null,"category":"Activity","sort_order":86,"added_in":"5.2","has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false,"skin_variations":{"1F3FB":{"unified":"26F9-1F3FB-200D-2642-FE0F","image":"26f9-1f3fb-200d-2642-fe0f.png","sheet_x":48,"sheet_y":32,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FC":{"unified":"26F9-1F3FC-200D-2642-FE0F","image":"26f9-1f3fc-200d-2642-fe0f.png","sheet_x":48,"sheet_y":33,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FD":{"unified":"26F9-1F3FD-200D-2642-FE0F","image":"26f9-1f3fd-200d-2642-fe0f.png","sheet_x":48,"sheet_y":34,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FE":{"unified":"26F9-1F3FE-200D-2642-FE0F","image":"26f9-1f3fe-200d-2642-fe0f.png","sheet_x":48,"sheet_y":35,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false},"1F3FF":{"unified":"26F9-1F3FF-200D-2642-FE0F","image":"26f9-1f3ff-200d-2642-fe0f.png","sheet_x":48,"sheet_y":36,"has_img_apple":true,"has_img_google":false,"has_img_twitter":true,"has_img_emojione":false,"has_img_facebook":false,"has_img_messenger":false}},"obsoletes":"26F9"}] \ No newline at end of file From f4db76523958225fdad96703a54853c469bbf58e Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 28 Jun 2017 10:32:46 +0100 Subject: [PATCH 279/481] Fix indentation --- src/autocomplete/EmojiProvider.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/autocomplete/EmojiProvider.js b/src/autocomplete/EmojiProvider.js index 14c64a0816..b694f8f57a 100644 --- a/src/autocomplete/EmojiProvider.js +++ b/src/autocomplete/EmojiProvider.js @@ -38,15 +38,15 @@ const emojiDataWithEmojiOneSupport = EmojiData.filter((a) => { const LIMIT = 20; const CATEGORY_ORDER = [ - 'People', - 'Foods', - 'Objects', - 'Activity', - 'Skin Tones', - 'Nature', - 'Places', - 'Flags', - 'Symbols', + 'People', + 'Foods', + 'Objects', + 'Activity', + 'Skin Tones', + 'Nature', + 'Places', + 'Flags', + 'Symbols', ]; const EMOJI_REGEX = /:\w*:?/g; From 8ca3b382edd6522813a69f855192f44e1dcfc469 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 28 Jun 2017 11:19:16 +0100 Subject: [PATCH 280/481] Use emojione/emoji.json because we don't want two sets of emoji meta --- package.json | 1 - src/autocomplete/EmojiProvider.js | 41 ++++++++++++------------------- 2 files changed, 16 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index 32f6998003..8d638a5928 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,6 @@ "draft-js": "^0.9.1", "draft-js-export-html": "^0.5.0", "draft-js-export-markdown": "^0.2.0", - "emoji-datasource": "^3.0.0", "emojione": "2.2.3", "file-saver": "^1.3.3", "filesize": "3.5.6", diff --git a/src/autocomplete/EmojiProvider.js b/src/autocomplete/EmojiProvider.js index b694f8f57a..6adb820cd8 100644 --- a/src/autocomplete/EmojiProvider.js +++ b/src/autocomplete/EmojiProvider.js @@ -24,43 +24,34 @@ import sdk from '../index'; import {PillCompletion} from './Components'; import type {SelectionRange, Completion} from './Autocompleter'; -import EmojiData from 'emoji-datasource/emoji'; - -const emojiDataToEmojiOne = (name) => ':' + name + ':'; - -// Only include emojis that are in both data sets -const emojiOneShortNames = Object.keys(emojioneList); -const emojiDataWithEmojiOneSupport = EmojiData.filter((a) => { - return emojiOneShortNames.indexOf( - emojiDataToEmojiOne(a.short_name), - ) !== -1; -}); +import EmojiData from 'emojione/emoji.json'; const LIMIT = 20; const CATEGORY_ORDER = [ - 'People', - 'Foods', - 'Objects', - 'Activity', - 'Skin Tones', - 'Nature', - 'Places', - 'Flags', - 'Symbols', + 'people', + 'food', + 'objects', + 'activity', + 'nature', + 'travel', + 'flags', + 'symbols', + 'unicode9', + 'modifier', ]; const EMOJI_REGEX = /:\w*:?/g; -const EMOJI_SHORTNAMES = emojiDataWithEmojiOneSupport.sort( +const EMOJI_SHORTNAMES = Object.keys(EmojiData).map((key) => EmojiData[key]).sort( (a, b) => { if (a.category === b.category) { - return a.sort_order - b.sort_order; + return a.emoji_order - b.emoji_order; } return CATEGORY_ORDER.indexOf(a.category) - CATEGORY_ORDER.indexOf(b.category); }, ).map((a) => { return { - shortname: emojiDataToEmojiOne(a.short_name), - shortnames: a.short_names.join(','), + name: a.name, + shortname: a.shortname, }; }); @@ -70,7 +61,7 @@ export default class EmojiProvider extends AutocompleteProvider { constructor() { super(EMOJI_REGEX); this.matcher = new FuzzyMatcher(EMOJI_SHORTNAMES, { - keys: ['shortname', 'shortnames'], + keys: ['shortname', 'name'], }); } From 2b8da85726a50c792ace2faaa663d4966af8c107 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 28 Jun 2017 11:35:14 +0100 Subject: [PATCH 281/481] Strip the emoji meta-data for the data we need This is done at build time by parsing emojione/emoji.json, stripping it and then writing to ./lib/stripped-emoji.json. --- package.json | 5 +++-- scripts/emoji-data-strip.js | 17 +++++++++++++++++ src/autocomplete/EmojiProvider.js | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 scripts/emoji-data-strip.js diff --git a/package.json b/package.json index 8d638a5928..cd0946ffc8 100644 --- a/package.json +++ b/package.json @@ -33,8 +33,9 @@ "scripts": { "reskindex": "node scripts/reskindex.js -h header", "reskindex:watch": "node scripts/reskindex.js -h header -w", - "build": "npm run reskindex && babel src -d lib --source-maps", - "build:watch": "babel src -w -d lib --source-maps", + "build": "npm run emoji-data-strip && npm run reskindex && babel src -d lib --source-maps", + "build:watch": "npm run emoji-data-strip && babel src -w -d lib --source-maps", + "emoji-data-strip": "node scripts/emoji-data-strip.js", "start": "parallelshell \"npm run build:watch\" \"npm run reskindex:watch\"", "lint": "eslint src/", "lintall": "eslint src/ test/", diff --git a/scripts/emoji-data-strip.js b/scripts/emoji-data-strip.js new file mode 100644 index 0000000000..14110c1c8b --- /dev/null +++ b/scripts/emoji-data-strip.js @@ -0,0 +1,17 @@ +#!/usr/bin/env node +const EMOJI_DATA = require('emojione/emoji.json'); +const fs = require('fs'); + +const output = Object.keys(EMOJI_DATA).map( + (key) => { + const datum = EMOJI_DATA[key]; + return { + name: datum.name, + shortname: datum.shortname, + category: datum.category, + emoji_order: datum.emoji_order, + }; + } +); + +fs.writeFileSync('./lib/stripped-emoji.json', JSON.stringify(output)); diff --git a/src/autocomplete/EmojiProvider.js b/src/autocomplete/EmojiProvider.js index 6adb820cd8..fb7936d77e 100644 --- a/src/autocomplete/EmojiProvider.js +++ b/src/autocomplete/EmojiProvider.js @@ -24,7 +24,7 @@ import sdk from '../index'; import {PillCompletion} from './Components'; import type {SelectionRange, Completion} from './Autocompleter'; -import EmojiData from 'emojione/emoji.json'; +import EmojiData from '../stripped-emoji.json'; const LIMIT = 20; const CATEGORY_ORDER = [ From f73fa4b49b0eb6709d6784e1ea32eb406d42fb3f Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 28 Jun 2017 11:49:50 +0100 Subject: [PATCH 282/481] Move processing into renamed function processHtmlforSending And explain why this fix is necessary --- src/HtmlUtils.js | 8 +++++++- src/components/views/rooms/MessageComposerInput.js | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/HtmlUtils.js b/src/HtmlUtils.js index a32d05e4ff..cc302e24e5 100644 --- a/src/HtmlUtils.js +++ b/src/HtmlUtils.js @@ -84,7 +84,13 @@ export function charactersToImageNode(alt, useSvg, ...unicode) { } -export function stripParagraphs(html: string): string { +export function processHtmlForSending(html: string): string { + // Replace "
\n" with "
" because the \n is redundant and causes an + // extra newline per line within `
` tags.
+    // This is a workaround for a bug in draft-js-export-html:
+    //   https://github.com/sstur/draft-js-export-html/issues/62
+    html = html.replace(/\\n/g, '
'); + const contentDiv = document.createElement('div'); contentDiv.innerHTML = html; diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index cca0a9899c..aa6f3f2ac5 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -507,9 +507,9 @@ export default class MessageComposerInput extends React.Component { } if (this.state.isRichtextEnabled) { - contentHTML = HtmlUtils.stripParagraphs( + contentHTML = HtmlUtils.processHtmlForSending( RichText.contentStateToHTML(contentState), - ).replace(/\\n/g, '
'); + ); } else { const md = new Markdown(contentText); if (md.isPlainText()) { From 22ddbc63c3e63302f24158d76523d096e8f347b6 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 28 Jun 2017 11:54:05 +0100 Subject: [PATCH 283/481] Make lib dir prior to building -p option will not error if lib already exists --- package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index cd0946ffc8..d5dcff831d 100644 --- a/package.json +++ b/package.json @@ -33,8 +33,9 @@ "scripts": { "reskindex": "node scripts/reskindex.js -h header", "reskindex:watch": "node scripts/reskindex.js -h header -w", - "build": "npm run emoji-data-strip && npm run reskindex && babel src -d lib --source-maps", - "build:watch": "npm run emoji-data-strip && babel src -w -d lib --source-maps", + "build:init": "mkdir -p lib && npm run emoji-data-strip", + "build": "npm run build:init && npm run reskindex && babel src -d lib --source-maps", + "build:watch": "npm run build:init && babel src -w -d lib --source-maps", "emoji-data-strip": "node scripts/emoji-data-strip.js", "start": "parallelshell \"npm run build:watch\" \"npm run reskindex:watch\"", "lint": "eslint src/", From 2b1d15717aee78e37687404908c0664b02f9849b Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 28 Jun 2017 12:00:22 +0100 Subject: [PATCH 284/481] Add translation for Matrix Apps labs setting. --- src/UserSettingsStore.js | 3 +- src/i18n/strings/en_EN.json | 1855 ++++++++++++++++++----------------- src/i18n/strings/en_US.json | 1 + 3 files changed, 931 insertions(+), 928 deletions(-) diff --git a/src/UserSettingsStore.js b/src/UserSettingsStore.js index a769c3627b..009fdabb53 100644 --- a/src/UserSettingsStore.js +++ b/src/UserSettingsStore.js @@ -31,7 +31,7 @@ export default { default: false, }, { - name: "Matrix Apps", + name: "-", id: 'matrix_apps', default: false, }, @@ -40,6 +40,7 @@ export default { // horrible but it works. The locality makes this somewhat more palatable. doTranslations: function() { this.LABS_FEATURES[0].name = _t("New Composer & Autocomplete"); + this.LABS_FEATURES[1].name = _t("Matrix Apps"); }, loadProfileInfo: function() { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 0c823229d5..b8f5c26332 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1,929 +1,930 @@ { - "af":"Afrikaans", - "ar-ae":"Arabic (U.A.E.)", - "ar-bh":"Arabic (Bahrain)", - "ar-dz":"Arabic (Algeria)", - "ar-eg":"Arabic (Egypt)", - "ar-iq":"Arabic (Iraq)", - "ar-jo":"Arabic (Jordan)", - "ar-kw":"Arabic (Kuwait)", - "ar-lb":"Arabic (Lebanon)", - "ar-ly":"Arabic (Libya)", - "ar-ma":"Arabic (Morocco)", - "ar-om":"Arabic (Oman)", - "ar-qa":"Arabic (Qatar)", - "ar-sa":"Arabic (Saudi Arabia)", - "ar-sy":"Arabic (Syria)", - "ar-tn":"Arabic (Tunisia)", - "ar-ye":"Arabic (Yemen)", - "be":"Belarusian", - "bg":"Bulgarian", - "ca":"Catalan", - "cs":"Czech", - "da":"Danish", - "de-at":"German (Austria)", - "de-ch":"German (Switzerland)", - "de":"German", - "de-li":"German (Liechtenstein)", - "de-lu":"German (Luxembourg)", - "el":"Greek", - "en-au":"English (Australia)", - "en-bz":"English (Belize)", - "en-ca":"English (Canada)", - "en":"English", - "en-gb":"English (United Kingdom)", - "en-ie":"English (Ireland)", - "en-jm":"English (Jamaica)", - "en-nz":"English (New Zealand)", - "en-tt":"English (Trinidad)", - "en-us":"English (United States)", - "en-za":"English (South Africa)", - "es-ar":"Spanish (Argentina)", - "es-bo":"Spanish (Bolivia)", - "es-cl":"Spanish (Chile)", - "es-co":"Spanish (Colombia)", - "es-cr":"Spanish (Costa Rica)", - "es-do":"Spanish (Dominican Republic)", - "es-ec":"Spanish (Ecuador)", - "es-gt":"Spanish (Guatemala)", - "es-hn":"Spanish (Honduras)", - "es-mx":"Spanish (Mexico)", - "es-ni":"Spanish (Nicaragua)", - "es-pa":"Spanish (Panama)", - "es-pe":"Spanish (Peru)", - "es-pr":"Spanish (Puerto Rico)", - "es-py":"Spanish (Paraguay)", - "es":"Spanish (Spain)", - "es-sv":"Spanish (El Salvador)", - "es-uy":"Spanish (Uruguay)", - "es-ve":"Spanish (Venezuela)", - "et":"Estonian", - "eu":"Basque (Basque)", - "fa":"Farsi", - "fi":"Finnish", - "fo":"Faeroese", - "fr-be":"French (Belgium)", - "fr-ca":"French (Canada)", - "fr-ch":"French (Switzerland)", - "fr":"French", - "fr-lu":"French (Luxembourg)", - "ga":"Irish", - "gd":"Gaelic (Scotland)", - "he":"Hebrew", - "hi":"Hindi", - "hr":"Croatian", - "hu":"Hungarian", - "id":"Indonesian", - "is":"Icelandic", - "it-ch":"Italian (Switzerland)", - "it":"Italian", - "ja":"Japanese", - "ji":"Yiddish", - "ko":"Korean", - "lt":"Lithuanian", - "lv":"Latvian", - "mk":"Macedonian (FYROM)", - "ms":"Malaysian", - "mt":"Maltese", - "nl-be":"Dutch (Belgium)", - "nl":"Dutch", - "no":"Norwegian", - "pl":"Polish", - "pt-br":"Brazilian Portuguese", - "pt":"Portuguese", - "rm":"Rhaeto-Romanic", - "ro-mo":"Romanian (Republic of Moldova)", - "ro":"Romanian", - "ru-mo":"Russian (Republic of Moldova)", - "ru":"Russian", - "sb":"Sorbian", - "sk":"Slovak", - "sl":"Slovenian", - "sq":"Albanian", - "sr":"Serbian", - "sv-fi":"Swedish (Finland)", - "sv":"Swedish", - "sx":"Sutu", - "sz":"Sami (Lappish)", - "th":"Thai", - "tn":"Tswana", - "tr":"Turkish", - "ts":"Tsonga", - "uk":"Ukrainian", - "ur":"Urdu", - "ve":"Venda", - "vi":"Vietnamese", - "xh":"Xhosa", - "zh-cn":"Chinese (PRC)", - "zh-hk":"Chinese (Hong Kong SAR)", - "zh-sg":"Chinese (Singapore)", - "zh-tw":"Chinese (Taiwan)", - "zu":"Zulu", - "a room": "a room", - "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains", - "Accept": "Accept", - "%(targetName)s accepted an invitation.": "%(targetName)s accepted an invitation.", - "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.", - "Account": "Account", - "Access Token:": "Access Token:", - "Active call (%(roomName)s)": "Active call (%(roomName)s)", - "Add": "Add", - "Add a topic": "Add a topic", - "Add email address": "Add email address", - "Add phone number": "Add phone number", - "Admin": "Admin", - "Admin tools": "Admin tools", - "And %(count)s more...": "And %(count)s more...", - "VoIP": "VoIP", - "Missing Media Permissions, click here to request.": "Missing Media Permissions, click here to request.", - "No Microphones detected": "No Microphones detected", - "No Webcams detected": "No Webcams detected", - "No media permissions": "No media permissions", - "You may need to manually permit Riot to access your microphone/webcam": "You may need to manually permit Riot to access your microphone/webcam", - "Default Device": "Default Device", - "Microphone": "Microphone", - "Camera": "Camera", - "Advanced": "Advanced", - "Algorithm": "Algorithm", - "Hide removed messages": "Hide removed messages", - "Always show message timestamps": "Always show message timestamps", - "Authentication": "Authentication", - "Alias (optional)": "Alias (optional)", - "all room members": "all room members", - "all room members, from the point they are invited": "all room members, from the point they are invited", - "all room members, from the point they joined": "all room members, from the point they joined", - "and": "and", - "%(items)s and %(remaining)s others": "%(items)s and %(remaining)s others", - "%(items)s and one other": "%(items)s and one other", - "%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s", - "and %(overflowCount)s others...": "and %(overflowCount)s others...", - "and one other...": "and one other...", - "%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing", - "%(names)s and one other are typing": "%(names)s and one other are typing", - "%(names)s and %(count)s others are typing": "%(names)s and %(count)s others are typing", - "An email has been sent to": "An email has been sent to", - "A new password must be entered.": "A new password must be entered.", - "%(senderName)s answered the call.": "%(senderName)s answered the call.", - "anyone": "anyone", - "An error has occurred.": "An error has occurred.", - "Anyone": "Anyone", - "Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests", - "Anyone who knows the room's link, including guests": "Anyone who knows the room's link, including guests", - "Are you sure?": "Are you sure?", - "Are you sure you want to leave the room '%(roomName)s'?": "Are you sure you want to leave the room '%(roomName)s'?", - "Are you sure you want to reject the invitation?": "Are you sure you want to reject the invitation?", - "Are you sure you want to upload the following files?": "Are you sure you want to upload the following files?", - "Attachment": "Attachment", - "Autoplay GIFs and videos": "Autoplay GIFs and videos", - "%(senderName)s banned %(targetName)s.": "%(senderName)s banned %(targetName)s.", - "Ban": "Ban", - "Banned users": "Banned users", - "Bans user with given id": "Bans user with given id", - "Blacklisted": "Blacklisted", - "Bug Report": "Bug Report", - "Bulk Options": "Bulk Options", - "Call Timeout": "Call Timeout", - "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.", - "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.", - "Can't load user settings": "Can't load user settings", - "Change Password": "Change Password", - "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.", - "%(senderName)s changed their profile picture.": "%(senderName)s changed their profile picture.", - "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s changed the power level of %(powerLevelDiffText)s.", - "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s changed the room name to %(roomName)s.", - "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s removed the room name.", - "%(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", - "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", - "Clear Cache and Reload": "Clear Cache and Reload", - "Clear Cache": "Clear Cache", - "Click here to join the discussion!": "Click here to join the discussion!", - "Click here to fix": "Click here to fix", - "Click to mute audio": "Click to mute audio", - "Click to mute video": "Click to mute video", - "click to reveal": "click to reveal", - "Click to unmute video": "Click to unmute video", - "Click to unmute audio": "Click to unmute audio", - "Close": "Close", - "Command error": "Command error", - "Commands": "Commands", - "Conference call failed.": "Conference call failed.", - "Conference calling is in development and may not be reliable.": "Conference calling is in development and may not be reliable.", - "Conference calls are not supported in encrypted rooms": "Conference calls are not supported in encrypted rooms", - "Conference calls are not supported in this client": "Conference calls are not supported in this client", - "Confirm password": "Confirm password", - "Confirm your new password": "Confirm your new password", - "Continue": "Continue", - "Could not connect to the integration server": "Could not connect to the integration server", - "%(count)s new messages": { - "one": "%(count)s new message", - "other": "%(count)s new messages" - }, - "Create a new chat or reuse an existing one": "Create a new chat or reuse an existing one", - "Create an account": "Create an account", - "Create Room": "Create Room", - "Cryptography": "Cryptography", - "Current password": "Current password", - "Curve25519 identity key": "Curve25519 identity key", - "Custom": "Custom", - "Custom level": "Custom level", - "/ddg is not a command": "/ddg is not a command", - "Deactivate Account": "Deactivate Account", - "Deactivate my account": "Deactivate my account", - "Decline": "Decline", - "Decrypt %(text)s": "Decrypt %(text)s", - "Decryption error": "Decryption error", - "Delete": "Delete", - "demote": "demote", - "Deops user with given id": "Deops user with given id", - "Default": "Default", - "Define the power level of a user": "Define the power level of a user", - "Device already verified!": "Device already verified!", - "Device ID": "Device ID", - "Device ID:": "Device ID:", - "device id: ": "device id: ", - "Device key:": "Device key:", - "Devices": "Devices", - "Devices will not yet be able to decrypt history from before they joined the room": "Devices will not yet be able to decrypt history from before they joined the room", - "Direct Chat": "Direct Chat", - "Direct chats": "Direct chats", - "Disable Notifications": "Disable Notifications", - "disabled": "disabled", - "Disable inline URL previews by default": "Disable inline URL previews by default", - "Disable markdown formatting": "Disable markdown formatting", - "Disinvite": "Disinvite", - "Display name": "Display name", - "Displays action": "Displays action", - "Don't send typing notifications": "Don't send typing notifications", - "Download %(text)s": "Download %(text)s", - "Drop File Here": "Drop File Here", - "Drop here %(toAction)s": "Drop here %(toAction)s", - "Drop here to tag %(section)s": "Drop here to tag %(section)s", - "Ed25519 fingerprint": "Ed25519 fingerprint", - "Email": "Email", - "Email address": "Email address", - "Email address (optional)": "Email address (optional)", - "Email, name or matrix ID": "Email, name or matrix ID", - "Emoji": "Emoji", - "Enable automatic language detection for syntax highlighting": "Enable automatic language detection for syntax highlighting", - "Enable encryption": "Enable encryption", - "Enable Notifications": "Enable Notifications", - "enabled": "enabled", - "Encrypted by a verified device": "Encrypted by a verified device", - "Encrypted by an unverified device": "Encrypted by an unverified device", - "Encrypted messages will not be visible on clients that do not yet implement encryption": "Encrypted messages will not be visible on clients that do not yet implement encryption", - "Encrypted room": "Encrypted room", - "Encryption is enabled in this room": "Encryption is enabled in this room", - "Encryption is not enabled in this room": "Encryption is not enabled in this room", - "%(senderName)s ended the call.": "%(senderName)s ended the call.", - "End-to-end encryption information": "End-to-end encryption information", - "End-to-end encryption is in beta and may not be reliable": "End-to-end encryption is in beta and may not be reliable", - "Enter Code": "Enter Code", - "Enter passphrase": "Enter passphrase", - "Error": "Error", - "Error decrypting attachment": "Error decrypting attachment", - "Error: Problem communicating with the given homeserver.": "Error: Problem communicating with the given homeserver.", - "Event information": "Event information", - "Existing Call": "Existing Call", - "Export": "Export", - "Export E2E room keys": "Export E2E room keys", - "Failed to ban user": "Failed to ban user", - "Failed to change password. Is your password correct?": "Failed to change password. Is your password correct?", - "Failed to change power level": "Failed to change power level", - "Failed to delete device": "Failed to delete device", - "Failed to fetch avatar URL": "Failed to fetch avatar URL", - "Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s", - "Failed to join room": "Failed to join room", - "Failed to join the room": "Failed to join the room", - "Failed to kick": "Failed to kick", - "Failed to leave room": "Failed to leave room", - "Failed to load timeline position": "Failed to load timeline position", - "Failed to lookup current room": "Failed to lookup current room", - "Failed to mute user": "Failed to mute user", - "Failed to register as guest:": "Failed to register as guest:", - "Failed to reject invite": "Failed to reject invite", - "Failed to reject invitation": "Failed to reject invitation", - "Failed to save settings": "Failed to save settings", - "Failed to send email": "Failed to send email", - "Failed to send request.": "Failed to send request.", - "Failed to set avatar.": "Failed to set avatar.", - "Failed to set display name": "Failed to set display name", - "Failed to set up conference call": "Failed to set up conference call", - "Failed to toggle moderator status": "Failed to toggle moderator status", - "Failed to unban": "Failed to unban", - "Failed to upload file": "Failed to upload file", - "Failed to upload profile picture!": "Failed to upload profile picture!", - "Failed to verify email address: make sure you clicked the link in the email": "Failed to verify email address: make sure you clicked the link in the email", - "Failure to create room": "Failure to create room", - "Favourite": "Favourite", - "favourite": "favourite", - "Favourites": "Favourites", - "Fill screen": "Fill screen", - "Filter room members": "Filter room members", - "Forget room": "Forget room", - "Forgot your password?": "Forgot your password?", - "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.", - "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.", - "Found a bug?": "Found a bug?", - "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s", - "Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.", - "Guests can't set avatars. Please register.": "Guests can't set avatars. Please register.", - "Guest users can't create new rooms. Please register to create room and start a chat.": "Guest users can't create new rooms. Please register to create room and start a chat.", - "Guest users can't upload files. Please register to upload.": "Guest users can't upload files. Please register to upload.", - "Guests can't use labs features. Please register.": "Guests can't use labs features. Please register.", - "Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.", - "had": "had", - "Hangup": "Hangup", - "Hide read receipts": "Hide read receipts", - "Hide Text Formatting Toolbar": "Hide Text Formatting Toolbar", - "Historical": "Historical", - "Home": "Home", - "Homeserver is": "Homeserver is", - "Identity Server is": "Identity Server is", - "I have verified my email address": "I have verified my email address", - "Import": "Import", - "Import E2E room keys": "Import E2E room keys", - "Incoming call from %(name)s": "Incoming call from %(name)s", - "Incoming video call from %(name)s": "Incoming video call from %(name)s", - "Incoming voice call from %(name)s": "Incoming voice call from %(name)s", - "Incorrect username and/or password.": "Incorrect username and/or password.", - "Incorrect verification code": "Incorrect verification code", - "Interface Language": "Interface Language", - "Invalid alias format": "Invalid alias format", - "Invalid address format": "Invalid address format", - "Invalid Email Address": "Invalid Email Address", - "Invalid file%(extra)s": "Invalid file%(extra)s", - "%(senderName)s invited %(targetName)s.": "%(senderName)s invited %(targetName)s.", - "Invite new room members": "Invite new room members", - "Invited": "Invited", - "Invites": "Invites", - "Invites user with given id to current room": "Invites user with given id to current room", - "'%(alias)s' is not a valid format for an address": "'%(alias)s' is not a valid format for an address", - "'%(alias)s' is not a valid format for an alias": "'%(alias)s' is not a valid format for an alias", - "%(displayName)s is typing": "%(displayName)s is typing", - "Sign in with": "Sign in with", - "Join as voice or video.": "Join as voice or video.", - "Join Room": "Join Room", - "joined and left": "joined and left", - "joined": "joined", - "%(targetName)s joined the room.": "%(targetName)s joined the room.", - "Joins room with given alias": "Joins room with given alias", - "Jump to first unread message.": "Jump to first unread message.", - "%(senderName)s kicked %(targetName)s.": "%(senderName)s kicked %(targetName)s.", - "Kick": "Kick", - "Kicks user with given id": "Kicks user with given id", - "Labs": "Labs", - "Last seen": "Last seen", - "Leave room": "Leave room", - "left and rejoined": "left and rejoined", - "left": "left", - "%(targetName)s left the room.": "%(targetName)s left the room.", - "Level:": "Level:", - "List this room in %(domain)s's room directory?": "List this room in %(domain)s's room directory?", - "Local addresses for this room:": "Local addresses for this room:", - "Logged in as:": "Logged in as:", - "Login as guest": "Login as guest", - "Logout": "Logout", - "Low priority": "Low priority", - "%(senderName)s made future room history visible to": "%(senderName)s made future room history visible to", - "Manage Integrations": "Manage Integrations", - "Markdown is disabled": "Markdown is disabled", - "Markdown is enabled": "Markdown is enabled", - "matrix-react-sdk version:": "matrix-react-sdk version:", - "Members only": "Members only", - "Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present", - "Missing room_id in request": "Missing room_id in request", - "Missing user_id in request": "Missing user_id in request", - "Mobile phone number": "Mobile phone number", - "Mobile phone number (optional)": "Mobile phone number (optional)", - "Moderator": "Moderator", - "Must be viewing a room": "Must be viewing a room", - "Mute": "Mute", - "my Matrix ID": "my Matrix ID", - "Name": "Name", - "Never send encrypted messages to unverified devices from this device": "Never send encrypted messages to unverified devices from this device", - "Never send encrypted messages to unverified devices in this room": "Never send encrypted messages to unverified devices in this room", - "Never send encrypted messages to unverified devices in this room from this device": "Never send encrypted messages to unverified devices in this room from this device", - "New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)", - "New Composer & Autocomplete": "New Composer & Autocomplete", - "New password": "New password", - "New passwords don't match": "New passwords don't match", - "New passwords must match each other.": "New passwords must match each other.", - "none": "none", - "not set": "not set", - "not specified": "not specified", - "Notifications": "Notifications", - "(not supported by this browser)": "(not supported by this browser)", - "": "", - "NOT verified": "NOT verified", - "No devices with registered encryption keys": "No devices with registered encryption keys", - "No display name": "No display name", - "No more results": "No more results", - "No results": "No results", - "No users have specific privileges in this room": "No users have specific privileges in this room", - "OK": "OK", - "olm version:": "olm version:", - "Once encryption is enabled for a room it cannot be turned off again (for now)": "Once encryption is enabled for a room it cannot be turned off again (for now)", - "Once you've followed the link it contains, click below": "Once you've followed the link it contains, click below", - "Only people who have been invited": "Only people who have been invited", - "Operation failed": "Operation failed", - "Otherwise, click here to send a bug report.": "Otherwise, click here to send a bug report.", - "Password": "Password", - "Password:": "Password:", - "Passwords can't be empty": "Passwords can't be empty", - "People": "People", - "Permissions": "Permissions", - "Phone": "Phone", - "%(senderName)s placed a %(callType)s call.": "%(senderName)s placed a %(callType)s call.", - "Please check your email and click on the link it contains. Once this is done, click continue.": "Please check your email and click on the link it contains. Once this is done, click continue.", - "Please Register": "Please Register", - "Power level must be positive integer.": "Power level must be positive integer.", - "Press": "Press", - "Press to start a chat with someone": "Press to start a chat with someone", - "Privacy warning": "Privacy warning", - "Private Chat": "Private Chat", - "Privileged Users": "Privileged Users", - "Profile": "Profile", - "Public Chat": "Public Chat", - "Reason": "Reason", - "Reason: %(reasonText)s": "Reason: %(reasonText)s", - "Revoke Moderator": "Revoke Moderator", - "Refer a friend to Riot:": "Refer a friend to Riot:", - "Register": "Register", - "rejected": "rejected", - "%(targetName)s rejected the invitation.": "%(targetName)s rejected the invitation.", - "Reject invitation": "Reject invitation", - "Rejoin": "Rejoin", - "Remote addresses for this room:": "Remote addresses for this room:", - "Remove Contact Information?": "Remove Contact Information?", - "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removed their display name (%(oldDisplayName)s).", - "%(senderName)s removed their profile picture.": "%(senderName)s removed their profile picture.", - "Remove": "Remove", - "Remove %(threePid)s?": "Remove %(threePid)s?", - "%(senderName)s requested a VoIP conference.": "%(senderName)s requested a VoIP conference.", - "Report it": "Report it", - "Resetting 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.": "Resetting 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.", - "restore": "restore", - "Results from DuckDuckGo": "Results from DuckDuckGo", - "Return to app": "Return to app", - "Return to login screen": "Return to login screen", - "Riot does not have permission to send you notifications - please check your browser settings": "Riot does not have permission to send you notifications - please check your browser settings", - "Riot was not given permission to send notifications - please try again": "Riot was not given permission to send notifications - please try again", - "riot-web version:": "riot-web version:", - "Room %(roomId)s not visible": "Room %(roomId)s not visible", - "Room Colour": "Room Colour", - "Room contains unknown devices": "Room contains unknown devices", - "Room name (optional)": "Room name (optional)", - "%(roomName)s does not exist.": "%(roomName)s does not exist.", - "%(roomName)s is not accessible at this time.": "%(roomName)s is not accessible at this time.", - "Rooms": "Rooms", - "Save": "Save", - "Scroll to bottom of page": "Scroll to bottom of page", - "Scroll to unread messages": "Scroll to unread messages", - "Search": "Search", - "Search failed": "Search failed", - "Searches DuckDuckGo for results": "Searches DuckDuckGo for results", - "Searching known users": "Searching known users", - "Seen by %(userName)s at %(dateTime)s": "Seen by %(userName)s at %(dateTime)s", - "Send a message (unencrypted)": "Send a message (unencrypted)", - "Send an encrypted message": "Send an encrypted message", - "Send anyway": "Send anyway", - "Sender device information": "Sender device information", - "Send Invites": "Send Invites", - "Send Reset Email": "Send Reset Email", - "sent an image": "sent an image", - "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sent an image.", - "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.", - "sent a video": "sent a video", - "Server error": "Server error", - "Server may be unavailable or overloaded": "Server may be unavailable or overloaded", - "Server may be unavailable, overloaded, or search timed out :(": "Server may be unavailable, overloaded, or search timed out :(", - "Server may be unavailable, overloaded, or the file too big": "Server may be unavailable, overloaded, or the file too big", - "Server may be unavailable, overloaded, or you hit a bug.": "Server may be unavailable, overloaded, or you hit a bug.", - "Server unavailable, overloaded, or something else went wrong.": "Server unavailable, overloaded, or something else went wrong.", - "Session ID": "Session ID", - "%(senderName)s set a profile picture.": "%(senderName)s set a profile picture.", - "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s set their display name to %(displayName)s.", - "Set": "Set", - "Settings": "Settings", - "Show panel": "Show panel", - "Show Text Formatting Toolbar": "Show Text Formatting Toolbar", - "Show timestamps in 12 hour format (e.g. 2:30pm)": "Show timestamps in 12 hour format (e.g. 2:30pm)", - "Signed Out": "Signed Out", - "Sign in": "Sign in", - "Sign out": "Sign out", - "since the point in time of selecting this option": "since the point in time of selecting this option", - "since they joined": "since they joined", - "since they were invited": "since they were invited", - "Some of your messages have not been sent.": "Some of your messages have not been sent.", - "Someone": "Someone", - "Sorry, this homeserver is using a login which is not recognised ": "Sorry, this homeserver is using a login which is not recognised ", - "Start a chat": "Start a chat", - "Start authentication": "Start authentication", - "Start Chat": "Start Chat", - "Submit": "Submit", - "Success": "Success", - "tag as %(tagName)s": "tag as %(tagName)s", - "tag direct chat": "tag direct chat", - "Tagged as: ": "Tagged as: ", - "The default role for new room members is": "The default role for new room members is", - "The main address for this room is": "The main address for this room is", - "The phone number entered looks invalid": "The phone number entered looks invalid", - "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.", - "This action cannot be performed by a guest user. Please register to be able to do this.": "This action cannot be performed by a guest user. Please register to be able to do this.", - "This email address is already in use": "This email address is already in use", - "This email address was not found": "This email address was not found", - "%(actionVerb)s this person?": "%(actionVerb)s this person?", - "The email address linked to your account must be entered.": "The email address linked to your account must be entered.", - "The file '%(fileName)s' exceeds this home server's size limit for uploads": "The file '%(fileName)s' exceeds this home server's size limit for uploads", - "The file '%(fileName)s' failed to upload": "The file '%(fileName)s' failed to upload", - "The remote side failed to pick up": "The remote side failed to pick up", - "This Home Server does not support login using email address.": "This Home Server does not support login using email address.", - "This invitation was sent to an email address which is not associated with this account:": "This invitation was sent to an email address which is not associated with this account:", - "There was a problem logging in.": "There was a problem logging in.", - "This room has no local addresses": "This room has no local addresses", - "This room is not recognised.": "This room is not recognised.", - "These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways", - "The visibility of existing history will be unchanged": "The visibility of existing history will be unchanged", - "This doesn't appear to be a valid email address": "This doesn't appear to be a valid email address", - "This is a preview of this room. Room interactions have been disabled": "This is a preview of this room. Room interactions have been disabled", - "This phone number is already in use": "This phone number is already in use", - "This room": "This room", - "This room is not accessible by remote Matrix servers": "This room is not accessible by remote Matrix servers", - "This room's internal ID is": "This room's internal ID is", - "times": "times", - "To ban users": "To ban users", - "to browse the directory": "to browse the directory", - "To configure the room": "To configure the room", - "to demote": "to demote", - "to favourite": "to favourite", - "To invite users into the room": "To invite users into the room", - "To kick users": "To kick users", - "To link to a room it must have an address.": "To link to a room it must have an address.", - "to make a room or": "to make a room or", - "To remove other users' messages": "To remove other users' messages", - "To reset your password, enter the email address linked to your account": "To reset your password, enter the email address linked to your account", - "to restore": "to restore", - "To send events of type": "To send events of type", - "To send messages": "To send messages", - "to start a chat with someone": "to start a chat with someone", - "to tag as %(tagName)s": "to tag as %(tagName)s", - "to tag direct chat": "to tag direct chat", - "To use it, just wait for autocomplete results to load and tab through them.": "To use it, just wait for autocomplete results to load and tab through them.", - "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.", - "Tried to load a specific point in this room's timeline, but was unable to find it.": "Tried to load a specific point in this room's timeline, but was unable to find it.", - "Turn Markdown off": "Turn Markdown off", - "Turn Markdown on": "Turn Markdown on", - "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).", - "Unable to add email address": "Unable to add email address", - "Unable to create widget.": "Unable to create widget.", - "Unable to remove contact information": "Unable to remove contact information", - "Unable to restore previous session": "Unable to restore previous session", - "Unable to verify email address.": "Unable to verify email address.", - "Unban": "Unban", - "Unbans user with given id": "Unbans user with given id", - "%(senderName)s unbanned %(targetName)s.": "%(senderName)s unbanned %(targetName)s.", - "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Unable to ascertain that the address this invite was sent to matches one associated with your account.", - "Unable to capture screen": "Unable to capture screen", - "Unable to enable Notifications": "Unable to enable Notifications", - "Unable to load device list": "Unable to load device list", - "Undecryptable": "Undecryptable", - "Unencrypted room": "Unencrypted room", - "unencrypted": "unencrypted", - "Unencrypted message": "Unencrypted message", - "unknown caller": "unknown caller", - "Unknown command": "Unknown command", - "unknown device": "unknown device", - "unknown error code": "unknown error code", - "Unknown room %(roomId)s": "Unknown room %(roomId)s", - "Unknown (user, device) pair:": "Unknown (user, device) pair:", - "unknown": "unknown", - "Unmute": "Unmute", - "Unnamed Room": "Unnamed Room", - "Unrecognised command:": "Unrecognised command:", - "Unrecognised room alias:": "Unrecognised room alias:", - "Unverified": "Unverified", - "Uploading %(filename)s and %(count)s others": { - "zero": "Uploading %(filename)s", - "one": "Uploading %(filename)s and %(count)s other", - "other": "Uploading %(filename)s and %(count)s others" - }, - "uploaded a file": "uploaded a file", - "Upload avatar": "Upload avatar", - "Upload Failed": "Upload Failed", - "Upload Files": "Upload Files", - "Upload file": "Upload file", - "Upload new:": "Upload new:", - "Usage": "Usage", - "Use compact timeline layout": "Use compact timeline layout", - "Use with caution": "Use with caution", - "User ID": "User ID", - "User Interface": "User Interface", - "%(user)s is a": "%(user)s is a", - "User name": "User name", - "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)", - "Username invalid: %(errMessage)s": "Username invalid: %(errMessage)s", - "Users": "Users", - "User": "User", - "Verification Pending": "Verification Pending", - "Verification": "Verification", - "verified": "verified", - "Verified": "Verified", - "Verified key": "Verified key", - "Video call": "Video call", - "Voice call": "Voice call", - "VoIP conference finished.": "VoIP conference finished.", - "VoIP conference started.": "VoIP conference started.", - "VoIP is unsupported": "VoIP is unsupported", - "(could not connect media)": "(could not connect media)", - "(no answer)": "(no answer)", - "(unknown failure: %(reason)s)": "(unknown failure: %(reason)s)", - "(warning: cannot be disabled again!)": "(warning: cannot be disabled again!)", - "Warning!": "Warning!", - "WARNING: Device already verified, but keys do NOT MATCH!": "WARNING: Device already verified, but keys do NOT MATCH!", - "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!": "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!", - "Who can access this room?": "Who can access this room?", - "Who can read history?": "Who can read history?", - "Who would you like to add to this room?": "Who would you like to add to this room?", - "Who would you like to communicate with?": "Who would you like to communicate with?", - "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s withdrew %(targetName)s's invitation.", - "Would you like to accept or decline this invitation?": "Would you like to accept or decline this invitation?", - "You already have existing direct chats with this user:": "You already have existing direct chats with this user:", - "You are already in a call.": "You are already in a call.", - "You're not in any rooms yet! Press to make a room or to browse the directory": "You're not in any rooms yet! Press to make a room or to browse the directory", - "You are trying to access %(roomName)s.": "You are trying to access %(roomName)s.", - "You cannot place a call with yourself.": "You cannot place a call with yourself.", - "You cannot place VoIP calls in this browser.": "You cannot place VoIP calls in this browser.", - "You do not have permission to post to this room": "You do not have permission to post to this room", - "You have been banned from %(roomName)s by %(userName)s.": "You have been banned from %(roomName)s by %(userName)s.", - "You have been invited to join this room by %(inviterName)s": "You have been invited to join this room by %(inviterName)s", - "You have been kicked from %(roomName)s by %(userName)s.": "You have been kicked from %(roomName)s by %(userName)s.", - "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device", - "You have disabled URL previews by default.": "You have disabled URL previews by default.", - "You have enabled URL previews by default.": "You have enabled URL previews by default.", - "You have entered an invalid contact. Try using their Matrix ID or email address.": "You have entered an invalid contact. Try using their Matrix ID or email address.", - "You have no visible notifications": "You have no visible notifications", - "You may wish to login with a different account, or add this email to this account.": "You may wish to login with a different account, or add this email to this account.", - "you must be a": "you must be a", - "You must register to use this functionality": "You must register to use this functionality", - "You need to be able to invite users to do that.": "You need to be able to invite users to do that.", - "You need to be logged in.": "You need to be logged in.", - "You need to enter a user name.": "You need to enter a user name.", - "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.", - "Your password has been reset": "Your password has been reset", - "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them", - "You seem to be in a call, are you sure you want to quit?": "You seem to be in a call, are you sure you want to quit?", - "You seem to be uploading files, are you sure you want to quit?": "You seem to be uploading files, are you sure you want to quit?", - "You should not yet trust it to secure data": "You should not yet trust it to secure data", - "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.", - "Your home server does not support device management.": "Your home server does not support device management.", - "Sun": "Sun", - "Mon": "Mon", - "Tue": "Tue", - "Wed": "Wed", - "Thu": "Thu", - "Fri": "Fri", - "Sat": "Sat", - "Jan": "Jan", - "Feb": "Feb", - "Mar": "Mar", - "Apr": "Apr", - "May": "May", - "Jun": "Jun", - "Jul": "Jul", - "Aug": "Aug", - "Sep": "Sep", - "Oct": "Oct", - "Nov": "Nov", - "Dec": "Dec", - "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", - "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", - "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", - "Set a display name:": "Set a display name:", - "Set a Display Name": "Set a Display Name", - "Upload an avatar:": "Upload an avatar:", - "This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.", - "Missing password.": "Missing password.", - "Passwords don't match.": "Passwords don't match.", - "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Password too short (min %(MIN_PASSWORD_LENGTH)s).", - "This doesn't look like a valid email address.": "This doesn't look like a valid email address.", - "This doesn't look like a valid phone number.": "This doesn't look like a valid phone number.", - "User names may only contain letters, numbers, dots, hyphens and underscores.": "User names may only contain letters, numbers, dots, hyphens and underscores.", - "An unknown error occurred.": "An unknown error occurred.", - "I already have an account": "I already have an account", - "An error occurred: %(error_string)s": "An error occurred: %(error_string)s", - "Topic": "Topic", - "Make Moderator": "Make Moderator", - "Make this room private": "Make this room private", - "Share message history with new users": "Share message history with new users", - "Encrypt room": "Encrypt room", - "There are no visible files in this room": "There are no visible files in this room", - "Room": "Room", - "Connectivity to the server has been lost.": "Connectivity to the server has been lost.", - "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.", - "Auto-complete": "Auto-complete", - "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Resend all or cancel all now. You can also select individual messages to resend or cancel.", - "(~%(count)s results)": { - "one": "(~%(count)s result)", - "other": "(~%(count)s results)" - }, - "Cancel": "Cancel", - "or": "or", - "Active call": "Active call", - "Monday": "Monday", - "Tuesday": "Tuesday", - "Wednesday": "Wednesday", - "Thursday": "Thursday", - "Friday": "Friday", - "Saturday": "Saturday", - "Sunday": "Sunday", - "bold": "bold", - "italic": "italic", - "strike": "strike", - "underline": "underline", - "code":"code", - "quote":"quote", - "bullet":"bullet", - "numbullet":"numbullet", - "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)sjoined %(repeats)s times", - "%(oneUser)sjoined %(repeats)s times": "%(oneUser)sjoined %(repeats)s times", - "%(severalUsers)sjoined": "%(severalUsers)sjoined", - "%(oneUser)sjoined": "%(oneUser)sjoined", - "%(severalUsers)sleft %(repeats)s times": "%(severalUsers)sleft %(repeats)s times", - "%(oneUser)sleft %(repeats)s times": "%(oneUser)sleft %(repeats)s times", - "%(severalUsers)sleft": "%(severalUsers)sleft", - "%(oneUser)sleft": "%(oneUser)sleft", - "%(severalUsers)sjoined and left %(repeats)s times": "%(severalUsers)sjoined and left %(repeats)s times", - "%(oneUser)sjoined and left %(repeats)s times": "%(oneUser)sjoined and left %(repeats)s times", - "%(severalUsers)sjoined and left": "%(severalUsers)sjoined and left", - "%(oneUser)sjoined and left": "%(oneUser)sjoined and left", - "%(severalUsers)sleft and rejoined %(repeats)s times": "%(severalUsers)sleft and rejoined %(repeats)s times", - "%(oneUser)sleft and rejoined %(repeats)s times": "%(oneUser)sleft and rejoined %(repeats)s times", - "%(severalUsers)sleft and rejoined": "%(severalUsers)sleft and rejoined", - "%(oneUser)sleft and rejoined": "%(oneUser)sleft and rejoined", - "%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)srejected their invitations %(repeats)s times", - "%(oneUser)srejected their invitation %(repeats)s times": "%(oneUser)srejected their invitation %(repeats)s times", - "%(severalUsers)srejected their invitations": "%(severalUsers)srejected their invitations", - "%(oneUser)srejected their invitation": "%(oneUser)srejected their invitation", - "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)shad their invitations withdrawn %(repeats)s times", - "%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)shad their invitation withdrawn %(repeats)s times", - "%(severalUsers)shad their invitations withdrawn": "%(severalUsers)shad their invitations withdrawn", - "%(oneUser)shad their invitation withdrawn": "%(oneUser)shad their invitation withdrawn", - "were invited %(repeats)s times": "were invited %(repeats)s times", - "was invited %(repeats)s times": "was invited %(repeats)s times", - "were invited": "were invited", - "was invited": "was invited", - "were banned %(repeats)s times": "were banned %(repeats)s times", - "was banned %(repeats)s times": "was banned %(repeats)s times", - "were banned": "were banned", - "was banned": "was banned", - "were unbanned %(repeats)s times": "were unbanned %(repeats)s times", - "was unbanned %(repeats)s times": "was unbanned %(repeats)s times", - "were unbanned": "were unbanned", - "was unbanned": "was unbanned", - "were kicked %(repeats)s times": "were kicked %(repeats)s times", - "was kicked %(repeats)s times": "was kicked %(repeats)s times", - "were kicked": "were kicked", - "was kicked": "was kicked", - "%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)schanged their name %(repeats)s times", - "%(oneUser)schanged their name %(repeats)s times": "%(oneUser)schanged their name %(repeats)s times", - "%(severalUsers)schanged their name": "%(severalUsers)schanged their name", - "%(oneUser)schanged their name": "%(oneUser)schanged their name", - "%(severalUsers)schanged their avatar %(repeats)s times": "%(severalUsers)schanged their avatar %(repeats)s times", - "%(oneUser)schanged their avatar %(repeats)s times": "%(oneUser)schanged their avatar %(repeats)s times", - "%(severalUsers)schanged their avatar": "%(severalUsers)schanged their avatar", - "%(oneUser)schanged their avatar": "%(oneUser)schanged their avatar", - "Please select the destination room for this message": "Please select the destination room for this message", - "Create new room": "Create new room", - "Welcome page": "Welcome page", - "Room directory": "Room directory", - "Start chat": "Start chat", - "New Password": "New Password", - "Start automatically after system login": "Start automatically after system login", - "Desktop specific": "Desktop specific", - "Analytics": "Analytics", - "Opt out of analytics": "Opt out of analytics", - "Options": "Options", - "Riot collects anonymous analytics to allow us to improve the application.": "Riot collects anonymous analytics to allow us to improve the application.", - "Passphrases must match": "Passphrases must match", - "Passphrase must not be empty": "Passphrase must not be empty", - "Export room keys": "Export room keys", - "Confirm passphrase": "Confirm passphrase", - "Import room keys": "Import room keys", - "File to import": "File to import", - "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.", - "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.", - "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.", - "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.", - "You must join the room to see its files": "You must join the room to see its files", - "Reject all %(invitedRooms)s invites": "Reject all %(invitedRooms)s invites", - "Start new chat": "Start new chat", - "Guest users can't invite users. Please register.": "Guest users can't invite users. Please register.", - "Failed to invite": "Failed to invite", - "Failed to invite user": "Failed to invite user", - "Failed to invite the following users to the %(roomName)s room:": "Failed to invite the following users to the %(roomName)s room:", - "Confirm Removal": "Confirm Removal", - "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.", - "Unknown error": "Unknown error", - "Incorrect password": "Incorrect password", - "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "This will make your account permanently unusable. You will not be able to re-register the same user ID.", - "This action is irreversible.": "This action is irreversible.", - "To continue, please enter your password.": "To continue, please enter your password.", - "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:", - "Device name": "Device name", - "Device Name": "Device Name", - "Device key": "Device key", - "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", - "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", - "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.", - "Continue anyway": "Continue anyway", - "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?", - "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.", - "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.", - "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contains devices that you haven't seen before.", - "Unknown devices": "Unknown devices", - "Unknown Address": "Unknown Address", - "Unblacklist": "Unblacklist", - "Blacklist": "Blacklist", - "Unverify": "Unverify", - "Verify...": "Verify...", - "ex. @bob:example.com": "ex. @bob:example.com", - "Add User": "Add User", - "This Home Server would like to make sure you are not a robot": "This Home Server would like to make sure you are not a robot", - "Sign in with CAS": "Sign in with CAS", - "Custom Server Options": "Custom Server Options", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.", - "This allows you to use this app with an existing Matrix account on a different home server.": "This allows you to use this app with an existing Matrix account on a different home server.", - "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "You can also set a custom identity server but this will typically prevent interaction with users based on email address.", - "Dismiss": "Dismiss", - "Please check your email to continue registration.": "Please check your email to continue registration.", - "Token incorrect": "Token incorrect", - "A text message has been sent to": "A text message has been sent to", - "Please enter the code it contains:": "Please enter the code it contains:", - "powered by Matrix": "powered by Matrix", - "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "If you don't specify an email address, you won't be able to reset your password. Are you sure?", - "You are registering with %(SelectedTeamName)s": "You are registering with %(SelectedTeamName)s", - "Default server": "Default server", - "Custom server": "Custom server", - "Home server URL": "Home server URL", - "Identity server URL": "Identity server URL", - "What does this mean?": "What does this mean?", - "Error decrypting audio": "Error decrypting audio", - "Error decrypting image": "Error decrypting image", - "Image '%(Body)s' cannot be displayed.": "Image '%(Body)s' cannot be displayed.", - "This image cannot be displayed.": "This image cannot be displayed.", - "Error decrypting video": "Error decrypting video", - "Add an Integration": "Add an Integration", - "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?", - "Removed or unknown message type": "Removed or unknown message type", - "Disable URL previews by default for participants in this room": "Disable URL previews by default for participants in this room", - "Disable URL previews for this room (affects only you)": "Disable URL previews for this room (affects only you)", - "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.", - "URL Previews": "URL Previews", - "Enable URL previews for this room (affects only you)": "Enable URL previews for this room (affects only you)", - "Drop file here to upload": "Drop file here to upload", - " (unsupported)": " (unsupported)", - "Ongoing conference call%(supportedText)s.": "Ongoing conference call%(supportedText)s.", - "for %(amount)ss": "for %(amount)ss", - "for %(amount)sm": "for %(amount)sm", - "for %(amount)sh": "for %(amount)sh", - "for %(amount)sd": "for %(amount)sd", - "Online": "Online", - "Idle": "Idle", - "Offline": "Offline", - "Updates": "Updates", - "Check for update": "Check for update", - "Start chatting": "Start chatting", - "Start Chatting": "Start Chatting", - "Click on the button below to start chatting!": "Click on the button below to start chatting!", - "$senderDisplayName changed the room avatar to ": "$senderDisplayName changed the room avatar to ", - "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", - "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s", - "Username available": "Username available", - "Username not available": "Username not available", - "Something went wrong!": "Something went wrong!", - "This will be your account name on the homeserver, or you can pick a different server.": "This will be your account name on the homeserver, or you can pick a different server.", - "If you already have a Matrix account you can log in instead.": "If you already have a Matrix account you can log in instead.", - "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions", - "Not a valid Riot keyfile": "Not a valid Riot keyfile", - "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", - "Disable Peer-to-Peer for 1:1 calls": "Disable Peer-to-Peer for 1:1 calls", - "Do you want to set an email address?": "Do you want to set an email address?", - "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications.", - "To return to your account in future you need to set a password": "To return to your account in future you need to set a password", - "Skip":"Skip", - "Start verification": "Start verification", - "Share without verifying": "Share without verifying", - "Ignore request": "Ignore request", - "You added a new device '%(displayName)s', which is requesting encryption keys.": "You added a new device '%(displayName)s', which is requesting encryption keys.", - "Your unverified device '%(displayName)s' is requesting encryption keys.": "Your unverified device '%(displayName)s' is requesting encryption keys.", - "Encryption key request": "Encryption key request", - "Autocomplete Delay (ms):": "Autocomplete Delay (ms):" + "af": "Afrikaans", + "ar-ae": "Arabic (U.A.E.)", + "ar-bh": "Arabic (Bahrain)", + "ar-dz": "Arabic (Algeria)", + "ar-eg": "Arabic (Egypt)", + "ar-iq": "Arabic (Iraq)", + "ar-jo": "Arabic (Jordan)", + "ar-kw": "Arabic (Kuwait)", + "ar-lb": "Arabic (Lebanon)", + "ar-ly": "Arabic (Libya)", + "ar-ma": "Arabic (Morocco)", + "ar-om": "Arabic (Oman)", + "ar-qa": "Arabic (Qatar)", + "ar-sa": "Arabic (Saudi Arabia)", + "ar-sy": "Arabic (Syria)", + "ar-tn": "Arabic (Tunisia)", + "ar-ye": "Arabic (Yemen)", + "be": "Belarusian", + "bg": "Bulgarian", + "ca": "Catalan", + "cs": "Czech", + "da": "Danish", + "de-at": "German (Austria)", + "de-ch": "German (Switzerland)", + "de": "German", + "de-li": "German (Liechtenstein)", + "de-lu": "German (Luxembourg)", + "el": "Greek", + "en-au": "English (Australia)", + "en-bz": "English (Belize)", + "en-ca": "English (Canada)", + "en": "English", + "en-gb": "English (United Kingdom)", + "en-ie": "English (Ireland)", + "en-jm": "English (Jamaica)", + "en-nz": "English (New Zealand)", + "en-tt": "English (Trinidad)", + "en-us": "English (United States)", + "en-za": "English (South Africa)", + "es-ar": "Spanish (Argentina)", + "es-bo": "Spanish (Bolivia)", + "es-cl": "Spanish (Chile)", + "es-co": "Spanish (Colombia)", + "es-cr": "Spanish (Costa Rica)", + "es-do": "Spanish (Dominican Republic)", + "es-ec": "Spanish (Ecuador)", + "es-gt": "Spanish (Guatemala)", + "es-hn": "Spanish (Honduras)", + "es-mx": "Spanish (Mexico)", + "es-ni": "Spanish (Nicaragua)", + "es-pa": "Spanish (Panama)", + "es-pe": "Spanish (Peru)", + "es-pr": "Spanish (Puerto Rico)", + "es-py": "Spanish (Paraguay)", + "es": "Spanish (Spain)", + "es-sv": "Spanish (El Salvador)", + "es-uy": "Spanish (Uruguay)", + "es-ve": "Spanish (Venezuela)", + "et": "Estonian", + "eu": "Basque (Basque)", + "fa": "Farsi", + "fi": "Finnish", + "fo": "Faeroese", + "fr-be": "French (Belgium)", + "fr-ca": "French (Canada)", + "fr-ch": "French (Switzerland)", + "fr": "French", + "fr-lu": "French (Luxembourg)", + "ga": "Irish", + "gd": "Gaelic (Scotland)", + "he": "Hebrew", + "hi": "Hindi", + "hr": "Croatian", + "hu": "Hungarian", + "id": "Indonesian", + "is": "Icelandic", + "it-ch": "Italian (Switzerland)", + "it": "Italian", + "ja": "Japanese", + "ji": "Yiddish", + "ko": "Korean", + "lt": "Lithuanian", + "lv": "Latvian", + "mk": "Macedonian (FYROM)", + "ms": "Malaysian", + "mt": "Maltese", + "nl-be": "Dutch (Belgium)", + "nl": "Dutch", + "no": "Norwegian", + "pl": "Polish", + "pt-br": "Brazilian Portuguese", + "pt": "Portuguese", + "rm": "Rhaeto-Romanic", + "ro-mo": "Romanian (Republic of Moldova)", + "ro": "Romanian", + "ru-mo": "Russian (Republic of Moldova)", + "ru": "Russian", + "sb": "Sorbian", + "sk": "Slovak", + "sl": "Slovenian", + "sq": "Albanian", + "sr": "Serbian", + "sv-fi": "Swedish (Finland)", + "sv": "Swedish", + "sx": "Sutu", + "sz": "Sami (Lappish)", + "th": "Thai", + "tn": "Tswana", + "tr": "Turkish", + "ts": "Tsonga", + "uk": "Ukrainian", + "ur": "Urdu", + "ve": "Venda", + "vi": "Vietnamese", + "xh": "Xhosa", + "zh-cn": "Chinese (PRC)", + "zh-hk": "Chinese (Hong Kong SAR)", + "zh-sg": "Chinese (Singapore)", + "zh-tw": "Chinese (Taiwan)", + "zu": "Zulu", + "a room": "a room", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains", + "Accept": "Accept", + "%(targetName)s accepted an invitation.": "%(targetName)s accepted an invitation.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.", + "Account": "Account", + "Access Token:": "Access Token:", + "Active call (%(roomName)s)": "Active call (%(roomName)s)", + "Add": "Add", + "Add a topic": "Add a topic", + "Add email address": "Add email address", + "Add phone number": "Add phone number", + "Admin": "Admin", + "Admin tools": "Admin tools", + "And %(count)s more...": "And %(count)s more...", + "VoIP": "VoIP", + "Missing Media Permissions, click here to request.": "Missing Media Permissions, click here to request.", + "No Microphones detected": "No Microphones detected", + "No Webcams detected": "No Webcams detected", + "No media permissions": "No media permissions", + "You may need to manually permit Riot to access your microphone/webcam": "You may need to manually permit Riot to access your microphone/webcam", + "Default Device": "Default Device", + "Microphone": "Microphone", + "Camera": "Camera", + "Advanced": "Advanced", + "Algorithm": "Algorithm", + "Hide removed messages": "Hide removed messages", + "Always show message timestamps": "Always show message timestamps", + "Authentication": "Authentication", + "Alias (optional)": "Alias (optional)", + "all room members": "all room members", + "all room members, from the point they are invited": "all room members, from the point they are invited", + "all room members, from the point they joined": "all room members, from the point they joined", + "and": "and", + "%(items)s and %(remaining)s others": "%(items)s and %(remaining)s others", + "%(items)s and one other": "%(items)s and one other", + "%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s", + "and %(overflowCount)s others...": "and %(overflowCount)s others...", + "and one other...": "and one other...", + "%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing", + "%(names)s and one other are typing": "%(names)s and one other are typing", + "%(names)s and %(count)s others are typing": "%(names)s and %(count)s others are typing", + "An email has been sent to": "An email has been sent to", + "A new password must be entered.": "A new password must be entered.", + "%(senderName)s answered the call.": "%(senderName)s answered the call.", + "anyone": "anyone", + "An error has occurred.": "An error has occurred.", + "Anyone": "Anyone", + "Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests", + "Anyone who knows the room's link, including guests": "Anyone who knows the room's link, including guests", + "Are you sure?": "Are you sure?", + "Are you sure you want to leave the room '%(roomName)s'?": "Are you sure you want to leave the room '%(roomName)s'?", + "Are you sure you want to reject the invitation?": "Are you sure you want to reject the invitation?", + "Are you sure you want to upload the following files?": "Are you sure you want to upload the following files?", + "Attachment": "Attachment", + "Autoplay GIFs and videos": "Autoplay GIFs and videos", + "%(senderName)s banned %(targetName)s.": "%(senderName)s banned %(targetName)s.", + "Ban": "Ban", + "Banned users": "Banned users", + "Bans user with given id": "Bans user with given id", + "Blacklisted": "Blacklisted", + "Bug Report": "Bug Report", + "Bulk Options": "Bulk Options", + "Call Timeout": "Call Timeout", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.", + "Can't load user settings": "Can't load user settings", + "Change Password": "Change Password", + "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.", + "%(senderName)s changed their profile picture.": "%(senderName)s changed their profile picture.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s changed the power level of %(powerLevelDiffText)s.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s changed the room name to %(roomName)s.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s removed the room name.", + "%(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", + "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", + "Clear Cache and Reload": "Clear Cache and Reload", + "Clear Cache": "Clear Cache", + "Click here to join the discussion!": "Click here to join the discussion!", + "Click here to fix": "Click here to fix", + "Click to mute audio": "Click to mute audio", + "Click to mute video": "Click to mute video", + "click to reveal": "click to reveal", + "Click to unmute video": "Click to unmute video", + "Click to unmute audio": "Click to unmute audio", + "Close": "Close", + "Command error": "Command error", + "Commands": "Commands", + "Conference call failed.": "Conference call failed.", + "Conference calling is in development and may not be reliable.": "Conference calling is in development and may not be reliable.", + "Conference calls are not supported in encrypted rooms": "Conference calls are not supported in encrypted rooms", + "Conference calls are not supported in this client": "Conference calls are not supported in this client", + "Confirm password": "Confirm password", + "Confirm your new password": "Confirm your new password", + "Continue": "Continue", + "Could not connect to the integration server": "Could not connect to the integration server", + "%(count)s new messages": { + "one": "%(count)s new message", + "other": "%(count)s new messages" + }, + "Create a new chat or reuse an existing one": "Create a new chat or reuse an existing one", + "Create an account": "Create an account", + "Create Room": "Create Room", + "Cryptography": "Cryptography", + "Current password": "Current password", + "Curve25519 identity key": "Curve25519 identity key", + "Custom": "Custom", + "Custom level": "Custom level", + "/ddg is not a command": "/ddg is not a command", + "Deactivate Account": "Deactivate Account", + "Deactivate my account": "Deactivate my account", + "Decline": "Decline", + "Decrypt %(text)s": "Decrypt %(text)s", + "Decryption error": "Decryption error", + "Delete": "Delete", + "demote": "demote", + "Deops user with given id": "Deops user with given id", + "Default": "Default", + "Define the power level of a user": "Define the power level of a user", + "Device already verified!": "Device already verified!", + "Device ID": "Device ID", + "Device ID:": "Device ID:", + "device id: ": "device id: ", + "Device key:": "Device key:", + "Devices": "Devices", + "Devices will not yet be able to decrypt history from before they joined the room": "Devices will not yet be able to decrypt history from before they joined the room", + "Direct Chat": "Direct Chat", + "Direct chats": "Direct chats", + "Disable Notifications": "Disable Notifications", + "disabled": "disabled", + "Disable inline URL previews by default": "Disable inline URL previews by default", + "Disable markdown formatting": "Disable markdown formatting", + "Disinvite": "Disinvite", + "Display name": "Display name", + "Displays action": "Displays action", + "Don't send typing notifications": "Don't send typing notifications", + "Download %(text)s": "Download %(text)s", + "Drop File Here": "Drop File Here", + "Drop here %(toAction)s": "Drop here %(toAction)s", + "Drop here to tag %(section)s": "Drop here to tag %(section)s", + "Ed25519 fingerprint": "Ed25519 fingerprint", + "Email": "Email", + "Email address": "Email address", + "Email address (optional)": "Email address (optional)", + "Email, name or matrix ID": "Email, name or matrix ID", + "Emoji": "Emoji", + "Enable automatic language detection for syntax highlighting": "Enable automatic language detection for syntax highlighting", + "Enable encryption": "Enable encryption", + "Enable Notifications": "Enable Notifications", + "enabled": "enabled", + "Encrypted by a verified device": "Encrypted by a verified device", + "Encrypted by an unverified device": "Encrypted by an unverified device", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Encrypted messages will not be visible on clients that do not yet implement encryption", + "Encrypted room": "Encrypted room", + "Encryption is enabled in this room": "Encryption is enabled in this room", + "Encryption is not enabled in this room": "Encryption is not enabled in this room", + "%(senderName)s ended the call.": "%(senderName)s ended the call.", + "End-to-end encryption information": "End-to-end encryption information", + "End-to-end encryption is in beta and may not be reliable": "End-to-end encryption is in beta and may not be reliable", + "Enter Code": "Enter Code", + "Enter passphrase": "Enter passphrase", + "Error": "Error", + "Error decrypting attachment": "Error decrypting attachment", + "Error: Problem communicating with the given homeserver.": "Error: Problem communicating with the given homeserver.", + "Event information": "Event information", + "Existing Call": "Existing Call", + "Export": "Export", + "Export E2E room keys": "Export E2E room keys", + "Failed to ban user": "Failed to ban user", + "Failed to change password. Is your password correct?": "Failed to change password. Is your password correct?", + "Failed to change power level": "Failed to change power level", + "Failed to delete device": "Failed to delete device", + "Failed to fetch avatar URL": "Failed to fetch avatar URL", + "Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s", + "Failed to join room": "Failed to join room", + "Failed to join the room": "Failed to join the room", + "Failed to kick": "Failed to kick", + "Failed to leave room": "Failed to leave room", + "Failed to load timeline position": "Failed to load timeline position", + "Failed to lookup current room": "Failed to lookup current room", + "Failed to mute user": "Failed to mute user", + "Failed to register as guest:": "Failed to register as guest:", + "Failed to reject invite": "Failed to reject invite", + "Failed to reject invitation": "Failed to reject invitation", + "Failed to save settings": "Failed to save settings", + "Failed to send email": "Failed to send email", + "Failed to send request.": "Failed to send request.", + "Failed to set avatar.": "Failed to set avatar.", + "Failed to set display name": "Failed to set display name", + "Failed to set up conference call": "Failed to set up conference call", + "Failed to toggle moderator status": "Failed to toggle moderator status", + "Failed to unban": "Failed to unban", + "Failed to upload file": "Failed to upload file", + "Failed to upload profile picture!": "Failed to upload profile picture!", + "Failed to verify email address: make sure you clicked the link in the email": "Failed to verify email address: make sure you clicked the link in the email", + "Failure to create room": "Failure to create room", + "Favourite": "Favourite", + "favourite": "favourite", + "Favourites": "Favourites", + "Fill screen": "Fill screen", + "Filter room members": "Filter room members", + "Forget room": "Forget room", + "Forgot your password?": "Forgot your password?", + "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.", + "Found a bug?": "Found a bug?", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s", + "Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.", + "Guests can't set avatars. Please register.": "Guests can't set avatars. Please register.", + "Guest users can't create new rooms. Please register to create room and start a chat.": "Guest users can't create new rooms. Please register to create room and start a chat.", + "Guest users can't upload files. Please register to upload.": "Guest users can't upload files. Please register to upload.", + "Guests can't use labs features. Please register.": "Guests can't use labs features. Please register.", + "Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.", + "had": "had", + "Hangup": "Hangup", + "Hide read receipts": "Hide read receipts", + "Hide Text Formatting Toolbar": "Hide Text Formatting Toolbar", + "Historical": "Historical", + "Home": "Home", + "Homeserver is": "Homeserver is", + "Identity Server is": "Identity Server is", + "I have verified my email address": "I have verified my email address", + "Import": "Import", + "Import E2E room keys": "Import E2E room keys", + "Incoming call from %(name)s": "Incoming call from %(name)s", + "Incoming video call from %(name)s": "Incoming video call from %(name)s", + "Incoming voice call from %(name)s": "Incoming voice call from %(name)s", + "Incorrect username and/or password.": "Incorrect username and/or password.", + "Incorrect verification code": "Incorrect verification code", + "Interface Language": "Interface Language", + "Invalid alias format": "Invalid alias format", + "Invalid address format": "Invalid address format", + "Invalid Email Address": "Invalid Email Address", + "Invalid file%(extra)s": "Invalid file%(extra)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s invited %(targetName)s.", + "Invite new room members": "Invite new room members", + "Invited": "Invited", + "Invites": "Invites", + "Invites user with given id to current room": "Invites user with given id to current room", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' is not a valid format for an address", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' is not a valid format for an alias", + "%(displayName)s is typing": "%(displayName)s is typing", + "Sign in with": "Sign in with", + "Join as voice or video.": "Join as voice or video.", + "Join Room": "Join Room", + "joined and left": "joined and left", + "joined": "joined", + "%(targetName)s joined the room.": "%(targetName)s joined the room.", + "Joins room with given alias": "Joins room with given alias", + "Jump to first unread message.": "Jump to first unread message.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s kicked %(targetName)s.", + "Kick": "Kick", + "Kicks user with given id": "Kicks user with given id", + "Labs": "Labs", + "Last seen": "Last seen", + "Leave room": "Leave room", + "left and rejoined": "left and rejoined", + "left": "left", + "%(targetName)s left the room.": "%(targetName)s left the room.", + "Level:": "Level:", + "List this room in %(domain)s's room directory?": "List this room in %(domain)s's room directory?", + "Local addresses for this room:": "Local addresses for this room:", + "Logged in as:": "Logged in as:", + "Login as guest": "Login as guest", + "Logout": "Logout", + "Low priority": "Low priority", + "%(senderName)s made future room history visible to": "%(senderName)s made future room history visible to", + "Manage Integrations": "Manage Integrations", + "Markdown is disabled": "Markdown is disabled", + "Markdown is enabled": "Markdown is enabled", + "matrix-react-sdk version:": "matrix-react-sdk version:", + "Members only": "Members only", + "Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present", + "Missing room_id in request": "Missing room_id in request", + "Missing user_id in request": "Missing user_id in request", + "Mobile phone number": "Mobile phone number", + "Mobile phone number (optional)": "Mobile phone number (optional)", + "Moderator": "Moderator", + "Must be viewing a room": "Must be viewing a room", + "Mute": "Mute", + "my Matrix ID": "my Matrix ID", + "Name": "Name", + "Never send encrypted messages to unverified devices from this device": "Never send encrypted messages to unverified devices from this device", + "Never send encrypted messages to unverified devices in this room": "Never send encrypted messages to unverified devices in this room", + "Never send encrypted messages to unverified devices in this room from this device": "Never send encrypted messages to unverified devices in this room from this device", + "New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)", + "New Composer & Autocomplete": "New Composer & Autocomplete", + "Matrix Apps": "Matrix Apps", + "New password": "New password", + "New passwords don't match": "New passwords don't match", + "New passwords must match each other.": "New passwords must match each other.", + "none": "none", + "not set": "not set", + "not specified": "not specified", + "Notifications": "Notifications", + "(not supported by this browser)": "(not supported by this browser)", + "": "", + "NOT verified": "NOT verified", + "No devices with registered encryption keys": "No devices with registered encryption keys", + "No display name": "No display name", + "No more results": "No more results", + "No results": "No results", + "No users have specific privileges in this room": "No users have specific privileges in this room", + "OK": "OK", + "olm version:": "olm version:", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Once encryption is enabled for a room it cannot be turned off again (for now)", + "Once you've followed the link it contains, click below": "Once you've followed the link it contains, click below", + "Only people who have been invited": "Only people who have been invited", + "Operation failed": "Operation failed", + "Otherwise, click here to send a bug report.": "Otherwise, click here to send a bug report.", + "Password": "Password", + "Password:": "Password:", + "Passwords can't be empty": "Passwords can't be empty", + "People": "People", + "Permissions": "Permissions", + "Phone": "Phone", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s placed a %(callType)s call.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Please check your email and click on the link it contains. Once this is done, click continue.", + "Please Register": "Please Register", + "Power level must be positive integer.": "Power level must be positive integer.", + "Press": "Press", + "Press to start a chat with someone": "Press to start a chat with someone", + "Privacy warning": "Privacy warning", + "Private Chat": "Private Chat", + "Privileged Users": "Privileged Users", + "Profile": "Profile", + "Public Chat": "Public Chat", + "Reason": "Reason", + "Reason: %(reasonText)s": "Reason: %(reasonText)s", + "Revoke Moderator": "Revoke Moderator", + "Refer a friend to Riot:": "Refer a friend to Riot:", + "Register": "Register", + "rejected": "rejected", + "%(targetName)s rejected the invitation.": "%(targetName)s rejected the invitation.", + "Reject invitation": "Reject invitation", + "Rejoin": "Rejoin", + "Remote addresses for this room:": "Remote addresses for this room:", + "Remove Contact Information?": "Remove Contact Information?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removed their display name (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s removed their profile picture.", + "Remove": "Remove", + "Remove %(threePid)s?": "Remove %(threePid)s?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s requested a VoIP conference.", + "Report it": "Report it", + "Resetting 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.": "Resetting 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.", + "restore": "restore", + "Results from DuckDuckGo": "Results from DuckDuckGo", + "Return to app": "Return to app", + "Return to login screen": "Return to login screen", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot does not have permission to send you notifications - please check your browser settings", + "Riot was not given permission to send notifications - please try again": "Riot was not given permission to send notifications - please try again", + "riot-web version:": "riot-web version:", + "Room %(roomId)s not visible": "Room %(roomId)s not visible", + "Room Colour": "Room Colour", + "Room contains unknown devices": "Room contains unknown devices", + "Room name (optional)": "Room name (optional)", + "%(roomName)s does not exist.": "%(roomName)s does not exist.", + "%(roomName)s is not accessible at this time.": "%(roomName)s is not accessible at this time.", + "Rooms": "Rooms", + "Save": "Save", + "Scroll to bottom of page": "Scroll to bottom of page", + "Scroll to unread messages": "Scroll to unread messages", + "Search": "Search", + "Search failed": "Search failed", + "Searches DuckDuckGo for results": "Searches DuckDuckGo for results", + "Searching known users": "Searching known users", + "Seen by %(userName)s at %(dateTime)s": "Seen by %(userName)s at %(dateTime)s", + "Send a message (unencrypted)": "Send a message (unencrypted)", + "Send an encrypted message": "Send an encrypted message", + "Send anyway": "Send anyway", + "Sender device information": "Sender device information", + "Send Invites": "Send Invites", + "Send Reset Email": "Send Reset Email", + "sent an image": "sent an image", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sent an image.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.", + "sent a video": "sent a video", + "Server error": "Server error", + "Server may be unavailable or overloaded": "Server may be unavailable or overloaded", + "Server may be unavailable, overloaded, or search timed out :(": "Server may be unavailable, overloaded, or search timed out :(", + "Server may be unavailable, overloaded, or the file too big": "Server may be unavailable, overloaded, or the file too big", + "Server may be unavailable, overloaded, or you hit a bug.": "Server may be unavailable, overloaded, or you hit a bug.", + "Server unavailable, overloaded, or something else went wrong.": "Server unavailable, overloaded, or something else went wrong.", + "Session ID": "Session ID", + "%(senderName)s set a profile picture.": "%(senderName)s set a profile picture.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s set their display name to %(displayName)s.", + "Set": "Set", + "Settings": "Settings", + "Show panel": "Show panel", + "Show Text Formatting Toolbar": "Show Text Formatting Toolbar", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Show timestamps in 12 hour format (e.g. 2:30pm)", + "Signed Out": "Signed Out", + "Sign in": "Sign in", + "Sign out": "Sign out", + "since the point in time of selecting this option": "since the point in time of selecting this option", + "since they joined": "since they joined", + "since they were invited": "since they were invited", + "Some of your messages have not been sent.": "Some of your messages have not been sent.", + "Someone": "Someone", + "Sorry, this homeserver is using a login which is not recognised ": "Sorry, this homeserver is using a login which is not recognised ", + "Start a chat": "Start a chat", + "Start authentication": "Start authentication", + "Start Chat": "Start Chat", + "Submit": "Submit", + "Success": "Success", + "tag as %(tagName)s": "tag as %(tagName)s", + "tag direct chat": "tag direct chat", + "Tagged as: ": "Tagged as: ", + "The default role for new room members is": "The default role for new room members is", + "The main address for this room is": "The main address for this room is", + "The phone number entered looks invalid": "The phone number entered looks invalid", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.", + "This action cannot be performed by a guest user. Please register to be able to do this.": "This action cannot be performed by a guest user. Please register to be able to do this.", + "This email address is already in use": "This email address is already in use", + "This email address was not found": "This email address was not found", + "%(actionVerb)s this person?": "%(actionVerb)s this person?", + "The email address linked to your account must be entered.": "The email address linked to your account must be entered.", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "The file '%(fileName)s' exceeds this home server's size limit for uploads", + "The file '%(fileName)s' failed to upload": "The file '%(fileName)s' failed to upload", + "The remote side failed to pick up": "The remote side failed to pick up", + "This Home Server does not support login using email address.": "This Home Server does not support login using email address.", + "This invitation was sent to an email address which is not associated with this account:": "This invitation was sent to an email address which is not associated with this account:", + "There was a problem logging in.": "There was a problem logging in.", + "This room has no local addresses": "This room has no local addresses", + "This room is not recognised.": "This room is not recognised.", + "These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways", + "The visibility of existing history will be unchanged": "The visibility of existing history will be unchanged", + "This doesn't appear to be a valid email address": "This doesn't appear to be a valid email address", + "This is a preview of this room. Room interactions have been disabled": "This is a preview of this room. Room interactions have been disabled", + "This phone number is already in use": "This phone number is already in use", + "This room": "This room", + "This room is not accessible by remote Matrix servers": "This room is not accessible by remote Matrix servers", + "This room's internal ID is": "This room's internal ID is", + "times": "times", + "To ban users": "To ban users", + "to browse the directory": "to browse the directory", + "To configure the room": "To configure the room", + "to demote": "to demote", + "to favourite": "to favourite", + "To invite users into the room": "To invite users into the room", + "To kick users": "To kick users", + "To link to a room it must have an address.": "To link to a room it must have an address.", + "to make a room or": "to make a room or", + "To remove other users' messages": "To remove other users' messages", + "To reset your password, enter the email address linked to your account": "To reset your password, enter the email address linked to your account", + "to restore": "to restore", + "To send events of type": "To send events of type", + "To send messages": "To send messages", + "to start a chat with someone": "to start a chat with someone", + "to tag as %(tagName)s": "to tag as %(tagName)s", + "to tag direct chat": "to tag direct chat", + "To use it, just wait for autocomplete results to load and tab through them.": "To use it, just wait for autocomplete results to load and tab through them.", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Tried to load a specific point in this room's timeline, but was unable to find it.", + "Turn Markdown off": "Turn Markdown off", + "Turn Markdown on": "Turn Markdown on", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).", + "Unable to add email address": "Unable to add email address", + "Unable to create widget.": "Unable to create widget.", + "Unable to remove contact information": "Unable to remove contact information", + "Unable to restore previous session": "Unable to restore previous session", + "Unable to verify email address.": "Unable to verify email address.", + "Unban": "Unban", + "Unbans user with given id": "Unbans user with given id", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s unbanned %(targetName)s.", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Unable to ascertain that the address this invite was sent to matches one associated with your account.", + "Unable to capture screen": "Unable to capture screen", + "Unable to enable Notifications": "Unable to enable Notifications", + "Unable to load device list": "Unable to load device list", + "Undecryptable": "Undecryptable", + "Unencrypted room": "Unencrypted room", + "unencrypted": "unencrypted", + "Unencrypted message": "Unencrypted message", + "unknown caller": "unknown caller", + "Unknown command": "Unknown command", + "unknown device": "unknown device", + "unknown error code": "unknown error code", + "Unknown room %(roomId)s": "Unknown room %(roomId)s", + "Unknown (user, device) pair:": "Unknown (user, device) pair:", + "unknown": "unknown", + "Unmute": "Unmute", + "Unnamed Room": "Unnamed Room", + "Unrecognised command:": "Unrecognised command:", + "Unrecognised room alias:": "Unrecognised room alias:", + "Unverified": "Unverified", + "Uploading %(filename)s and %(count)s others": { + "zero": "Uploading %(filename)s", + "one": "Uploading %(filename)s and %(count)s other", + "other": "Uploading %(filename)s and %(count)s others" + }, + "uploaded a file": "uploaded a file", + "Upload avatar": "Upload avatar", + "Upload Failed": "Upload Failed", + "Upload Files": "Upload Files", + "Upload file": "Upload file", + "Upload new:": "Upload new:", + "Usage": "Usage", + "Use compact timeline layout": "Use compact timeline layout", + "Use with caution": "Use with caution", + "User ID": "User ID", + "User Interface": "User Interface", + "%(user)s is a": "%(user)s is a", + "User name": "User name", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)", + "Username invalid: %(errMessage)s": "Username invalid: %(errMessage)s", + "Users": "Users", + "User": "User", + "Verification Pending": "Verification Pending", + "Verification": "Verification", + "verified": "verified", + "Verified": "Verified", + "Verified key": "Verified key", + "Video call": "Video call", + "Voice call": "Voice call", + "VoIP conference finished.": "VoIP conference finished.", + "VoIP conference started.": "VoIP conference started.", + "VoIP is unsupported": "VoIP is unsupported", + "(could not connect media)": "(could not connect media)", + "(no answer)": "(no answer)", + "(unknown failure: %(reason)s)": "(unknown failure: %(reason)s)", + "(warning: cannot be disabled again!)": "(warning: cannot be disabled again!)", + "Warning!": "Warning!", + "WARNING: Device already verified, but keys do NOT MATCH!": "WARNING: Device already verified, but keys do NOT MATCH!", + "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!": "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!", + "Who can access this room?": "Who can access this room?", + "Who can read history?": "Who can read history?", + "Who would you like to add to this room?": "Who would you like to add to this room?", + "Who would you like to communicate with?": "Who would you like to communicate with?", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s withdrew %(targetName)s's invitation.", + "Would you like to accept or decline this invitation?": "Would you like to accept or decline this invitation?", + "You already have existing direct chats with this user:": "You already have existing direct chats with this user:", + "You are already in a call.": "You are already in a call.", + "You're not in any rooms yet! Press to make a room or to browse the directory": "You're not in any rooms yet! Press to make a room or to browse the directory", + "You are trying to access %(roomName)s.": "You are trying to access %(roomName)s.", + "You cannot place a call with yourself.": "You cannot place a call with yourself.", + "You cannot place VoIP calls in this browser.": "You cannot place VoIP calls in this browser.", + "You do not have permission to post to this room": "You do not have permission to post to this room", + "You have been banned from %(roomName)s by %(userName)s.": "You have been banned from %(roomName)s by %(userName)s.", + "You have been invited to join this room by %(inviterName)s": "You have been invited to join this room by %(inviterName)s", + "You have been kicked from %(roomName)s by %(userName)s.": "You have been kicked from %(roomName)s by %(userName)s.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device", + "You have disabled URL previews by default.": "You have disabled URL previews by default.", + "You have enabled URL previews by default.": "You have enabled URL previews by default.", + "You have entered an invalid contact. Try using their Matrix ID or email address.": "You have entered an invalid contact. Try using their Matrix ID or email address.", + "You have no visible notifications": "You have no visible notifications", + "You may wish to login with a different account, or add this email to this account.": "You may wish to login with a different account, or add this email to this account.", + "you must be a": "you must be a", + "You must register to use this functionality": "You must register to use this functionality", + "You need to be able to invite users to do that.": "You need to be able to invite users to do that.", + "You need to be logged in.": "You need to be logged in.", + "You need to enter a user name.": "You need to enter a user name.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.", + "Your password has been reset": "Your password has been reset", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them", + "You seem to be in a call, are you sure you want to quit?": "You seem to be in a call, are you sure you want to quit?", + "You seem to be uploading files, are you sure you want to quit?": "You seem to be uploading files, are you sure you want to quit?", + "You should not yet trust it to secure data": "You should not yet trust it to secure data", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.", + "Your home server does not support device management.": "Your home server does not support device management.", + "Sun": "Sun", + "Mon": "Mon", + "Tue": "Tue", + "Wed": "Wed", + "Thu": "Thu", + "Fri": "Fri", + "Sat": "Sat", + "Jan": "Jan", + "Feb": "Feb", + "Mar": "Mar", + "Apr": "Apr", + "May": "May", + "Jun": "Jun", + "Jul": "Jul", + "Aug": "Aug", + "Sep": "Sep", + "Oct": "Oct", + "Nov": "Nov", + "Dec": "Dec", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "Set a display name:": "Set a display name:", + "Set a Display Name": "Set a Display Name", + "Upload an avatar:": "Upload an avatar:", + "This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.", + "Missing password.": "Missing password.", + "Passwords don't match.": "Passwords don't match.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Password too short (min %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "This doesn't look like a valid email address.", + "This doesn't look like a valid phone number.": "This doesn't look like a valid phone number.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "User names may only contain letters, numbers, dots, hyphens and underscores.", + "An unknown error occurred.": "An unknown error occurred.", + "I already have an account": "I already have an account", + "An error occurred: %(error_string)s": "An error occurred: %(error_string)s", + "Topic": "Topic", + "Make Moderator": "Make Moderator", + "Make this room private": "Make this room private", + "Share message history with new users": "Share message history with new users", + "Encrypt room": "Encrypt room", + "There are no visible files in this room": "There are no visible files in this room", + "Room": "Room", + "Connectivity to the server has been lost.": "Connectivity to the server has been lost.", + "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.", + "Auto-complete": "Auto-complete", + "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Resend all or cancel all now. You can also select individual messages to resend or cancel.", + "(~%(count)s results)": { + "one": "(~%(count)s result)", + "other": "(~%(count)s results)" + }, + "Cancel": "Cancel", + "or": "or", + "Active call": "Active call", + "Monday": "Monday", + "Tuesday": "Tuesday", + "Wednesday": "Wednesday", + "Thursday": "Thursday", + "Friday": "Friday", + "Saturday": "Saturday", + "Sunday": "Sunday", + "bold": "bold", + "italic": "italic", + "strike": "strike", + "underline": "underline", + "code": "code", + "quote": "quote", + "bullet": "bullet", + "numbullet": "numbullet", + "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)sjoined %(repeats)s times", + "%(oneUser)sjoined %(repeats)s times": "%(oneUser)sjoined %(repeats)s times", + "%(severalUsers)sjoined": "%(severalUsers)sjoined", + "%(oneUser)sjoined": "%(oneUser)sjoined", + "%(severalUsers)sleft %(repeats)s times": "%(severalUsers)sleft %(repeats)s times", + "%(oneUser)sleft %(repeats)s times": "%(oneUser)sleft %(repeats)s times", + "%(severalUsers)sleft": "%(severalUsers)sleft", + "%(oneUser)sleft": "%(oneUser)sleft", + "%(severalUsers)sjoined and left %(repeats)s times": "%(severalUsers)sjoined and left %(repeats)s times", + "%(oneUser)sjoined and left %(repeats)s times": "%(oneUser)sjoined and left %(repeats)s times", + "%(severalUsers)sjoined and left": "%(severalUsers)sjoined and left", + "%(oneUser)sjoined and left": "%(oneUser)sjoined and left", + "%(severalUsers)sleft and rejoined %(repeats)s times": "%(severalUsers)sleft and rejoined %(repeats)s times", + "%(oneUser)sleft and rejoined %(repeats)s times": "%(oneUser)sleft and rejoined %(repeats)s times", + "%(severalUsers)sleft and rejoined": "%(severalUsers)sleft and rejoined", + "%(oneUser)sleft and rejoined": "%(oneUser)sleft and rejoined", + "%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)srejected their invitations %(repeats)s times", + "%(oneUser)srejected their invitation %(repeats)s times": "%(oneUser)srejected their invitation %(repeats)s times", + "%(severalUsers)srejected their invitations": "%(severalUsers)srejected their invitations", + "%(oneUser)srejected their invitation": "%(oneUser)srejected their invitation", + "%(severalUsers)shad their invitations withdrawn %(repeats)s times": "%(severalUsers)shad their invitations withdrawn %(repeats)s times", + "%(oneUser)shad their invitation withdrawn %(repeats)s times": "%(oneUser)shad their invitation withdrawn %(repeats)s times", + "%(severalUsers)shad their invitations withdrawn": "%(severalUsers)shad their invitations withdrawn", + "%(oneUser)shad their invitation withdrawn": "%(oneUser)shad their invitation withdrawn", + "were invited %(repeats)s times": "were invited %(repeats)s times", + "was invited %(repeats)s times": "was invited %(repeats)s times", + "were invited": "were invited", + "was invited": "was invited", + "were banned %(repeats)s times": "were banned %(repeats)s times", + "was banned %(repeats)s times": "was banned %(repeats)s times", + "were banned": "were banned", + "was banned": "was banned", + "were unbanned %(repeats)s times": "were unbanned %(repeats)s times", + "was unbanned %(repeats)s times": "was unbanned %(repeats)s times", + "were unbanned": "were unbanned", + "was unbanned": "was unbanned", + "were kicked %(repeats)s times": "were kicked %(repeats)s times", + "was kicked %(repeats)s times": "was kicked %(repeats)s times", + "were kicked": "were kicked", + "was kicked": "was kicked", + "%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)schanged their name %(repeats)s times", + "%(oneUser)schanged their name %(repeats)s times": "%(oneUser)schanged their name %(repeats)s times", + "%(severalUsers)schanged their name": "%(severalUsers)schanged their name", + "%(oneUser)schanged their name": "%(oneUser)schanged their name", + "%(severalUsers)schanged their avatar %(repeats)s times": "%(severalUsers)schanged their avatar %(repeats)s times", + "%(oneUser)schanged their avatar %(repeats)s times": "%(oneUser)schanged their avatar %(repeats)s times", + "%(severalUsers)schanged their avatar": "%(severalUsers)schanged their avatar", + "%(oneUser)schanged their avatar": "%(oneUser)schanged their avatar", + "Please select the destination room for this message": "Please select the destination room for this message", + "Create new room": "Create new room", + "Welcome page": "Welcome page", + "Room directory": "Room directory", + "Start chat": "Start chat", + "New Password": "New Password", + "Start automatically after system login": "Start automatically after system login", + "Desktop specific": "Desktop specific", + "Analytics": "Analytics", + "Opt out of analytics": "Opt out of analytics", + "Options": "Options", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot collects anonymous analytics to allow us to improve the application.", + "Passphrases must match": "Passphrases must match", + "Passphrase must not be empty": "Passphrase must not be empty", + "Export room keys": "Export room keys", + "Confirm passphrase": "Confirm passphrase", + "Import room keys": "Import room keys", + "File to import": "File to import", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.", + "You must join the room to see its files": "You must join the room to see its files", + "Reject all %(invitedRooms)s invites": "Reject all %(invitedRooms)s invites", + "Start new chat": "Start new chat", + "Guest users can't invite users. Please register.": "Guest users can't invite users. Please register.", + "Failed to invite": "Failed to invite", + "Failed to invite user": "Failed to invite user", + "Failed to invite the following users to the %(roomName)s room:": "Failed to invite the following users to the %(roomName)s room:", + "Confirm Removal": "Confirm Removal", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.", + "Unknown error": "Unknown error", + "Incorrect password": "Incorrect password", + "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "This will make your account permanently unusable. You will not be able to re-register the same user ID.", + "This action is irreversible.": "This action is irreversible.", + "To continue, please enter your password.": "To continue, please enter your password.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:", + "Device name": "Device name", + "Device Name": "Device Name", + "Device key": "Device key", + "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", + "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", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.", + "Continue anyway": "Continue anyway", + "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contains devices that you haven't seen before.", + "Unknown devices": "Unknown devices", + "Unknown Address": "Unknown Address", + "Unblacklist": "Unblacklist", + "Blacklist": "Blacklist", + "Unverify": "Unverify", + "Verify...": "Verify...", + "ex. @bob:example.com": "ex. @bob:example.com", + "Add User": "Add User", + "This Home Server would like to make sure you are not a robot": "This Home Server would like to make sure you are not a robot", + "Sign in with CAS": "Sign in with CAS", + "Custom Server Options": "Custom Server Options", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.", + "This allows you to use this app with an existing Matrix account on a different home server.": "This allows you to use this app with an existing Matrix account on a different home server.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "You can also set a custom identity server but this will typically prevent interaction with users based on email address.", + "Dismiss": "Dismiss", + "Please check your email to continue registration.": "Please check your email to continue registration.", + "Token incorrect": "Token incorrect", + "A text message has been sent to": "A text message has been sent to", + "Please enter the code it contains:": "Please enter the code it contains:", + "powered by Matrix": "powered by Matrix", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "If you don't specify an email address, you won't be able to reset your password. Are you sure?", + "You are registering with %(SelectedTeamName)s": "You are registering with %(SelectedTeamName)s", + "Default server": "Default server", + "Custom server": "Custom server", + "Home server URL": "Home server URL", + "Identity server URL": "Identity server URL", + "What does this mean?": "What does this mean?", + "Error decrypting audio": "Error decrypting audio", + "Error decrypting image": "Error decrypting image", + "Image '%(Body)s' cannot be displayed.": "Image '%(Body)s' cannot be displayed.", + "This image cannot be displayed.": "This image cannot be displayed.", + "Error decrypting video": "Error decrypting video", + "Add an Integration": "Add an Integration", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?", + "Removed or unknown message type": "Removed or unknown message type", + "Disable URL previews by default for participants in this room": "Disable URL previews by default for participants in this room", + "Disable URL previews for this room (affects only you)": "Disable URL previews for this room (affects only you)", + "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.", + "URL Previews": "URL Previews", + "Enable URL previews for this room (affects only you)": "Enable URL previews for this room (affects only you)", + "Drop file here to upload": "Drop file here to upload", + " (unsupported)": " (unsupported)", + "Ongoing conference call%(supportedText)s.": "Ongoing conference call%(supportedText)s.", + "for %(amount)ss": "for %(amount)ss", + "for %(amount)sm": "for %(amount)sm", + "for %(amount)sh": "for %(amount)sh", + "for %(amount)sd": "for %(amount)sd", + "Online": "Online", + "Idle": "Idle", + "Offline": "Offline", + "Updates": "Updates", + "Check for update": "Check for update", + "Start chatting": "Start chatting", + "Start Chatting": "Start Chatting", + "Click on the button below to start chatting!": "Click on the button below to start chatting!", + "$senderDisplayName changed the room avatar to ": "$senderDisplayName changed the room avatar to ", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s", + "Username available": "Username available", + "Username not available": "Username not available", + "Something went wrong!": "Something went wrong!", + "This will be your account name on the homeserver, or you can pick a different server.": "This will be your account name on the homeserver, or you can pick a different server.", + "If you already have a Matrix account you can log in instead.": "If you already have a Matrix account you can log in instead.", + "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions", + "Not a valid Riot keyfile": "Not a valid Riot keyfile", + "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", + "Disable Peer-to-Peer for 1:1 calls": "Disable Peer-to-Peer for 1:1 calls", + "Do you want to set an email address?": "Do you want to set an email address?", + "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications.", + "To return to your account in future you need to set a password": "To return to your account in future you need to set a password", + "Skip": "Skip", + "Start verification": "Start verification", + "Share without verifying": "Share without verifying", + "Ignore request": "Ignore request", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "You added a new device '%(displayName)s', which is requesting encryption keys.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Your unverified device '%(displayName)s' is requesting encryption keys.", + "Encryption key request": "Encryption key request", + "Autocomplete Delay (ms):": "Autocomplete Delay (ms):" } diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json index e060add84f..30ff296065 100644 --- a/src/i18n/strings/en_US.json +++ b/src/i18n/strings/en_US.json @@ -378,6 +378,7 @@ "Never send encrypted messages to unverified devices in this room from this device": "Never send encrypted messages to unverified devices in this room from this device", "New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)", "New Composer & Autocomplete": "New Composer & Autocomplete", + "Matrix Apps": "Matrix Apps", "New password": "New password", "New passwords don't match": "New passwords don't match", "New passwords must match each other.": "New passwords must match each other.", From bf2a4afce523b8b96cc6b6999a8823ea209e6817 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 28 Jun 2017 12:02:07 +0100 Subject: [PATCH 285/481] Change to allow setting of DEBUG at run-time. --- src/components/structures/RoomView.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index 6e6325504a..85440cf261 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -47,7 +47,7 @@ import UserProvider from '../../autocomplete/UserProvider'; import RoomViewStore from '../../stores/RoomViewStore'; -const DEBUG = false; +let DEBUG = false; let debuglog = function() {}; if (DEBUG) { From 06dafdc099ff60262d1318b86105c8cb2fbd2903 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 28 Jun 2017 12:20:07 +0100 Subject: [PATCH 286/481] Remove unused state variable. --- src/components/structures/RoomView.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index 85440cf261..a793a61e68 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -90,7 +90,6 @@ module.exports = React.createClass({ return { room: null, roomId: null, - userId: null, roomLoading: true, peekLoading: false, shouldPeek: true, From ff1636aaf5568f8bc182d0944ab671afe43121a8 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 28 Jun 2017 12:21:05 +0100 Subject: [PATCH 287/481] Simplify boolean assignment. --- src/components/structures/RoomView.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index a793a61e68..ffb0c1243c 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -465,7 +465,7 @@ module.exports = React.createClass({ break; case 'appsDrawer': this.setState({ - showApps: payload.show ? true : false, + showApps: payload.show, }); break; } From ddea1f35d2ea992c300b3de00d9c46e8420f9619 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 28 Jun 2017 12:23:33 +0100 Subject: [PATCH 288/481] Fix header. --- src/components/views/elements/AppTile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index dc34d15d7f..baa001b2f2 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -1,5 +1,5 @@ /* -Copyright 2015, 2016 OpenMarket Ltd +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. From 93bdfc99df3805148c70d83bfc8594ad88b270c8 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 28 Jun 2017 12:25:36 +0100 Subject: [PATCH 289/481] i18n "Cancel" alt text. --- src/components/views/elements/AppTile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index baa001b2f2..d92fcf580f 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -87,7 +87,7 @@ export default React.createClass({ {/* Delete widget */} Cancel From 481a66ef3c12d48067f64c6ef43b0710376ddf11 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 28 Jun 2017 12:26:05 +0100 Subject: [PATCH 290/481] Fix header. --- src/components/views/rooms/AppsDrawer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 8919fd6f74..202d1c0018 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -1,5 +1,5 @@ /* -Copyright 2015, 2016 OpenMarket Ltd +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. From e752cc8557754afb1a652cdc81fb49ba1351a972 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 28 Jun 2017 12:32:38 +0100 Subject: [PATCH 291/481] Use 'this' in preference to local reference. --- src/components/views/rooms/AppsDrawer.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 202d1c0018..ce414b2ea0 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -40,13 +40,12 @@ module.exports = React.createClass({ componentDidMount: function() { this.scalarClient = null; - const appsDrawer = this; if (SdkConfig.get().integrations_ui_url && SdkConfig.get().integrations_rest_url) { this.scalarClient = new ScalarAuthClient(); this.scalarClient.connect().done(() => { this.forceUpdate(); - if (appsDrawer.state.apps && appsDrawer.state.apps.length < 1) { - appsDrawer.onClickAddWidget(); + if (this.state.apps && this.state.apps.length < 1) { + this.onClickAddWidget(); } }, (err) => { this.setState({ From d06d066050fa19adc1b8b2105b963a99f4ca9915 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 28 Jun 2017 12:54:47 +0100 Subject: [PATCH 292/481] Move getInitialState to top of file. --- src/components/views/rooms/AppsDrawer.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index ce414b2ea0..10e13eb623 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -33,6 +33,12 @@ module.exports = React.createClass({ room: React.PropTypes.object.isRequired, }, + getInitialState: function() { + return { + apps: this._getApps(), + }; + }, + componentWillMount: function() { ScalarMessaging.startListening(); MatrixClientPeg.get().on("RoomState.events", this.onRoomStateEvents); @@ -124,12 +130,6 @@ module.exports = React.createClass({ return app; }, - getInitialState: function() { - return { - apps: this._getApps(), - }; - }, - onRoomStateEvents: function(ev, state) { if (ev.getRoomId() !== this.props.room.roomId || ev.getType() !== 'im.vector.modular.widgets') { return; From e70eca0b0c928ec7ddab4db175e8be973f98564b Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 28 Jun 2017 12:58:09 +0100 Subject: [PATCH 293/481] Comment unused code and add TODO to handle scalar errors. --- src/components/views/rooms/AppsDrawer.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 10e13eb623..5378136f2d 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -53,10 +53,12 @@ module.exports = React.createClass({ if (this.state.apps && this.state.apps.length < 1) { this.onClickAddWidget(); } - }, (err) => { - this.setState({ - scalar_error: err, - }); + // TODO -- Handle Scalar errors + // }, + // (err) => { + // this.setState({ + // scalar_error: err, + // }); }); } }, From 30f80b57f267c610eb3750724e982092f0596b71 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 28 Jun 2017 13:28:48 +0100 Subject: [PATCH 294/481] Instead of making this part of the build process, let the devs generate stripped-emoji.json With the expectation that when the file needs to be regenerated to include other keys, the developer will run this script. --- package.json | 5 ++--- scripts/emoji-data-strip.js | 5 +++-- src/stripped-emoji.json | 1 + 3 files changed, 6 insertions(+), 5 deletions(-) create mode 100644 src/stripped-emoji.json diff --git a/package.json b/package.json index d5dcff831d..ed12e6a5e4 100644 --- a/package.json +++ b/package.json @@ -33,9 +33,8 @@ "scripts": { "reskindex": "node scripts/reskindex.js -h header", "reskindex:watch": "node scripts/reskindex.js -h header -w", - "build:init": "mkdir -p lib && npm run emoji-data-strip", - "build": "npm run build:init && npm run reskindex && babel src -d lib --source-maps", - "build:watch": "npm run build:init && babel src -w -d lib --source-maps", + "build": "npm run reskindex && babel src -d lib --source-maps --copy-files", + "build:watch": "babel src -w -d lib --source-maps --copy-files", "emoji-data-strip": "node scripts/emoji-data-strip.js", "start": "parallelshell \"npm run build:watch\" \"npm run reskindex:watch\"", "lint": "eslint src/", diff --git a/scripts/emoji-data-strip.js b/scripts/emoji-data-strip.js index 14110c1c8b..45b4c96e1d 100644 --- a/scripts/emoji-data-strip.js +++ b/scripts/emoji-data-strip.js @@ -11,7 +11,8 @@ const output = Object.keys(EMOJI_DATA).map( category: datum.category, emoji_order: datum.emoji_order, }; - } + }, ); -fs.writeFileSync('./lib/stripped-emoji.json', JSON.stringify(output)); +// Write to a file in src. Changes should be checked in to git +fs.writeFileSync('./src/stripped-emoji.json', JSON.stringify(output)); diff --git a/src/stripped-emoji.json b/src/stripped-emoji.json new file mode 100644 index 0000000000..6971c1496d --- /dev/null +++ b/src/stripped-emoji.json @@ -0,0 +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"},{"name":"smiling face with open mouth","shortname":":smiley:","category":"people","emoji_order":"5"},{"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"},{"name":"smiling face with open mouth and tightly-closed eyes","shortname":":laughing:","category":"people","emoji_order":"8"},{"name":"smiling face with halo","shortname":":innocent:","category":"people","emoji_order":"9"},{"name":"winking face","shortname":":wink:","category":"people","emoji_order":"10"},{"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"},{"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"},{"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"},{"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"},{"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"},{"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"},{"name":"neutral face","shortname":":neutral_face:","category":"people","emoji_order":"31"},{"name":"expressionless face","shortname":":expressionless:","category":"people","emoji_order":"32"},{"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"},{"name":"disappointed face","shortname":":disappointed:","category":"people","emoji_order":"37"},{"name":"worried face","shortname":":worried:","category":"people","emoji_order":"38"},{"name":"angry face","shortname":":angry:","category":"people","emoji_order":"39"},{"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"},{"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"},{"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"},{"name":"face screaming in fear","shortname":":scream:","category":"people","emoji_order":"51"},{"name":"fearful face","shortname":":fearful:","category":"people","emoji_order":"52"},{"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"},{"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"},{"name":"loudly crying face","shortname":":sob:","category":"people","emoji_order":"61"},{"name":"dizzy face","shortname":":dizzy_face:","category":"people","emoji_order":"62"},{"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"},{"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"},{"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"},{"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 From 48eb6f251bcd61d509879aab40772d5dd5079698 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 28 Jun 2017 13:44:44 +0100 Subject: [PATCH 295/481] Update comment --- scripts/emoji-data-strip.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/emoji-data-strip.js b/scripts/emoji-data-strip.js index 45b4c96e1d..9cec10735f 100644 --- a/scripts/emoji-data-strip.js +++ b/scripts/emoji-data-strip.js @@ -14,5 +14,6 @@ const output = Object.keys(EMOJI_DATA).map( }, ); -// Write to a file in src. Changes should be checked in to git +// Write to a file in src. Changes should be checked into git. This file is copied by +// babel using --copy-files fs.writeFileSync('./src/stripped-emoji.json', JSON.stringify(output)); From f8c064ec2568f24b74bce936e4a724c4857a648a Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 28 Jun 2017 13:45:29 +0100 Subject: [PATCH 296/481] REmove redundant call to _getApps --- src/components/views/rooms/AppsDrawer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 5378136f2d..ff579ff91a 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -163,7 +163,7 @@ module.exports = React.createClass({ }); } this.setState({ - apps: this._getApps(), + apps: this.apps, }); }, From 3a10cda2ca30d431c8569d7415cc0626337435ee Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 28 Jun 2017 13:55:18 +0100 Subject: [PATCH 297/481] Add translations. --- src/components/views/rooms/AppsDrawer.js | 6 ++++-- src/components/views/rooms/MessageComposer.js | 4 ++-- src/i18n/strings/en_EN.json | 5 ++++- src/i18n/strings/en_US.json | 5 ++++- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index ff579ff91a..92902a0225 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -25,6 +25,8 @@ import sdk from '../../../index'; import SdkConfig from '../../../SdkConfig'; import ScalarAuthClient from '../../../ScalarAuthClient'; import ScalarMessaging from '../../../ScalarMessaging'; +import { _t } from '../../../languageHandler'; + module.exports = React.createClass({ displayName: 'AppsDrawer', @@ -205,8 +207,8 @@ module.exports = React.createClass({ role="button" tabIndex="0" className="mx_AddWidget_button" - title="Add a widget"> - [+] Add a widget + title={_t('Add a widget')}> + [+] {_t('Add a widget')}
); return ( diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index 7896a03376..c83e32d9a8 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -318,12 +318,12 @@ export default class MessageComposer extends React.Component { if (UserSettingsStore.isFeatureEnabled('matrix_apps')) { if (this.props.showApps) { hideAppsButton = -
+
; } else { showAppsButton = -
+
; } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index b8f5c26332..397c2ecaaa 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1,4 +1,5 @@ { + "Add a widget": "Add a widget", "af": "Afrikaans", "ar-ae": "Arabic (U.A.E.)", "ar-bh": "Arabic (Bahrain)", @@ -337,6 +338,7 @@ "Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.", "had": "had", "Hangup": "Hangup", + "Hide Apps": "Hide Apps", "Hide read receipts": "Hide read receipts", "Hide Text Formatting Toolbar": "Hide Text Formatting Toolbar", "Historical": "Historical", @@ -393,6 +395,7 @@ "Markdown is disabled": "Markdown is disabled", "Markdown is enabled": "Markdown is enabled", "matrix-react-sdk version:": "matrix-react-sdk version:", + "Matrix Apps": "Matrix Apps", "Members only": "Members only", "Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present", "Missing room_id in request": "Missing room_id in request", @@ -409,7 +412,6 @@ "Never send encrypted messages to unverified devices in this room from this device": "Never send encrypted messages to unverified devices in this room from this device", "New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)", "New Composer & Autocomplete": "New Composer & Autocomplete", - "Matrix Apps": "Matrix Apps", "New password": "New password", "New passwords don't match": "New passwords don't match", "New passwords must match each other.": "New passwords must match each other.", @@ -510,6 +512,7 @@ "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s set their display name to %(displayName)s.", "Set": "Set", "Settings": "Settings", + "Show Apps": "Show Apps", "Show panel": "Show panel", "Show Text Formatting Toolbar": "Show Text Formatting Toolbar", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Show timestamps in 12 hour format (e.g. 2:30pm)", diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json index 30ff296065..4b8b8a5d3c 100644 --- a/src/i18n/strings/en_US.json +++ b/src/i18n/strings/en_US.json @@ -1,4 +1,5 @@ { + "Add a widget": "Add a widget", "af": "Afrikaans", "ar-ae": "Arabic (U.A.E.)", "ar-bh": "Arabic (Bahrain)", @@ -311,6 +312,7 @@ "Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.", "had": "had", "Hangup": "Hangup", + "Hide Apps": "Hide Apps", "Hide read receipts": "Hide read receipts", "Hide Text Formatting Toolbar": "Hide Text Formatting Toolbar", "Historical": "Historical", @@ -362,6 +364,7 @@ "Markdown is disabled": "Markdown is disabled", "Markdown is enabled": "Markdown is enabled", "matrix-react-sdk version:": "matrix-react-sdk version:", + "Matrix Apps": "Matrix Apps", "Members only": "Members only", "Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present", "Missing room_id in request": "Missing room_id in request", @@ -378,7 +381,6 @@ "Never send encrypted messages to unverified devices in this room from this device": "Never send encrypted messages to unverified devices in this room from this device", "New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)", "New Composer & Autocomplete": "New Composer & Autocomplete", - "Matrix Apps": "Matrix Apps", "New password": "New password", "New passwords don't match": "New passwords don't match", "New passwords must match each other.": "New passwords must match each other.", @@ -465,6 +467,7 @@ "%(senderName)s set a profile picture.": "%(senderName)s set a profile picture.", "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s set their display name to %(displayName)s.", "Settings": "Settings", + "Show Apps": "Show Apps", "Show panel": "Show panel", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Show timestamps in 12 hour format (e.g. 2:30pm)", "Signed Out": "Signed Out", From a2ff289ed81b0cdcf97e1ca885e6eb263675053e Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 28 Jun 2017 13:56:18 +0100 Subject: [PATCH 298/481] Add 'groups' page --- src/PageTypes.js | 2 ++ src/components/structures/LoggedInView.js | 6 ++++++ src/components/structures/MatrixChat.js | 8 ++++++++ src/i18n/strings/en_EN.json | 4 +++- 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/PageTypes.js b/src/PageTypes.js index b2346c62c3..66d930c288 100644 --- a/src/PageTypes.js +++ b/src/PageTypes.js @@ -1,5 +1,6 @@ /* Copyright 2015, 2016 OpenMarket Ltd +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. @@ -23,4 +24,5 @@ export default { RoomDirectory: "room_directory", UserView: "user_view", GroupView: "group_view", + MyGroups: "my_groups", }; diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js index aef7fe9cce..a473df7c5b 100644 --- a/src/components/structures/LoggedInView.js +++ b/src/components/structures/LoggedInView.js @@ -211,6 +211,7 @@ export default React.createClass({ const RoomDirectory = sdk.getComponent('structures.RoomDirectory'); const HomePage = sdk.getComponent('structures.HomePage'); const GroupView = sdk.getComponent('structures.GroupView'); + const MyGroups = sdk.getComponent('structures.MyGroups'); const MatrixToolbar = sdk.getComponent('globals.MatrixToolbar'); const NewVersionBar = sdk.getComponent('globals.NewVersionBar'); const UpdateCheckBar = sdk.getComponent('globals.UpdateCheckBar'); @@ -248,6 +249,11 @@ export default React.createClass({ if (!this.props.collapse_rhs) right_panel = ; break; + case PageTypes.MyGroups: + page_element = ; + if (!this.props.collapse_rhs) right_panel = ; + break; + case PageTypes.CreateRoom: page_element = Date: Wed, 28 Jun 2017 14:27:24 +0100 Subject: [PATCH 299/481] Do the less invasive fix of replacing `
\n` with `\n` but only within `
`

---
 src/HtmlUtils.js | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/HtmlUtils.js b/src/HtmlUtils.js
index cc302e24e5..13b3f3094f 100644
--- a/src/HtmlUtils.js
+++ b/src/HtmlUtils.js
@@ -85,11 +85,6 @@ export function charactersToImageNode(alt, useSvg, ...unicode) {
 
 
 export function processHtmlForSending(html: string): string {
-    // Replace "
\n" with "
" because the \n is redundant and causes an - // extra newline per line within `
` tags.
-    // This is a workaround for a bug in draft-js-export-html:
-    //   https://github.com/sstur/draft-js-export-html/issues/62
-    html = html.replace(/\\n/g, '
'); const contentDiv = document.createElement('div'); contentDiv.innerHTML = html; @@ -103,6 +98,14 @@ export function processHtmlForSending(html: string): string { const element = contentDiv.children[i]; if (element.tagName.toLowerCase() === 'p') { contentHTML += element.innerHTML + '
'; + } else if (element.tagName.toLowerCase() === 'pre') { + // Replace "
\n" with "
" because the \n is redundant and causes an + // extra newline per line within `
` tags.
+            // This is a workaround for a bug in draft-js-export-html:
+            //   https://github.com/sstur/draft-js-export-html/issues/62
+            contentHTML += '
' +
+                element.innerHTML.replace(/
\n/g, '\n').trim() + + '
'; } else { const temp = document.createElement('div'); temp.appendChild(element.cloneNode(true)); From 9b24f70d0052dd763e23848e7f3b307e1d24172c Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 28 Jun 2017 14:29:53 +0100 Subject: [PATCH 300/481] Update comment --- src/HtmlUtils.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/HtmlUtils.js b/src/HtmlUtils.js index 13b3f3094f..ee679391cc 100644 --- a/src/HtmlUtils.js +++ b/src/HtmlUtils.js @@ -99,9 +99,8 @@ export function processHtmlForSending(html: string): string { if (element.tagName.toLowerCase() === 'p') { contentHTML += element.innerHTML + '
'; } else if (element.tagName.toLowerCase() === 'pre') { - // Replace "
\n" with "
" because the \n is redundant and causes an - // extra newline per line within `
` tags.
-            // This is a workaround for a bug in draft-js-export-html:
+            // Replace "
\n" with "\n" within `
` tags because the 
is + // redundant. This is a workaround for a bug in draft-js-export-html: // https://github.com/sstur/draft-js-export-html/issues/62 contentHTML += '
' +
                 element.innerHTML.replace(/
\n/g, '\n').trim() + From bcb67bb273c9b1860b15c0355c2cb26d20714f97 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 28 Jun 2017 15:20:16 +0100 Subject: [PATCH 301/481] Refactor shared code between `onUpArrow` and `onDownArrow` --- .../views/rooms/MessageComposerInput.js | 42 +++++++++---------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 7603a45e4c..90ac905553 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -556,36 +556,34 @@ export default class MessageComposerInput extends React.Component { this.autocomplete.hide(); return true; + } + + selectHistory = async (completion, delta) => { + if (completion == null) { + const newContent = this.historyManager.getItem(delta, this.state.isRichtextEnabled ? 'html' : 'markdown'); + if (!newContent) return false; + let editorState = EditorState.push( + this.state.editorState, + newContent, + 'insert-characters', + ); + + this.setState({editorState}); + return true; + } + return await this.setDisplayedCompletion(completion); }; onUpArrow = async (e) => { - const completion = this.autocomplete.onUpArrow(); - if (completion == null && !(this.historyManager.currentIndex === -1 && this.state.editorState.getCurrentContent().hasText())) { - const newContent = this.historyManager.getItem(-1, this.state.isRichtextEnabled ? 'html' : 'markdown'); - if (!newContent) return false; - const editorState = EditorState.push(this.state.editorState, - newContent, - 'insert-characters'); - this.setState({editorState}); - return true; - } e.preventDefault(); - return await this.setDisplayedCompletion(completion); + const completion = this.autocomplete.onUpArrow(); + return this.selectHistory(completion, -1); }; onDownArrow = async (e) => { - const completion = this.autocomplete.onDownArrow(); - if (completion == null && !(this.historyManager.currentIndex === -1 && this.state.editorState.getCurrentContent().hasText())) { - const newContent = this.historyManager.getItem(+1, this.state.isRichtextEnabled ? 'html' : 'markdown'); - if (!newContent) return false; - const editorState = EditorState.push(this.state.editorState, - newContent, - 'insert-characters'); - this.setState({editorState}); - return true; - } e.preventDefault(); - return await this.setDisplayedCompletion(completion); + const completion = this.autocomplete.onDownArrow(); + return this.selectHistory(completion, -1); }; // tab and shift-tab are mapped to down and up arrow respectively From d696373bc283f475a9e7921055990d7f313ffa37 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 28 Jun 2017 15:29:07 +0100 Subject: [PATCH 302/481] Fix issue where the cursor is put at the start of selected history item Leading to strange behaviour when selecting all and deleting it. Fixes https://github.com/vector-im/riot-web/issues/4450 --- src/components/views/rooms/MessageComposerInput.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 90ac905553..c5fab8242e 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -568,6 +568,14 @@ export default class MessageComposerInput extends React.Component { 'insert-characters', ); + // Move selection to the end of the selected history + let newSelection = SelectionState.createEmpty(newContent.getLastBlock().getKey()); + newSelection = newSelection.merge({ + focusOffset: newContent.getLastBlock().getLength(), + anchorOffset: newContent.getLastBlock().getLength(), + }); + editorState = EditorState.forceSelection(editorState, newSelection); + this.setState({editorState}); return true; } From ea83d7eee229e50063d2e8803fc107cb8c1ae913 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 28 Jun 2017 15:53:18 +0100 Subject: [PATCH 303/481] Add missing import and fix apps reference. --- src/components/views/elements/AppTile.js | 5 +++-- src/components/views/rooms/AppsDrawer.js | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index d92fcf580f..6f4c931ab7 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -16,8 +16,9 @@ limitations under the License. 'use strict'; -const React = require('react'); -const MatrixClientPeg = require('../../../MatrixClientPeg'); +import React from 'react'; +import MatrixClientPeg from '../../../MatrixClientPeg'; +import { _t } from '../../../languageHandler'; export default React.createClass({ displayName: 'AppTile', diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 92902a0225..6545ac1ce5 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -165,7 +165,7 @@ module.exports = React.createClass({ }); } this.setState({ - apps: this.apps, + apps: apps, }); }, From de81188b13e0d3bef5910ed91a1c53d896da0f93 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 28 Jun 2017 17:27:21 +0100 Subject: [PATCH 304/481] Do debouncing for autocomplete in a sane way - Fixes https://github.com/vector-im/riot-web/issues/4419 - Fixes https://github.com/matrix-org/matrix-react-sdk/pull/518#issuecomment-285901871 - Fixes https://github.com/matrix-org/matrix-react-sdk/pull/518#issuecomment-285910503 - Fixes bug where the setting being used was the `autocompleteDelay` "syncedSetting" when it should have been the "localSetting" (so the setting being used was always the default) --- src/components/views/rooms/Autocomplete.js | 72 +++++++++++++--------- 1 file changed, 44 insertions(+), 28 deletions(-) diff --git a/src/components/views/rooms/Autocomplete.js b/src/components/views/rooms/Autocomplete.js index d591e4f6c2..dd6d9d1ae9 100644 --- a/src/components/views/rooms/Autocomplete.js +++ b/src/components/views/rooms/Autocomplete.js @@ -40,25 +40,51 @@ export default class Autocomplete extends React.Component { }; } - async componentWillReceiveProps(props, state) { - if (props.query === this.props.query) { - return null; - } - - return await this.complete(props.query, props.selection); - } - - async complete(query, selection) { - let forceComplete = this.state.forceComplete; - const completionPromise = getCompletions(query, selection, forceComplete); - this.completionPromise = completionPromise; - const completions = await this.completionPromise; - - // There's a newer completion request, so ignore results. - if (completionPromise !== this.completionPromise) { + componentWillReceiveProps(newProps, state) { + // Query hasn't changed so don't try to complete it + if (newProps.query === this.props.query) { return; } + this.complete(newProps.query, newProps.selection); + } + + complete(query, selection) { + if (this.debounceCompletionsRequest) { + clearTimeout(this.debounceCompletionsRequest); + } + if (query === "") { + this.setState({ + // Clear displayed completions + completions: [], + completionList: [], + // Reset selected completion + selectionOffset: COMPOSER_SELECTED, + // Hide the autocomplete box + hide: true, + }); + return Q(null); + } + let autocompleteDelay = UserSettingsStore.getLocalSetting('autocompleteDelay', 200); + + // Don't debounce if we are already showing completions + if (this.state.completions.length > 0) { + autocompleteDelay = 0; + } + + const deferred = Q.defer(); + this.debounceCompletionsRequest = setTimeout(() => { + getCompletions( + query, selection, this.state.forceComplete, + ).then((completions) => { + this.processCompletions(completions); + deferred.resolve(); + }); + }, autocompleteDelay); + return deferred.promise; + } + + processCompletions(completions) { const completionList = flatMap(completions, (provider) => provider.completions); // Reset selection when completion list becomes empty. @@ -88,23 +114,13 @@ export default class Autocomplete extends React.Component { hide = false; } - const autocompleteDelay = UserSettingsStore.getSyncedSetting('autocompleteDelay', 200); - - // We had no completions before, but do now, so we should apply our display delay here - if (this.state.completionList.length === 0 && completionList.length > 0 && - !forceComplete && autocompleteDelay > 0) { - await Q.delay(autocompleteDelay); - } - - // Force complete is turned off each time since we can't edit the query in that case - forceComplete = false; - this.setState({ completions, completionList, selectionOffset, hide, - forceComplete, + // Force complete is turned off each time since we can't edit the query in that case + forceComplete: false, }); } From 8912400675dea6ebb911088f2435a7685d1ea2d7 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 28 Jun 2017 18:05:39 +0100 Subject: [PATCH 305/481] Add XXX for https://github.com/vector-im/riot-web/issues/4445 --- src/components/views/rooms/MessageComposerInput.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 0c3cd5ec3d..e07d2755ee 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -598,6 +598,8 @@ export default class MessageComposerInput extends React.Component { onTab = async (e) => { e.preventDefault(); // we *never* want tab's default to happen, but we do want up/down sometimes if (this.autocomplete.state.completionList.length === 0) { + // XXX THIS IS EVIL. We should not be emulating other keys when pressing other keys + // This causes issues such as https://github.com/vector-im/riot-web/issues/4445 await this.autocomplete.forceComplete(); this.onDownArrow(e); } else { From 982b009b903e5678005ee21b5645f5429be30d99 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Thu, 29 Jun 2017 11:29:55 +0100 Subject: [PATCH 306/481] Implement ascii emoji tab completion When a fully plaintext, ascii emoji is typed like ";-)", pressing tab will suggest emojione to replace it with based off of the meta data provided by emojione. e.g. the aliases_ascii for `:smiley:` are [":D",":-D","=D"] so typing ":D *tab*" will insert a real :smiley: --- scripts/emoji-data-strip.js | 8 ++++++-- src/autocomplete/EmojiProvider.js | 10 +++++++--- src/autocomplete/QueryMatcher.js | 17 +++++++++++++++-- src/stripped-emoji.json | 2 +- 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/scripts/emoji-data-strip.js b/scripts/emoji-data-strip.js index 9cec10735f..d7c80e7e37 100644 --- a/scripts/emoji-data-strip.js +++ b/scripts/emoji-data-strip.js @@ -5,13 +5,17 @@ const fs = require('fs'); const output = Object.keys(EMOJI_DATA).map( (key) => { const datum = EMOJI_DATA[key]; - return { + const newDatum = { name: datum.name, shortname: datum.shortname, category: datum.category, emoji_order: datum.emoji_order, }; - }, + if (datum.aliases_ascii.length > 0) { + newDatum.aliases_ascii = datum.aliases_ascii; + } + return newDatum; + } ); // Write to a file in src. Changes should be checked into git. This file is copied by diff --git a/src/autocomplete/EmojiProvider.js b/src/autocomplete/EmojiProvider.js index fb7936d77e..36aad68639 100644 --- a/src/autocomplete/EmojiProvider.js +++ b/src/autocomplete/EmojiProvider.js @@ -18,7 +18,7 @@ limitations under the License. import React from 'react'; import { _t } from '../languageHandler'; import AutocompleteProvider from './AutocompleteProvider'; -import {emojioneList, shortnameToImage, shortnameToUnicode} from 'emojione'; +import {emojioneList, shortnameToImage, shortnameToUnicode, asciiRegexp} from 'emojione'; import FuzzyMatcher from './FuzzyMatcher'; import sdk from '../index'; import {PillCompletion} from './Components'; @@ -40,7 +40,8 @@ const CATEGORY_ORDER = [ 'modifier', ]; -const EMOJI_REGEX = /:\w*:?/g; +// Match for ":wink:" or ascii-style ";-)" provided by emojione +const EMOJI_REGEX = new RegExp('(:\\w*:?|' + asciiRegexp + ')', 'g'); const EMOJI_SHORTNAMES = Object.keys(EmojiData).map((key) => EmojiData[key]).sort( (a, b) => { if (a.category === b.category) { @@ -52,6 +53,7 @@ const EMOJI_SHORTNAMES = Object.keys(EmojiData).map((key) => EmojiData[key]).sor return { name: a.name, shortname: a.shortname, + aliases_ascii: a.aliases_ascii ? a.aliases_ascii.join(' ') : '', }; }); @@ -61,7 +63,9 @@ export default class EmojiProvider extends AutocompleteProvider { constructor() { super(EMOJI_REGEX); this.matcher = new FuzzyMatcher(EMOJI_SHORTNAMES, { - keys: ['shortname', 'name'], + keys: ['aliases_ascii', 'shortname', 'name'], + // For matching against ascii equivalents + shouldMatchWordsOnly: false, }); } diff --git a/src/autocomplete/QueryMatcher.js b/src/autocomplete/QueryMatcher.js index 01fc251318..1b2ee1bc0d 100644 --- a/src/autocomplete/QueryMatcher.js +++ b/src/autocomplete/QueryMatcher.js @@ -63,6 +63,12 @@ export default class QueryMatcher { this.options = options; this.keys = options.keys; this.setObjects(objects); + + // By default, we remove any non-alphanumeric characters ([^A-Za-z0-9_]) from the + // query and the value being queried before matching + if (this.options.shouldMatchWordsOnly === undefined) { + this.options.shouldMatchWordsOnly = true; + } } setObjects(objects: Array) { @@ -70,9 +76,16 @@ export default class QueryMatcher { } match(query: String): Array { - query = query.toLowerCase().replace(/[^\w]/g, ''); + query = query.toLowerCase(); + if (this.options.shouldMatchWordsOnly) { + query = query.replace(/[^\w]/g, ''); + } const results = _sortedUniq(_sortBy(_flatMap(this.keyMap.keys, (key) => { - return key.toLowerCase().replace(/[^\w]/g, '').indexOf(query) >= 0 ? this.keyMap.objectMap[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; } diff --git a/src/stripped-emoji.json b/src/stripped-emoji.json index 6971c1496d..fc72dd3441 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"},{"name":"smiling face with open mouth","shortname":":smiley:","category":"people","emoji_order":"5"},{"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"},{"name":"smiling face with open mouth and tightly-closed eyes","shortname":":laughing:","category":"people","emoji_order":"8"},{"name":"smiling face with halo","shortname":":innocent:","category":"people","emoji_order":"9"},{"name":"winking face","shortname":":wink:","category":"people","emoji_order":"10"},{"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"},{"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"},{"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"},{"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"},{"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"},{"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"},{"name":"neutral face","shortname":":neutral_face:","category":"people","emoji_order":"31"},{"name":"expressionless face","shortname":":expressionless:","category":"people","emoji_order":"32"},{"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"},{"name":"disappointed face","shortname":":disappointed:","category":"people","emoji_order":"37"},{"name":"worried face","shortname":":worried:","category":"people","emoji_order":"38"},{"name":"angry face","shortname":":angry:","category":"people","emoji_order":"39"},{"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"},{"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"},{"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"},{"name":"face screaming in fear","shortname":":scream:","category":"people","emoji_order":"51"},{"name":"fearful face","shortname":":fearful:","category":"people","emoji_order":"52"},{"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"},{"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"},{"name":"loudly crying face","shortname":":sob:","category":"people","emoji_order":"61"},{"name":"dizzy face","shortname":":dizzy_face:","category":"people","emoji_order":"62"},{"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"},{"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"},{"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"},{"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":"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":[" Date: Thu, 29 Jun 2017 15:07:06 +0100 Subject: [PATCH 307/481] Be sensible about handling up/down vs tab/tab-shift Fixes https://github.com/vector-im/riot-web/issues/4445 --- .../views/rooms/MessageComposerInput.js | 91 ++++++++++--------- 1 file changed, 50 insertions(+), 41 deletions(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index e07d2755ee..eadd807c08 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -558,55 +558,64 @@ export default class MessageComposerInput extends React.Component { return true; } - selectHistory = async (completion, delta) => { - if (completion == null) { - const newContent = this.historyManager.getItem(delta, this.state.isRichtextEnabled ? 'html' : 'markdown'); - if (!newContent) return false; - let editorState = EditorState.push( - this.state.editorState, - newContent, - 'insert-characters', - ); - - // Move selection to the end of the selected history - let newSelection = SelectionState.createEmpty(newContent.getLastBlock().getKey()); - newSelection = newSelection.merge({ - focusOffset: newContent.getLastBlock().getLength(), - anchorOffset: newContent.getLastBlock().getLength(), - }); - editorState = EditorState.forceSelection(editorState, newSelection); - - this.setState({editorState}); - return true; - } - return await this.setDisplayedCompletion(completion); + onUpArrow = (e) => { + this.onVerticalArrow(e, true); }; - onUpArrow = async (e) => { + onDownArrow = (e) => { + this.onVerticalArrow(e, false); + }; + + onVerticalArrow = (e, up) => { e.preventDefault(); - const completion = this.autocomplete.onUpArrow(); - return this.selectHistory(completion, -1); - }; - - onDownArrow = async (e) => { - e.preventDefault(); - const completion = this.autocomplete.onDownArrow(); - return this.selectHistory(completion, -1); - }; - - // tab and shift-tab are mapped to down and up arrow respectively - onTab = async (e) => { - e.preventDefault(); // we *never* want tab's default to happen, but we do want up/down sometimes + // Select history only if we are not currently auto-completing if (this.autocomplete.state.completionList.length === 0) { - // XXX THIS IS EVIL. We should not be emulating other keys when pressing other keys - // This causes issues such as https://github.com/vector-im/riot-web/issues/4445 - await this.autocomplete.forceComplete(); - this.onDownArrow(e); + return this.selectHistory(up); } else { - await (e.shiftKey ? this.onUpArrow : this.onDownArrow)(e); + return this.moveAutocompleteSelection(up); } }; + selectHistory = async (up) => { + const delta = up ? -1 : 1; + + const newContent = this.historyManager.getItem(delta, this.state.isRichtextEnabled ? 'html' : 'markdown'); + if (!newContent) return false; + let editorState = EditorState.push( + this.state.editorState, + newContent, + 'insert-characters', + ); + + // Move selection to the end of the selected history + let newSelection = SelectionState.createEmpty(newContent.getLastBlock().getKey()); + newSelection = newSelection.merge({ + focusOffset: newContent.getLastBlock().getLength(), + anchorOffset: newContent.getLastBlock().getLength(), + }); + editorState = EditorState.forceSelection(editorState, newSelection); + + this.setState({editorState}); + return true; + }; + + onTab = async (e) => { + e.preventDefault(); + if (this.autocomplete.state.completionList.length === 0) { + // Force completions to show for the text currently entered + await this.autocomplete.forceComplete(); + // Select the first item by moving "down" + await this.moveAutocompleteSelection(false); + } else { + await this.moveAutocompleteSelection(e.shiftKey); + } + }; + + moveAutocompleteSelection = (up) => { + const completion = up ? this.autocomplete.onUpArrow() : this.autocomplete.onDownArrow(); + return this.setDisplayedCompletion(completion); + }; + onEscape = async (e) => { e.preventDefault(); if (this.autocomplete) { From e5e7dec1318cd3c0b12df79a6f787dd60bfa81e4 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Thu, 29 Jun 2017 17:02:19 +0100 Subject: [PATCH 308/481] Fix #4422 by persisting the "currently composed" message This allows for browsing through history without losing the message currently being composed. --- src/ComposerHistoryManager.js | 12 +++++----- .../views/rooms/MessageComposerInput.js | 22 +++++++++++++++++++ 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/ComposerHistoryManager.js b/src/ComposerHistoryManager.js index 3e19a78bfe..1ae836574b 100644 --- a/src/ComposerHistoryManager.js +++ b/src/ComposerHistoryManager.js @@ -52,21 +52,19 @@ export default class ComposerHistoryManager { history: Array = []; prefix: string; lastIndex: number = 0; - currentIndex: number = -1; + currentIndex: number = 0; constructor(roomId: string, prefix: string = 'mx_composer_history_') { this.prefix = prefix + roomId; // TODO: Performance issues? - for(; sessionStorage.getItem(`${this.prefix}[${this.lastIndex}]`); this.lastIndex++, this.currentIndex++) { + let item; + for(; item = sessionStorage.getItem(`${this.prefix}[${this.currentIndex}]`); this.currentIndex++) { this.history.push( - Object.assign( - new HistoryItem(), - JSON.parse(sessionStorage.getItem(`${this.prefix}[${this.lastIndex}]`)), - ), + Object.assign(new HistoryItem(), JSON.parse(item)), ); } - this.currentIndex--; + this.lastIndex = this.currentIndex; } addItem(message: string, format: MessageFormat) { diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index eadd807c08..8764356365 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -134,6 +134,10 @@ export default class MessageComposerInput extends React.Component { // the original editor state, before we started tabbing through completions originalEditorState: null, + + // 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 @@ -579,6 +583,24 @@ export default class MessageComposerInput extends React.Component { selectHistory = async (up) => { const delta = up ? -1 : 1; + // True if we are not currently selecting history, but composing a message + if (this.historyManager.currentIndex === this.historyManager.history.length) { + // We can't go any further - there isn't any more history, so nop. + if (!up) { + return; + } + this.setState({ + currentlyComposedEditorState: this.state.editorState, + }); + } else if (this.historyManager.currentIndex + delta === this.historyManager.history.length) { + // True when we return to the message being composed currently + this.setState({ + editorState: this.state.currentlyComposedEditorState, + }); + this.historyManager.currentIndex = this.historyManager.history.length; + return; + } + const newContent = this.historyManager.getItem(delta, this.state.isRichtextEnabled ? 'html' : 'markdown'); if (!newContent) return false; let editorState = EditorState.push( From f99c540b3daeadfc3a38a964d518b28ac81f1097 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 29 Jun 2017 17:03:05 +0100 Subject: [PATCH 309/481] Groups page / Create Group dialog --- src/components/structures/MyGroups.js | 112 +++++++++++ .../views/dialogs/CreateGroupDialog.js | 190 ++++++++++++++++++ 2 files changed, 302 insertions(+) create mode 100644 src/components/structures/MyGroups.js create mode 100644 src/components/views/dialogs/CreateGroupDialog.js diff --git a/src/components/structures/MyGroups.js b/src/components/structures/MyGroups.js new file mode 100644 index 0000000000..a3459a16c7 --- /dev/null +++ b/src/components/structures/MyGroups.js @@ -0,0 +1,112 @@ +/* +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 React from 'react'; +import sdk from '../../index'; +import { _t } from '../../languageHandler'; +import WithMatrixClient from '../../wrappers/WithMatrixClient'; +import AccessibleButton from '../views/elements/AccessibleButton'; +import dis from '../../dispatcher'; +import PropTypes from 'prop-types'; +import Modal from '../../Modal'; + +const GroupTile = React.createClass({ + displayName: 'GroupTile', + + propTypes: { + groupId: PropTypes.string.isRequired, + }, + + onClick: function(e) { + e.preventDefault(); + dis.dispatch({ + action: 'view_group', + group_id: this.props.groupId, + }); + }, + + render: function() { + return {this.props.groupId}; + } +}); + +module.exports = WithMatrixClient(React.createClass({ + displayName: 'GroupList', + + propTypes: { + matrixClient: React.PropTypes.object.isRequired, + }, + + getInitialState: function() { + return { + groups: null, + error: null, + }; + }, + + componentWillMount: function() { + this._fetch(); + }, + + componentWillUnmount: function() { + }, + + _onCreateGroupClick: function() { + const CreateGroupDialog = sdk.getComponent("dialogs.CreateGroupDialog"); + Modal.createDialog(CreateGroupDialog); + }, + + _fetch: function() { + this.props.matrixClient.getJoinedGroups().done((result) => { + this.setState({groups: result.groups, error: null}); + }, (err) => { + this.setState({result: null, error: err}); + }); + }, + + render: function() { + const Loader = sdk.getComponent("elements.Spinner"); + const SimpleRoomHeader = sdk.getComponent('rooms.SimpleRoomHeader'); + + let content; + if (this.state.groups) { + let groupNodes = []; + this.state.groups.forEach((g) => { + groupNodes.push( +
+ +
+ ); + }); + content =
{groupNodes}
; + } else if (this.state.error) { + content =
+ Error whilst fetching joined groups +
; + } + + return
+ +
+ + {_t('Create a new group')} + +
+ You are a member of these groups: + {content} +
; + }, +})); diff --git a/src/components/views/dialogs/CreateGroupDialog.js b/src/components/views/dialogs/CreateGroupDialog.js new file mode 100644 index 0000000000..64984ebf5c --- /dev/null +++ b/src/components/views/dialogs/CreateGroupDialog.js @@ -0,0 +1,190 @@ +/* +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 React from 'react'; +import sdk from '../../../index'; +import dis from '../../../dispatcher'; +import { _t } from '../../../languageHandler'; +import MatrixClientPeg from '../../../MatrixClientPeg'; +import AccessibleButton from '../elements/AccessibleButton'; + +// We match fairly liberally and leave it up to the server to reject if +// there are invalid characters etc. +const GROUP_REGEX = /^\+(.*?):(.*)$/; + +export default React.createClass({ + displayName: 'CreateGroupDialog', + propTypes: { + onFinished: React.PropTypes.func.isRequired, + }, + + getInitialState: function() { + return { + groupName: '', + groupId: '', + groupError: null, + creating: false, + createError: null, + }; + }, + + _onGroupNameChange: function(e) { + this.setState({ + groupName: e.target.value, + }); + }, + + _onGroupIdChange: function(e) { + this.setState({ + groupId: e.target.value, + }); + }, + + _onGroupIdBlur: function(e) { + this._checkGroupId(); + }, + + _checkGroupId: function(e) { + const parsedGroupId = this._parseGroupId(this.state.groupId); + let error = null; + if (parsedGroupId === null) { + error = _t("Group IDs must be of the form +localpart:%(domain)s", {domain: MatrixClientPeg.get().getDomain()}); + } else { + const localpart = parsedGroupId[0]; + const domain = parsedGroupId[1]; + if (domain !== MatrixClientPeg.get().getDomain()) { + error = _t( + "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s", + {domain: MatrixClientPeg.get().getDomain()} + ); + } + } + this.setState({ + groupIdError: error, + }); + return error; + }, + + _onFormSubmit: function(e) { + e.preventDefault(); + + if (this._checkGroupId()) return; + + const parsedGroupId = this._parseGroupId(this.state.groupId); + const profile = {}; + if (this.state.groupName !== '') { + profile.name = this.state.groupName; + } + this.setState({creating: true}); + MatrixClientPeg.get().createGroup({ + localpart: parsedGroupId[0], + profile: profile, + }).then((result) => { + dis.dispatch({ + action: 'view_group', + group_id: result.group_id, + }); + this.props.onFinished(true); + }).catch((e) => { + this.setState({createError: e}); + }).finally(() => { + this.setState({creating: false}); + }).done(); + }, + + _onCancel: function() { + this.props.onFinished(false); + }, + + /** + * Parse a string that may be a group ID + * If the string is a valid group ID, return a list of [localpart, domain], + * otherwise return null. + */ + _parseGroupId: function(groupId) { + const matches = GROUP_REGEX.exec(this.state.groupId); + if (!matches || matches.length < 3) { + return null; + } + return [matches[1], matches[2]]; + }, + + render: function() { + const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); + const Loader = sdk.getComponent("elements.Spinner"); + + if (this.state.creating) { + return ; + } + + let createErrorNode; + if (this.state.createError) { + // XXX: We should catch errcodes and give sensible i18ned messages for them, + // rather than displaying what the server gives us, but synapse doesn't give + // any yet. + createErrorNode =
+
{_t('Room creation failed')}
+
{this.state.createError.message}
+
; + } + + return ( + +
+
+
+ +
+
+ +
+
+
+ +
+
+ +
+
+ {this.state.groupIdError} +
+ {createErrorNode} +
+
+ + +
+
+
+ ); + }, +}); From d6ecec19871db15bafe2d6b6b290caeef62a8d2b Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 29 Jun 2017 17:17:43 +0100 Subject: [PATCH 310/481] Behave better on rooms with no avatar / name Also add translation strings --- src/components/structures/GroupView.js | 33 ++++++++++++++++++-------- src/i18n/strings/en_EN.json | 11 ++++++++- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 71deaf529b..f51e21a9ad 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -71,29 +71,42 @@ module.exports = React.createClass({ return ; } else if (this.state.summary) { const summary = this.state.summary; - let avatarUrl = null; + let avatarNode = null; if (summary.profile && summary.profile.avatar_url) { - avatarUrl = MatrixClientPeg.get().mxcUrlToHttp(summary.profile.avatar_url); + avatarNode = ; } let description = null; if (summary.profile && summary.profile.long_description) { description = sanitizedHtmlNode(summary.profile.long_description); } + + let nameNode; + if (summary.profile.name) { + nameNode =
+ {summary.profile.name} + + ({this.props.groupId}) + +
; + } else { + nameNode =
+ {this.props.groupId} +
; + } + return (
- + {avatarNode}
-
- {summary.profile.name} - - ({this.props.groupId}) - -
+ {nameNode}
{summary.profile.short_description}
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 6593c5aab8..e4a13e0689 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -927,5 +927,14 @@ "This Home server does not support groups": "This Home server does not support groups", "Loading device info...": "Loading device info...", "Groups": "Groups", - "Create a new group": "Create a new group" + "Create a new group": "Create a new group", + "Create Group": "Create Group", + "Group Name": "Group Name", + "Example": "Example", + "Create": "Create", + "Group ID": "Group ID", + "+example:%(domain)s": "+example:%(domain)s", + "Group IDs must be of the form +localpart:%(domain)s": "Group IDs must be of the form +localpart:%(domain)s", + "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s", + "Room creation failed": "Room creation failed" } From 8b8260c509c8ae7234c6e4d935191a6b37603068 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Thu, 29 Jun 2017 17:22:34 +0100 Subject: [PATCH 311/481] Move cursor to end of editor when quoting When quoting a message, move the selection to the end of the input box. Fixes https://github.com/vector-im/riot-web/issues/2336 --- src/components/views/rooms/MessageComposerInput.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 8764356365..baa9761bd7 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -229,7 +229,8 @@ export default class MessageComposerInput extends React.Component { if (this.state.isRichtextEnabled) { contentState = Modifier.setBlockType(contentState, startSelection, 'blockquote'); } - const editorState = EditorState.push(this.state.editorState, contentState, 'insert-characters'); + let editorState = EditorState.push(this.state.editorState, contentState, 'insert-characters'); + editorState = EditorState.moveSelectionToEnd(editorState); this.onEditorContentChanged(editorState); editor.focus(); } From 84e13d54370a520f4f3215d337825585427d8658 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 29 Jun 2017 17:51:38 +0100 Subject: [PATCH 312/481] Add GroupAvatar to handle fallback images etc. And a few misc tidyups --- src/components/structures/GroupView.js | 21 +++---- src/components/structures/MyGroups.js | 2 +- src/components/views/avatars/GroupAvatar.js | 62 +++++++++++++++++++ .../views/dialogs/CreateGroupDialog.js | 3 +- 4 files changed, 74 insertions(+), 14 deletions(-) create mode 100644 src/components/views/avatars/GroupAvatar.js diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index f51e21a9ad..0f10ba60e2 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -15,17 +15,18 @@ limitations under the License. */ import React from 'react'; +import PropTypes from 'prop-types'; import MatrixClientPeg from '../../MatrixClientPeg'; import sdk from '../../index'; import { sanitizedHtmlNode } from '../../HtmlUtils'; import { _t } from '../../languageHandler'; -module.exports = React.createClass({ +export default React.createClass({ displayName: 'GroupView', propTypes: { - groupId: React.PropTypes.string.isRequired, + groupId: PropTypes.string.isRequired, }, getInitialState: function() { @@ -64,21 +65,13 @@ module.exports = React.createClass({ }, render: function() { - const BaseAvatar = sdk.getComponent("avatars.BaseAvatar"); + const GroupAvatar = sdk.getComponent("avatars.GroupAvatar"); const Loader = sdk.getComponent("elements.Spinner"); if (this.state.summary === null && this.state.error === null) { return ; } else if (this.state.summary) { const summary = this.state.summary; - let avatarNode = null; - if (summary.profile && summary.profile.avatar_url) { - avatarNode = ; - } let description = null; if (summary.profile && summary.profile.long_description) { description = sanitizedHtmlNode(summary.profile.long_description); @@ -103,7 +96,11 @@ module.exports = React.createClass({
- {avatarNode} +
{nameNode} diff --git a/src/components/structures/MyGroups.js b/src/components/structures/MyGroups.js index a3459a16c7..cd0dda33f9 100644 --- a/src/components/structures/MyGroups.js +++ b/src/components/structures/MyGroups.js @@ -43,7 +43,7 @@ const GroupTile = React.createClass({ } }); -module.exports = WithMatrixClient(React.createClass({ +export default WithMatrixClient(React.createClass({ displayName: 'GroupList', propTypes: { diff --git a/src/components/views/avatars/GroupAvatar.js b/src/components/views/avatars/GroupAvatar.js new file mode 100644 index 0000000000..36687af2ca --- /dev/null +++ b/src/components/views/avatars/GroupAvatar.js @@ -0,0 +1,62 @@ +/* +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 React from 'react'; +import PropTypes from 'prop-types'; +import sdk from '../../../index'; +import MatrixClientPeg from '../../../MatrixClientPeg'; + +export default React.createClass({ + displayName: 'GroupAvatar', + + propTypes: { + groupId: PropTypes.string, + groupAvatarUrl: PropTypes.string, + width: PropTypes.number, + height: PropTypes.number, + resizeMethod: PropTypes.string, + }, + + getDefaultProps: function() { + return { + width: 36, + height: 36, + resizeMethod: 'crop', + }; + }, + + getGroupAvatarUrl: function(props) { + return MatrixClientPeg.get().mxcUrlToHttp( + this.props.groupAvatarUrl, + this.props.width, + this.props.height, + this.props.resizeMethod, + ); + }, + + render: function() { + const BaseAvatar = sdk.getComponent("avatars.BaseAvatar"); + + return ( + + ); + } +}); diff --git a/src/components/views/dialogs/CreateGroupDialog.js b/src/components/views/dialogs/CreateGroupDialog.js index 64984ebf5c..5e050b53b2 100644 --- a/src/components/views/dialogs/CreateGroupDialog.js +++ b/src/components/views/dialogs/CreateGroupDialog.js @@ -15,6 +15,7 @@ limitations under the License. */ import React from 'react'; +import PropTypes from 'prop-types'; import sdk from '../../../index'; import dis from '../../../dispatcher'; import { _t } from '../../../languageHandler'; @@ -28,7 +29,7 @@ const GROUP_REGEX = /^\+(.*?):(.*)$/; export default React.createClass({ displayName: 'CreateGroupDialog', propTypes: { - onFinished: React.PropTypes.func.isRequired, + onFinished: PropTypes.func.isRequired, }, getInitialState: function() { From 38923623861ccf3b86753c3f5697e475658e35c6 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 29 Jun 2017 18:30:16 +0100 Subject: [PATCH 313/481] Make my groups page a bit saner --- src/components/structures/MyGroups.js | 8 ++++++-- src/i18n/strings/en_EN.json | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/components/structures/MyGroups.js b/src/components/structures/MyGroups.js index cd0dda33f9..658a17c88f 100644 --- a/src/components/structures/MyGroups.js +++ b/src/components/structures/MyGroups.js @@ -91,11 +91,16 @@ export default WithMatrixClient(React.createClass({
); }); - content =
{groupNodes}
; + content =
+
{_t('You are a member of these groups')}:
+ {groupNodes} +
; } else if (this.state.error) { content =
Error whilst fetching joined groups
; + } else { + content = ; } return
@@ -105,7 +110,6 @@ export default WithMatrixClient(React.createClass({ {_t('Create a new group')}
- You are a member of these groups: {content}
; }, diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index e4a13e0689..a3b81136d6 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -936,5 +936,6 @@ "+example:%(domain)s": "+example:%(domain)s", "Group IDs must be of the form +localpart:%(domain)s": "Group IDs must be of the form +localpart:%(domain)s", "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s", - "Room creation failed": "Room creation failed" + "Room creation failed": "Room creation failed", + "You are a member of these groups": "You are a member of these groups" } From e7a2c3b975c96c2c12691a7fe41f46b21e6fcca3 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Thu, 29 Jun 2017 18:08:57 +0100 Subject: [PATCH 314/481] Only send HTML when using RTE when necessary When there are no styled blocks or inline styles applied within blocks, just send text instead of HTML. Also, don't add
for the last

(the last block). Fixes https://github.com/vector-im/riot-web/issues/3147 --- src/HtmlUtils.js | 9 ++++-- .../views/rooms/MessageComposerInput.js | 31 ++++++++++++++++--- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/HtmlUtils.js b/src/HtmlUtils.js index ee679391cc..747e18e679 100644 --- a/src/HtmlUtils.js +++ b/src/HtmlUtils.js @@ -85,7 +85,6 @@ export function charactersToImageNode(alt, useSvg, ...unicode) { export function processHtmlForSending(html: string): string { - const contentDiv = document.createElement('div'); contentDiv.innerHTML = html; @@ -94,10 +93,14 @@ export function processHtmlForSending(html: string): string { } let contentHTML = ""; - for (let i=0; i'; + contentHTML += element.innerHTML; + // Don't add a
for the last

+ if (i !== contentDiv.children.length - 1) { + contentHTML += '
'; + } } else if (element.tagName.toLowerCase() === 'pre') { // Replace "
\n" with "\n" within `

` tags because the 
is // redundant. This is a workaround for a bug in draft-js-export-html: diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index baa9761bd7..3e2748e382 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -512,9 +512,30 @@ export default class MessageComposerInput extends React.Component { } if (this.state.isRichtextEnabled) { - contentHTML = HtmlUtils.processHtmlForSending( - RichText.contentStateToHTML(contentState), - ); + // We should only send HTML if any block is styled or contains inline style + let shouldSendHTML = false; + const blocks = contentState.getBlocksAsArray(); + if (blocks.some((block) => block.getType() !== 'unstyled')) { + shouldSendHTML = true; + } else { + const characterLists = blocks.map((block) => block.getCharacterList()); + // For each block of characters, determine if any inline styles are applied + // and if yes, send HTML + characterLists.forEach((characters) => { + const numberOfStylesForCharacters = characters.map( + (character) => character.getStyle().toArray().length, + ).toArray(); + // If any character has more than 0 inline styles applied, send HTML + if (numberOfStylesForCharacters.some((styles) => styles > 0)) { + shouldSendHTML = true; + } + }); + } + if (shouldSendHTML) { + contentHTML = HtmlUtils.processHtmlForSending( + RichText.contentStateToHTML(contentState), + ); + } } else { const md = new Markdown(contentText); if (md.isPlainText()) { @@ -536,8 +557,8 @@ export default class MessageComposerInput extends React.Component { } this.historyManager.addItem( - this.state.isRichtextEnabled ? contentHTML : contentState.getPlainText(), - this.state.isRichtextEnabled ? 'html' : 'markdown'); + contentHTML ? contentHTML : contentText, + contentHTML ? 'html' : 'markdown'); let sendMessagePromise; if (contentHTML) { From 80a73a50f5b3c76ef48061f790cce5ae53d192f7 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 30 Jun 2017 12:39:08 +0100 Subject: [PATCH 315/481] Update tests When sending the letter "a" we expect it to be sent as a text message when RTE is enabled because we now detect that there is no formatting or styled blocks in the composer. We also expect emoji to be sent as plaintext if there is no formatting --- test/components/views/rooms/MessageComposerInput-test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/components/views/rooms/MessageComposerInput-test.js b/test/components/views/rooms/MessageComposerInput-test.js index e2e2836a50..a68f71857f 100644 --- a/test/components/views/rooms/MessageComposerInput-test.js +++ b/test/components/views/rooms/MessageComposerInput-test.js @@ -99,7 +99,7 @@ describe('MessageComposerInput', () => { }); it('should not change content unnecessarily on Markdown -> RTE conversion', () => { - const spy = sinon.spy(client, 'sendHtmlMessage'); + const spy = sinon.spy(client, 'sendTextMessage'); mci.enableRichtext(false); addTextToDraft('a'); mci.handleKeyCommand('toggle-mode'); @@ -110,7 +110,7 @@ describe('MessageComposerInput', () => { }); it('should send emoji messages in rich text', () => { - const spy = sinon.spy(client, 'sendHtmlMessage'); + const spy = sinon.spy(client, 'sendTextMessage'); mci.enableRichtext(true); addTextToDraft('☹'); mci.handleReturn(sinon.stub()); From 030358e764b4a4e54922051bb869280db9a8d44d Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 30 Jun 2017 12:56:19 +0100 Subject: [PATCH 316/481] Clarify test names --- test/components/views/rooms/MessageComposerInput-test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/components/views/rooms/MessageComposerInput-test.js b/test/components/views/rooms/MessageComposerInput-test.js index a68f71857f..80fd158608 100644 --- a/test/components/views/rooms/MessageComposerInput-test.js +++ b/test/components/views/rooms/MessageComposerInput-test.js @@ -109,7 +109,7 @@ describe('MessageComposerInput', () => { expect(spy.args[0][1]).toEqual('a'); }); - it('should send emoji messages in rich text', () => { + it('should send emoji messages when rich text is enabled', () => { const spy = sinon.spy(client, 'sendTextMessage'); mci.enableRichtext(true); addTextToDraft('☹'); @@ -118,7 +118,7 @@ describe('MessageComposerInput', () => { expect(spy.calledOnce).toEqual(true, 'should send message'); }); - it('should send emoji messages in Markdown', () => { + it('should send emoji messages when Markdown is enabled', () => { const spy = sinon.spy(client, 'sendTextMessage'); mci.enableRichtext(false); addTextToDraft('☹'); From e5c1aeb14c5a4807ef06aa7fa686a3264a2e6d36 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 30 Jun 2017 13:59:49 +0100 Subject: [PATCH 317/481] Make the Groups page look more like the design --- src/components/structures/LoggedInView.js | 1 - src/components/structures/MyGroups.js | 42 +++++++++++++++++++---- src/i18n/strings/en_EN.json | 5 ++- 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js index a473df7c5b..edc918e2a4 100644 --- a/src/components/structures/LoggedInView.js +++ b/src/components/structures/LoggedInView.js @@ -251,7 +251,6 @@ export default React.createClass({ case PageTypes.MyGroups: page_element = ; - if (!this.props.collapse_rhs) right_panel = ; break; case PageTypes.CreateRoom: diff --git a/src/components/structures/MyGroups.js b/src/components/structures/MyGroups.js index 658a17c88f..222e424b2d 100644 --- a/src/components/structures/MyGroups.js +++ b/src/components/structures/MyGroups.js @@ -16,7 +16,7 @@ limitations under the License. import React from 'react'; import sdk from '../../index'; -import { _t } from '../../languageHandler'; +import { _t, _tJsx } from '../../languageHandler'; import WithMatrixClient from '../../wrappers/WithMatrixClient'; import AccessibleButton from '../views/elements/AccessibleButton'; import dis from '../../dispatcher'; @@ -44,7 +44,7 @@ const GroupTile = React.createClass({ }); export default WithMatrixClient(React.createClass({ - displayName: 'GroupList', + displayName: 'MyGroups', propTypes: { matrixClient: React.PropTypes.object.isRequired, @@ -80,6 +80,7 @@ export default WithMatrixClient(React.createClass({ render: function() { const Loader = sdk.getComponent("elements.Spinner"); const SimpleRoomHeader = sdk.getComponent('rooms.SimpleRoomHeader'); + const TintableSvg = sdk.getComponent("elements.TintableSvg"); let content; if (this.state.groups) { @@ -105,12 +106,39 @@ export default WithMatrixClient(React.createClass({ return
-
- - {_t('Create a new group')} - +
+
+
+ {_t('Create a new group')} +
+ + + + {_t( + 'Create a group to represent your community! '+ + 'Define a set of rooms and your own custom homepage '+ + 'to mark out your space in the Matrix universe.' + )} +
+
+
+ {_t('Join an existing group')} +
+ + + + {_tJsx( + 'To join an exisitng group you\'ll have to '+ + 'know its group identifier; this will look '+ + 'something like +example:matrix.org.', + /(.*)<\/i>/, + (sub) => {sub}, + )} +
+
+
+ {content}
- {content}
; }, })); diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index a3b81136d6..7de380e1d5 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -937,5 +937,8 @@ "Group IDs must be of the form +localpart:%(domain)s": "Group IDs must be of the form +localpart:%(domain)s", "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s", "Room creation failed": "Room creation failed", - "You are a member of these groups": "You are a member of these groups" + "You are a member of these groups": "You are a member of these groups", + "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.", + "Join an existing group": "Join an existing group", + "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org." } From 15cfe5b8e42a7019d13cbb7c76aa5db645644006 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 30 Jun 2017 14:27:26 +0100 Subject: [PATCH 318/481] Only allow history selection when on the first or last line (of a multi-line or otherwise message in the editor) --- .../views/rooms/MessageComposerInput.js | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 3e2748e382..4cd5772663 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -593,12 +593,36 @@ export default class MessageComposerInput extends React.Component { }; onVerticalArrow = (e, up) => { - e.preventDefault(); // Select history only if we are not currently auto-completing if (this.autocomplete.state.completionList.length === 0) { - return this.selectHistory(up); + // Don't go back in history if we're in the middle of a multi-line message + const selection = this.state.editorState.getSelection(); + const blockKey = selection.getStartKey(); + 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; + } + + if (blockKey === lastBlock.getKey()) { + const textAfterCursor = lastBlock.getText().slice(selectionOffset); + canMoveDown = textAfterCursor.indexOf('\n') === -1; + } + + if ((up && !canMoveUp) || (!up && !canMoveDown)) return; + + const selected = this.selectHistory(up); + if (selected) { + // We're selecting history, so prevent the key event from doing anything else + e.preventDefault(); + } } else { - return this.moveAutocompleteSelection(up); + this.moveAutocompleteSelection(up); } }; From b8941f76d363b4d206ae8f863810e80ad8093b7f Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Fri, 30 Jun 2017 15:42:19 +0100 Subject: [PATCH 319/481] Fix bug which breaks the close button on scalar --- src/components/views/rooms/AppsDrawer.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 6545ac1ce5..b535b148ac 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -180,11 +180,6 @@ module.exports = React.createClass({ null; Modal.createDialog(IntegrationsManager, { src: src, - onFinished: ()=>{ - if (e) { - this.props.onCancelClick(e); - } - }, }, "mx_IntegrationsManager"); }, From 11309f34e382c3f665bc854ba8b38398c396a6fc Mon Sep 17 00:00:00 2001 From: Kegsay Date: Fri, 30 Jun 2017 15:42:51 +0100 Subject: [PATCH 320/481] Reference count calls to start/stopListening on ScalarMessaging (#1164) Otherwise component mounting/unmounting can race and you end up with nothing listening. --- src/ScalarMessaging.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/ScalarMessaging.js b/src/ScalarMessaging.js index 49f1a5c6f9..1104458f22 100644 --- a/src/ScalarMessaging.js +++ b/src/ScalarMessaging.js @@ -564,12 +564,27 @@ const onMessage = function(event) { }); }; +let listenerCount = 0; module.exports = { startListening: function() { - window.addEventListener("message", onMessage, false); + if (listenerCount === 0) { + window.addEventListener("message", onMessage, false); + } + listenerCount += 1; }, stopListening: function() { - window.removeEventListener("message", onMessage); + listenerCount -= 1; + if (listenerCount === 0) { + window.removeEventListener("message", onMessage); + } + if (listenerCount < 0) { + // Make an error so we get a stack trace + const e = new Error( + "ScalarMessaging: mismatched startListening / stopListening detected." + + " Negative count" + ); + console.error(e); + } }, }; From 01b7d7bb7c05b194c0a2ec0198652951b0f32528 Mon Sep 17 00:00:00 2001 From: turt2live Date: Fri, 30 Jun 2017 08:44:56 -0600 Subject: [PATCH 321/481] Don't pad 12h timestamps Signed-off-by: Travis Ralston --- src/DateUtils.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/DateUtils.js b/src/DateUtils.js index 545d92dd3b..79f5e1cfc0 100644 --- a/src/DateUtils.js +++ b/src/DateUtils.js @@ -55,7 +55,6 @@ function twelveHourTime(date) { let hours = date.getHours() % 12; const minutes = pad(date.getMinutes()); const ampm = date.getHours() >= 12 ? 'PM' : 'AM'; - hours = pad(hours ? hours : 12); return `${hours}:${minutes}${ampm}`; } From 6bc40a112c1a87cf3f14a7b93086ad48f1bb006d Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 30 Jun 2017 15:45:10 +0100 Subject: [PATCH 322/481] Always store sent MD messages as MD in history Because converting them to HTML when they got sent as HTML seems a bit pointless when they're just going to get transformed back again when retrieved from history. Fixes regression https://github.com/vector-im/riot-web/issues/4465 --- src/components/views/rooms/MessageComposerInput.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 4cd5772663..aae91620d8 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -556,9 +556,15 @@ export default class MessageComposerInput extends React.Component { sendTextFn = this.client.sendEmoteMessage; } - this.historyManager.addItem( - contentHTML ? contentHTML : contentText, - contentHTML ? 'html' : 'markdown'); + if (this.state.isRichtextEnabled) { + this.historyManager.addItem( + contentHTML ? contentHTML : contentText, + contentHTML ? 'html' : 'markdown', + ); + } else { + // Always store MD input as input history + this.historyManager.addItem(contentText, 'markdown'); + } let sendMessagePromise; if (contentHTML) { From c07057d1d41d769fe48db5ca69c8c1d65f675d63 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 30 Jun 2017 16:05:19 +0100 Subject: [PATCH 323/481] Extract props we don't want to pass to BaseAvatar --- src/components/views/avatars/GroupAvatar.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/views/avatars/GroupAvatar.js b/src/components/views/avatars/GroupAvatar.js index 36687af2ca..4253b2f5b7 100644 --- a/src/components/views/avatars/GroupAvatar.js +++ b/src/components/views/avatars/GroupAvatar.js @@ -49,13 +49,15 @@ export default React.createClass({ render: function() { const BaseAvatar = sdk.getComponent("avatars.BaseAvatar"); + // extract the props we use from props so we can pass any others through + const {groupId, groupAvatarUrl, wifth, height, resizeMethod, ...otherProps} = this.props; return ( ); } From e058dd58e5893b5a8c0b0efc3827a258a434bacd Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 30 Jun 2017 09:29:40 -0600 Subject: [PATCH 324/481] Fix overzealous code deletion Signed-off-by: Travis Ralston --- src/DateUtils.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/DateUtils.js b/src/DateUtils.js index 79f5e1cfc0..56dd048945 100644 --- a/src/DateUtils.js +++ b/src/DateUtils.js @@ -55,6 +55,7 @@ function twelveHourTime(date) { let hours = date.getHours() % 12; const minutes = pad(date.getMinutes()); const ampm = date.getHours() >= 12 ? 'PM' : 'AM'; + hours = hours ? hours : 12; // convert 0 -> 12 return `${hours}:${minutes}${ampm}`; } From b315ed630e7ed2756854b6c17f10bd852d4cc0a9 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 30 Jun 2017 16:31:40 +0100 Subject: [PATCH 325/481] Match by emoji ascii regex first before shorthand Plaintext emojis that start with ":" will also match against the shorthand regex but the match won't include the important part of the plaintext emoji. This means some emoji like ":)" won't be matched. To fix this, put the ascii emoji regex first so that the match will be plaintext or otherwise it will fall through to the shorthand match (if there is one). Fixes https://github.com/vector-im/riot-web/issues/4467 --- src/autocomplete/EmojiProvider.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/autocomplete/EmojiProvider.js b/src/autocomplete/EmojiProvider.js index 36aad68639..5afcbedd2e 100644 --- a/src/autocomplete/EmojiProvider.js +++ b/src/autocomplete/EmojiProvider.js @@ -41,7 +41,7 @@ const CATEGORY_ORDER = [ ]; // Match for ":wink:" or ascii-style ";-)" provided by emojione -const EMOJI_REGEX = new RegExp('(:\\w*:?|' + asciiRegexp + ')', 'g'); +const EMOJI_REGEX = new RegExp('(' + asciiRegexp + '|:\\w*:?)', 'g'); const EMOJI_SHORTNAMES = Object.keys(EmojiData).map((key) => EmojiData[key]).sort( (a, b) => { if (a.category === b.category) { From 9dba628f10f16fd616338631b5ab375f9ec51923 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 1 Jul 2017 12:55:43 +0100 Subject: [PATCH 326/481] add missing commands to the Autocomplete CommandProvider Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/autocomplete/CommandProvider.js | 32 +++++++++++++++++++++++++++++ src/i18n/strings/en_EN.json | 6 ++++++ 2 files changed, 38 insertions(+) diff --git a/src/autocomplete/CommandProvider.js b/src/autocomplete/CommandProvider.js index 205a3737dc..d48e2d7b37 100644 --- a/src/autocomplete/CommandProvider.js +++ b/src/autocomplete/CommandProvider.js @@ -21,6 +21,7 @@ import AutocompleteProvider from './AutocompleteProvider'; import Fuse from 'fuse.js'; 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 = [ { @@ -33,6 +34,16 @@ const COMMANDS = [ args: ' [reason]', description: 'Bans user with given id', }, + { + command: '/unban', + args: ' [reason]', + description: 'Unbans user with given id', + }, + { + command: '/op', + args: '', + description: 'Ops user with given id', + }, { command: '/deop', args: '', @@ -48,6 +59,16 @@ const COMMANDS = [ args: '', description: 'Joins room with given alias', }, + { + command: '/part', + args: '', + description: 'Leaves room with given alias', + }, + { + command: '/topic', + args: '', + description: 'Sets the room topic', + }, { command: '/kick', args: ' [reason]', @@ -63,6 +84,17 @@ const COMMANDS = [ args: '', description: 'Searches DuckDuckGo for results', }, + { + command: '/tint', + args: ' []', + description: 'Change colourscheme of current room', + }, + { + command: '/verify', + args: ' ', + description: 'Verify 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/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index a4dcb2873f..e3e64a808e 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -187,6 +187,7 @@ "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.", "Can't load user settings": "Can't load user settings", "Change Password": "Change Password", + "Change colourscheme of current room": "Change colourscheme of current room", "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.", "%(senderName)s changed their profile picture.": "%(senderName)s changed their profile picture.", "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s changed the power level of %(powerLevelDiffText)s.", @@ -376,6 +377,7 @@ "Labs": "Labs", "Last seen": "Last seen", "Leave room": "Leave room", + "Leaves room with given alias": "Leaves room with given alias", "left and rejoined": "left and rejoined", "left": "left", "%(targetName)s left the room.": "%(targetName)s left the room.", @@ -507,6 +509,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 panel": "Show panel", "Show Text Formatting Toolbar": "Show Text Formatting Toolbar", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Show timestamps in 12 hour format (e.g. 2:30pm)", @@ -581,6 +584,7 @@ "Unable to restore previous session": "Unable to restore previous session", "Unable to verify email address.": "Unable to verify email address.", "Unban": "Unban", + "Unbans user with given id": "Unbans user with given id", "%(senderName)s unbanned %(targetName)s.": "%(senderName)s unbanned %(targetName)s.", "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Unable to ascertain that the address this invite was sent to matches one associated with your account.", "Unable to capture screen": "Unable to capture screen", @@ -803,6 +807,7 @@ "Analytics": "Analytics", "Opt out of analytics": "Opt out of analytics", "Options": "Options", + "Ops user with given id": "Ops user with given id", "Riot collects anonymous analytics to allow us to improve the application.": "Riot collects anonymous analytics to allow us to improve the application.", "Passphrases must match": "Passphrases must match", "Passphrase must not be empty": "Passphrase must not be empty", @@ -835,6 +840,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", + "Verify a user, device, and pubkey tuple": "Verify 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", From fb61a5d68b6c5565995e82bda520c4a15b262555 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 1 Jul 2017 13:08:23 +0100 Subject: [PATCH 327/481] post-merge fix Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/autocomplete/CommandProvider.js | 4 ++-- src/i18n/strings/en_EN.json | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/autocomplete/CommandProvider.js b/src/autocomplete/CommandProvider.js index cefe48afa2..3b09c9dd2d 100644 --- a/src/autocomplete/CommandProvider.js +++ b/src/autocomplete/CommandProvider.js @@ -87,12 +87,12 @@ const COMMANDS = [ { command: '/tint', args: ' []', - description: 'Change colourscheme of current room', + description: 'Changes colourscheme of current room', }, { command: '/verify', args: ' ', - description: 'Verify a user, device, and pubkey tuple', + description: 'Verifies a user, device, and pubkey tuple', }, // Omitting `/markdown` as it only seems to apply to OldComposer ]; diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 397c2ecaaa..2d4eba3c2c 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 colourscheme of current room": "Changes colourscheme 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", @@ -512,6 +513,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", @@ -843,6 +845,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", From fde7d5eaf49413fc8442ca53dfd49a01233ed177 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 1 Jul 2017 13:36:28 +0100 Subject: [PATCH 328/481] make RoomHeader Topic use EmojiText to be emojione-friendly Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/views/rooms/RoomHeader.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index 19010d8a10..c60f5c37ae 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -255,7 +255,7 @@ module.exports = React.createClass({ } } if (topic) { - topic_el =
{ topic }
; + topic_el = { topic }; } } From e56203f2a135dccee38ebfc6cab45418bb8b381e Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 1 Jul 2017 14:13:32 +0100 Subject: [PATCH 329/481] de-lint RoomHeader, Avatar, SdkConfig, SlashCommands Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .eslintignore.errorfiles | 4 - src/Avatar.js | 20 +-- src/SdkConfig.js | 6 +- src/SlashCommands.js | 5 +- src/components/views/rooms/RoomHeader.js | 197 +++++++++++------------ 5 files changed, 109 insertions(+), 123 deletions(-) diff --git a/.eslintignore.errorfiles b/.eslintignore.errorfiles index ffd492d491..2d383ea675 100644 --- a/.eslintignore.errorfiles +++ b/.eslintignore.errorfiles @@ -9,7 +9,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 @@ -96,7 +95,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 @@ -148,9 +146,7 @@ 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 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/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/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/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index 19010d8a10..ce163003c0 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 = ( {_t("Save")} @@ -196,39 +189,41 @@ module.exports = React.createClass({ } if (this.props.onCancelClick) { - cancel_button = ; + cancelButton = ; } if (this.props.saving) { - var Spinner = sdk.getComponent("elements.Spinner"); + const Spinner = sdk.getComponent("elements.Spinner"); spinner =
; } - if (can_set_room_name) { - var RoomNameEditor = sdk.getComponent("rooms.RoomNameEditor"); + if (canSetRoomName) { + const RoomNameEditor = sdk.getComponent("rooms.RoomNameEditor"); name = ; - } - 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 =
 { _t("(~%(count)s results)", { count: this.props.searchInfo.searchCount }) }
; + if (this.props.searchInfo && + this.props.searchInfo.searchCount !== undefined && + this.props.searchInfo.searchCount !== null) { + searchStatus =
  + { _t("(~%(count)s results)", { count: this.props.searchInfo.searchCount }) } +
; } // 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', ''); + name = this.props.room.currentState.getStateEvents('m.room.name', ''); if (!name || !name.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({
; } - if (can_set_room_topic) { - var RoomTopicEditor = sdk.getComponent("rooms.RoomTopicEditor"); - topic_el = ; + if (canSetRoomTopic) { + const RoomTopicEditor = sdk.getComponent("rooms.RoomTopicEditor"); + topicElement = ; } 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 =
{ topic }
; + topicElement = +
{ topic }
; } } - var roomAvatar = null; - if (can_set_room_avatar) { + let roomAvatar = null; + if (canSetRoomAvatar) { roomAvatar = (
@@ -276,8 +272,7 @@ module.exports = React.createClass({
); - } - 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 = (
@@ -285,9 +280,8 @@ module.exports = React.createClass({ ); } - var settings_button; if (this.props.onSettingsClick) { - settings_button = + settingsButton = ; @@ -301,61 +295,58 @@ module.exports = React.createClass({ //
; // } - var forget_button; + let forgetButton; if (this.props.onForgetClick) { - forget_button = + forgetButton = ; } - let search_button; + let searchButton; if (this.props.onSearchClick && this.props.inRoom) { - search_button = + searchButton = ; } - var rightPanel_buttons; + let rightPanelButtons; if (this.props.collapsedRhs) { - rightPanel_buttons = + rightPanelButtons = ; } - var right_row; + let rightRow; if (!this.props.editing) { - right_row = + rightRow =
- { settings_button } - { forget_button } - { search_button } - { rightPanel_buttons } + { settingsButton } + { forgetButton } + { searchButton } + { rightPanelButtons }
; } - header = -
-
-
- { roomAvatar } -
-
- { name } - { topic_el } -
-
- {spinner} - {save_button} - {cancel_button} - {right_row} -
; - return (
- { header } +
+
+
+ { roomAvatar } +
+
+ { name } + { topicElement } +
+
+ {spinner} + {saveButton} + {cancelButton} + {rightRow} +
); }, From 09ae6bba0726ff74d0c893fd53c83fef3282938c Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 1 Jul 2017 14:15:26 +0100 Subject: [PATCH 330/481] de-lint BasePlatform Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .eslintignore.errorfiles | 1 - src/BasePlatform.js | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.eslintignore.errorfiles b/.eslintignore.errorfiles index 2d383ea675..c459422c78 100644 --- a/.eslintignore.errorfiles +++ b/.eslintignore.errorfiles @@ -9,7 +9,6 @@ src/autocomplete/DuckDuckGoProvider.js src/autocomplete/EmojiProvider.js src/autocomplete/RoomProvider.js src/autocomplete/UserProvider.js -src/BasePlatform.js src/CallHandler.js src/component-index.js src/components/structures/ContextualMenu.js 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; From b8ad0957b2434ae1deaf4b302f04f1c9e9158f97 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 1 Jul 2017 14:21:28 +0100 Subject: [PATCH 331/481] de-lint AddThreepid Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .eslintignore.errorfiles | 1 - src/AddThreepid.js | 16 ++++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/.eslintignore.errorfiles b/.eslintignore.errorfiles index c459422c78..6fbb51b0fd 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 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); }); } From b98c105dcc09166cc0dd7e9dc97ea29087deea13 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 1 Jul 2017 14:28:12 +0100 Subject: [PATCH 332/481] de-lint Skinner, RoomNotifs Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .eslintignore.errorfiles | 2 -- src/RoomNotifs.js | 30 ++++++++++-------------------- src/Skinner.js | 11 +++++------ 3 files changed, 15 insertions(+), 28 deletions(-) diff --git a/.eslintignore.errorfiles b/.eslintignore.errorfiles index 6fbb51b0fd..57639aa3a5 100644 --- a/.eslintignore.errorfiles +++ b/.eslintignore.errorfiles @@ -140,11 +140,9 @@ 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/Skinner.js src/stores/LifecycleStore.js src/TabComplete.js src/TabCompleteEntries.js 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/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; From fdd8df87b0ed1ee3c4c719c0234f7a30fad1462c Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 1 Jul 2017 14:31:59 +0100 Subject: [PATCH 333/481] de-lint PasswordReset Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .eslintignore.errorfiles | 1 - src/PasswordReset.js | 19 +++++++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/.eslintignore.errorfiles b/.eslintignore.errorfiles index 57639aa3a5..9fd55dca7f 100644 --- a/.eslintignore.errorfiles +++ b/.eslintignore.errorfiles @@ -132,7 +132,6 @@ src/MatrixClientPeg.js src/Modal.js src/Notifier.js src/ObjectUtils.js -src/PasswordReset.js src/PlatformPeg.js src/Presence.js src/ratelimitedfunc.js 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; From a270c852954793a74458c6ce1f0b5bfb099cf740 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 1 Jul 2017 14:34:20 +0100 Subject: [PATCH 334/481] de-lint Entities Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .eslintignore.errorfiles | 1 - src/Entities.js | 20 ++++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/.eslintignore.errorfiles b/.eslintignore.errorfiles index 9fd55dca7f..c8eff5868b 100644 --- a/.eslintignore.errorfiles +++ b/.eslintignore.errorfiles @@ -119,7 +119,6 @@ src/ContentMessages.js src/createRoom.js src/DateUtils.js src/email.js -src/Entities.js src/extend.js src/HtmlUtils.js src/ImageUtils.js 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 ( ); @@ -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 ( + 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); }); - } + }, }; From 68fb11d2bf65b64a33929a2feec638d7a168a4df Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 1 Jul 2017 14:35:40 +0100 Subject: [PATCH 335/481] de-lint LifecycleStore Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .eslintignore.errorfiles | 1 - src/stores/LifecycleStore.js | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.eslintignore.errorfiles b/.eslintignore.errorfiles index c8eff5868b..171eb36f35 100644 --- a/.eslintignore.errorfiles +++ b/.eslintignore.errorfiles @@ -141,7 +141,6 @@ src/RoomListSorter.js src/Rooms.js src/ScalarAuthClient.js src/ScalarMessaging.js -src/stores/LifecycleStore.js src/TabComplete.js src/TabCompleteEntries.js src/TextForEvent.js 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; From 7da14d7078da75ae04349feed2667e61703f722b Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 1 Jul 2017 14:38:32 +0100 Subject: [PATCH 336/481] de-lint ObjectUtils Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .eslintignore.errorfiles | 1 - src/ObjectUtils.js | 26 ++++++++++++++------------ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/.eslintignore.errorfiles b/.eslintignore.errorfiles index 171eb36f35..661cdebf41 100644 --- a/.eslintignore.errorfiles +++ b/.eslintignore.errorfiles @@ -130,7 +130,6 @@ src/Markdown.js src/MatrixClientPeg.js src/Modal.js src/Notifier.js -src/ObjectUtils.js src/PlatformPeg.js src/Presence.js src/ratelimitedfunc.js 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; } From b9379576094129ffee02b596fd3daaa93b043c73 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 1 Jul 2017 14:40:46 +0100 Subject: [PATCH 337/481] de-lint createRoom Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .eslintignore.errorfiles | 1 - src/createRoom.js | 22 +++++++++++----------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/.eslintignore.errorfiles b/.eslintignore.errorfiles index 661cdebf41..1814d7ee83 100644 --- a/.eslintignore.errorfiles +++ b/.eslintignore.errorfiles @@ -116,7 +116,6 @@ 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/extend.js diff --git a/src/createRoom.js b/src/createRoom.js index ce83f31c27..8aa15f315b 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 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'); From f514f1ff7488469eaade426a642e71a388200b4e Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 1 Jul 2017 14:42:12 +0100 Subject: [PATCH 338/481] de-lint DateUtils Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .eslintignore.errorfiles | 1 - src/DateUtils.js | 13 +++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.eslintignore.errorfiles b/.eslintignore.errorfiles index 1814d7ee83..06e810bd9c 100644 --- a/.eslintignore.errorfiles +++ b/.eslintignore.errorfiles @@ -116,7 +116,6 @@ src/components/views/voip/IncomingCallBox.js src/components/views/voip/VideoFeed.js src/components/views/voip/VideoView.js src/ContentMessages.js -src/DateUtils.js src/email.js src/extend.js src/HtmlUtils.js diff --git a/src/DateUtils.js b/src/DateUtils.js index 545d92dd3b..0f3aa01bc8 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()], From 8bf13f8f48cebae8851696e44cab7ec63fbc64fb Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 1 Jul 2017 14:43:18 +0100 Subject: [PATCH 339/481] de-lint email, extend Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .eslintignore.errorfiles | 2 -- src/email.js | 4 ++-- src/extend.js | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.eslintignore.errorfiles b/.eslintignore.errorfiles index 06e810bd9c..9d5525cac9 100644 --- a/.eslintignore.errorfiles +++ b/.eslintignore.errorfiles @@ -116,8 +116,6 @@ src/components/views/voip/IncomingCallBox.js src/components/views/voip/VideoFeed.js src/components/views/voip/VideoView.js src/ContentMessages.js -src/email.js -src/extend.js src/HtmlUtils.js src/ImageUtils.js src/Invite.js 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]; } From 661a0f3956a14526f66452d1dd73e09399230181 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 1 Jul 2017 14:50:22 +0100 Subject: [PATCH 340/481] de-lint Resend, RoomListSorter, UserActivity Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .eslintignore.errorfiles | 3 --- src/Resend.js | 16 ++++++---------- src/Roles.js | 2 +- src/RoomListSorter.js | 5 ++--- src/UserActivity.js | 29 ++++++++++++----------------- 5 files changed, 21 insertions(+), 34 deletions(-) diff --git a/.eslintignore.errorfiles b/.eslintignore.errorfiles index 9d5525cac9..3d4207caa2 100644 --- a/.eslintignore.errorfiles +++ b/.eslintignore.errorfiles @@ -129,10 +129,8 @@ src/Notifier.js src/PlatformPeg.js src/Presence.js src/ratelimitedfunc.js -src/Resend.js src/RichText.js src/Roles.js -src/RoomListSorter.js src/Rooms.js src/ScalarAuthClient.js src/ScalarMessaging.js @@ -142,7 +140,6 @@ 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/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/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); } } } From 9ef83b8dc009d709f3967b41d277de4b31daf8b1 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 1 Jul 2017 14:58:46 +0100 Subject: [PATCH 341/481] de-lint views/voip/* Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .eslintignore.errorfiles | 4 --- src/components/views/voip/CallView.js | 29 ++++++++--------- src/components/views/voip/IncomingCallBox.js | 23 ++++++-------- src/components/views/voip/VideoFeed.js | 2 +- src/components/views/voip/VideoView.js | 33 ++++++++++---------- 5 files changed, 41 insertions(+), 50 deletions(-) diff --git a/.eslintignore.errorfiles b/.eslintignore.errorfiles index 3d4207caa2..55eaf75e4b 100644 --- a/.eslintignore.errorfiles +++ b/.eslintignore.errorfiles @@ -111,10 +111,6 @@ 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/HtmlUtils.js src/ImageUtils.js 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 = (
{_t("Active call (%(roomName)s)", {roomName: callRoom.name})} @@ -147,6 +144,6 @@ module.exports = React.createClass({ { voice }
); - } + }, }); 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({
); - } + }, }); 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
); - } + }, }); From 86889b8e8c80afc13d9632594d25dbeb8efc25af Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 3 Jul 2017 15:23:24 +0100 Subject: [PATCH 342/481] When formatting with MD enabled, move selection inside ** or equivalent Fixes https://github.com/vector-im/riot-web/issues/3225 Also insert `\n` after code-block and blockquote to fix https://github.com/vector-im/riot-web/issues/2746 --- .../views/rooms/MessageComposerInput.js | 43 ++++++++++++++++--- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index aae91620d8..8d8d3a1fb4 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -403,26 +403,59 @@ export default class MessageComposerInput extends React.Component { }); } } else { - let contentState = this.state.editorState.getCurrentContent(), - selection = this.state.editorState.getSelection(); + let contentState = this.state.editorState.getCurrentContent(); const modifyFn = { 'bold': (text) => `**${text}**`, 'italic': (text) => `*${text}*`, 'underline': (text) => `_${text}_`, // there's actually no valid underline in Markdown, but *shrug* 'strike': (text) => `${text}`, - 'code-block': (text) => `\`\`\`\n${text}\n\`\`\``, - 'blockquote': (text) => text.split('\n').map((line) => `> ${line}\n`).join(''), + 'code-block': (text) => `\`\`\`\n${text}\n\`\`\`\n`, + 'blockquote': (text) => text.split('\n').map((line) => `> ${line}\n`).join('') + '\n', 'unordered-list-item': (text) => text.split('\n').map((line) => `\n- ${line}`).join(''), 'ordered-list-item': (text) => text.split('\n').map((line, i) => `\n${i + 1}. ${line}`).join(''), }[command]; + const selectionAfterOffset = { + 'bold': -2, + 'italic': -1, + 'underline': -1, + 'strike': -6, + 'code-block': -5, + 'blockquote': -2, + }[command]; + + // Returns a function that collapses a selectionState to its end and moves it by offset + const collapseAndOffsetSelection = (selectionState, offset) => { + const key = selectionState.getEndKey(); + return new SelectionState({ + anchorKey: key, anchorOffset: offset, + focusKey: key, focusOffset: offset, + }); + }; + if (modifyFn) { + const previousSelection = this.state.editorState.getSelection(); + const newContentState = RichText.modifyText(contentState, previousSelection, modifyFn); newState = EditorState.push( this.state.editorState, - RichText.modifyText(contentState, selection, modifyFn), + newContentState, 'insert-characters', ); + + let newSelection = newContentState.getSelectionAfter(); + // If the selection range is 0, move the cursor inside the formatted body + if (previousSelection.getStartOffset() === previousSelection.getEndOffset() && + previousSelection.getStartKey() === previousSelection.getEndKey() && + selectionAfterOffset !== undefined + ) { + const selectedBlock = newContentState.getBlockForKey(previousSelection.getAnchorKey()); + const blockLength = selectedBlock.getText().length; + const newOffset = blockLength + selectionAfterOffset; + newSelection = collapseAndOffsetSelection(newSelection, newOffset); + } + + newState = EditorState.forceSelection(newState, newSelection); } } From 775f5a0e5b711a2452221fd5ecb988949e65bcb7 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 3 Jul 2017 15:47:03 +0100 Subject: [PATCH 343/481] Strip out "/me" after committing to RTE history So that history can include emotes Fixes https://github.com/vector-im/riot-web/issues/4472 --- .../views/rooms/MessageComposerInput.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index aae91620d8..7f68e0aec6 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -548,14 +548,6 @@ export default class MessageComposerInput extends React.Component { let sendHtmlFn = this.client.sendHtmlMessage; let sendTextFn = this.client.sendTextMessage; - if (contentText.startsWith('/me')) { - contentText = contentText.substring(4); - // bit of a hack, but the alternative would be quite complicated - if (contentHTML) contentHTML = contentHTML.replace(/\/me ?/, ''); - sendHtmlFn = this.client.sendHtmlEmote; - sendTextFn = this.client.sendEmoteMessage; - } - if (this.state.isRichtextEnabled) { this.historyManager.addItem( contentHTML ? contentHTML : contentText, @@ -566,6 +558,14 @@ export default class MessageComposerInput extends React.Component { this.historyManager.addItem(contentText, 'markdown'); } + if (contentText.startsWith('/me')) { + contentText = contentText.substring(4); + // bit of a hack, but the alternative would be quite complicated + if (contentHTML) contentHTML = contentHTML.replace(/\/me ?/, ''); + sendHtmlFn = this.client.sendHtmlEmote; + sendTextFn = this.client.sendEmoteMessage; + } + let sendMessagePromise; if (contentHTML) { sendMessagePromise = sendHtmlFn.call( From 45559f7cf0b21773e682253c387be2a72b0a4037 Mon Sep 17 00:00:00 2001 From: turt2live Date: Mon, 3 Jul 2017 09:25:03 -0600 Subject: [PATCH 344/481] AM/PM strings Signed-off-by: Travis Ralston --- src/DateUtils.js | 2 +- src/i18n/strings/en_EN.json | 2 ++ src/i18n/strings/en_US.json | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/DateUtils.js b/src/DateUtils.js index 56dd048945..09ef9c996f 100644 --- a/src/DateUtils.js +++ b/src/DateUtils.js @@ -54,7 +54,7 @@ function pad(n) { function twelveHourTime(date) { let hours = date.getHours() % 12; const minutes = pad(date.getMinutes()); - const ampm = date.getHours() >= 12 ? 'PM' : 'AM'; + const ampm = date.getHours() >= 12 ? _t('PM') : _t('AM'); hours = hours ? hours : 12; // convert 0 -> 12 return `${hours}:${minutes}${ampm}`; } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 397c2ecaaa..4940bea7a5 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -421,6 +421,8 @@ "Notifications": "Notifications", "(not supported by this browser)": "(not supported by this browser)", "": "", + "AM": "AM", + "PM": "PM", "NOT verified": "NOT verified", "No devices with registered encryption keys": "No devices with registered encryption keys", "No display name": "No display name", diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json index 4b8b8a5d3c..6e94be47dc 100644 --- a/src/i18n/strings/en_US.json +++ b/src/i18n/strings/en_US.json @@ -120,6 +120,8 @@ "zh-sg": "Chinese (Singapore)", "zh-tw": "Chinese (Taiwan)", "zu": "Zulu", + "AM": "AM", + "PM": "PM", "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains", "accept": "accept", "%(targetName)s accepted an invitation.": "%(targetName)s accepted an invitation.", From 827c38d4a5a5cb193017a88742270e6481081d6f Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 3 Jul 2017 19:13:07 +0100 Subject: [PATCH 345/481] fix variable clash Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/views/rooms/RoomHeader.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index ce163003c0..85aedadf64 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -216,8 +216,8 @@ module.exports = React.createClass({ const members = this.props.room ? this.props.room.getJoinedMembers() : undefined; if (members) { if (members.length === 1 && members[0].userId === MatrixClientPeg.get().credentials.userId) { - 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; } } From fc379e2a152f233cb0e442960b42f41d35838a88 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 3 Jul 2017 19:24:18 +0100 Subject: [PATCH 346/481] fix typos post-luke-review Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/autocomplete/CommandProvider.js | 6 +++--- src/i18n/strings/en_EN.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/autocomplete/CommandProvider.js b/src/autocomplete/CommandProvider.js index 3b09c9dd2d..6f2f68b121 100644 --- a/src/autocomplete/CommandProvider.js +++ b/src/autocomplete/CommandProvider.js @@ -41,7 +41,7 @@ const COMMANDS = [ }, { command: '/op', - args: ' []', + args: ' []', description: 'Define the power level of a user', }, { @@ -87,11 +87,11 @@ const COMMANDS = [ { command: '/tint', args: ' []', - description: 'Changes colourscheme of current room', + description: 'Changes colour scheme of current room', }, { command: '/verify', - args: ' ', + args: ' ', description: 'Verifies a user, device, and pubkey tuple', }, // Omitting `/markdown` as it only seems to apply to OldComposer diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 2d4eba3c2c..bec280c00d 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -196,7 +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 colourscheme of current room": "Changes colourscheme of current room", + "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", From 664f3acc3cd0c6d5fc0d351cb3f249dcb05813b7 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 4 Jul 2017 10:12:06 +0100 Subject: [PATCH 347/481] Only move through history if caret at start or end of line As suggested by @dbkr (because this is what we do for the old composer), only move through history when the caret is that the beginning of the first line (block) or end of the last. This has the nice property of being able to move the caret up to a really long message: fixes https://github.com/vector-im/riot-web/issues/4471 --- src/components/views/rooms/MessageComposerInput.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 294cbdb84c..818c108211 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -640,17 +640,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; From e688eca823f805bc24e6210d44c2b5030cb6d26e Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 4 Jul 2017 13:53:06 +0100 Subject: [PATCH 348/481] Improve the sorting applied to the sorting of autocomplete results QueryMatcher: sort results based on the position of the query within the matching value. The closer to the beginning of the word, the higher the result apears. UserProvider: perf improvement (slice early) and refactor onUserSpoke --- src/autocomplete/QueryMatcher.js | 19 +++++++++++++++---- src/autocomplete/UserProvider.js | 15 +++++++++------ 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/autocomplete/QueryMatcher.js b/src/autocomplete/QueryMatcher.js index 1b2ee1bc0d..37ea169c29 100644 --- a/src/autocomplete/QueryMatcher.js +++ b/src/autocomplete/QueryMatcher.js @@ -80,13 +80,24 @@ export default class QueryMatcher { if (this.options.shouldMatchWordsOnly) { query = query.replace(/[^\w]/g, ''); } - const results = _sortedUniq(_sortBy(_flatMap(this.keyMap.keys, (key) => { + 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) { + 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/UserProvider.js b/src/autocomplete/UserProvider.js index 4e0c0f5ea7..b6be106a93 100644 --- a/src/autocomplete/UserProvider.js +++ b/src/autocomplete/UserProvider.js @@ -50,7 +50,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 +68,7 @@ export default class UserProvider extends AutocompleteProvider { ), range, }; - }).slice(0, 4); + }); } return completions; } @@ -90,7 +90,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 +100,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); } From e3f2eb5232f1195248ed6d0da0cda536d5f8c360 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 4 Jul 2017 14:44:55 +0100 Subject: [PATCH 349/481] =?UTF-8?q?Take=20RTE=20out=20of=20labs!=20?= =?UTF-8?q?=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This stops react-sdk from tracking any state previously stored for the purposes of enabling or disabling the lab feature that enabled the new MessageComposer. It is now enabled permanently. This is being done with the hope that we can get more feedback for it so that when we release we can be confident that people will be OK with the changes it brings. --- src/UserSettingsStore.js | 11 ++--- src/components/views/rooms/MessageComposer.js | 48 +++++++------------ .../views/rooms/MessageComposerInput-test.js | 4 -- 3 files changed, 20 insertions(+), 43 deletions(-) diff --git a/src/UserSettingsStore.js b/src/UserSettingsStore.js index 009fdabb53..bbc436a1f6 100644 --- a/src/UserSettingsStore.js +++ b/src/UserSettingsStore.js @@ -27,11 +27,7 @@ export default { LABS_FEATURES: [ { name: "-", - id: 'rich_text_editor', - default: false, - }, - { - name: "-", + _tName: "Matrix Apps", // Translated! id: 'matrix_apps', default: false, }, @@ -39,8 +35,9 @@ export default { // horrible but it works. The locality makes this somewhat more palatable. doTranslations: function() { - this.LABS_FEATURES[0].name = _t("New Composer & Autocomplete"); - this.LABS_FEATURES[1].name = _t("Matrix Apps"); + this.LABS_FEATURES.forEach((f) => { + f.name = _t(f._tName); + }); }, loadProfileInfo: function() { diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index c83e32d9a8..7ca08a5a05 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -268,8 +268,7 @@ export default class MessageComposer extends React.Component { const uploadInputStyle = {display: 'none'}; const MemberAvatar = sdk.getComponent('avatars.MemberAvatar'); const TintableSvg = sdk.getComponent("elements.TintableSvg"); - const MessageComposerInput = sdk.getComponent("rooms.MessageComposerInput" + - (UserSettingsStore.isFeatureEnabled('rich_text_editor') ? "" : "Old")); + const MessageComposerInput = sdk.getComponent("rooms.MessageComposerInput"); const controls = []; @@ -352,8 +351,7 @@ export default class MessageComposer extends React.Component { title={_t("Show Text Formatting Toolbar")} src="img/button-text-formatting.svg" onClick={this.onToggleFormattingClicked} - style={{visibility: this.state.showFormatting || - !UserSettingsStore.isFeatureEnabled('rich_text_editor') ? 'hidden' : 'visible'}} + style={{visibility: this.state.showFormatting ? 'hidden' : 'visible'}} key="controls_formatting" /> ); @@ -390,18 +388,6 @@ export default class MessageComposer extends React.Component { ); } - let autoComplete; - if (UserSettingsStore.isFeatureEnabled('rich_text_editor')) { - autoComplete =
- -
; - } - - const {style, blockType} = this.state.inputState; const formatButtons = ["bold", "italic", "strike", "underline", "code", "quote", "bullet", "numbullet"].map( (name) => { @@ -429,22 +415,20 @@ export default class MessageComposer extends React.Component { {controls}
- {UserSettingsStore.isFeatureEnabled('rich_text_editor') ? -
-
- {formatButtons} -
- - -
-
: null - } +
+
+ {formatButtons} +
+ + +
+
); } diff --git a/test/components/views/rooms/MessageComposerInput-test.js b/test/components/views/rooms/MessageComposerInput-test.js index 80fd158608..6d4b4e69cc 100644 --- a/test/components/views/rooms/MessageComposerInput-test.js +++ b/test/components/views/rooms/MessageComposerInput-test.js @@ -27,14 +27,10 @@ describe('MessageComposerInput', () => { mci = null, room = testUtils.mkStubRoom('!DdJkzRliezrwpNebLk:matrix.org'); - // TODO Remove when RTE is out of labs. - beforeEach(function() { testUtils.beforeEach(this); sandbox = testUtils.stubClient(sandbox); client = MatrixClientPeg.get(); - UserSettingsStore.isFeatureEnabled = sinon.stub() - .withArgs('rich_text_editor').returns(true); parentDiv = document.createElement('div'); document.body.appendChild(parentDiv); From e6ec5742bee6416ab35c2b7469de0840303733f9 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 4 Jul 2017 15:06:24 +0100 Subject: [PATCH 350/481] _t should be used on string literals For scripts to easily find translations --- src/UserSettingsStore.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/UserSettingsStore.js b/src/UserSettingsStore.js index bbc436a1f6..fef84468ec 100644 --- a/src/UserSettingsStore.js +++ b/src/UserSettingsStore.js @@ -27,7 +27,6 @@ export default { LABS_FEATURES: [ { name: "-", - _tName: "Matrix Apps", // Translated! id: 'matrix_apps', default: false, }, @@ -35,9 +34,7 @@ export default { // horrible but it works. The locality makes this somewhat more palatable. doTranslations: function() { - this.LABS_FEATURES.forEach((f) => { - f.name = _t(f._tName); - }); + this.LABS_FEATURES[0].name = _t("Matrix Apps"); }, loadProfileInfo: function() { From 77348e6201edaa5b4302ce150e0be008d0908566 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 4 Jul 2017 15:20:00 +0100 Subject: [PATCH 351/481] Remove spurious, unused code --- src/components/views/rooms/MessageComposer.js | 18 ------------------ .../views/rooms/MessageComposerInput.js | 7 ------- 2 files changed, 25 deletions(-) diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index 7ca08a5a05..69ccc3d2f8 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -227,21 +227,6 @@ export default class MessageComposer extends React.Component { this.setState({inputState}); } - onUpArrow() { - return this.refs.autocomplete.onUpArrow(); - } - - onDownArrow() { - return this.refs.autocomplete.onDownArrow(); - } - - _tryComplete(): boolean { - if (this.refs.autocomplete) { - return this.refs.autocomplete.onCompletionClicked(); - } - return false; - } - _onAutocompleteConfirm(range, completion) { if (this.messageComposerInput) { this.messageComposerInput.setDisplayedCompletion(range, completion); @@ -366,10 +351,7 @@ export default class MessageComposer extends React.Component { room={this.props.room} placeholder={placeholderText} tryComplete={this._tryComplete} - onUpArrow={this.onUpArrow} - onDownArrow={this.onDownArrow} onFilesPasted={this.uploadFiles} - tabComplete={this.props.tabComplete} // used for old messagecomposerinput/tabcomplete onContentChanged={this.onInputContentChanged} onInputStateChanged={this.onInputStateChanged} />, formattingButton, diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 818c108211..27fd6d4190 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -887,14 +887,7 @@ MessageComposerInput.propTypes = { // called with current plaintext content (as a string) whenever it changes onContentChanged: React.PropTypes.func, - onUpArrow: React.PropTypes.func, - - onDownArrow: React.PropTypes.func, - onFilesPasted: React.PropTypes.func, - // attempts to confirm currently selected completion, returns whether actually confirmed - tryComplete: React.PropTypes.func, - onInputStateChanged: React.PropTypes.func, }; From 6a80875c0148de8015bdcb8c6d3620dc3466e805 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 4 Jul 2017 16:24:59 +0100 Subject: [PATCH 352/481] Only match users by matchgin displayname or user ID prefixes Because tab completing "k" probably shouldn't give you "luke" Fixes https://github.com/vector-im/riot-web/issues/4495 --- src/autocomplete/QueryMatcher.js | 8 +++++++- src/autocomplete/UserProvider.js | 5 +++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/autocomplete/QueryMatcher.js b/src/autocomplete/QueryMatcher.js index 37ea169c29..f85d518fee 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) { @@ -87,7 +93,7 @@ export default class QueryMatcher { resultKey = resultKey.replace(/[^\w]/g, ''); } const index = resultKey.indexOf(query); - if (index !== -1) { + if (index !== -1 && (!this.options.shouldMatchPrefix || index === 0)) { results.push({key, index}); } }); diff --git a/src/autocomplete/UserProvider.js b/src/autocomplete/UserProvider.js index b6be106a93..f1fa3a9236 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, }); } From 2861adc830d5bb73bec7d8b050e07e67d1aa95ea Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 4 Jul 2017 16:50:50 +0100 Subject: [PATCH 353/481] Only truncate autocomplete pulls of Emoji, Room and UserProvider Leaving Commands and DuckDuckGo not truncated --- src/autocomplete/EmojiProvider.js | 2 +- src/autocomplete/RoomProvider.js | 2 +- src/autocomplete/UserProvider.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) 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
+ return
{completions}
; } 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
+ return
{completions}
; } diff --git a/src/autocomplete/UserProvider.js b/src/autocomplete/UserProvider.js index b6be106a93..b9cb507a23 100644 --- a/src/autocomplete/UserProvider.js +++ b/src/autocomplete/UserProvider.js @@ -115,7 +115,7 @@ export default class UserProvider extends AutocompleteProvider { } renderCompletions(completions: [React.Component]): ?React.Component { - return
+ return
{completions}
; } From 710ee69418a4690e30f2cadcbe1511cadf49661e Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 4 Jul 2017 17:32:07 +0100 Subject: [PATCH 354/481] Don't try to match with an empty query string This was causing UserProvider to give results because every string happens to start with empty string and its regex also acepts the empty string. --- src/autocomplete/QueryMatcher.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/autocomplete/QueryMatcher.js b/src/autocomplete/QueryMatcher.js index f85d518fee..07398e7a5f 100644 --- a/src/autocomplete/QueryMatcher.js +++ b/src/autocomplete/QueryMatcher.js @@ -86,6 +86,9 @@ export default class QueryMatcher { if (this.options.shouldMatchWordsOnly) { query = query.replace(/[^\w]/g, ''); } + if (query.length === 0) { + return []; + } const results = []; this.keyMap.keys.forEach((key) => { let resultKey = key.toLowerCase(); From 5f6c3e5afc25c51a753aade47f51d2bf444fe09c Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 4 Jul 2017 17:49:50 +0100 Subject: [PATCH 355/481] When hitting "tab" use an autocompleteDelay of 0 So that there's no delay when tab completing. Fixes https://github.com/vector-im/riot-web/issues/4497 --- src/components/views/rooms/Autocomplete.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/rooms/Autocomplete.js b/src/components/views/rooms/Autocomplete.js index dd6d9d1ae9..761f4e488a 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; } From 084a933dbdd54fcfdc2186249bf5ef563e57b648 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 5 Jul 2017 10:24:55 +0100 Subject: [PATCH 356/481] Implement MessageComposerStore to persist composer state across room switching This behaviour was present in the old composer but implemented using local storage. This is unecessary as we don't really care about our drafts across clients, the important thing is that our draft is kept when switching rooms. As a bonus, ifnore vertical arrow key presses when a modifier key is pressed so that the room switching keys (alt + up/down arrow) don't also cause history browsing (or autocomplete browsing). --- .../views/rooms/MessageComposerInput.js | 19 +++++ src/stores/MessageComposerStore.js | 73 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 src/stores/MessageComposerStore.js diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 818c108211..01e836765a 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; @@ -170,6 +172,11 @@ export default class MessageComposerInput extends React.Component { componentDidMount() { this.dispatcherRef = dis.register(this.onAction); this.historyManager = new ComposerHistoryManager(this.props.room.roomId); + + // Reinstate the editor state for this room + this.setState({ + editorState: MessageComposerStore.getEditorState(this.props.room.roomId), + }); } componentWillUnmount() { @@ -336,6 +343,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: 'editor_state', + room_id: this.props.room.roomId, + editor_state: state.editorState, + }); + if (!state.hasOwnProperty('originalEditorState')) { state.originalEditorState = null; } @@ -632,6 +647,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 diff --git a/src/stores/MessageComposerStore.js b/src/stores/MessageComposerStore.js new file mode 100644 index 0000000000..1e83105300 --- /dev/null +++ b/src/stores/MessageComposerStore.js @@ -0,0 +1,73 @@ +/* +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'; + +const INITIAL_STATE = { + editorStateMap: {}, +}; + +/** + * 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 = INITIAL_STATE; + } + + _setState(newState) { + this._state = Object.assign(this._state, newState); + this.__emitChange(); + } + + __onDispatch(payload) { + switch (payload.action) { + case 'editor_state': + this._editorState(payload); + break; + case 'on_logged_out': + this.reset(); + break; + } + } + + _editorState(payload) { + const editorStateMap = this._state.editorStateMap; + editorStateMap[payload.room_id] = payload.editor_state; + this._setState({ + editorStateMap: editorStateMap, + }); + } + + getEditorState(roomId) { + return this._state.editorStateMap[roomId]; + } + + reset() { + this._state = Object.assign({}, INITIAL_STATE); + } +} + +let singletonMessageComposerStore = null; +if (!singletonMessageComposerStore) { + singletonMessageComposerStore = new MessageComposerStore(); +} +module.exports = singletonMessageComposerStore; From 3b06db07256c41e6afd7d636884c126dc11b228a Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 5 Jul 2017 11:39:22 +0100 Subject: [PATCH 357/481] Pass with, height & resizeMethod through Was spelt wrong anyway --- src/components/views/avatars/GroupAvatar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/avatars/GroupAvatar.js b/src/components/views/avatars/GroupAvatar.js index 4253b2f5b7..15c71e59d5 100644 --- a/src/components/views/avatars/GroupAvatar.js +++ b/src/components/views/avatars/GroupAvatar.js @@ -50,7 +50,7 @@ export default React.createClass({ render: function() { const BaseAvatar = sdk.getComponent("avatars.BaseAvatar"); // extract the props we use from props so we can pass any others through - const {groupId, groupAvatarUrl, wifth, height, resizeMethod, ...otherProps} = this.props; + const {groupId, groupAvatarUrl, ...otherProps} = this.props; return ( Date: Wed, 5 Jul 2017 11:49:34 +0100 Subject: [PATCH 358/481] Use ContentState instead and persist over localStorage --- .../views/rooms/MessageComposerInput.js | 18 ++++++------------ src/stores/MessageComposerStore.js | 19 ++++++++++++------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 01e836765a..965b954233 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -132,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, @@ -142,10 +145,6 @@ export default class MessageComposerInput extends React.Component { 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(); - this.client = MatrixClientPeg.get(); } @@ -172,11 +171,6 @@ export default class MessageComposerInput extends React.Component { componentDidMount() { this.dispatcherRef = dis.register(this.onAction); this.historyManager = new ComposerHistoryManager(this.props.room.roomId); - - // Reinstate the editor state for this room - this.setState({ - editorState: MessageComposerStore.getEditorState(this.props.room.roomId), - }); } componentWillUnmount() { @@ -346,9 +340,9 @@ export default class MessageComposerInput extends React.Component { // Record the editor state for this room so that it can be retrieved after // switching to another room and back dis.dispatch({ - action: 'editor_state', + action: 'content_state', room_id: this.props.room.roomId, - editor_state: state.editorState, + content_state: state.editorState.getCurrentContent(), }); if (!state.hasOwnProperty('originalEditorState')) { diff --git a/src/stores/MessageComposerStore.js b/src/stores/MessageComposerStore.js index 1e83105300..ac48c522e4 100644 --- a/src/stores/MessageComposerStore.js +++ b/src/stores/MessageComposerStore.js @@ -15,9 +15,11 @@ limitations under the License. */ import dis from '../dispatcher'; import {Store} from 'flux/utils'; +import {convertToRaw, convertFromRaw} from 'draft-js'; const INITIAL_STATE = { - editorStateMap: {}, + editorStateMap: localStorage.getItem('content_state') ? + JSON.parse(localStorage.getItem('content_state')) : {}, }; /** @@ -40,8 +42,8 @@ class MessageComposerStore extends Store { __onDispatch(payload) { switch (payload.action) { - case 'editor_state': - this._editorState(payload); + case 'content_state': + this._contentState(payload); break; case 'on_logged_out': this.reset(); @@ -49,16 +51,19 @@ class MessageComposerStore extends Store { } } - _editorState(payload) { + _contentState(payload) { const editorStateMap = this._state.editorStateMap; - editorStateMap[payload.room_id] = payload.editor_state; + editorStateMap[payload.room_id] = convertToRaw(payload.content_state); + localStorage.setItem('content_state', JSON.stringify(editorStateMap)); + console.info(localStorage.getItem('content_state')); this._setState({ editorStateMap: editorStateMap, }); } - getEditorState(roomId) { - return this._state.editorStateMap[roomId]; + getContentState(roomId) { + return this._state.editorStateMap[roomId] ? + convertFromRaw(this._state.editorStateMap[roomId]) : null; } reset() { From df23a6cd85183aa122821c9bb93223b9786a2330 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 5 Jul 2017 13:38:34 +0100 Subject: [PATCH 359/481] Use Object.assign to set initial state of MessageComposerStore Otherwise we just modify the initial state when running --- src/stores/MessageComposerStore.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stores/MessageComposerStore.js b/src/stores/MessageComposerStore.js index ac48c522e4..6e13c8f825 100644 --- a/src/stores/MessageComposerStore.js +++ b/src/stores/MessageComposerStore.js @@ -32,7 +32,7 @@ class MessageComposerStore extends Store { super(dis); // Initialise state - this._state = INITIAL_STATE; + this._state = Object.assign({}, INITIAL_STATE); } _setState(newState) { From 167ce88a80377a2a9de7cf88f731bd12bc154ade Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Wed, 5 Jul 2017 14:34:25 +0100 Subject: [PATCH 360/481] Rewrite ScrollPanel test It turns out that Chrome now implements scroll-anchoring itself (ie, content stays in the same place when you add more stuff off-screen), which means we cannot rely on back-pagination to make ScrollPanel do a scroll. Instead, just do a scrollToToken. Which turns out to be considerably simpler anyway. --- .../components/structures/ScrollPanel-test.js | 55 +++++++------------ 1 file changed, 20 insertions(+), 35 deletions(-) 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. From f69033c907762f7955a5fdc1b51e2a66317b93d1 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Wed, 5 Jul 2017 14:39:02 +0100 Subject: [PATCH 361/481] Use headless chrome instead of phantomjs for tests --- .travis.yml | 9 +++++++++ karma.conf.js | 16 +++++++++++++++- package.json | 6 ++---- 3 files changed, 26 insertions(+), 5 deletions(-) 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..fcdb34a596 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", @@ -106,12 +106,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", From 5c9d3edec4044abd076769e9ec5161840a8b0f86 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 5 Jul 2017 14:46:00 +0100 Subject: [PATCH 362/481] Revert #1170, fde7d5eaf49413fc8442ca53dfd49a01233ed177 There were a few issues with this, namely that links were no longer linkified and an error was logged to the console: `Warning: Stateless function components cannot be given refs (See ref "topic" in EmojiText created by RoomHeader). Attempts to access this ref will fail.` --- src/components/views/rooms/RoomHeader.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index 9efedcd861..85aedadf64 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -251,7 +251,7 @@ module.exports = React.createClass({ } if (topic) { topicElement = - { topic }; +
{ topic }
; } } From b3db6344ae6f8a71c7eda9b4b9346df80664d06b Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 5 Jul 2017 15:00:50 +0100 Subject: [PATCH 363/481] Fix import for Rooms so that DMs can be created --- src/createRoom.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/createRoom.js b/src/createRoom.js index 8aa15f315b..830ac50ef5 100644 --- a/src/createRoom.js +++ b/src/createRoom.js @@ -19,7 +19,7 @@ import Modal from './Modal'; import sdk from './index'; import { _t } from './languageHandler'; import dis from "./dispatcher"; -import Rooms from "./Rooms"; +import * as Rooms from "./Rooms"; import q from 'q'; From 458e0a38bc9a6578a9d3c6b07e6dcda95dfdfaef Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Wed, 5 Jul 2017 15:43:33 +0100 Subject: [PATCH 364/481] Run the riot-web tests against js-sdk develop When running the riot-web builds, use the develop version of js-sdk instead of the latest release, to improve our chances of compatibility. --- .travis-test-riot.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 From a20ed2f6324e5818399bb06e93ba76bb83cc50eb Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Wed, 5 Jul 2017 16:20:21 +0100 Subject: [PATCH 365/481] Add some logging to track down flaky test We had a test failure where apparently the MatrixClient failed to start ... let's try and figure out why. --- src/Lifecycle.js | 2 ++ src/MatrixClientPeg.js | 20 ++++++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) 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 { From 2de4dd7b71ff0a971c407a2ab5ff3785d92e69fb Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 5 Jul 2017 17:09:16 +0100 Subject: [PATCH 366/481] Filter out unsupported emoji from the emoji meta data Because apparently emojione provides meta data for more than the emojis it supports itself. Fixes https://github.com/vector-im/riot-web/issues/4504 --- scripts/emoji-data-strip.js | 5 ++++- src/stripped-emoji.json | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) 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/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":[":)",">;)",">:-)",">=)"]},{"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":[" Date: Wed, 5 Jul 2017 18:14:22 +0100 Subject: [PATCH 367/481] Add visual feedback for when there are no completions available Attempts to kep parity with old composer by using the same #faa colour but uses an animation instead of a js timeout. Fixes https://github.com/vector-im/riot-web/issues/4490 --- src/components/views/rooms/Autocomplete.js | 2 +- src/components/views/rooms/MessageComposerInput.js | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/components/views/rooms/Autocomplete.js b/src/components/views/rooms/Autocomplete.js index dd6d9d1ae9..30de7fb07d 100644 --- a/src/components/views/rooms/Autocomplete.js +++ b/src/components/views/rooms/Autocomplete.js @@ -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 818c108211..ee3b566a7f 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -138,6 +138,9 @@ 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, + + // whether there were any completions + someCompletions: null, }; // bit of a hack, but we need to do this here since createEditorState needs isRichtextEnabled @@ -706,10 +709,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 { @@ -830,6 +839,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(); From e0e321783b67f54ec37de45bed028e903ccb3b0b Mon Sep 17 00:00:00 2001 From: Kegsay Date: Thu, 6 Jul 2017 09:28:48 +0100 Subject: [PATCH 368/481] Append the scalar_token to the widget URL if the widget URL is a scalar URL (#1182) --- package.json | 1 + src/components/views/elements/AppTile.js | 67 ++++++++++++++++++++++-- 2 files changed, 65 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index fcdb34a596..888fd9e32a 100644 --- a/package.json +++ b/package.json @@ -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" }, diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 6f4c931ab7..bf21d15587 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,52 @@ 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 + let 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 +122,19 @@ export default React.createClass({ }, render: function() { + let appTileBody; + if (this.state.loading) { + appTileBody = ( +
Loading...
+ ); + } + else { + appTileBody = ( +
+ +
+ ); + } return (
@@ -93,9 +156,7 @@ export default React.createClass({ />
-
- -
+ {appTileBody}
); }, From 6a2d6b2e6e01a07d75bd1725191984ba37819266 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Thu, 6 Jul 2017 10:02:25 +0100 Subject: [PATCH 369/481] Fix a React duplicate key error If a single message contains the same link twice, we get an error from React about the clashing keys. De-dup the links to keep it quiet. --- src/components/views/messages/TextualBody.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/components/views/messages/TextualBody.js b/src/components/views/messages/TextualBody.js index 190b1341c3..209fba30aa 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 + 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" || From 42ba3ff41033b045f9697e6db4ff249a1069f896 Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Thu, 6 Jul 2017 10:44:32 +0100 Subject: [PATCH 370/481] Linting --- src/components/views/elements/AppTile.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index bf21d15587..9fed0e7d5b 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -65,11 +65,10 @@ export default React.createClass({ this._scalarClient = new ScalarAuthClient(); this._scalarClient.getScalarToken().done((token) => { // Append scalar_token as a query param - let u = url.parse(this.props.url); + const u = url.parse(this.props.url); if (!u.search) { u.search = "?scalar_token=" + encodeURIComponent(token); - } - else { + } else { u.search += "&scalar_token=" + encodeURIComponent(token); } @@ -127,8 +126,7 @@ export default React.createClass({ appTileBody = (
Loading...
); - } - else { + } else { appTileBody = (
From 4f8d9d869e20429e330b3475321e7bd40b0a7ef7 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Thu, 6 Jul 2017 10:47:15 +0100 Subject: [PATCH 371/481] mention preserving ordering in comment --- src/components/views/messages/TextualBody.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/messages/TextualBody.js b/src/components/views/messages/TextualBody.js index 209fba30aa..2c50a94a6a 100644 --- a/src/components/views/messages/TextualBody.js +++ b/src/components/views/messages/TextualBody.js @@ -143,7 +143,7 @@ module.exports = React.createClass({ if (this.props.showUrlPreview && !this.state.links.length) { var links = this.findLinks(this.refs.content.children); if (links.length) { - // de-dup the links + // de-dup the links (but preserve ordering) const seen = new Set(); links = links.filter((link) => { if (seen.has(link)) return false; From 6b6af3f1482d5e93b9f60a0d3f2011b147da9b84 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Thu, 6 Jul 2017 11:17:54 +0100 Subject: [PATCH 372/481] Remove RTE content_state logging --- src/stores/MessageComposerStore.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/stores/MessageComposerStore.js b/src/stores/MessageComposerStore.js index 6e13c8f825..d02bcf953f 100644 --- a/src/stores/MessageComposerStore.js +++ b/src/stores/MessageComposerStore.js @@ -55,7 +55,6 @@ class MessageComposerStore extends Store { const editorStateMap = this._state.editorStateMap; editorStateMap[payload.room_id] = convertToRaw(payload.content_state); localStorage.setItem('content_state', JSON.stringify(editorStateMap)); - console.info(localStorage.getItem('content_state')); this._setState({ editorStateMap: editorStateMap, }); From bdefb35c64518dfae7c51302c0df29d25033f962 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Thu, 6 Jul 2017 11:52:02 +0100 Subject: [PATCH 373/481] Only insert HTML into the composer in RTE mode If MD mode is enabled, paste the plaintext equivalent. --- src/components/views/rooms/MessageComposerInput.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 83e717d55d..80fdf470e3 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -488,8 +488,7 @@ export default class MessageComposerInput extends React.Component { const currentContent = this.state.editorState.getCurrentContent(); let contentState = null; - - if (html) { + if (html && this.state.isRichtextEnabled) { contentState = Modifier.replaceWithFragment( currentContent, currentSelection, From c6d9ec42a2a4545f44f00635cdeb91d90fda3af3 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 6 Jul 2017 12:51:55 +0100 Subject: [PATCH 374/481] only show unban button in RoomSettings if user has sufficient PL to do so Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/views/rooms/RoomSettings.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/components/views/rooms/RoomSettings.js b/src/components/views/rooms/RoomSettings.js index 171af4764b..d255670a52 100644 --- a/src/components/views/rooms/RoomSettings.js +++ b/src/components/views/rooms/RoomSettings.js @@ -39,6 +39,7 @@ function parseIntWithDefault(val, def) { const BannedUser = React.createClass({ propTypes: { + canUnban: React.PropTypes.bool, member: React.PropTypes.object.isRequired, // js-sdk RoomMember reason: React.PropTypes.string, }, @@ -67,13 +68,17 @@ const BannedUser = React.createClass({ }, render: function() { + let unbanButton; + + if (this.props.canUnban) { + unbanButton = + { _t('Unban') } + ; + } + return (
  • - - { _t('Unban') } - + { unbanButton } {this.props.member.name} {this.props.member.userId} {this.props.reason ? " " +_t('Reason') + ": " + this.props.reason : ""}
  • @@ -667,6 +672,7 @@ module.exports = React.createClass({ const banned = this.props.room.getMembersWithMembership("ban"); let bannedUsersSection; if (banned.length) { + const canBanUsers = current_user_level >= ban_level; bannedUsersSection =

    { _t('Banned users') }

    @@ -674,7 +680,7 @@ module.exports = React.createClass({ {banned.map(function(member) { const banEvent = member.events.member.getContent(); return ( - + ); })} From fcd8321a63c0525b11b264ebc995f8dcaf028765 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 6 Jul 2017 13:49:13 +0100 Subject: [PATCH 375/481] Allow underline through MD and in RTE (MD) using which works with CM Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/Markdown.js | 2 +- src/components/views/rooms/MessageComposer.js | 9 ++------- src/components/views/rooms/MessageComposerInput.js | 4 ++-- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/Markdown.js b/src/Markdown.js index 4a46ce4f24..5730e42a09 100644 --- a/src/Markdown.js +++ b/src/Markdown.js @@ -17,7 +17,7 @@ limitations under the License. import commonmark from 'commonmark'; import escape from 'lodash/escape'; -const ALLOWED_HTML_TAGS = ['del']; +const ALLOWED_HTML_TAGS = ['del', 'u']; // These types of node are definitely text const TEXT_NODES = ['text', 'softbreak', 'linebreak', 'paragraph', 'document']; diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index c83e32d9a8..27d5e11119 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -21,7 +21,6 @@ import Modal from '../../../Modal'; import sdk from '../../../index'; import dis from '../../../dispatcher'; import Autocomplete from './Autocomplete'; -import classNames from 'classnames'; import UserSettingsStore from '../../../UserSettingsStore'; @@ -408,14 +407,10 @@ export default class MessageComposer extends React.Component { const active = style.includes(name) || blockType === name; const suffix = active ? '-o-n' : ''; const onFormatButtonClicked = this.onFormatButtonClicked.bind(this, name); - const disabled = !this.state.inputState.isRichtextEnabled && 'underline' === name; - const className = classNames("mx_MessageComposer_format_button", { - mx_MessageComposer_format_button_disabled: disabled, - mx_filterFlipColor: true, - }); + const className = 'mx_MessageComposer_format_button mx_filterFlipColor'; return ; diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 294cbdb84c..9be797e8c0 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -408,7 +408,7 @@ export default class MessageComposerInput extends React.Component { const modifyFn = { 'bold': (text) => `**${text}**`, 'italic': (text) => `*${text}*`, - 'underline': (text) => `_${text}_`, // there's actually no valid underline in Markdown, but *shrug* + 'underline': (text) => `${text}`, 'strike': (text) => `${text}`, 'code-block': (text) => `\`\`\`\n${text}\n\`\`\`\n`, 'blockquote': (text) => text.split('\n').map((line) => `> ${line}\n`).join('') + '\n', @@ -419,7 +419,7 @@ export default class MessageComposerInput extends React.Component { const selectionAfterOffset = { 'bold': -2, 'italic': -1, - 'underline': -1, + 'underline': -4, 'strike': -6, 'code-block': -5, 'blockquote': -2, From d091550ccb8e7998eb3ebd1d3134cd1c3b4dc71e Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Thu, 6 Jul 2017 15:59:59 +0100 Subject: [PATCH 376/481] Use app ID for element key and pass screen parameter to scalar. --- src/ScalarAuthClient.js | 6 ++++-- src/components/views/rooms/AppsDrawer.js | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/ScalarAuthClient.js b/src/ScalarAuthClient.js index e1928e15d4..6908a7f67d 100644 --- a/src/ScalarAuthClient.js +++ b/src/ScalarAuthClient.js @@ -76,10 +76,13 @@ class ScalarAuthClient { return defer.promise; } - getScalarInterfaceUrlForRoom(roomId) { + getScalarInterfaceUrlForRoom(roomId, screen) { var url = SdkConfig.get().integrations_ui_url; url += "?scalar_token=" + encodeURIComponent(this.scalarToken); url += "&room_id=" + encodeURIComponent(roomId); + if (screen) { + url += '&screen=' + encodeURIComponent(screen); + } return url; } @@ -89,4 +92,3 @@ class ScalarAuthClient { } module.exports = ScalarAuthClient; - diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index b535b148ac..a12bd8ecac 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -176,7 +176,7 @@ module.exports = React.createClass({ const IntegrationsManager = sdk.getComponent("views.settings.IntegrationsManager"); const src = (this.scalarClient !== null && this.scalarClient.hasCredentials()) ? - this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room.roomId) : + this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room.roomId, 'add_integ') : null; Modal.createDialog(IntegrationsManager, { src: src, @@ -187,7 +187,7 @@ module.exports = React.createClass({ const apps = this.state.apps.map( (app, index, arr) => { return Date: Thu, 6 Jul 2017 17:40:27 +0100 Subject: [PATCH 377/481] Fix vector-im/riot-web#4526 by pretending to join I thought about adding separate dispatches to prevent confusion but if anyone adds anything that listens to existing dispatches, they really ought to be grep-ing the world for said dispatch actions. --- src/createRoom.js | 12 ++++++++++++ src/stores/RoomViewStore.js | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/src/createRoom.js b/src/createRoom.js index 830ac50ef5..916405776d 100644 --- a/src/createRoom.js +++ b/src/createRoom.js @@ -79,6 +79,12 @@ function createRoom(opts) { const modal = Modal.createDialog(Loader, null, 'mx_Dialog_spinner'); let roomId; + if (opts.andView) { + // We will possibly have a successful join, indicate as such + dis.dispatch({ + action: 'will_join', + }); + } return client.createRoom(createOpts).finally(function() { modal.close(); }).then(function(res) { @@ -98,10 +104,16 @@ function createRoom(opts) { action: 'view_room', room_id: roomId, should_peek: false, + // Creating a room will have joined us to the room + joined: true, }); } return roomId; }, function(err) { + // We also failed to join the room (this sets joining to false in RoomViewStore) + dis.dispatch({ + action: 'join_room_error', + }); console.error("Failed to create room " + roomId + " " + err); Modal.createDialog(ErrorDialog, { title: _t("Failure to create room"), diff --git a/src/stores/RoomViewStore.js b/src/stores/RoomViewStore.js index 2f7d55b71f..865caa8997 100644 --- a/src/stores/RoomViewStore.js +++ b/src/stores/RoomViewStore.js @@ -141,6 +141,10 @@ class RoomViewStore extends Store { shouldPeek: payload.should_peek === undefined ? true : payload.should_peek, }; + if (payload.joined) { + newState.joining = false; + } + // If an event ID wasn't specified, default to the one saved for this room // via update_scroll_state. Assume initialEventPixelOffset should be set. if (!newState.initialEventId) { From 0a4f8ffead5937680a28cc81e120bcf6f3c57403 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Thu, 6 Jul 2017 18:11:46 +0100 Subject: [PATCH 378/481] Alter EMOJI_REGEX to include end of string ($) Fixes https://github.com/vector-im/riot-web/issues/4529 because the match must include the remainder of the query. --- src/autocomplete/EmojiProvider.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/autocomplete/EmojiProvider.js b/src/autocomplete/EmojiProvider.js index 5cb3c4af2f..35e9cc7b68 100644 --- a/src/autocomplete/EmojiProvider.js +++ b/src/autocomplete/EmojiProvider.js @@ -41,7 +41,7 @@ const CATEGORY_ORDER = [ ]; // Match for ":wink:" or ascii-style ";-)" provided by emojione -const EMOJI_REGEX = new RegExp('(' + asciiRegexp + '|:\\w*:?)', 'g'); +const EMOJI_REGEX = new RegExp('(' + asciiRegexp + '|:\\w*:?)$', 'g'); const EMOJI_SHORTNAMES = Object.keys(EmojiData).map((key) => EmojiData[key]).sort( (a, b) => { if (a.category === b.category) { From fa37d03db65b564ba1cab3c0630e8b57c0840e28 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 6 Jul 2017 19:13:14 +0100 Subject: [PATCH 379/481] Improve the Group View page Show the rooms in the group in thir various categories, etc --- src/components/structures/GroupView.js | 114 ++++++++++++++++++++- src/components/views/avatars/RoomAvatar.js | 11 +- src/i18n/strings/en_EN.json | 3 +- 3 files changed, 124 insertions(+), 4 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 0f10ba60e2..0a7674f4d8 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -18,10 +18,67 @@ import React from 'react'; import PropTypes from 'prop-types'; import MatrixClientPeg from '../../MatrixClientPeg'; import sdk from '../../index'; +import dis from '../../dispatcher'; import { sanitizedHtmlNode } from '../../HtmlUtils'; import { _t } from '../../languageHandler'; +import AccessibleButton from '../views/elements/AccessibleButton'; +function categoryRoomListNode(rooms, categoryId, category) { + const roomNodes = rooms.map((r) => { + return ; + }); + let catHeader = null; + if (category && category.profile) catHeader =
    {category.profile.name}
    + return
    + {catHeader} + {roomNodes} +
    ; +} + +const FeaturedRoom = React.createClass({ + displayName: 'FeaturedRoom', + + props: { + summaryInfo: PropTypes.object.isRequired, + }, + + onClick: function(e) { + e.preventDefault(); + + dis.dispatch({ + action: 'view_room', + room_alias: this.props.summaryInfo.profile.canonical_alias, + room_id: this.props.summaryInfo.room_id, + }); + }, + + render: function() { + const RoomAvatar = sdk.getComponent("avatars.RoomAvatar"); + + const oobData = { + roomId: this.props.summaryInfo.room_id, + avatarUrl: this.props.summaryInfo.profile.avatar_url, + name: this.props.summaryInfo.profile.name, + }; + let permalink = null; + if (this.props.summaryInfo.profile && this.props.summaryInfo.profile.canonical_alias) { + permalink = 'https://matrix.to/#/' + this.props.summaryInfo.profile.canonical_alias; + } + let roomNameNode = null; + if (permalink) { + roomNameNode = {this.props.summaryInfo.profile.name}; + } else { + roomNameNode = {this.props.summaryInfo.profile.name}; + } + + return + +
    {roomNameNode}
    +
    ; + } +}); + export default React.createClass({ displayName: 'GroupView', @@ -33,6 +90,7 @@ export default React.createClass({ return { summary: null, error: null, + editing: false, }; }, @@ -64,12 +122,19 @@ export default React.createClass({ }); }, + _onSettingsClick: function() { + this.setState({editing: true}); + }, + render: function() { const GroupAvatar = sdk.getComponent("avatars.GroupAvatar"); const Loader = sdk.getComponent("elements.Spinner"); + const TintableSvg = sdk.getComponent("elements.TintableSvg"); if (this.state.summary === null && this.state.error === null) { return ; + } else if (this.state.editing) { + return
    ; } else if (this.state.summary) { const summary = this.state.summary; let description = null; @@ -77,6 +142,50 @@ export default React.createClass({ description = sanitizedHtmlNode(summary.profile.long_description); } + let featuredRooms = null; + if (summary.rooms_section.rooms.length > 0) { + let defaultCategoryRooms = []; + let categoryRooms = {}; + summary.rooms_section.rooms.forEach((r) => { + if (r.category_id === null) { + defaultCategoryRooms.push(r); + } else { + let list = categoryRooms[r.category_id]; + if (list === undefined) { + list = []; + categoryRooms[r.category_id] = list; + } + list.push(r); + } + }); + /*[defaultCategoryRooms, ...Object.values(categoryRooms)].forEach((roomList) => { + roomList.sort((r1, r2) => { + return r1.order - r2.order; + }); + });*/ + + let defaultCategoryNode = null; + if (defaultCategoryRooms.length > 0) { + defaultCategoryNode = categoryRoomListNode(defaultCategoryRooms); + } + const categoryRoomNodes = Object.keys(categoryRooms).map((catId) => { + const cat = summary.rooms_section.categories[catId]; + return categoryRoomListNode(categoryRooms[catId], catId, cat); + }); + + featuredRooms =
    +
    + {_t('Featured Rooms:')} +
    + {defaultCategoryNode} + {categoryRoomNodes} +
    ; + } + const roomBody =
    +
    {description}
    + {featuredRooms} +
    ; + let nameNode; if (summary.profile.name) { nameNode =
    @@ -108,9 +217,12 @@ export default React.createClass({ {summary.profile.short_description}
    + + +
    - {description} + {roomBody}
    ); } else if (this.state.error) { diff --git a/src/components/views/avatars/RoomAvatar.js b/src/components/views/avatars/RoomAvatar.js index 8041fd5cd7..728d71a6a9 100644 --- a/src/components/views/avatars/RoomAvatar.js +++ b/src/components/views/avatars/RoomAvatar.js @@ -126,9 +126,16 @@ module.exports = React.createClass({ }, getFallbackAvatar: function(props) { - if (!this.props.room) return null; + let roomId = null; + if (props.oobData && props.oobData.roomId) { + roomId = this.props.oobData.roomId; + } else if (props.room) { + roomId = props.room.roomId; + } else { + return null; + } - return Avatar.defaultAvatarUrlForString(props.room.roomId); + return Avatar.defaultAvatarUrlForString(roomId); }, render: function() { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 2b0f15703c..f187a6f034 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -946,5 +946,6 @@ "You are a member of these groups": "You are a member of these groups", "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.", "Join an existing group": "Join an existing group", - "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org." + "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.", + "Featured Rooms:": "Featured Rooms:" } From 1deb4062946f083406fd95c35d39007c152a57d4 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 7 Jul 2017 10:08:29 +0100 Subject: [PATCH 380/481] Fix race --- src/components/structures/GroupView.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 71deaf529b..d3a06b915b 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -44,8 +44,9 @@ module.exports = React.createClass({ this.setState({ summary: null, error: null, + }, () => { + this._loadGroupFromServer(newProps.groupId); }); - this._loadGroupFromServer(newProps.groupId); } }, From 183f45bc1faa11710dc51ad79a2bbd5428bc0227 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 7 Jul 2017 10:41:59 +0100 Subject: [PATCH 382/481] Fix lint errors --- src/components/structures/LoggedInView.js | 22 +++++++++++---------- src/components/structures/MyGroups.js | 8 ++++---- src/components/views/avatars/GroupAvatar.js | 6 ++++-- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js index edc918e2a4..f1053618dc 100644 --- a/src/components/structures/LoggedInView.js +++ b/src/components/structures/LoggedInView.js @@ -269,17 +269,19 @@ export default React.createClass({ break; case PageTypes.HomePage: - // If team server config is present, pass the teamServerURL. props.teamToken - // must also be set for the team page to be displayed, otherwise the - // welcomePageUrl is used (which might be undefined). - const teamServerUrl = this.props.config.teamServerConfig ? - this.props.config.teamServerConfig.teamServerURL : null; + { + // If team server config is present, pass the teamServerURL. props.teamToken + // must also be set for the team page to be displayed, otherwise the + // welcomePageUrl is used (which might be undefined). + const teamServerUrl = this.props.config.teamServerConfig ? + this.props.config.teamServerConfig.teamServerURL : null; - page_element = ; + page_element = ; + } break; case PageTypes.UserView: diff --git a/src/components/structures/MyGroups.js b/src/components/structures/MyGroups.js index 222e424b2d..fba6f69d99 100644 --- a/src/components/structures/MyGroups.js +++ b/src/components/structures/MyGroups.js @@ -40,7 +40,7 @@ const GroupTile = React.createClass({ render: function() { return {this.props.groupId}; - } + }, }); export default WithMatrixClient(React.createClass({ @@ -84,12 +84,12 @@ export default WithMatrixClient(React.createClass({ let content; if (this.state.groups) { - let groupNodes = []; + const groupNodes = []; this.state.groups.forEach((g) => { groupNodes.push(
    -
    +
    , ); }); content =
    @@ -117,7 +117,7 @@ export default WithMatrixClient(React.createClass({ {_t( 'Create a group to represent your community! '+ 'Define a set of rooms and your own custom homepage '+ - 'to mark out your space in the Matrix universe.' + 'to mark out your space in the Matrix universe.', )}
    diff --git a/src/components/views/avatars/GroupAvatar.js b/src/components/views/avatars/GroupAvatar.js index 15c71e59d5..506714e857 100644 --- a/src/components/views/avatars/GroupAvatar.js +++ b/src/components/views/avatars/GroupAvatar.js @@ -38,7 +38,7 @@ export default React.createClass({ }; }, - getGroupAvatarUrl: function(props) { + getGroupAvatarUrl: function() { return MatrixClientPeg.get().mxcUrlToHttp( this.props.groupAvatarUrl, this.props.width, @@ -50,6 +50,8 @@ export default React.createClass({ render: function() { const BaseAvatar = sdk.getComponent("avatars.BaseAvatar"); // extract the props we use from props so we can pass any others through + // should consider adding this as a global rule in js-sdk? + /*eslint no-unused-vars: ["error", { "ignoreRestSiblings": true }]*/ const {groupId, groupAvatarUrl, ...otherProps} = this.props; return ( @@ -60,5 +62,5 @@ export default React.createClass({ {...otherProps} /> ); - } + }, }); From fea0a941ce1a7d4f93e72e64b4c91bea9d936cdb Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 7 Jul 2017 11:01:54 +0100 Subject: [PATCH 384/481] Fix lint --- src/components/views/dialogs/CreateGroupDialog.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/components/views/dialogs/CreateGroupDialog.js b/src/components/views/dialogs/CreateGroupDialog.js index 5e050b53b2..c436d938df 100644 --- a/src/components/views/dialogs/CreateGroupDialog.js +++ b/src/components/views/dialogs/CreateGroupDialog.js @@ -20,7 +20,6 @@ import sdk from '../../../index'; import dis from '../../../dispatcher'; import { _t } from '../../../languageHandler'; import MatrixClientPeg from '../../../MatrixClientPeg'; -import AccessibleButton from '../elements/AccessibleButton'; // We match fairly liberally and leave it up to the server to reject if // there are invalid characters etc. @@ -62,14 +61,17 @@ export default React.createClass({ const parsedGroupId = this._parseGroupId(this.state.groupId); let error = null; if (parsedGroupId === null) { - error = _t("Group IDs must be of the form +localpart:%(domain)s", {domain: MatrixClientPeg.get().getDomain()}); + error = _t( + "Group IDs must be of the form +localpart:%(domain)s", + {domain: MatrixClientPeg.get().getDomain()}, + ); } else { - const localpart = parsedGroupId[0]; const domain = parsedGroupId[1]; if (domain !== MatrixClientPeg.get().getDomain()) { error = _t( - "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s", - {domain: MatrixClientPeg.get().getDomain()} + "It is currently only possible to create groups on your own home server: "+ + "use a group ID ending with %(domain)s", + {domain: MatrixClientPeg.get().getDomain()}, ); } } @@ -114,6 +116,9 @@ export default React.createClass({ * Parse a string that may be a group ID * If the string is a valid group ID, return a list of [localpart, domain], * otherwise return null. + * + * @param {string} groupId The ID of the group + * @return {string[]} array of localpart, domain */ _parseGroupId: function(groupId) { const matches = GROUP_REGEX.exec(this.state.groupId); From bc8c2d442b339788333b0d3c30a29656c1e71b27 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 7 Jul 2017 11:34:20 +0100 Subject: [PATCH 386/481] WithMatrixClient -> withMatrixClient because we're using it as a function rather than a React component --- src/components/structures/MyGroups.js | 4 ++-- src/components/views/rooms/EventTile.js | 4 ++-- src/components/views/rooms/MemberInfo.js | 4 ++-- src/components/views/settings/AddPhoneNumber.js | 4 ++-- src/wrappers/{WithMatrixClient.js => withMatrixClient.js} | 3 ++- 5 files changed, 10 insertions(+), 9 deletions(-) rename src/wrappers/{WithMatrixClient.js => withMatrixClient.js} (92%) diff --git a/src/components/structures/MyGroups.js b/src/components/structures/MyGroups.js index fba6f69d99..49a2367db8 100644 --- a/src/components/structures/MyGroups.js +++ b/src/components/structures/MyGroups.js @@ -17,7 +17,7 @@ limitations under the License. import React from 'react'; import sdk from '../../index'; import { _t, _tJsx } from '../../languageHandler'; -import WithMatrixClient from '../../wrappers/WithMatrixClient'; +import withMatrixClient from '../../wrappers/withMatrixClient'; import AccessibleButton from '../views/elements/AccessibleButton'; import dis from '../../dispatcher'; import PropTypes from 'prop-types'; @@ -43,7 +43,7 @@ const GroupTile = React.createClass({ }, }); -export default WithMatrixClient(React.createClass({ +export default withMatrixClient(React.createClass({ displayName: 'MyGroups', propTypes: { diff --git a/src/components/views/rooms/EventTile.js b/src/components/views/rooms/EventTile.js index 170925999d..bb085279e8 100644 --- a/src/components/views/rooms/EventTile.js +++ b/src/components/views/rooms/EventTile.js @@ -24,7 +24,7 @@ var Modal = require('../../../Modal'); var sdk = require('../../../index'); var TextForEvent = require('../../../TextForEvent'); -import WithMatrixClient from '../../../wrappers/WithMatrixClient'; +import withMatrixClient from '../../../wrappers/withMatrixClient'; var ContextualMenu = require('../../structures/ContextualMenu'); import dis from '../../../dispatcher'; @@ -59,7 +59,7 @@ var MAX_READ_AVATARS = 5; // | '--------------------------------------' | // '----------------------------------------------------------' -module.exports = WithMatrixClient(React.createClass({ +module.exports = withMatrixClient(React.createClass({ displayName: 'EventTile', propTypes: { diff --git a/src/components/views/rooms/MemberInfo.js b/src/components/views/rooms/MemberInfo.js index 6dc86f9a97..c034f0e704 100644 --- a/src/components/views/rooms/MemberInfo.js +++ b/src/components/views/rooms/MemberInfo.js @@ -36,12 +36,12 @@ import createRoom from '../../../createRoom'; import DMRoomMap from '../../../utils/DMRoomMap'; import Unread from '../../../Unread'; import { findReadReceiptFromUserId } from '../../../utils/Receipt'; -import WithMatrixClient from '../../../wrappers/WithMatrixClient'; +import withMatrixClient from '../../../wrappers/withMatrixClient'; import AccessibleButton from '../elements/AccessibleButton'; import GeminiScrollbar from 'react-gemini-scrollbar'; -module.exports = WithMatrixClient(React.createClass({ +module.exports = withMatrixClient(React.createClass({ displayName: 'MemberInfo', propTypes: { diff --git a/src/components/views/settings/AddPhoneNumber.js b/src/components/views/settings/AddPhoneNumber.js index dd79720e80..7bc551477e 100644 --- a/src/components/views/settings/AddPhoneNumber.js +++ b/src/components/views/settings/AddPhoneNumber.js @@ -19,10 +19,10 @@ import { _t } from '../../../languageHandler'; import sdk from '../../../index'; import AddThreepid from '../../../AddThreepid'; -import WithMatrixClient from '../../../wrappers/WithMatrixClient'; +import withMatrixClient from '../../../wrappers/withMatrixClient'; import Modal from '../../../Modal'; -export default WithMatrixClient(React.createClass({ +export default withMatrixClient(React.createClass({ displayName: 'AddPhoneNumber', propTypes: { diff --git a/src/wrappers/WithMatrixClient.js b/src/wrappers/withMatrixClient.js similarity index 92% rename from src/wrappers/WithMatrixClient.js rename to src/wrappers/withMatrixClient.js index 8e56d17dff..2333358817 100644 --- a/src/wrappers/WithMatrixClient.js +++ b/src/wrappers/withMatrixClient.js @@ -1,5 +1,6 @@ /* Copyright 2015, 2016 OpenMarket Ltd +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. @@ -26,7 +27,7 @@ import React from 'react'; */ export default function(WrappedComponent) { return React.createClass({ - displayName: "WithMatrixClient<" + WrappedComponent.displayName + ">", + displayName: "withMatrixClient<" + WrappedComponent.displayName + ">", contextTypes: { matrixClient: React.PropTypes.instanceOf(Matrix.MatrixClient).isRequired, From 681fd512d792593b3de347be7f338b8289f1588d Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 7 Jul 2017 13:46:05 +0100 Subject: [PATCH 387/481] Lint --- src/components/structures/GroupView.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 18b9340b4a..8a93af403b 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -29,7 +29,9 @@ function categoryRoomListNode(rooms, categoryId, category) { return ; }); let catHeader = null; - if (category && category.profile) catHeader =
    {category.profile.name}
    + if (category && category.profile) { + catHeader =
    {category.profile.name}
    ; + } return
    {catHeader} {roomNodes} @@ -76,7 +78,7 @@ const FeaturedRoom = React.createClass({
    {roomNameNode}
    ; - } + }, }); export default React.createClass({ From 7a8f524f4a017862396b28865d757e6e9a79b4ec Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 7 Jul 2017 15:30:31 +0100 Subject: [PATCH 388/481] Remove two possible sources for the "AutoComplete stays visible bug which is now https://github.com/vector-im/riot-web/issues/4537 <- there. This does two things: - Track which query was the most recent one requesting completion and only process completions for that one. (In this case the empty string "" doesn't have any completions but we still track it so that previous calls with non-empty queries would not race and cause completions to be shown when we actuall don't want any.) - Make the "do we want to show the AutoComplete box?" logic a bit more sane --- src/components/views/rooms/Autocomplete.js | 29 +++++++++++-------- .../views/rooms/MessageComposerInput.js | 3 +- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/components/views/rooms/Autocomplete.js b/src/components/views/rooms/Autocomplete.js index 807e93cc0b..026be0da62 100644 --- a/src/components/views/rooms/Autocomplete.js +++ b/src/components/views/rooms/Autocomplete.js @@ -50,6 +50,7 @@ export default class Autocomplete extends React.Component { } complete(query, selection) { + this.queryRequested = query; if (this.debounceCompletionsRequest) { clearTimeout(this.debounceCompletionsRequest); } @@ -74,16 +75,25 @@ export default class Autocomplete extends React.Component { const deferred = Q.defer(); this.debounceCompletionsRequest = setTimeout(() => { - getCompletions( - query, selection, this.state.forceComplete, - ).then((completions) => { - this.processCompletions(completions); + this.processQuery(query, selection).then(() => { deferred.resolve(); }); }, autocompleteDelay); return deferred.promise; } + processQuery(query, selection) { + return getCompletions( + query, selection, this.state.forceComplete, + ).then((completions) => { + // Only ever process the completions for the most recent query being processed + if (query !== this.queryRequested) { + return; + } + this.processCompletions(completions); + }); + } + processCompletions(completions) { const completionList = flatMap(completions, (provider) => provider.completions); @@ -105,14 +115,9 @@ export default class Autocomplete extends React.Component { } let hide = this.state.hide; - // These are lists of booleans that indicate whether whether the corresponding provider had a matching pattern - const oldMatches = this.state.completions.map((completion) => !!completion.command.command), - newMatches = completions.map((completion) => !!completion.command.command); - - // So, essentially, we re-show autocomplete if any provider finds a new pattern or stops finding an old one - if (!isEqual(oldMatches, newMatches)) { - hide = false; - } + // If `completion.command.command` is truthy, then a provider has matched with the query + const anyMatches = completions.some((completion) => !!completion.command.command); + hide = !anyMatches; this.setState({ completions, diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 3465b2ad14..488a8229a6 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -514,6 +514,7 @@ export default class MessageComposerInput extends React.Component { const currentBlockType = RichUtils.getCurrentBlockType(this.state.editorState); // If we're in any of these three types of blocks, shift enter should insert soft newlines // And just enter should end the block + // XXX: Empirically enter does not end these blocks if(['blockquote', 'unordered-list-item', 'ordered-list-item'].includes(currentBlockType)) { return false; } @@ -629,8 +630,6 @@ export default class MessageComposerInput extends React.Component { editorState: this.createEditorState(), }); - this.autocomplete.hide(); - return true; } From f2d243443b76560cc52c3354333d22bde3f2a9d0 Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Fri, 7 Jul 2017 17:44:25 +0100 Subject: [PATCH 389/481] Suppress more errors from spurious postMessage calls on the demo instance --- src/ScalarMessaging.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ScalarMessaging.js b/src/ScalarMessaging.js index 1104458f22..e7767cb3cd 100644 --- a/src/ScalarMessaging.js +++ b/src/ScalarMessaging.js @@ -481,7 +481,7 @@ const onMessage = function(event) { // All strings start with the empty string, so for sanity return if the length // of the event origin is 0. let url = SdkConfig.get().integrations_ui_url; - if (event.origin.length === 0 || !url.startsWith(event.origin)) { + if (event.origin.length === 0 || !url.startsWith(event.origin) || !event.data.action) { return; // don't log this - debugging APIs like to spam postMessage which floods the log otherwise } From 1e713557bb7e9183af20fb001f05d276353df85f Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 7 Jul 2017 18:34:40 +0100 Subject: [PATCH 390/481] PR feedback --- src/components/structures/GroupView.js | 6 ++- src/components/structures/MyGroups.js | 9 ++-- .../views/dialogs/CreateGroupDialog.js | 51 ++++++++++--------- src/i18n/strings/en_EN.json | 5 +- 4 files changed, 37 insertions(+), 34 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 88c73b75a8..3f321d453d 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -79,7 +79,7 @@ export default React.createClass({ } let nameNode; - if (summary.profile.name) { + if (summary.profile && summary.profile.name) { nameNode =
    {summary.profile.name} @@ -92,6 +92,8 @@ export default React.createClass({
    ; } + const groupAvatarUrl = summary.profile ? summary.profile.avatar_url : null; + return (
    @@ -99,7 +101,7 @@ export default React.createClass({
    diff --git a/src/components/structures/MyGroups.js b/src/components/structures/MyGroups.js index 49a2367db8..3eb694acce 100644 --- a/src/components/structures/MyGroups.js +++ b/src/components/structures/MyGroups.js @@ -61,9 +61,6 @@ export default withMatrixClient(React.createClass({ this._fetch(); }, - componentWillUnmount: function() { - }, - _onCreateGroupClick: function() { const CreateGroupDialog = sdk.getComponent("dialogs.CreateGroupDialog"); Modal.createDialog(CreateGroupDialog); @@ -73,7 +70,7 @@ export default withMatrixClient(React.createClass({ this.props.matrixClient.getJoinedGroups().done((result) => { this.setState({groups: result.groups, error: null}); }, (err) => { - this.setState({result: null, error: err}); + this.setState({groups: null, error: err}); }); }, @@ -93,12 +90,12 @@ export default withMatrixClient(React.createClass({ ); }); content =
    -
    {_t('You are a member of these groups')}:
    +
    {_t('You are a member of these groups:')}
    {groupNodes}
    ; } else if (this.state.error) { content =
    - Error whilst fetching joined groups + {_t('Error whilst fetching joined groups')}
    ; } else { content = ; diff --git a/src/components/views/dialogs/CreateGroupDialog.js b/src/components/views/dialogs/CreateGroupDialog.js index c436d938df..23194f20a5 100644 --- a/src/components/views/dialogs/CreateGroupDialog.js +++ b/src/components/views/dialogs/CreateGroupDialog.js @@ -130,10 +130,10 @@ export default React.createClass({ render: function() { const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); - const Loader = sdk.getComponent("elements.Spinner"); + const Spinner = sdk.getComponent('elements.Spinner'); if (this.state.creating) { - return ; + return ; } let createErrorNode; @@ -154,29 +154,32 @@ export default React.createClass({ >
    -
    - +
    +
    + +
    +
    + +
    -
    - -
    -
    -
    - -
    -
    - +
    +
    + +
    +
    + +
    {this.state.groupIdError} diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 6647126c28..dbef0fc7fe 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -948,9 +948,10 @@ "Group IDs must be of the form +localpart:%(domain)s": "Group IDs must be of the form +localpart:%(domain)s", "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s", "Room creation failed": "Room creation failed", - "You are a member of these groups": "You are a member of these groups", + "You are a member of these groups:": "You are a member of these groups:", "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.", "Join an existing group": "Join an existing group", "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.", - "Autocomplete Delay (ms):": "Autocomplete Delay (ms):" + "Autocomplete Delay (ms):": "Autocomplete Delay (ms):", + "Error whilst fetching joined groups": "Error whilst fetching joined groups" } From 9a272d496596a6512c324d6e3674896e650949c3 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 7 Jul 2017 19:02:51 +0100 Subject: [PATCH 391/481] Only allow completion of emoji in certain circumstances Which are: - the emoji to complete is at the start of the query - there is a whitespace character before the emoji - there is an emoji before the emoji (so that several emoji can be input in-a-row) Fixes https://github.com/vector-im/riot-web/issues/4498 (although it seems to be fixed through some other fix) --- src/autocomplete/EmojiProvider.js | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/autocomplete/EmojiProvider.js b/src/autocomplete/EmojiProvider.js index 35e9cc7b68..f70ff7f200 100644 --- a/src/autocomplete/EmojiProvider.js +++ b/src/autocomplete/EmojiProvider.js @@ -18,7 +18,7 @@ limitations under the License. import React from 'react'; import { _t } from '../languageHandler'; import AutocompleteProvider from './AutocompleteProvider'; -import {emojioneList, shortnameToImage, shortnameToUnicode, asciiRegexp} from 'emojione'; +import {emojioneList, shortnameToImage, shortnameToUnicode, asciiRegexp, unicodeRegexp} from 'emojione'; import FuzzyMatcher from './FuzzyMatcher'; import sdk from '../index'; import {PillCompletion} from './Components'; @@ -41,7 +41,15 @@ const CATEGORY_ORDER = [ ]; // Match for ":wink:" or ascii-style ";-)" provided by emojione -const EMOJI_REGEX = new RegExp('(' + asciiRegexp + '|:\\w*:?)$', 'g'); +// (^|\s|(emojiUnicode)) to make sure we're either at the start of the string or there's a +// whitespace character or an emoji before the emoji. The reason for unicodeRegexp is +// that we need to support inputting multiple emoji with no space between them. +const EMOJI_REGEX = new RegExp('(?:^|\\s|' + unicodeRegexp + ')(' + asciiRegexp + '|:\\w*:?)$', 'g'); + +// We also need to match the non-zero-length prefixes to remove them from the final match, +// and update the range so that we don't replace the whitespace or the previous emoji. +const MATCH_PREFIX_REGEX = new RegExp('(\\s|' + unicodeRegexp + ')'); + const EMOJI_SHORTNAMES = Object.keys(EmojiData).map((key) => EmojiData[key]).sort( (a, b) => { if (a.category === b.category) { @@ -73,9 +81,18 @@ export default class EmojiProvider extends AutocompleteProvider { const EmojiText = sdk.getComponent('views.elements.EmojiText'); let completions = []; - let {command, range} = this.getCurrentCommand(query, selection); + const {command, range} = this.getCurrentCommand(query, selection); if (command) { - completions = this.matcher.match(command[0]).map(result => { + let matchedString = command[0]; + + // Remove prefix of any length (single whitespace or unicode emoji) + const prefixMatch = MATCH_PREFIX_REGEX.exec(matchedString); + if (prefixMatch) { + matchedString = matchedString.slice(prefixMatch[0].length); + range.start += prefixMatch[0].length; + } + + completions = this.matcher.match(matchedString).map((result) => { const {shortname} = result; const unicode = shortnameToUnicode(shortname); return { From 62ee0f4e0235c40e8db4c850687296baf20eac9a Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 7 Jul 2017 19:43:30 +0100 Subject: [PATCH 392/481] Fix accepting invites Accepting an invite would cause a room to arrive via /sync only for it to throw an error in the auto complete code and cause the client to go wibbly (infinite spinner or preview bar). The logs that lead to the debugging of this are https://github.com/matrix-org/riot-web-rageshakes/issues/239 Hopefully the error being throw isn't totally unrelated but looking at the sync handling for inviteRooms in sync.js, new rooms are stored and _then_ the Room event is emitted. The Room event could trigger setUserListFromRoom, which is where the bug was. So the room should have been stored regardless of this bug and the client should have been recoverable by swapping away and viewing the room again. --- src/autocomplete/UserProvider.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/autocomplete/UserProvider.js b/src/autocomplete/UserProvider.js index 26ec15e124..0025a3c5e9 100644 --- a/src/autocomplete/UserProvider.js +++ b/src/autocomplete/UserProvider.js @@ -91,8 +91,8 @@ export default class UserProvider extends AutocompleteProvider { if (member.userId !== currentUserId) return true; }); - this.users = _sortBy(this.users, (completion) => - 1E20 - lastSpoken[completion.user.userId] || 1E20, + this.users = _sortBy(this.users, (member) => + 1E20 - lastSpoken[member.userId] || 1E20, ); this.matcher.setObjects(this.users); From 86e717f30db4fe2f2f396656b29b0f4e74eb9792 Mon Sep 17 00:00:00 2001 From: David Baker Date: Sun, 9 Jul 2017 12:34:50 +0100 Subject: [PATCH 393/481] Fix indenting Also autocomplete delay was duplicated --- src/i18n/strings/en_EN.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index dbef0fc7fe..fc4257cbc1 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -952,6 +952,5 @@ "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.", "Join an existing group": "Join an existing group", "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.", - "Autocomplete Delay (ms):": "Autocomplete Delay (ms):", - "Error whilst fetching joined groups": "Error whilst fetching joined groups" + "Error whilst fetching joined groups": "Error whilst fetching joined groups" } From 49ca29e422b4994637df0858357a6793d83fba01 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 10 Jul 2017 14:07:16 +0100 Subject: [PATCH 394/481] Lint --- src/components/structures/GroupView.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 2b44e9eec4..0a790471ac 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -147,8 +147,8 @@ export default React.createClass({ let featuredRooms = null; if (summary.rooms_section.rooms.length > 0) { - let defaultCategoryRooms = []; - let categoryRooms = {}; + const defaultCategoryRooms = []; + const categoryRooms = {}; summary.rooms_section.rooms.forEach((r) => { if (r.category_id === null) { defaultCategoryRooms.push(r); From b104228a7bb0b525a9964c6efa0b579f6b40276e Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 10 Jul 2017 14:25:33 +0100 Subject: [PATCH 395/481] Remove redundant functions, bindings, props --- src/components/views/rooms/MessageComposer.js | 4 ---- src/components/views/rooms/MessageComposerInput.js | 7 ------- 2 files changed, 11 deletions(-) diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index c623c88312..6993fd8f7d 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -36,9 +36,6 @@ export default class MessageComposer extends React.Component { this.uploadFiles = this.uploadFiles.bind(this); this.onVoiceCallClick = this.onVoiceCallClick.bind(this); this.onInputContentChanged = this.onInputContentChanged.bind(this); - this.onUpArrow = this.onUpArrow.bind(this); - this.onDownArrow = this.onDownArrow.bind(this); - this._tryComplete = this._tryComplete.bind(this); this._onAutocompleteConfirm = this._onAutocompleteConfirm.bind(this); this.onToggleFormattingClicked = this.onToggleFormattingClicked.bind(this); this.onToggleMarkdownClicked = this.onToggleMarkdownClicked.bind(this); @@ -349,7 +346,6 @@ export default class MessageComposer extends React.Component { onResize={this.props.onResize} room={this.props.room} placeholder={placeholderText} - tryComplete={this._tryComplete} onFilesPasted={this.uploadFiles} onContentChanged={this.onInputContentChanged} onInputStateChanged={this.onInputStateChanged} />, diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index 6da7f272c4..cf6dfbb6b7 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -73,13 +73,6 @@ export default class MessageComposerInput extends React.Component { // called with current plaintext content (as a string) whenever it changes onContentChanged: React.PropTypes.func, - onUpArrow: React.PropTypes.func, - - onDownArrow: React.PropTypes.func, - - // attempts to confirm currently selected completion, returns whether actually confirmed - tryComplete: React.PropTypes.func, - onInputStateChanged: React.PropTypes.func, }; From 66525f682680198a209cf436b62249630130406f Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 10 Jul 2017 15:07:22 +0100 Subject: [PATCH 396/481] Null-guard RR logic --- src/Velociraptor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Velociraptor.js b/src/Velociraptor.js index 18c871a12d..9c85bafca0 100644 --- a/src/Velociraptor.js +++ b/src/Velociraptor.js @@ -64,7 +64,7 @@ module.exports = React.createClass({ }); //console.log("translation: "+oldNode.style.left+" -> "+c.props.style.left); } - if (oldNode.style.visibility == 'hidden' && c.props.style.visibility == 'visible') { + if (oldNode && oldNode.style.visibility == 'hidden' && c.props.style.visibility == 'visible') { oldNode.style.visibility = c.props.style.visibility; } self.children[c.key] = old; From 048912a241ee8034a65e2e422116249646a0370f Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 10 Jul 2017 15:17:58 +0100 Subject: [PATCH 397/481] Remove commented ordering code No lomger needed now roosm come down in order --- src/components/structures/GroupView.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 0a790471ac..f33e7321cd 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -161,11 +161,6 @@ export default React.createClass({ list.push(r); } }); - /*[defaultCategoryRooms, ...Object.values(categoryRooms)].forEach((roomList) => { - roomList.sort((r1, r2) => { - return r1.order - r2.order; - }); - });*/ let defaultCategoryNode = null; if (defaultCategoryRooms.length > 0) { From 0e67a9158c9772caaade4f1f9d2bd6e9561b08b8 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 10 Jul 2017 15:32:57 +0100 Subject: [PATCH 398/481] hide settings button until it's wired up --- src/components/structures/GroupView.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index f33e7321cd..0d85c69d17 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -217,7 +217,8 @@ export default React.createClass({ {summary.profile.short_description}
    - + // display: none until settings is wired up +
    From 96f5f92c7f8510bc28208bc6a273da22202fad6a Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 10 Jul 2017 15:44:41 +0100 Subject: [PATCH 399/481] Disallow data attribute, we don't need it currently --- src/HtmlUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HtmlUtils.js b/src/HtmlUtils.js index ea72b92eaf..e291632eca 100644 --- a/src/HtmlUtils.js +++ b/src/HtmlUtils.js @@ -153,7 +153,7 @@ const sanitizeHtmlParams = { allowedSchemes: ['http', 'https', 'ftp', 'mailto'], allowedSchemesByTag: { - img: [ 'data', 'mxc' ], + img: ['mxc'], }, allowProtocolRelative: false, From bb9080425a5490fcf0bf26e741727b811485e686 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 10 Jul 2017 16:27:23 +0100 Subject: [PATCH 400/481] Allow image tags with src attributes with schemes http[s] And transform `mxc:*` URLs to `https?://` --- src/HtmlUtils.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/HtmlUtils.js b/src/HtmlUtils.js index e291632eca..95e698d6e5 100644 --- a/src/HtmlUtils.js +++ b/src/HtmlUtils.js @@ -23,6 +23,7 @@ var linkifyMatrix = require('./linkify-matrix'); import escape from 'lodash/escape'; import emojione from 'emojione'; import classNames from 'classnames'; +import MatrixClientPeg from './MatrixClientPeg'; emojione.imagePathSVG = 'emojione/svg/'; // Store PNG path for displaying many flags at once (for increased performance over SVG) @@ -141,8 +142,6 @@ const sanitizeHtmlParams = { font: ['color', 'data-mx-bg-color', 'data-mx-color', 'style'], // custom to matrix span: ['data-mx-bg-color', 'data-mx-color', 'style'], // custom to matrix a: ['href', 'name', 'target', 'rel'], // remote target: custom to matrix - // We don't currently allow img itself by default, but this - // would make sense if we did img: ['src'], ol: ['start'], code: ['class'], // We don't actually allow all classes, we filter them in transformTags @@ -153,7 +152,7 @@ const sanitizeHtmlParams = { allowedSchemes: ['http', 'https', 'ftp', 'mailto'], allowedSchemesByTag: { - img: ['mxc'], + img: ['http', 'https'], }, allowProtocolRelative: false, @@ -187,6 +186,16 @@ const sanitizeHtmlParams = { attribs.rel = 'noopener'; // https://mathiasbynens.github.io/rel-noopener/ return { tagName: tagName, attribs : attribs }; }, + 'img': function(tagName, attribs) { + if (attribs.src.startsWith('mxc://')) { + attribs.src = MatrixClientPeg.get().mxcUrlToHttp( + attribs.src, + attribs.width || 800, + attribs.height || 600, + ); + } + return { tagName: tagName, attribs: attribs }; + }, 'code': function(tagName, attribs) { if (typeof attribs.class !== 'undefined') { // Filter out all classes other than ones starting with language- for syntax highlighting. From 6877b9943539b4e0900ad65d4ae77a861d3d8b97 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 10 Jul 2017 17:44:49 +0100 Subject: [PATCH 401/481] Strip ``s when transforming `img`s instead of using `allowedSchemesByTag` --- src/HtmlUtils.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/HtmlUtils.js b/src/HtmlUtils.js index 95e698d6e5..1036fbf663 100644 --- a/src/HtmlUtils.js +++ b/src/HtmlUtils.js @@ -151,9 +151,6 @@ const sanitizeHtmlParams = { // URL schemes we permit allowedSchemes: ['http', 'https', 'ftp', 'mailto'], - allowedSchemesByTag: { - img: ['http', 'https'], - }, allowProtocolRelative: false, transformTags: { // custom to matrix @@ -187,13 +184,14 @@ const sanitizeHtmlParams = { return { tagName: tagName, attribs : attribs }; }, 'img': function(tagName, attribs) { - if (attribs.src.startsWith('mxc://')) { - attribs.src = MatrixClientPeg.get().mxcUrlToHttp( - attribs.src, - attribs.width || 800, - attribs.height || 600, - ); + if (!attribs.src.startsWith('mxc://')) { + return { tagName, attribs: {}}; } + attribs.src = MatrixClientPeg.get().mxcUrlToHttp( + attribs.src, + attribs.width || 800, + attribs.height || 600, + ); return { tagName: tagName, attribs: attribs }; }, 'code': function(tagName, attribs) { From dfa97e84523089b0a39de0f769282f756f99f8c1 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 10 Jul 2017 17:48:01 +0100 Subject: [PATCH 402/481] Add comment --- src/HtmlUtils.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/HtmlUtils.js b/src/HtmlUtils.js index 1036fbf663..9041e88594 100644 --- a/src/HtmlUtils.js +++ b/src/HtmlUtils.js @@ -184,6 +184,9 @@ const sanitizeHtmlParams = { return { tagName: tagName, attribs : attribs }; }, 'img': function(tagName, attribs) { + // Strip out imgs that aren't `mxc` here instead of using allowedSchemesByTag + // because transformTags is used _before_ we filter by allowedSchemesByTag and + // we don't want to allow images with `https?` `src`s. if (!attribs.src.startsWith('mxc://')) { return { tagName, attribs: {}}; } From 925d5bd480f60356a389af5ebd4db5cd47f1bf7e Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 10 Jul 2017 19:32:02 +0100 Subject: [PATCH 403/481] Add featured users to Group View --- src/components/structures/GroupView.js | 167 ++++++++++++++++++------ src/components/structures/MatrixChat.js | 8 +- src/i18n/strings/en_EN.json | 3 +- 3 files changed, 135 insertions(+), 43 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 0d85c69d17..da4162d6e0 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -30,7 +30,7 @@ function categoryRoomListNode(rooms, categoryId, category) { }); let catHeader = null; if (category && category.profile) { - catHeader =
    {category.profile.name}
    ; + catHeader =
    {category.profile.name}
    ; } return
    {catHeader} @@ -47,6 +47,7 @@ const FeaturedRoom = React.createClass({ onClick: function(e) { e.preventDefault(); + e.stopPropagation(); dis.dispatch({ action: 'view_room', @@ -74,9 +75,54 @@ const FeaturedRoom = React.createClass({ roomNameNode = {this.props.summaryInfo.profile.name}; } - return + return -
    {roomNameNode}
    +
    {roomNameNode}
    +
    ; + }, +}); + +function roleUserListNode(users, roleId, role) { + const userNodes = users.map((u) => { + return ; + }); + let roleHeader = null; + if (role && role.profile) { + roleHeader =
    {role.profile.name}
    ; + } + return
    + {roleHeader} + {userNodes} +
    ; +} + +const FeaturedUser = React.createClass({ + displayName: 'FeaturedUser', + + props: { + summaryInfo: PropTypes.object.isRequired, + }, + + onClick: function(e) { + e.preventDefault(); + e.stopPropagation(); + + dis.dispatch({ + action: 'view_start_chat_or_reuse', + user_id: this.props.summaryInfo.user_id, + go_home_on_cancel: false, + }); + }, + + render: function() { + // Add avatar once we get profile info inline in the summary response + //const BaseAvatar = sdk.getComponent("avatars.BaseAvatar"); + + const permalink = 'https://matrix.to/#/' + this.props.summaryInfo.user_id; + const userNameNode = {this.props.summaryInfo.user_id}; + + return +
    {userNameNode}
    ; }, }); @@ -129,6 +175,82 @@ export default React.createClass({ this.setState({editing: true}); }, + _getFeaturedRoomsNode() { + const summary = this.state.summary; + + if (summary.rooms_section.rooms.length == 0) return null; + + const defaultCategoryRooms = []; + const categoryRooms = {}; + summary.rooms_section.rooms.forEach((r) => { + if (r.category_id === null) { + defaultCategoryRooms.push(r); + } else { + let list = categoryRooms[r.category_id]; + if (list === undefined) { + list = []; + categoryRooms[r.category_id] = list; + } + list.push(r); + } + }); + + let defaultCategoryNode = null; + if (defaultCategoryRooms.length > 0) { + defaultCategoryNode = categoryRoomListNode(defaultCategoryRooms); + } + const categoryRoomNodes = Object.keys(categoryRooms).map((catId) => { + const cat = summary.rooms_section.categories[catId]; + return categoryRoomListNode(categoryRooms[catId], catId, cat); + }); + + return
    +
    + {_t('Featured Rooms:')} +
    + {defaultCategoryNode} + {categoryRoomNodes} +
    ; + }, + + _getFeaturedUsersNode() { + const summary = this.state.summary; + + if (summary.users_section.users.length == 0) return null; + + const noRoleUsers = []; + const roleUsers = {}; + summary.users_section.users.forEach((u) => { + if (u.role_id === null) { + noRoleUsers.push(u); + } else { + let list = roleUsers[u.role_id]; + if (list === undefined) { + list = []; + roleUsers[u.role_id] = list; + } + list.push(u); + } + }); + + let noRoleNode = null; + if (noRoleUsers.length > 0) { + noRoleNode = roleUserListNode(noRoleUsers); + } + const roleUserNodes = Object.keys(roleUsers).map((roleId) => { + const role = summary.users_section.roles[roleId]; + return roleUserListNode(roleUsers[roleId], roleId, role); + }); + + return
    +
    + {_t('Featured Users:')} +
    + {noRoleNode} + {roleUserNodes} +
    ; + }, + render: function() { const GroupAvatar = sdk.getComponent("avatars.GroupAvatar"); const Loader = sdk.getComponent("elements.Spinner"); @@ -145,43 +267,10 @@ export default React.createClass({ description = sanitizedHtmlNode(summary.profile.long_description); } - let featuredRooms = null; - if (summary.rooms_section.rooms.length > 0) { - const defaultCategoryRooms = []; - const categoryRooms = {}; - summary.rooms_section.rooms.forEach((r) => { - if (r.category_id === null) { - defaultCategoryRooms.push(r); - } else { - let list = categoryRooms[r.category_id]; - if (list === undefined) { - list = []; - categoryRooms[r.category_id] = list; - } - list.push(r); - } - }); - - let defaultCategoryNode = null; - if (defaultCategoryRooms.length > 0) { - defaultCategoryNode = categoryRoomListNode(defaultCategoryRooms); - } - const categoryRoomNodes = Object.keys(categoryRooms).map((catId) => { - const cat = summary.rooms_section.categories[catId]; - return categoryRoomListNode(categoryRooms[catId], catId, cat); - }); - - featuredRooms =
    -
    - {_t('Featured Rooms:')} -
    - {defaultCategoryNode} - {categoryRoomNodes} -
    ; - } const roomBody =
    {description}
    - {featuredRooms} + {this._getFeaturedRoomsNode()} + {this._getFeaturedUsersNode()}
    ; let nameNode; @@ -200,6 +289,7 @@ export default React.createClass({ const groupAvatarUrl = summary.profile ? summary.profile.avatar_url : null; + // settings button is display: none until settings is wired up return (
    @@ -217,7 +307,6 @@ export default React.createClass({ {summary.profile.short_description}
    - // display: none until settings is wired up diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index f0337fdd8e..f9166db748 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -506,7 +506,7 @@ module.exports = React.createClass({ this._setMxId(payload); break; case 'view_start_chat_or_reuse': - this._chatCreateOrReuse(payload.user_id); + this._chatCreateOrReuse(payload.user_id, payload.go_home_on_cancel); break; case 'view_create_chat': this._createChat(); @@ -801,7 +801,9 @@ module.exports = React.createClass({ }); }, - _chatCreateOrReuse: function(userId) { + _chatCreateOrReuse: function(userId, go_home_on_cancel) { + if (go_home_on_cancel === undefined) go_home_on_cancel = true; + const ChatCreateOrReuseDialog = sdk.getComponent( 'views.dialogs.ChatCreateOrReuseDialog', ); @@ -832,7 +834,7 @@ module.exports = React.createClass({ const close = Modal.createDialog(ChatCreateOrReuseDialog, { userId: userId, onFinished: (success) => { - if (!success) { + if (!success && go_home_on_cancel) { // Dialog cancelled, default to home dis.dispatch({ action: 'view_home_page' }); } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 0551695b03..b8a59d47fd 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -953,5 +953,6 @@ "Join an existing group": "Join an existing group", "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.", "Featured Rooms:": "Featured Rooms:", - "Error whilst fetching joined groups": "Error whilst fetching joined groups" + "Error whilst fetching joined groups": "Error whilst fetching joined groups", + "Featured Users:": "Featured Users:" } From e18924c8fcd8fdf908aab9aa0b980d6136ec5c17 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 11 Jul 2017 10:42:02 +0100 Subject: [PATCH 404/481] Fix bug where a received message would remove completions for users `Array.prototype.splice` will return the array of removed items, not a new array. The array operated on is actually modified in-place. This was causing a few weird things to happen: https://github.com/vector-im/riot-web/issues/4511 and https://github.com/vector-im/riot-web/issues/4533. This should fix both of them but it is concerning that doing the tab completion is required to reproduce. Let's just see how this goes before closing the issues. Thanks @turt2live for reproducing both bugs, giving enough information for a fix :) --- src/autocomplete/UserProvider.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/autocomplete/UserProvider.js b/src/autocomplete/UserProvider.js index 0025a3c5e9..f052716b4b 100644 --- a/src/autocomplete/UserProvider.js +++ b/src/autocomplete/UserProvider.js @@ -101,7 +101,8 @@ export default class UserProvider extends AutocompleteProvider { onUserSpoke(user: RoomMember) { if(user.userId === MatrixClientPeg.get().credentials.userId) return; - this.users = this.users.splice( + // Move the user that spoke to the front of the array + this.users.splice( this.users.findIndex((user2) => user2.userId === user.userId), 1); this.users = [user, ...this.users]; From 29990296d264e7ca6a84c04944460497e18e2fb2 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 11 Jul 2017 11:02:23 +0100 Subject: [PATCH 405/481] Lint --- src/components/structures/MatrixChat.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index f9166db748..75a15d71ee 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -801,8 +801,8 @@ module.exports = React.createClass({ }); }, - _chatCreateOrReuse: function(userId, go_home_on_cancel) { - if (go_home_on_cancel === undefined) go_home_on_cancel = true; + _chatCreateOrReuse: function(userId, goHomeOnCancel) { + if (goHomeOnCancel === undefined) goHomeOnCancel = true; const ChatCreateOrReuseDialog = sdk.getComponent( 'views.dialogs.ChatCreateOrReuseDialog', @@ -834,7 +834,7 @@ module.exports = React.createClass({ const close = Modal.createDialog(ChatCreateOrReuseDialog, { userId: userId, onFinished: (success) => { - if (!success && go_home_on_cancel) { + if (!success && goHomeOnCancel) { // Dialog cancelled, default to home dis.dispatch({ action: 'view_home_page' }); } From cf158530f5fb0c69a4198d6d4f4b49e901926e39 Mon Sep 17 00:00:00 2001 From: Kegsay Date: Tue, 11 Jul 2017 12:15:27 +0100 Subject: [PATCH 406/481] Implement new widget API (#1201) * Implement new widget API This allows clients to see who provisioned which widgets. * Update to make state_key the wid * Update to latest API * Only show widgets which have required fields * Don't constantly show apps dialog * Fix example to include data key --- src/ScalarMessaging.js | 112 ++++++++++++----------- src/components/structures/RoomView.js | 10 +- src/components/views/elements/AppTile.js | 28 ++---- src/components/views/rooms/AppsDrawer.js | 32 +------ 4 files changed, 82 insertions(+), 100 deletions(-) diff --git a/src/ScalarMessaging.js b/src/ScalarMessaging.js index e7767cb3cd..df89f7dba2 100644 --- a/src/ScalarMessaging.js +++ b/src/ScalarMessaging.js @@ -143,41 +143,44 @@ Example: get_widgets ----------- -Get a list of all widgets in the room. The response is the `content` field -of the state event. +Get a list of all widgets in the room. The response is an array +of state events. Request: - `room_id` (String) is the room to get the widgets in. Response: -{ - $widget_id: { - type: "example", - url: "http://widget.url", - name: "Example Widget", - data: { - key: "val" +[ + { + type: "im.vector.modular.widgets", + state_key: "wid1", + content: { + type: "grafana", + url: "https://grafanaurl", + name: "dashboard", + data: {key: "val"} } - }, - $widget_id: { ... } -} + room_id: “!foo:bar”, + sender: "@alice:localhost" + } +] Example: { action: "get_widgets", room_id: "!foo:bar", - widget_id: "abc123", - url: "http://widget.url", - type: "example", - response: { - $widget_id: { - type: "example", - url: "http://widget.url", - name: "Example Widget", - data: { - key: "val" + response: [ + { + type: "im.vector.modular.widgets", + state_key: "wid1", + content: { + type: "grafana", + url: "https://grafanaurl", + name: "dashboard", + data: {key: "val"} } - }, - $widget_id: { ... } - } + room_id: “!foo:bar”, + sender: "@alice:localhost" + } + ] } @@ -301,33 +304,17 @@ function setWidget(event, roomId) { } } - // TODO: same dance we do for power levels. It'd be nice if the JS SDK had helper methods to do this. - client.getStateEvent(roomId, "im.vector.modular.widgets", "").then((widgets) => { - if (widgetUrl === null) { - delete widgets[widgetId]; - } - else { - widgets[widgetId] = { - type: widgetType, - url: widgetUrl, - name: widgetName, - data: widgetData, - }; - } - return client.sendStateEvent(roomId, "im.vector.modular.widgets", widgets); - }, (err) => { - if (err.errcode === "M_NOT_FOUND") { - return client.sendStateEvent(roomId, "im.vector.modular.widgets", { - [widgetId]: { - type: widgetType, - url: widgetUrl, - name: widgetName, - data: widgetData, - } - }); - } - throw err; - }).done(() => { + let content = { + type: widgetType, + url: widgetUrl, + name: widgetName, + data: widgetData, + }; + if (widgetUrl === null) { // widget is being deleted + content = {}; + } + + client.sendStateEvent(roomId, "im.vector.modular.widgets", content, widgetId).done(() => { sendResponse(event, { success: true, }); @@ -337,7 +324,26 @@ function setWidget(event, roomId) { } function getWidgets(event, roomId) { - returnStateEvent(event, roomId, "im.vector.modular.widgets", ""); + const client = MatrixClientPeg.get(); + if (!client) { + sendError(event, _t('You need to be logged in.')); + return; + } + const room = client.getRoom(roomId); + if (!room) { + sendError(event, _t('This room is not recognised.')); + return; + } + const stateEvents = room.currentState.getStateEvents("im.vector.modular.widgets"); + // Only return widgets which have required fields + let widgetStateEvents = []; + stateEvents.forEach((ev) => { + if (ev.getContent().type && ev.getContent().url) { + widgetStateEvents.push(ev.event); // return the raw event + } + }) + + sendResponse(event, widgetStateEvents); } function setPlumbingState(event, roomId, status) { diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index ffb0c1243c..f09e1197cf 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -275,8 +275,14 @@ module.exports = React.createClass({ }, _shouldShowApps: function(room) { - const appsStateEvents = room.currentState.getStateEvents('im.vector.modular.widgets', ''); - return appsStateEvents && Object.keys(appsStateEvents.getContent()).length > 0; + const appsStateEvents = room.currentState.getStateEvents('im.vector.modular.widgets'); + // any valid widget = show apps + for (let i = 0; i < appsStateEvents.length; i++) { + if (appsStateEvents[i].getContent().type && appsStateEvents[i].getContent().url) { + return true; + } + } + return false; }, componentDidMount: function() { diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 9fed0e7d5b..23b7d9f604 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -91,24 +91,16 @@ export default React.createClass({ _onDeleteClick: function() { console.log("Delete widget %s", this.props.id); - const appsStateEvents = this.props.room.currentState.getStateEvents('im.vector.modular.widgets', ''); - if (!appsStateEvents) { - return; - } - const appsStateEvent = appsStateEvents.getContent(); - if (appsStateEvent[this.props.id]) { - delete appsStateEvent[this.props.id]; - MatrixClientPeg.get().sendStateEvent( - this.props.room.roomId, - 'im.vector.modular.widgets', - appsStateEvent, - '', - ).then(() => { - console.log('Deleted widget'); - }, (e) => { - console.error('Failed to delete widget', e); - }); - } + MatrixClientPeg.get().sendStateEvent( + this.props.room.roomId, + 'im.vector.modular.widgets', + {}, // empty content + this.props.id, + ).then(() => { + console.log('Deleted widget'); + }, (e) => { + console.error('Failed to delete widget', e); + }); }, formatAppTileName: function() { diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index a12bd8ecac..c95a473db8 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -111,26 +111,6 @@ module.exports = React.createClass({ app.name = app.name || app.type; app.url = this.encodeUri(app.url, params); - // switch(app.type) { - // case 'etherpad': - // app.queryParams = '?userName=' + this.props.userId + - // '&padId=' + this.props.room.roomId; - // break; - // case 'jitsi': { - // - // app.queryParams = '?confId=' + app.data.confId + - // '&displayName=' + encodeURIComponent(user.displayName) + - // '&avatarUrl=' + encodeURIComponent(MatrixClientPeg.get().mxcUrlToHttp(user.avatarUrl)) + - // '&email=' + encodeURIComponent(this.props.userId) + - // '&isAudioConf=' + app.data.isAudioConf; - // - // break; - // } - // case 'vrdemo': - // app.queryParams = '?roomAlias=' + encodeURIComponent(app.data.roomAlias); - // break; - // } - return app; }, @@ -142,17 +122,15 @@ module.exports = React.createClass({ }, _getApps: function() { - const appsStateEvents = this.props.room.currentState.getStateEvents('im.vector.modular.widgets', ''); + const appsStateEvents = this.props.room.currentState.getStateEvents('im.vector.modular.widgets'); if (!appsStateEvents) { return []; } - const appsStateEvent = appsStateEvents.getContent(); - if (Object.keys(appsStateEvent).length < 1) { - return []; - } - return Object.keys(appsStateEvent).map((appId) => { - return this._initAppConfig(appId, appsStateEvent[appId]); + return appsStateEvents.filter((ev) => { + return ev.getContent().type && ev.getContent().url; + }).map((ev) => { + return this._initAppConfig(ev.getStateKey(), ev.getContent()); }); }, From 222ca054c50f645482b88282da25b489590a55dd Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 11 Jul 2017 13:41:00 +0100 Subject: [PATCH 407/481] Use PropTypes.shape to define our required inputs --- src/components/structures/GroupView.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index da4162d6e0..92ba36a18f 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -42,7 +42,14 @@ const FeaturedRoom = React.createClass({ displayName: 'FeaturedRoom', props: { - summaryInfo: PropTypes.object.isRequired, + summaryInfo: PropTypes.shape({ + room_id: PropTypes.string.isRequired, + profile: PropTypes.shape({ + name: PropTypes.string, + avatar_url: PropTypes.string, + canonical_alias: PropTypes.string, + }).isRequired, + }).isRequired, }, onClick: function(e) { @@ -100,7 +107,9 @@ const FeaturedUser = React.createClass({ displayName: 'FeaturedUser', props: { - summaryInfo: PropTypes.object.isRequired, + summaryInfo: PropTypes.shape({ + user_id: PropTypes.string.isRequired, + }).isRequired, }, onClick: function(e) { From 4766447e1588ef87321aae18d92273de423e2f41 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 11 Jul 2017 13:48:15 +0100 Subject: [PATCH 408/481] Bump the dep on emojione to 2.2.7 to add :shark: and others Also, re-run node scripts/emoji-data-strip.js to update emoji meta data in src/stripped-emoji.json --- package.json | 2 +- src/stripped-emoji.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 888fd9e32a..4a76cc851e 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "draft-js": "^0.9.1", "draft-js-export-html": "^0.5.0", "draft-js-export-markdown": "^0.2.0", - "emojione": "2.2.3", + "emojione": "2.2.7", "file-saver": "^1.3.3", "filesize": "3.5.6", "flux": "2.1.1", diff --git a/src/stripped-emoji.json b/src/stripped-emoji.json index 00928833c1..f39d76e877 100644 --- a/src/stripped-emoji.json +++ b/src/stripped-emoji.json @@ -1 +1 @@ -[{"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":[":)",">;)",">:-)",">=)"]},{"name":"winking face","shortname":":wink:","category":"people","emoji_order":"9","aliases_ascii":[";)",";-)","*-)","*)",";-]",";]",";D",";^)"]},{"name":"smiling face with smiling eyes","shortname":":blush:","category":"people","emoji_order":"10"},{"name":"face savouring delicious food","shortname":":yum:","category":"people","emoji_order":"11"},{"name":"smiling face with sunglasses","shortname":":sunglasses:","category":"people","emoji_order":"12","aliases_ascii":["B-)","B)","8)","8-)","B-D","8-D"]},{"name":"smiling face with heart-shaped eyes","shortname":":heart_eyes:","category":"people","emoji_order":"13"},{"name":"face throwing a kiss","shortname":":kissing_heart:","category":"people","emoji_order":"14","aliases_ascii":[":*",":-*","=*",":^*"]},{"name":"kissing face","shortname":":kissing:","category":"people","emoji_order":"15"},{"name":"kissing face with smiling eyes","shortname":":kissing_smiling_eyes:","category":"people","emoji_order":"16"},{"name":"kissing face with closed eyes","shortname":":kissing_closed_eyes:","category":"people","emoji_order":"17"},{"name":"white smiling face","shortname":":relaxed:","category":"people","emoji_order":"18"},{"name":"slightly smiling face","shortname":":slight_smile:","category":"people","emoji_order":"19","aliases_ascii":[":)",":-)","=]","=)",":]"]},{"name":"hugging face","shortname":":hugging:","category":"people","emoji_order":"20"},{"name":"thinking face","shortname":":thinking:","category":"people","emoji_order":"21"},{"name":"neutral face","shortname":":neutral_face:","category":"people","emoji_order":"22"},{"name":"expressionless face","shortname":":expressionless:","category":"people","emoji_order":"23","aliases_ascii":["-_-","-__-","-___-"]},{"name":"face without mouth","shortname":":no_mouth:","category":"people","emoji_order":"24","aliases_ascii":[":-X",":X",":-#",":#","=X","=x",":x",":-x","=#"]},{"name":"face with rolling eyes","shortname":":rolling_eyes:","category":"people","emoji_order":"25"},{"name":"smirking face","shortname":":smirk:","category":"people","emoji_order":"26"},{"name":"persevering face","shortname":":persevere:","category":"people","emoji_order":"27","aliases_ascii":[">.<"]},{"name":"disappointed but relieved face","shortname":":disappointed_relieved:","category":"people","emoji_order":"28"},{"name":"face with open mouth","shortname":":open_mouth:","category":"people","emoji_order":"29","aliases_ascii":[":-O",":O",":-o",":o","O_O",">:O"]},{"name":"zipper-mouth face","shortname":":zipper_mouth:","category":"people","emoji_order":"30"},{"name":"hushed face","shortname":":hushed:","category":"people","emoji_order":"31"},{"name":"sleepy face","shortname":":sleepy:","category":"people","emoji_order":"32"},{"name":"tired face","shortname":":tired_face:","category":"people","emoji_order":"33"},{"name":"sleeping face","shortname":":sleeping:","category":"people","emoji_order":"34"},{"name":"relieved face","shortname":":relieved:","category":"people","emoji_order":"35"},{"name":"nerd face","shortname":":nerd:","category":"people","emoji_order":"36"},{"name":"face with stuck-out tongue","shortname":":stuck_out_tongue:","category":"people","emoji_order":"37","aliases_ascii":[":P",":-P","=P",":-p",":p","=p",":-Þ",":Þ",":þ",":-þ",":-b",":b","d:"]},{"name":"face with stuck-out tongue and winking eye","shortname":":stuck_out_tongue_winking_eye:","category":"people","emoji_order":"38","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":"39"},{"name":"drooling face","shortname":":drooling_face:","category":"people","emoji_order":"40"},{"name":"unamused face","shortname":":unamused:","category":"people","emoji_order":"41"},{"name":"face with cold sweat","shortname":":sweat:","category":"people","emoji_order":"42","aliases_ascii":["':(","':-(","'=("]},{"name":"pensive face","shortname":":pensive:","category":"people","emoji_order":"43"},{"name":"confused face","shortname":":confused:","category":"people","emoji_order":"44","aliases_ascii":[">:\\",">:/",":-/",":-.",":/",":\\","=/","=\\",":L","=L"]},{"name":"upside-down face","shortname":":upside_down:","category":"people","emoji_order":"45"},{"name":"money-mouth face","shortname":":money_mouth:","category":"people","emoji_order":"46"},{"name":"astonished face","shortname":":astonished:","category":"people","emoji_order":"47"},{"name":"white frowning face","shortname":":frowning2:","category":"people","emoji_order":"48"},{"name":"slightly frowning face","shortname":":slight_frown:","category":"people","emoji_order":"49"},{"name":"confounded face","shortname":":confounded:","category":"people","emoji_order":"50"},{"name":"disappointed face","shortname":":disappointed:","category":"people","emoji_order":"51","aliases_ascii":[">:[",":-(",":(",":-[",":[","=("]},{"name":"worried face","shortname":":worried:","category":"people","emoji_order":"52"},{"name":"face with look of triumph","shortname":":triumph:","category":"people","emoji_order":"53"},{"name":"crying face","shortname":":cry:","category":"people","emoji_order":"54","aliases_ascii":[":'(",":'-(",";(",";-("]},{"name":"loudly crying face","shortname":":sob:","category":"people","emoji_order":"55"},{"name":"frowning face with open mouth","shortname":":frowning:","category":"people","emoji_order":"56"},{"name":"anguished face","shortname":":anguished:","category":"people","emoji_order":"57"},{"name":"fearful face","shortname":":fearful:","category":"people","emoji_order":"58","aliases_ascii":["D:"]},{"name":"weary face","shortname":":weary:","category":"people","emoji_order":"59"},{"name":"grimacing face","shortname":":grimacing:","category":"people","emoji_order":"60"},{"name":"face with open mouth and cold sweat","shortname":":cold_sweat:","category":"people","emoji_order":"61"},{"name":"face screaming in fear","shortname":":scream:","category":"people","emoji_order":"62"},{"name":"flushed face","shortname":":flushed:","category":"people","emoji_order":"63","aliases_ascii":[":$","=$"]},{"name":"dizzy face","shortname":":dizzy_face:","category":"people","emoji_order":"64","aliases_ascii":["#-)","#)","%-)","%)","X)","X-)"]},{"name":"pouting face","shortname":":rage:","category":"people","emoji_order":"65"},{"name":"angry face","shortname":":angry:","category":"people","emoji_order":"66","aliases_ascii":[">:(",">:-(",":@"]},{"name":"smiling face with halo","shortname":":innocent:","category":"people","emoji_order":"67","aliases_ascii":["O:-)","0:-3","0:3","0:-)","0:)","0;^)","O:)","O;-)","O=)","0;-)","O:-3","O:3"]},{"name":"face with cowboy hat","shortname":":cowboy:","category":"people","emoji_order":"68"},{"name":"clown face","shortname":":clown:","category":"people","emoji_order":"69"},{"name":"lying face","shortname":":lying_face:","category":"people","emoji_order":"70"},{"name":"face with medical mask","shortname":":mask:","category":"people","emoji_order":"71"},{"name":"face with thermometer","shortname":":thermometer_face:","category":"people","emoji_order":"72"},{"name":"face with head-bandage","shortname":":head_bandage:","category":"people","emoji_order":"73"},{"name":"nauseated face","shortname":":nauseated_face:","category":"people","emoji_order":"74"},{"name":"sneezing face","shortname":":sneezing_face:","category":"people","emoji_order":"75"},{"name":"smiling face with horns","shortname":":smiling_imp:","category":"people","emoji_order":"76"},{"name":"imp","shortname":":imp:","category":"people","emoji_order":"77"},{"name":"japanese ogre","shortname":":japanese_ogre:","category":"people","emoji_order":"78"},{"name":"japanese goblin","shortname":":japanese_goblin:","category":"people","emoji_order":"79"},{"name":"skull","shortname":":skull:","category":"people","emoji_order":"80"},{"name":"skull and crossbones","shortname":":skull_crossbones:","category":"objects","emoji_order":"81"},{"name":"ghost","shortname":":ghost:","category":"people","emoji_order":"82"},{"name":"extraterrestrial alien","shortname":":alien:","category":"people","emoji_order":"83"},{"name":"alien monster","shortname":":space_invader:","category":"activity","emoji_order":"84"},{"name":"robot face","shortname":":robot:","category":"people","emoji_order":"85"},{"name":"pile of poo","shortname":":poop:","category":"people","emoji_order":"86"},{"name":"smiling cat face with open mouth","shortname":":smiley_cat:","category":"people","emoji_order":"87"},{"name":"grinning cat face with smiling eyes","shortname":":smile_cat:","category":"people","emoji_order":"88"},{"name":"cat face with tears of joy","shortname":":joy_cat:","category":"people","emoji_order":"89"},{"name":"smiling cat face with heart-shaped eyes","shortname":":heart_eyes_cat:","category":"people","emoji_order":"90"},{"name":"cat face with wry smile","shortname":":smirk_cat:","category":"people","emoji_order":"91"},{"name":"kissing cat face with closed eyes","shortname":":kissing_cat:","category":"people","emoji_order":"92"},{"name":"weary cat face","shortname":":scream_cat:","category":"people","emoji_order":"93"},{"name":"crying cat face","shortname":":crying_cat_face:","category":"people","emoji_order":"94"},{"name":"pouting cat face","shortname":":pouting_cat:","category":"people","emoji_order":"95"},{"name":"see-no-evil monkey","shortname":":see_no_evil:","category":"nature","emoji_order":"96"},{"name":"hear-no-evil monkey","shortname":":hear_no_evil:","category":"nature","emoji_order":"97"},{"name":"speak-no-evil monkey","shortname":":speak_no_evil:","category":"nature","emoji_order":"98"},{"name":"boy","shortname":":boy:","category":"people","emoji_order":"99"},{"name":"boy tone 1","shortname":":boy_tone1:","category":"people","emoji_order":"100"},{"name":"boy tone 2","shortname":":boy_tone2:","category":"people","emoji_order":"101"},{"name":"boy tone 3","shortname":":boy_tone3:","category":"people","emoji_order":"102"},{"name":"boy tone 4","shortname":":boy_tone4:","category":"people","emoji_order":"103"},{"name":"boy tone 5","shortname":":boy_tone5:","category":"people","emoji_order":"104"},{"name":"girl","shortname":":girl:","category":"people","emoji_order":"105"},{"name":"girl tone 1","shortname":":girl_tone1:","category":"people","emoji_order":"106"},{"name":"girl tone 2","shortname":":girl_tone2:","category":"people","emoji_order":"107"},{"name":"girl tone 3","shortname":":girl_tone3:","category":"people","emoji_order":"108"},{"name":"girl tone 4","shortname":":girl_tone4:","category":"people","emoji_order":"109"},{"name":"girl tone 5","shortname":":girl_tone5:","category":"people","emoji_order":"110"},{"name":"man","shortname":":man:","category":"people","emoji_order":"111"},{"name":"man tone 1","shortname":":man_tone1:","category":"people","emoji_order":"112"},{"name":"man tone 2","shortname":":man_tone2:","category":"people","emoji_order":"113"},{"name":"man tone 3","shortname":":man_tone3:","category":"people","emoji_order":"114"},{"name":"man tone 4","shortname":":man_tone4:","category":"people","emoji_order":"115"},{"name":"man tone 5","shortname":":man_tone5:","category":"people","emoji_order":"116"},{"name":"woman","shortname":":woman:","category":"people","emoji_order":"117"},{"name":"woman tone 1","shortname":":woman_tone1:","category":"people","emoji_order":"118"},{"name":"woman tone 2","shortname":":woman_tone2:","category":"people","emoji_order":"119"},{"name":"woman tone 3","shortname":":woman_tone3:","category":"people","emoji_order":"120"},{"name":"woman tone 4","shortname":":woman_tone4:","category":"people","emoji_order":"121"},{"name":"woman tone 5","shortname":":woman_tone5:","category":"people","emoji_order":"122"},{"name":"older man","shortname":":older_man:","category":"people","emoji_order":"123"},{"name":"older man tone 1","shortname":":older_man_tone1:","category":"people","emoji_order":"124"},{"name":"older man tone 2","shortname":":older_man_tone2:","category":"people","emoji_order":"125"},{"name":"older man tone 3","shortname":":older_man_tone3:","category":"people","emoji_order":"126"},{"name":"older man tone 4","shortname":":older_man_tone4:","category":"people","emoji_order":"127"},{"name":"older man tone 5","shortname":":older_man_tone5:","category":"people","emoji_order":"128"},{"name":"older woman","shortname":":older_woman:","category":"people","emoji_order":"129"},{"name":"older woman tone 1","shortname":":older_woman_tone1:","category":"people","emoji_order":"130"},{"name":"older woman tone 2","shortname":":older_woman_tone2:","category":"people","emoji_order":"131"},{"name":"older woman tone 3","shortname":":older_woman_tone3:","category":"people","emoji_order":"132"},{"name":"older woman tone 4","shortname":":older_woman_tone4:","category":"people","emoji_order":"133"},{"name":"older woman tone 5","shortname":":older_woman_tone5:","category":"people","emoji_order":"134"},{"name":"baby","shortname":":baby:","category":"people","emoji_order":"135"},{"name":"baby tone 1","shortname":":baby_tone1:","category":"people","emoji_order":"136"},{"name":"baby tone 2","shortname":":baby_tone2:","category":"people","emoji_order":"137"},{"name":"baby tone 3","shortname":":baby_tone3:","category":"people","emoji_order":"138"},{"name":"baby tone 4","shortname":":baby_tone4:","category":"people","emoji_order":"139"},{"name":"baby tone 5","shortname":":baby_tone5:","category":"people","emoji_order":"140"},{"name":"baby angel","shortname":":angel:","category":"people","emoji_order":"141"},{"name":"baby angel tone 1","shortname":":angel_tone1:","category":"people","emoji_order":"142"},{"name":"baby angel tone 2","shortname":":angel_tone2:","category":"people","emoji_order":"143"},{"name":"baby angel tone 3","shortname":":angel_tone3:","category":"people","emoji_order":"144"},{"name":"baby angel tone 4","shortname":":angel_tone4:","category":"people","emoji_order":"145"},{"name":"baby angel tone 5","shortname":":angel_tone5:","category":"people","emoji_order":"146"},{"name":"police officer","shortname":":cop:","category":"people","emoji_order":"339"},{"name":"police officer tone 1","shortname":":cop_tone1:","category":"people","emoji_order":"340"},{"name":"police officer tone 2","shortname":":cop_tone2:","category":"people","emoji_order":"341"},{"name":"police officer tone 3","shortname":":cop_tone3:","category":"people","emoji_order":"342"},{"name":"police officer tone 4","shortname":":cop_tone4:","category":"people","emoji_order":"343"},{"name":"police officer tone 5","shortname":":cop_tone5:","category":"people","emoji_order":"344"},{"name":"sleuth or spy","shortname":":spy:","category":"people","emoji_order":"357"},{"name":"sleuth or spy tone 1","shortname":":spy_tone1:","category":"people","emoji_order":"358"},{"name":"sleuth or spy tone 2","shortname":":spy_tone2:","category":"people","emoji_order":"359"},{"name":"sleuth or spy tone 3","shortname":":spy_tone3:","category":"people","emoji_order":"360"},{"name":"sleuth or spy tone 4","shortname":":spy_tone4:","category":"people","emoji_order":"361"},{"name":"sleuth or spy tone 5","shortname":":spy_tone5:","category":"people","emoji_order":"362"},{"name":"guardsman","shortname":":guardsman:","category":"people","emoji_order":"375"},{"name":"guardsman tone 1","shortname":":guardsman_tone1:","category":"people","emoji_order":"376"},{"name":"guardsman tone 2","shortname":":guardsman_tone2:","category":"people","emoji_order":"377"},{"name":"guardsman tone 3","shortname":":guardsman_tone3:","category":"people","emoji_order":"378"},{"name":"guardsman tone 4","shortname":":guardsman_tone4:","category":"people","emoji_order":"379"},{"name":"guardsman tone 5","shortname":":guardsman_tone5:","category":"people","emoji_order":"380"},{"name":"construction worker","shortname":":construction_worker:","category":"people","emoji_order":"393"},{"name":"construction worker tone 1","shortname":":construction_worker_tone1:","category":"people","emoji_order":"394"},{"name":"construction worker tone 2","shortname":":construction_worker_tone2:","category":"people","emoji_order":"395"},{"name":"construction worker tone 3","shortname":":construction_worker_tone3:","category":"people","emoji_order":"396"},{"name":"construction worker tone 4","shortname":":construction_worker_tone4:","category":"people","emoji_order":"397"},{"name":"construction worker tone 5","shortname":":construction_worker_tone5:","category":"people","emoji_order":"398"},{"name":"man with turban","shortname":":man_with_turban:","category":"people","emoji_order":"411"},{"name":"man with turban tone 1","shortname":":man_with_turban_tone1:","category":"people","emoji_order":"412"},{"name":"man with turban tone 2","shortname":":man_with_turban_tone2:","category":"people","emoji_order":"413"},{"name":"man with turban tone 3","shortname":":man_with_turban_tone3:","category":"people","emoji_order":"414"},{"name":"man with turban tone 4","shortname":":man_with_turban_tone4:","category":"people","emoji_order":"415"},{"name":"man with turban tone 5","shortname":":man_with_turban_tone5:","category":"people","emoji_order":"416"},{"name":"person with blond hair","shortname":":person_with_blond_hair:","category":"people","emoji_order":"429"},{"name":"person with blond hair tone 1","shortname":":person_with_blond_hair_tone1:","category":"people","emoji_order":"430"},{"name":"person with blond hair tone 2","shortname":":person_with_blond_hair_tone2:","category":"people","emoji_order":"431"},{"name":"person with blond hair tone 3","shortname":":person_with_blond_hair_tone3:","category":"people","emoji_order":"432"},{"name":"person with blond hair tone 4","shortname":":person_with_blond_hair_tone4:","category":"people","emoji_order":"433"},{"name":"person with blond hair tone 5","shortname":":person_with_blond_hair_tone5:","category":"people","emoji_order":"434"},{"name":"father christmas","shortname":":santa:","category":"people","emoji_order":"447"},{"name":"father christmas tone 1","shortname":":santa_tone1:","category":"people","emoji_order":"448"},{"name":"father christmas tone 2","shortname":":santa_tone2:","category":"people","emoji_order":"449"},{"name":"father christmas tone 3","shortname":":santa_tone3:","category":"people","emoji_order":"450"},{"name":"father christmas tone 4","shortname":":santa_tone4:","category":"people","emoji_order":"451"},{"name":"father christmas tone 5","shortname":":santa_tone5:","category":"people","emoji_order":"452"},{"name":"mother christmas","shortname":":mrs_claus:","category":"people","emoji_order":"453"},{"name":"mother christmas tone 1","shortname":":mrs_claus_tone1:","category":"people","emoji_order":"454"},{"name":"mother christmas tone 2","shortname":":mrs_claus_tone2:","category":"people","emoji_order":"455"},{"name":"mother christmas tone 3","shortname":":mrs_claus_tone3:","category":"people","emoji_order":"456"},{"name":"mother christmas tone 4","shortname":":mrs_claus_tone4:","category":"people","emoji_order":"457"},{"name":"mother christmas tone 5","shortname":":mrs_claus_tone5:","category":"people","emoji_order":"458"},{"name":"princess","shortname":":princess:","category":"people","emoji_order":"459"},{"name":"princess tone 1","shortname":":princess_tone1:","category":"people","emoji_order":"460"},{"name":"princess tone 2","shortname":":princess_tone2:","category":"people","emoji_order":"461"},{"name":"princess tone 3","shortname":":princess_tone3:","category":"people","emoji_order":"462"},{"name":"princess tone 4","shortname":":princess_tone4:","category":"people","emoji_order":"463"},{"name":"princess tone 5","shortname":":princess_tone5:","category":"people","emoji_order":"464"},{"name":"prince","shortname":":prince:","category":"people","emoji_order":"465"},{"name":"prince tone 1","shortname":":prince_tone1:","category":"people","emoji_order":"466"},{"name":"prince tone 2","shortname":":prince_tone2:","category":"people","emoji_order":"467"},{"name":"prince tone 3","shortname":":prince_tone3:","category":"people","emoji_order":"468"},{"name":"prince tone 4","shortname":":prince_tone4:","category":"people","emoji_order":"469"},{"name":"prince tone 5","shortname":":prince_tone5:","category":"people","emoji_order":"470"},{"name":"bride with veil","shortname":":bride_with_veil:","category":"people","emoji_order":"471"},{"name":"bride with veil tone 1","shortname":":bride_with_veil_tone1:","category":"people","emoji_order":"472"},{"name":"bride with veil tone 2","shortname":":bride_with_veil_tone2:","category":"people","emoji_order":"473"},{"name":"bride with veil tone 3","shortname":":bride_with_veil_tone3:","category":"people","emoji_order":"474"},{"name":"bride with veil tone 4","shortname":":bride_with_veil_tone4:","category":"people","emoji_order":"475"},{"name":"bride with veil tone 5","shortname":":bride_with_veil_tone5:","category":"people","emoji_order":"476"},{"name":"man in tuxedo","shortname":":man_in_tuxedo:","category":"people","emoji_order":"477"},{"name":"man in tuxedo tone 1","shortname":":man_in_tuxedo_tone1:","category":"people","emoji_order":"478"},{"name":"man in tuxedo tone 2","shortname":":man_in_tuxedo_tone2:","category":"people","emoji_order":"479"},{"name":"man in tuxedo tone 3","shortname":":man_in_tuxedo_tone3:","category":"people","emoji_order":"480"},{"name":"man in tuxedo tone 4","shortname":":man_in_tuxedo_tone4:","category":"people","emoji_order":"481"},{"name":"man in tuxedo tone 5","shortname":":man_in_tuxedo_tone5:","category":"people","emoji_order":"482"},{"name":"pregnant woman","shortname":":pregnant_woman:","category":"people","emoji_order":"483"},{"name":"pregnant woman tone 1","shortname":":pregnant_woman_tone1:","category":"people","emoji_order":"484"},{"name":"pregnant woman tone 2","shortname":":pregnant_woman_tone2:","category":"people","emoji_order":"485"},{"name":"pregnant woman tone 3","shortname":":pregnant_woman_tone3:","category":"people","emoji_order":"486"},{"name":"pregnant woman tone 4","shortname":":pregnant_woman_tone4:","category":"people","emoji_order":"487"},{"name":"pregnant woman tone 5","shortname":":pregnant_woman_tone5:","category":"people","emoji_order":"488"},{"name":"man with gua pi mao","shortname":":man_with_gua_pi_mao:","category":"people","emoji_order":"489"},{"name":"man with gua pi mao tone 1","shortname":":man_with_gua_pi_mao_tone1:","category":"people","emoji_order":"490"},{"name":"man with gua pi mao tone 2","shortname":":man_with_gua_pi_mao_tone2:","category":"people","emoji_order":"491"},{"name":"man with gua pi mao tone 3","shortname":":man_with_gua_pi_mao_tone3:","category":"people","emoji_order":"492"},{"name":"man with gua pi mao tone 4","shortname":":man_with_gua_pi_mao_tone4:","category":"people","emoji_order":"493"},{"name":"man with gua pi mao tone 5","shortname":":man_with_gua_pi_mao_tone5:","category":"people","emoji_order":"494"},{"name":"person frowning","shortname":":person_frowning:","category":"people","emoji_order":"495"},{"name":"person frowning tone 1","shortname":":person_frowning_tone1:","category":"people","emoji_order":"496"},{"name":"person frowning tone 2","shortname":":person_frowning_tone2:","category":"people","emoji_order":"497"},{"name":"person frowning tone 3","shortname":":person_frowning_tone3:","category":"people","emoji_order":"498"},{"name":"person frowning tone 4","shortname":":person_frowning_tone4:","category":"people","emoji_order":"499"},{"name":"person frowning tone 5","shortname":":person_frowning_tone5:","category":"people","emoji_order":"500"},{"name":"person with pouting face","shortname":":person_with_pouting_face:","category":"people","emoji_order":"513"},{"name":"person with pouting face tone1","shortname":":person_with_pouting_face_tone1:","category":"people","emoji_order":"514"},{"name":"person with pouting face tone2","shortname":":person_with_pouting_face_tone2:","category":"people","emoji_order":"515"},{"name":"person with pouting face tone3","shortname":":person_with_pouting_face_tone3:","category":"people","emoji_order":"516"},{"name":"person with pouting face tone4","shortname":":person_with_pouting_face_tone4:","category":"people","emoji_order":"517"},{"name":"person with pouting face tone5","shortname":":person_with_pouting_face_tone5:","category":"people","emoji_order":"518"},{"name":"face with no good gesture","shortname":":no_good:","category":"people","emoji_order":"531"},{"name":"face with no good gesture tone 1","shortname":":no_good_tone1:","category":"people","emoji_order":"532"},{"name":"face with no good gesture tone 2","shortname":":no_good_tone2:","category":"people","emoji_order":"533"},{"name":"face with no good gesture tone 3","shortname":":no_good_tone3:","category":"people","emoji_order":"534"},{"name":"face with no good gesture tone 4","shortname":":no_good_tone4:","category":"people","emoji_order":"535"},{"name":"face with no good gesture tone 5","shortname":":no_good_tone5:","category":"people","emoji_order":"536"},{"name":"face with ok gesture","shortname":":ok_woman:","category":"people","emoji_order":"549","aliases_ascii":["*\\0/*","\\0/","*\\O/*","\\O/"]},{"name":"face with ok gesture tone1","shortname":":ok_woman_tone1:","category":"people","emoji_order":"550"},{"name":"face with ok gesture tone2","shortname":":ok_woman_tone2:","category":"people","emoji_order":"551"},{"name":"face with ok gesture tone3","shortname":":ok_woman_tone3:","category":"people","emoji_order":"552"},{"name":"face with ok gesture tone4","shortname":":ok_woman_tone4:","category":"people","emoji_order":"553"},{"name":"face with ok gesture tone5","shortname":":ok_woman_tone5:","category":"people","emoji_order":"554"},{"name":"information desk person","shortname":":information_desk_person:","category":"people","emoji_order":"567"},{"name":"information desk person tone 1","shortname":":information_desk_person_tone1:","category":"people","emoji_order":"568"},{"name":"information desk person tone 2","shortname":":information_desk_person_tone2:","category":"people","emoji_order":"569"},{"name":"information desk person tone 3","shortname":":information_desk_person_tone3:","category":"people","emoji_order":"570"},{"name":"information desk person tone 4","shortname":":information_desk_person_tone4:","category":"people","emoji_order":"571"},{"name":"information desk person tone 5","shortname":":information_desk_person_tone5:","category":"people","emoji_order":"572"},{"name":"happy person raising one hand","shortname":":raising_hand:","category":"people","emoji_order":"585"},{"name":"happy person raising one hand tone1","shortname":":raising_hand_tone1:","category":"people","emoji_order":"586"},{"name":"happy person raising one hand tone2","shortname":":raising_hand_tone2:","category":"people","emoji_order":"587"},{"name":"happy person raising one hand tone3","shortname":":raising_hand_tone3:","category":"people","emoji_order":"588"},{"name":"happy person raising one hand tone4","shortname":":raising_hand_tone4:","category":"people","emoji_order":"589"},{"name":"happy person raising one hand tone5","shortname":":raising_hand_tone5:","category":"people","emoji_order":"590"},{"name":"person bowing deeply","shortname":":bow:","category":"people","emoji_order":"603"},{"name":"person bowing deeply tone 1","shortname":":bow_tone1:","category":"people","emoji_order":"604"},{"name":"person bowing deeply tone 2","shortname":":bow_tone2:","category":"people","emoji_order":"605"},{"name":"person bowing deeply tone 3","shortname":":bow_tone3:","category":"people","emoji_order":"606"},{"name":"person bowing deeply tone 4","shortname":":bow_tone4:","category":"people","emoji_order":"607"},{"name":"person bowing deeply tone 5","shortname":":bow_tone5:","category":"people","emoji_order":"608"},{"name":"face palm","shortname":":face_palm:","category":"people","emoji_order":"621"},{"name":"face palm tone 1","shortname":":face_palm_tone1:","category":"people","emoji_order":"622"},{"name":"face palm tone 2","shortname":":face_palm_tone2:","category":"people","emoji_order":"623"},{"name":"face palm tone 3","shortname":":face_palm_tone3:","category":"people","emoji_order":"624"},{"name":"face palm tone 4","shortname":":face_palm_tone4:","category":"people","emoji_order":"625"},{"name":"face palm tone 5","shortname":":face_palm_tone5:","category":"people","emoji_order":"626"},{"name":"shrug","shortname":":shrug:","category":"people","emoji_order":"639"},{"name":"shrug tone 1","shortname":":shrug_tone1:","category":"people","emoji_order":"640"},{"name":"shrug tone 2","shortname":":shrug_tone2:","category":"people","emoji_order":"641"},{"name":"shrug tone 3","shortname":":shrug_tone3:","category":"people","emoji_order":"642"},{"name":"shrug tone 4","shortname":":shrug_tone4:","category":"people","emoji_order":"643"},{"name":"shrug tone 5","shortname":":shrug_tone5:","category":"people","emoji_order":"644"},{"name":"face massage","shortname":":massage:","category":"people","emoji_order":"657"},{"name":"face massage tone 1","shortname":":massage_tone1:","category":"people","emoji_order":"658"},{"name":"face massage tone 2","shortname":":massage_tone2:","category":"people","emoji_order":"659"},{"name":"face massage tone 3","shortname":":massage_tone3:","category":"people","emoji_order":"660"},{"name":"face massage tone 4","shortname":":massage_tone4:","category":"people","emoji_order":"661"},{"name":"face massage tone 5","shortname":":massage_tone5:","category":"people","emoji_order":"662"},{"name":"haircut","shortname":":haircut:","category":"people","emoji_order":"675"},{"name":"haircut tone 1","shortname":":haircut_tone1:","category":"people","emoji_order":"676"},{"name":"haircut tone 2","shortname":":haircut_tone2:","category":"people","emoji_order":"677"},{"name":"haircut tone 3","shortname":":haircut_tone3:","category":"people","emoji_order":"678"},{"name":"haircut tone 4","shortname":":haircut_tone4:","category":"people","emoji_order":"679"},{"name":"haircut tone 5","shortname":":haircut_tone5:","category":"people","emoji_order":"680"},{"name":"pedestrian","shortname":":walking:","category":"people","emoji_order":"693"},{"name":"pedestrian tone 1","shortname":":walking_tone1:","category":"people","emoji_order":"694"},{"name":"pedestrian tone 2","shortname":":walking_tone2:","category":"people","emoji_order":"695"},{"name":"pedestrian tone 3","shortname":":walking_tone3:","category":"people","emoji_order":"696"},{"name":"pedestrian tone 4","shortname":":walking_tone4:","category":"people","emoji_order":"697"},{"name":"pedestrian tone 5","shortname":":walking_tone5:","category":"people","emoji_order":"698"},{"name":"runner","shortname":":runner:","category":"people","emoji_order":"711"},{"name":"runner tone 1","shortname":":runner_tone1:","category":"people","emoji_order":"712"},{"name":"runner tone 2","shortname":":runner_tone2:","category":"people","emoji_order":"713"},{"name":"runner tone 3","shortname":":runner_tone3:","category":"people","emoji_order":"714"},{"name":"runner tone 4","shortname":":runner_tone4:","category":"people","emoji_order":"715"},{"name":"runner tone 5","shortname":":runner_tone5:","category":"people","emoji_order":"716"},{"name":"dancer","shortname":":dancer:","category":"people","emoji_order":"729"},{"name":"dancer tone 1","shortname":":dancer_tone1:","category":"people","emoji_order":"730"},{"name":"dancer tone 2","shortname":":dancer_tone2:","category":"people","emoji_order":"731"},{"name":"dancer tone 3","shortname":":dancer_tone3:","category":"people","emoji_order":"732"},{"name":"dancer tone 4","shortname":":dancer_tone4:","category":"people","emoji_order":"733"},{"name":"dancer tone 5","shortname":":dancer_tone5:","category":"people","emoji_order":"734"},{"name":"man dancing","shortname":":man_dancing:","category":"people","emoji_order":"735"},{"name":"man dancing tone 1","shortname":":man_dancing_tone1:","category":"people","emoji_order":"736"},{"name":"man dancing tone 2","shortname":":man_dancing_tone2:","category":"people","emoji_order":"737"},{"name":"man dancing tone 3","shortname":":man_dancing_tone3:","category":"people","emoji_order":"738"},{"name":"man dancing tone 4","shortname":":man_dancing_tone4:","category":"people","emoji_order":"739"},{"name":"man dancing tone 5","shortname":":man_dancing_tone5:","category":"people","emoji_order":"740"},{"name":"woman with bunny ears","shortname":":dancers:","category":"people","emoji_order":"741"},{"name":"man in business suit levitating","shortname":":levitate:","category":"activity","emoji_order":"759"},{"name":"speaking head in silhouette","shortname":":speaking_head:","category":"people","emoji_order":"765"},{"name":"bust in silhouette","shortname":":bust_in_silhouette:","category":"people","emoji_order":"766"},{"name":"busts in silhouette","shortname":":busts_in_silhouette:","category":"people","emoji_order":"767"},{"name":"fencer","shortname":":fencer:","category":"activity","emoji_order":"768"},{"name":"horse racing","shortname":":horse_racing:","category":"activity","emoji_order":"769"},{"name":"horse racing tone 1","shortname":":horse_racing_tone1:","category":"activity","emoji_order":"770"},{"name":"horse racing tone 2","shortname":":horse_racing_tone2:","category":"activity","emoji_order":"771"},{"name":"horse racing tone 3","shortname":":horse_racing_tone3:","category":"activity","emoji_order":"772"},{"name":"horse racing tone 4","shortname":":horse_racing_tone4:","category":"activity","emoji_order":"773"},{"name":"horse racing tone 5","shortname":":horse_racing_tone5:","category":"activity","emoji_order":"774"},{"name":"skier","shortname":":skier:","category":"activity","emoji_order":"775"},{"name":"snowboarder","shortname":":snowboarder:","category":"activity","emoji_order":"776"},{"name":"golfer","shortname":":golfer:","category":"activity","emoji_order":"782"},{"name":"surfer","shortname":":surfer:","category":"activity","emoji_order":"800"},{"name":"surfer tone 1","shortname":":surfer_tone1:","category":"activity","emoji_order":"801"},{"name":"surfer tone 2","shortname":":surfer_tone2:","category":"activity","emoji_order":"802"},{"name":"surfer tone 3","shortname":":surfer_tone3:","category":"activity","emoji_order":"803"},{"name":"surfer tone 4","shortname":":surfer_tone4:","category":"activity","emoji_order":"804"},{"name":"surfer tone 5","shortname":":surfer_tone5:","category":"activity","emoji_order":"805"},{"name":"rowboat","shortname":":rowboat:","category":"activity","emoji_order":"818"},{"name":"rowboat tone 1","shortname":":rowboat_tone1:","category":"activity","emoji_order":"819"},{"name":"rowboat tone 2","shortname":":rowboat_tone2:","category":"activity","emoji_order":"820"},{"name":"rowboat tone 3","shortname":":rowboat_tone3:","category":"activity","emoji_order":"821"},{"name":"rowboat tone 4","shortname":":rowboat_tone4:","category":"activity","emoji_order":"822"},{"name":"rowboat tone 5","shortname":":rowboat_tone5:","category":"activity","emoji_order":"823"},{"name":"swimmer","shortname":":swimmer:","category":"activity","emoji_order":"836"},{"name":"swimmer tone 1","shortname":":swimmer_tone1:","category":"activity","emoji_order":"837"},{"name":"swimmer tone 2","shortname":":swimmer_tone2:","category":"activity","emoji_order":"838"},{"name":"swimmer tone 3","shortname":":swimmer_tone3:","category":"activity","emoji_order":"839"},{"name":"swimmer tone 4","shortname":":swimmer_tone4:","category":"activity","emoji_order":"840"},{"name":"swimmer tone 5","shortname":":swimmer_tone5:","category":"activity","emoji_order":"841"},{"name":"person with ball","shortname":":basketball_player:","category":"activity","emoji_order":"854"},{"name":"person with ball tone 1","shortname":":basketball_player_tone1:","category":"activity","emoji_order":"855"},{"name":"person with ball tone 2","shortname":":basketball_player_tone2:","category":"activity","emoji_order":"856"},{"name":"person with ball tone 3","shortname":":basketball_player_tone3:","category":"activity","emoji_order":"857"},{"name":"person with ball tone 4","shortname":":basketball_player_tone4:","category":"activity","emoji_order":"858"},{"name":"person with ball tone 5","shortname":":basketball_player_tone5:","category":"activity","emoji_order":"859"},{"name":"weight lifter","shortname":":lifter:","category":"activity","emoji_order":"872"},{"name":"weight lifter tone 1","shortname":":lifter_tone1:","category":"activity","emoji_order":"873"},{"name":"weight lifter tone 2","shortname":":lifter_tone2:","category":"activity","emoji_order":"874"},{"name":"weight lifter tone 3","shortname":":lifter_tone3:","category":"activity","emoji_order":"875"},{"name":"weight lifter tone 4","shortname":":lifter_tone4:","category":"activity","emoji_order":"876"},{"name":"weight lifter tone 5","shortname":":lifter_tone5:","category":"activity","emoji_order":"877"},{"name":"bicyclist","shortname":":bicyclist:","category":"activity","emoji_order":"890"},{"name":"bicyclist tone 1","shortname":":bicyclist_tone1:","category":"activity","emoji_order":"891"},{"name":"bicyclist tone 2","shortname":":bicyclist_tone2:","category":"activity","emoji_order":"892"},{"name":"bicyclist tone 3","shortname":":bicyclist_tone3:","category":"activity","emoji_order":"893"},{"name":"bicyclist tone 4","shortname":":bicyclist_tone4:","category":"activity","emoji_order":"894"},{"name":"bicyclist tone 5","shortname":":bicyclist_tone5:","category":"activity","emoji_order":"895"},{"name":"mountain bicyclist","shortname":":mountain_bicyclist:","category":"activity","emoji_order":"908"},{"name":"mountain bicyclist tone 1","shortname":":mountain_bicyclist_tone1:","category":"activity","emoji_order":"909"},{"name":"mountain bicyclist tone 2","shortname":":mountain_bicyclist_tone2:","category":"activity","emoji_order":"910"},{"name":"mountain bicyclist tone 3","shortname":":mountain_bicyclist_tone3:","category":"activity","emoji_order":"911"},{"name":"mountain bicyclist tone 4","shortname":":mountain_bicyclist_tone4:","category":"activity","emoji_order":"912"},{"name":"mountain bicyclist tone 5","shortname":":mountain_bicyclist_tone5:","category":"activity","emoji_order":"913"},{"name":"racing car","shortname":":race_car:","category":"travel","emoji_order":"926"},{"name":"racing motorcycle","shortname":":motorcycle:","category":"travel","emoji_order":"927"},{"name":"person doing cartwheel","shortname":":cartwheel:","category":"activity","emoji_order":"928"},{"name":"person doing cartwheel tone 1","shortname":":cartwheel_tone1:","category":"activity","emoji_order":"929"},{"name":"person doing cartwheel tone 2","shortname":":cartwheel_tone2:","category":"activity","emoji_order":"930"},{"name":"person doing cartwheel tone 3","shortname":":cartwheel_tone3:","category":"activity","emoji_order":"931"},{"name":"person doing cartwheel tone 4","shortname":":cartwheel_tone4:","category":"activity","emoji_order":"932"},{"name":"person doing cartwheel tone 5","shortname":":cartwheel_tone5:","category":"activity","emoji_order":"933"},{"name":"wrestlers","shortname":":wrestlers:","category":"activity","emoji_order":"946"},{"name":"wrestlers tone 1","shortname":":wrestlers_tone1:","category":"activity","emoji_order":"947"},{"name":"wrestlers tone 2","shortname":":wrestlers_tone2:","category":"activity","emoji_order":"948"},{"name":"wrestlers tone 3","shortname":":wrestlers_tone3:","category":"activity","emoji_order":"949"},{"name":"wrestlers tone 4","shortname":":wrestlers_tone4:","category":"activity","emoji_order":"950"},{"name":"wrestlers tone 5","shortname":":wrestlers_tone5:","category":"activity","emoji_order":"951"},{"name":"water polo","shortname":":water_polo:","category":"activity","emoji_order":"964"},{"name":"water polo tone 1","shortname":":water_polo_tone1:","category":"activity","emoji_order":"965"},{"name":"water polo tone 2","shortname":":water_polo_tone2:","category":"activity","emoji_order":"966"},{"name":"water polo tone 3","shortname":":water_polo_tone3:","category":"activity","emoji_order":"967"},{"name":"water polo tone 4","shortname":":water_polo_tone4:","category":"activity","emoji_order":"968"},{"name":"water polo tone 5","shortname":":water_polo_tone5:","category":"activity","emoji_order":"969"},{"name":"handball","shortname":":handball:","category":"activity","emoji_order":"982"},{"name":"handball tone 1","shortname":":handball_tone1:","category":"activity","emoji_order":"983"},{"name":"handball tone 2","shortname":":handball_tone2:","category":"activity","emoji_order":"984"},{"name":"handball tone 3","shortname":":handball_tone3:","category":"activity","emoji_order":"985"},{"name":"handball tone 4","shortname":":handball_tone4:","category":"activity","emoji_order":"986"},{"name":"handball tone 5","shortname":":handball_tone5:","category":"activity","emoji_order":"987"},{"name":"juggling","shortname":":juggling:","category":"activity","emoji_order":"1000"},{"name":"juggling tone 1","shortname":":juggling_tone1:","category":"activity","emoji_order":"1001"},{"name":"juggling tone 2","shortname":":juggling_tone2:","category":"activity","emoji_order":"1002"},{"name":"juggling tone 3","shortname":":juggling_tone3:","category":"activity","emoji_order":"1003"},{"name":"juggling tone 4","shortname":":juggling_tone4:","category":"activity","emoji_order":"1004"},{"name":"juggling tone 5","shortname":":juggling_tone5:","category":"activity","emoji_order":"1005"},{"name":"man and woman holding hands","shortname":":couple:","category":"people","emoji_order":"1018"},{"name":"two men holding hands","shortname":":two_men_holding_hands:","category":"people","emoji_order":"1024"},{"name":"two women holding hands","shortname":":two_women_holding_hands:","category":"people","emoji_order":"1030"},{"name":"kiss","shortname":":couplekiss:","category":"people","emoji_order":"1036"},{"name":"kiss (man,man)","shortname":":kiss_mm:","category":"people","emoji_order":"1038"},{"name":"kiss (woman,woman)","shortname":":kiss_ww:","category":"people","emoji_order":"1039"},{"name":"couple with heart","shortname":":couple_with_heart:","category":"people","emoji_order":"1040"},{"name":"couple (man,man)","shortname":":couple_mm:","category":"people","emoji_order":"1042"},{"name":"couple (woman,woman)","shortname":":couple_ww:","category":"people","emoji_order":"1043"},{"name":"family","shortname":":family:","category":"people","emoji_order":"1044"},{"name":"family (man,woman,girl)","shortname":":family_mwg:","category":"people","emoji_order":"1051"},{"name":"family (man,woman,girl,boy)","shortname":":family_mwgb:","category":"people","emoji_order":"1052"},{"name":"family (man,woman,boy,boy)","shortname":":family_mwbb:","category":"people","emoji_order":"1053"},{"name":"family (man,woman,girl,girl)","shortname":":family_mwgg:","category":"people","emoji_order":"1054"},{"name":"family (man,man,boy)","shortname":":family_mmb:","category":"people","emoji_order":"1055"},{"name":"family (man,man,girl)","shortname":":family_mmg:","category":"people","emoji_order":"1056"},{"name":"family (man,man,girl,boy)","shortname":":family_mmgb:","category":"people","emoji_order":"1057"},{"name":"family (man,man,boy,boy)","shortname":":family_mmbb:","category":"people","emoji_order":"1058"},{"name":"family (man,man,girl,girl)","shortname":":family_mmgg:","category":"people","emoji_order":"1059"},{"name":"family (woman,woman,boy)","shortname":":family_wwb:","category":"people","emoji_order":"1060"},{"name":"family (woman,woman,girl)","shortname":":family_wwg:","category":"people","emoji_order":"1061"},{"name":"family (woman,woman,girl,boy)","shortname":":family_wwgb:","category":"people","emoji_order":"1062"},{"name":"family (woman,woman,boy,boy)","shortname":":family_wwbb:","category":"people","emoji_order":"1063"},{"name":"family (woman,woman,girl,girl)","shortname":":family_wwgg:","category":"people","emoji_order":"1064"},{"name":"emoji modifier Fitzpatrick type-1-2","shortname":":tone1:","category":"modifier","emoji_order":"1075"},{"name":"emoji modifier Fitzpatrick type-3","shortname":":tone2:","category":"modifier","emoji_order":"1076"},{"name":"emoji modifier Fitzpatrick type-4","shortname":":tone3:","category":"modifier","emoji_order":"1077"},{"name":"emoji modifier Fitzpatrick type-5","shortname":":tone4:","category":"modifier","emoji_order":"1078"},{"name":"emoji modifier Fitzpatrick type-6","shortname":":tone5:","category":"modifier","emoji_order":"1079"},{"name":"flexed biceps","shortname":":muscle:","category":"people","emoji_order":"1080"},{"name":"flexed biceps tone 1","shortname":":muscle_tone1:","category":"people","emoji_order":"1081"},{"name":"flexed biceps tone 2","shortname":":muscle_tone2:","category":"people","emoji_order":"1082"},{"name":"flexed biceps tone 3","shortname":":muscle_tone3:","category":"people","emoji_order":"1083"},{"name":"flexed biceps tone 4","shortname":":muscle_tone4:","category":"people","emoji_order":"1084"},{"name":"flexed biceps tone 5","shortname":":muscle_tone5:","category":"people","emoji_order":"1085"},{"name":"selfie","shortname":":selfie:","category":"people","emoji_order":"1086"},{"name":"selfie tone 1","shortname":":selfie_tone1:","category":"people","emoji_order":"1087"},{"name":"selfie tone 2","shortname":":selfie_tone2:","category":"people","emoji_order":"1088"},{"name":"selfie tone 3","shortname":":selfie_tone3:","category":"people","emoji_order":"1089"},{"name":"selfie tone 4","shortname":":selfie_tone4:","category":"people","emoji_order":"1090"},{"name":"selfie tone 5","shortname":":selfie_tone5:","category":"people","emoji_order":"1091"},{"name":"white left pointing backhand index","shortname":":point_left:","category":"people","emoji_order":"1092"},{"name":"white left pointing backhand index tone 1","shortname":":point_left_tone1:","category":"people","emoji_order":"1093"},{"name":"white left pointing backhand index tone 2","shortname":":point_left_tone2:","category":"people","emoji_order":"1094"},{"name":"white left pointing backhand index tone 3","shortname":":point_left_tone3:","category":"people","emoji_order":"1095"},{"name":"white left pointing backhand index tone 4","shortname":":point_left_tone4:","category":"people","emoji_order":"1096"},{"name":"white left pointing backhand index tone 5","shortname":":point_left_tone5:","category":"people","emoji_order":"1097"},{"name":"white right pointing backhand index","shortname":":point_right:","category":"people","emoji_order":"1098"},{"name":"white right pointing backhand index tone 1","shortname":":point_right_tone1:","category":"people","emoji_order":"1099"},{"name":"white right pointing backhand index tone 2","shortname":":point_right_tone2:","category":"people","emoji_order":"1100"},{"name":"white right pointing backhand index tone 3","shortname":":point_right_tone3:","category":"people","emoji_order":"1101"},{"name":"white right pointing backhand index tone 4","shortname":":point_right_tone4:","category":"people","emoji_order":"1102"},{"name":"white right pointing backhand index tone 5","shortname":":point_right_tone5:","category":"people","emoji_order":"1103"},{"name":"white up pointing index","shortname":":point_up:","category":"people","emoji_order":"1104"},{"name":"white up pointing index tone 1","shortname":":point_up_tone1:","category":"people","emoji_order":"1105"},{"name":"white up pointing index tone 2","shortname":":point_up_tone2:","category":"people","emoji_order":"1106"},{"name":"white up pointing index tone 3","shortname":":point_up_tone3:","category":"people","emoji_order":"1107"},{"name":"white up pointing index tone 4","shortname":":point_up_tone4:","category":"people","emoji_order":"1108"},{"name":"white up pointing index tone 5","shortname":":point_up_tone5:","category":"people","emoji_order":"1109"},{"name":"white up pointing backhand index","shortname":":point_up_2:","category":"people","emoji_order":"1110"},{"name":"white up pointing backhand index tone 1","shortname":":point_up_2_tone1:","category":"people","emoji_order":"1111"},{"name":"white up pointing backhand index tone 2","shortname":":point_up_2_tone2:","category":"people","emoji_order":"1112"},{"name":"white up pointing backhand index tone 3","shortname":":point_up_2_tone3:","category":"people","emoji_order":"1113"},{"name":"white up pointing backhand index tone 4","shortname":":point_up_2_tone4:","category":"people","emoji_order":"1114"},{"name":"white up pointing backhand index tone 5","shortname":":point_up_2_tone5:","category":"people","emoji_order":"1115"},{"name":"reversed hand with middle finger extended","shortname":":middle_finger:","category":"people","emoji_order":"1116"},{"name":"reversed hand with middle finger extended tone 1","shortname":":middle_finger_tone1:","category":"people","emoji_order":"1117"},{"name":"reversed hand with middle finger extended tone 2","shortname":":middle_finger_tone2:","category":"people","emoji_order":"1118"},{"name":"reversed hand with middle finger extended tone 3","shortname":":middle_finger_tone3:","category":"people","emoji_order":"1119"},{"name":"reversed hand with middle finger extended tone 4","shortname":":middle_finger_tone4:","category":"people","emoji_order":"1120"},{"name":"reversed hand with middle finger extended tone 5","shortname":":middle_finger_tone5:","category":"people","emoji_order":"1121"},{"name":"white down pointing backhand index","shortname":":point_down:","category":"people","emoji_order":"1122"},{"name":"white down pointing backhand index tone 1","shortname":":point_down_tone1:","category":"people","emoji_order":"1123"},{"name":"white down pointing backhand index tone 2","shortname":":point_down_tone2:","category":"people","emoji_order":"1124"},{"name":"white down pointing backhand index tone 3","shortname":":point_down_tone3:","category":"people","emoji_order":"1125"},{"name":"white down pointing backhand index tone 4","shortname":":point_down_tone4:","category":"people","emoji_order":"1126"},{"name":"white down pointing backhand index tone 5","shortname":":point_down_tone5:","category":"people","emoji_order":"1127"},{"name":"victory hand","shortname":":v:","category":"people","emoji_order":"1128"},{"name":"victory hand tone 1","shortname":":v_tone1:","category":"people","emoji_order":"1129"},{"name":"victory hand tone 2","shortname":":v_tone2:","category":"people","emoji_order":"1130"},{"name":"victory hand tone 3","shortname":":v_tone3:","category":"people","emoji_order":"1131"},{"name":"victory hand tone 4","shortname":":v_tone4:","category":"people","emoji_order":"1132"},{"name":"victory hand tone 5","shortname":":v_tone5:","category":"people","emoji_order":"1133"},{"name":"hand with first and index finger crossed","shortname":":fingers_crossed:","category":"people","emoji_order":"1134"},{"name":"hand with index and middle fingers crossed tone 1","shortname":":fingers_crossed_tone1:","category":"people","emoji_order":"1135"},{"name":"hand with index and middle fingers crossed tone 2","shortname":":fingers_crossed_tone2:","category":"people","emoji_order":"1136"},{"name":"hand with index and middle fingers crossed tone 3","shortname":":fingers_crossed_tone3:","category":"people","emoji_order":"1137"},{"name":"hand with index and middle fingers crossed tone 4","shortname":":fingers_crossed_tone4:","category":"people","emoji_order":"1138"},{"name":"hand with index and middle fingers crossed tone 5","shortname":":fingers_crossed_tone5:","category":"people","emoji_order":"1139"},{"name":"raised hand with part between middle and ring fingers","shortname":":vulcan:","category":"people","emoji_order":"1140"},{"name":"raised hand with part between middle and ring fingers tone 1","shortname":":vulcan_tone1:","category":"people","emoji_order":"1141"},{"name":"raised hand with part between middle and ring fingers tone 2","shortname":":vulcan_tone2:","category":"people","emoji_order":"1142"},{"name":"raised hand with part between middle and ring fingers tone 3","shortname":":vulcan_tone3:","category":"people","emoji_order":"1143"},{"name":"raised hand with part between middle and ring fingers tone 4","shortname":":vulcan_tone4:","category":"people","emoji_order":"1144"},{"name":"raised hand with part between middle and ring fingers tone 5","shortname":":vulcan_tone5:","category":"people","emoji_order":"1145"},{"name":"sign of the horns","shortname":":metal:","category":"people","emoji_order":"1146"},{"name":"sign of the horns tone 1","shortname":":metal_tone1:","category":"people","emoji_order":"1147"},{"name":"sign of the horns tone 2","shortname":":metal_tone2:","category":"people","emoji_order":"1148"},{"name":"sign of the horns tone 3","shortname":":metal_tone3:","category":"people","emoji_order":"1149"},{"name":"sign of the horns tone 4","shortname":":metal_tone4:","category":"people","emoji_order":"1150"},{"name":"sign of the horns tone 5","shortname":":metal_tone5:","category":"people","emoji_order":"1151"},{"name":"call me hand","shortname":":call_me:","category":"people","emoji_order":"1152"},{"name":"call me hand tone 1","shortname":":call_me_tone1:","category":"people","emoji_order":"1153"},{"name":"call me hand tone 2","shortname":":call_me_tone2:","category":"people","emoji_order":"1154"},{"name":"call me hand tone 3","shortname":":call_me_tone3:","category":"people","emoji_order":"1155"},{"name":"call me hand tone 4","shortname":":call_me_tone4:","category":"people","emoji_order":"1156"},{"name":"call me hand tone 5","shortname":":call_me_tone5:","category":"people","emoji_order":"1157"},{"name":"raised hand with fingers splayed","shortname":":hand_splayed:","category":"people","emoji_order":"1158"},{"name":"raised hand with fingers splayed tone 1","shortname":":hand_splayed_tone1:","category":"people","emoji_order":"1159"},{"name":"raised hand with fingers splayed tone 2","shortname":":hand_splayed_tone2:","category":"people","emoji_order":"1160"},{"name":"raised hand with fingers splayed tone 3","shortname":":hand_splayed_tone3:","category":"people","emoji_order":"1161"},{"name":"raised hand with fingers splayed tone 4","shortname":":hand_splayed_tone4:","category":"people","emoji_order":"1162"},{"name":"raised hand with fingers splayed tone 5","shortname":":hand_splayed_tone5:","category":"people","emoji_order":"1163"},{"name":"raised hand","shortname":":raised_hand:","category":"people","emoji_order":"1164"},{"name":"raised hand tone 1","shortname":":raised_hand_tone1:","category":"people","emoji_order":"1165"},{"name":"raised hand tone 2","shortname":":raised_hand_tone2:","category":"people","emoji_order":"1166"},{"name":"raised hand tone 3","shortname":":raised_hand_tone3:","category":"people","emoji_order":"1167"},{"name":"raised hand tone 4","shortname":":raised_hand_tone4:","category":"people","emoji_order":"1168"},{"name":"raised hand tone 5","shortname":":raised_hand_tone5:","category":"people","emoji_order":"1169"},{"name":"ok hand sign","shortname":":ok_hand:","category":"people","emoji_order":"1170"},{"name":"ok hand sign tone 1","shortname":":ok_hand_tone1:","category":"people","emoji_order":"1171"},{"name":"ok hand sign tone 2","shortname":":ok_hand_tone2:","category":"people","emoji_order":"1172"},{"name":"ok hand sign tone 3","shortname":":ok_hand_tone3:","category":"people","emoji_order":"1173"},{"name":"ok hand sign tone 4","shortname":":ok_hand_tone4:","category":"people","emoji_order":"1174"},{"name":"ok hand sign tone 5","shortname":":ok_hand_tone5:","category":"people","emoji_order":"1175"},{"name":"thumbs up sign","shortname":":thumbsup:","category":"people","emoji_order":"1176"},{"name":"thumbs up sign tone 1","shortname":":thumbsup_tone1:","category":"people","emoji_order":"1177"},{"name":"thumbs up sign tone 2","shortname":":thumbsup_tone2:","category":"people","emoji_order":"1178"},{"name":"thumbs up sign tone 3","shortname":":thumbsup_tone3:","category":"people","emoji_order":"1179"},{"name":"thumbs up sign tone 4","shortname":":thumbsup_tone4:","category":"people","emoji_order":"1180"},{"name":"thumbs up sign tone 5","shortname":":thumbsup_tone5:","category":"people","emoji_order":"1181"},{"name":"thumbs down sign","shortname":":thumbsdown:","category":"people","emoji_order":"1182"},{"name":"thumbs down sign tone 1","shortname":":thumbsdown_tone1:","category":"people","emoji_order":"1183"},{"name":"thumbs down sign tone 2","shortname":":thumbsdown_tone2:","category":"people","emoji_order":"1184"},{"name":"thumbs down sign tone 3","shortname":":thumbsdown_tone3:","category":"people","emoji_order":"1185"},{"name":"thumbs down sign tone 4","shortname":":thumbsdown_tone4:","category":"people","emoji_order":"1186"},{"name":"thumbs down sign tone 5","shortname":":thumbsdown_tone5:","category":"people","emoji_order":"1187"},{"name":"raised fist","shortname":":fist:","category":"people","emoji_order":"1188"},{"name":"raised fist tone 1","shortname":":fist_tone1:","category":"people","emoji_order":"1189"},{"name":"raised fist tone 2","shortname":":fist_tone2:","category":"people","emoji_order":"1190"},{"name":"raised fist tone 3","shortname":":fist_tone3:","category":"people","emoji_order":"1191"},{"name":"raised fist tone 4","shortname":":fist_tone4:","category":"people","emoji_order":"1192"},{"name":"raised fist tone 5","shortname":":fist_tone5:","category":"people","emoji_order":"1193"},{"name":"fisted hand sign","shortname":":punch:","category":"people","emoji_order":"1194"},{"name":"fisted hand sign tone 1","shortname":":punch_tone1:","category":"people","emoji_order":"1195"},{"name":"fisted hand sign tone 2","shortname":":punch_tone2:","category":"people","emoji_order":"1196"},{"name":"fisted hand sign tone 3","shortname":":punch_tone3:","category":"people","emoji_order":"1197"},{"name":"fisted hand sign tone 4","shortname":":punch_tone4:","category":"people","emoji_order":"1198"},{"name":"fisted hand sign tone 5","shortname":":punch_tone5:","category":"people","emoji_order":"1199"},{"name":"left-facing fist","shortname":":left_facing_fist:","category":"people","emoji_order":"1200"},{"name":"left facing fist tone 1","shortname":":left_facing_fist_tone1:","category":"people","emoji_order":"1201"},{"name":"left facing fist tone 2","shortname":":left_facing_fist_tone2:","category":"people","emoji_order":"1202"},{"name":"left facing fist tone 3","shortname":":left_facing_fist_tone3:","category":"people","emoji_order":"1203"},{"name":"left facing fist tone 4","shortname":":left_facing_fist_tone4:","category":"people","emoji_order":"1204"},{"name":"left facing fist tone 5","shortname":":left_facing_fist_tone5:","category":"people","emoji_order":"1205"},{"name":"right-facing fist","shortname":":right_facing_fist:","category":"people","emoji_order":"1206"},{"name":"right facing fist tone 1","shortname":":right_facing_fist_tone1:","category":"people","emoji_order":"1207"},{"name":"right facing fist tone 2","shortname":":right_facing_fist_tone2:","category":"people","emoji_order":"1208"},{"name":"right facing fist tone 3","shortname":":right_facing_fist_tone3:","category":"people","emoji_order":"1209"},{"name":"right facing fist tone 4","shortname":":right_facing_fist_tone4:","category":"people","emoji_order":"1210"},{"name":"right facing fist tone 5","shortname":":right_facing_fist_tone5:","category":"people","emoji_order":"1211"},{"name":"raised back of hand","shortname":":raised_back_of_hand:","category":"people","emoji_order":"1212"},{"name":"raised back of hand tone 1","shortname":":raised_back_of_hand_tone1:","category":"people","emoji_order":"1213"},{"name":"raised back of hand tone 2","shortname":":raised_back_of_hand_tone2:","category":"people","emoji_order":"1214"},{"name":"raised back of hand tone 3","shortname":":raised_back_of_hand_tone3:","category":"people","emoji_order":"1215"},{"name":"raised back of hand tone 4","shortname":":raised_back_of_hand_tone4:","category":"people","emoji_order":"1216"},{"name":"raised back of hand tone 5","shortname":":raised_back_of_hand_tone5:","category":"people","emoji_order":"1217"},{"name":"waving hand sign","shortname":":wave:","category":"people","emoji_order":"1218"},{"name":"waving hand sign tone 1","shortname":":wave_tone1:","category":"people","emoji_order":"1219"},{"name":"waving hand sign tone 2","shortname":":wave_tone2:","category":"people","emoji_order":"1220"},{"name":"waving hand sign tone 3","shortname":":wave_tone3:","category":"people","emoji_order":"1221"},{"name":"waving hand sign tone 4","shortname":":wave_tone4:","category":"people","emoji_order":"1222"},{"name":"waving hand sign tone 5","shortname":":wave_tone5:","category":"people","emoji_order":"1223"},{"name":"clapping hands sign","shortname":":clap:","category":"people","emoji_order":"1224"},{"name":"clapping hands sign tone 1","shortname":":clap_tone1:","category":"people","emoji_order":"1225"},{"name":"clapping hands sign tone 2","shortname":":clap_tone2:","category":"people","emoji_order":"1226"},{"name":"clapping hands sign tone 3","shortname":":clap_tone3:","category":"people","emoji_order":"1227"},{"name":"clapping hands sign tone 4","shortname":":clap_tone4:","category":"people","emoji_order":"1228"},{"name":"clapping hands sign tone 5","shortname":":clap_tone5:","category":"people","emoji_order":"1229"},{"name":"writing hand","shortname":":writing_hand:","category":"people","emoji_order":"1230"},{"name":"writing hand tone 1","shortname":":writing_hand_tone1:","category":"people","emoji_order":"1231"},{"name":"writing hand tone 2","shortname":":writing_hand_tone2:","category":"people","emoji_order":"1232"},{"name":"writing hand tone 3","shortname":":writing_hand_tone3:","category":"people","emoji_order":"1233"},{"name":"writing hand tone 4","shortname":":writing_hand_tone4:","category":"people","emoji_order":"1234"},{"name":"writing hand tone 5","shortname":":writing_hand_tone5:","category":"people","emoji_order":"1235"},{"name":"open hands sign","shortname":":open_hands:","category":"people","emoji_order":"1236"},{"name":"open hands sign tone 1","shortname":":open_hands_tone1:","category":"people","emoji_order":"1237"},{"name":"open hands sign tone 2","shortname":":open_hands_tone2:","category":"people","emoji_order":"1238"},{"name":"open hands sign tone 3","shortname":":open_hands_tone3:","category":"people","emoji_order":"1239"},{"name":"open hands sign tone 4","shortname":":open_hands_tone4:","category":"people","emoji_order":"1240"},{"name":"open hands sign tone 5","shortname":":open_hands_tone5:","category":"people","emoji_order":"1241"},{"name":"person raising both hands in celebration","shortname":":raised_hands:","category":"people","emoji_order":"1242"},{"name":"person raising both hands in celebration tone 1","shortname":":raised_hands_tone1:","category":"people","emoji_order":"1243"},{"name":"person raising both hands in celebration tone 2","shortname":":raised_hands_tone2:","category":"people","emoji_order":"1244"},{"name":"person raising both hands in celebration tone 3","shortname":":raised_hands_tone3:","category":"people","emoji_order":"1245"},{"name":"person raising both hands in celebration tone 4","shortname":":raised_hands_tone4:","category":"people","emoji_order":"1246"},{"name":"person raising both hands in celebration tone 5","shortname":":raised_hands_tone5:","category":"people","emoji_order":"1247"},{"name":"person with folded hands","shortname":":pray:","category":"people","emoji_order":"1248"},{"name":"person with folded hands tone 1","shortname":":pray_tone1:","category":"people","emoji_order":"1249"},{"name":"person with folded hands tone 2","shortname":":pray_tone2:","category":"people","emoji_order":"1250"},{"name":"person with folded hands tone 3","shortname":":pray_tone3:","category":"people","emoji_order":"1251"},{"name":"person with folded hands tone 4","shortname":":pray_tone4:","category":"people","emoji_order":"1252"},{"name":"person with folded hands tone 5","shortname":":pray_tone5:","category":"people","emoji_order":"1253"},{"name":"handshake","shortname":":handshake:","category":"people","emoji_order":"1254"},{"name":"handshake tone 1","shortname":":handshake_tone1:","category":"people","emoji_order":"1255"},{"name":"handshake tone 2","shortname":":handshake_tone2:","category":"people","emoji_order":"1256"},{"name":"handshake tone 3","shortname":":handshake_tone3:","category":"people","emoji_order":"1257"},{"name":"handshake tone 4","shortname":":handshake_tone4:","category":"people","emoji_order":"1258"},{"name":"handshake tone 5","shortname":":handshake_tone5:","category":"people","emoji_order":"1259"},{"name":"nail polish","shortname":":nail_care:","category":"people","emoji_order":"1260"},{"name":"nail polish tone 1","shortname":":nail_care_tone1:","category":"people","emoji_order":"1261"},{"name":"nail polish tone 2","shortname":":nail_care_tone2:","category":"people","emoji_order":"1262"},{"name":"nail polish tone 3","shortname":":nail_care_tone3:","category":"people","emoji_order":"1263"},{"name":"nail polish tone 4","shortname":":nail_care_tone4:","category":"people","emoji_order":"1264"},{"name":"nail polish tone 5","shortname":":nail_care_tone5:","category":"people","emoji_order":"1265"},{"name":"ear","shortname":":ear:","category":"people","emoji_order":"1266"},{"name":"ear tone 1","shortname":":ear_tone1:","category":"people","emoji_order":"1267"},{"name":"ear tone 2","shortname":":ear_tone2:","category":"people","emoji_order":"1268"},{"name":"ear tone 3","shortname":":ear_tone3:","category":"people","emoji_order":"1269"},{"name":"ear tone 4","shortname":":ear_tone4:","category":"people","emoji_order":"1270"},{"name":"ear tone 5","shortname":":ear_tone5:","category":"people","emoji_order":"1271"},{"name":"nose","shortname":":nose:","category":"people","emoji_order":"1272"},{"name":"nose tone 1","shortname":":nose_tone1:","category":"people","emoji_order":"1273"},{"name":"nose tone 2","shortname":":nose_tone2:","category":"people","emoji_order":"1274"},{"name":"nose tone 3","shortname":":nose_tone3:","category":"people","emoji_order":"1275"},{"name":"nose tone 4","shortname":":nose_tone4:","category":"people","emoji_order":"1276"},{"name":"nose tone 5","shortname":":nose_tone5:","category":"people","emoji_order":"1277"},{"name":"footprints","shortname":":footprints:","category":"people","emoji_order":"1278"},{"name":"eyes","shortname":":eyes:","category":"people","emoji_order":"1279"},{"name":"eye","shortname":":eye:","category":"people","emoji_order":"1280"},{"name":"eye in speech bubble","shortname":":eye_in_speech_bubble:","category":"symbols","emoji_order":"1281"},{"name":"tongue","shortname":":tongue:","category":"people","emoji_order":"1282"},{"name":"mouth","shortname":":lips:","category":"people","emoji_order":"1283"},{"name":"kiss mark","shortname":":kiss:","category":"people","emoji_order":"1284"},{"name":"heart with arrow","shortname":":cupid:","category":"symbols","emoji_order":"1285"},{"name":"heavy black heart","shortname":":heart:","category":"symbols","emoji_order":"1286","aliases_ascii":["<3"]},{"name":"beating heart","shortname":":heartbeat:","category":"symbols","emoji_order":"1287"},{"name":"broken heart","shortname":":broken_heart:","category":"symbols","emoji_order":"1288","aliases_ascii":[" Date: Tue, 11 Jul 2017 14:06:15 +0100 Subject: [PATCH 409/481] Move "regional" category to after "flags" Otherwise by default it appears first, pushing "people" further down the list Also, remove "unicode9" category ordering, as this category does not exist as part of emojione --- src/autocomplete/EmojiProvider.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/autocomplete/EmojiProvider.js b/src/autocomplete/EmojiProvider.js index f70ff7f200..ef8a39edaf 100644 --- a/src/autocomplete/EmojiProvider.js +++ b/src/autocomplete/EmojiProvider.js @@ -35,8 +35,8 @@ const CATEGORY_ORDER = [ 'nature', 'travel', 'flags', + 'regional', 'symbols', - 'unicode9', 'modifier', ]; From 8690ed2181bcfbf2d9e98c96fc9f1cde06ffbe19 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 11 Jul 2017 14:28:44 +0100 Subject: [PATCH 410/481] Make the category functions React components --- src/components/structures/GroupView.js | 115 ++++++++++++++++--------- 1 file changed, 74 insertions(+), 41 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 92ba36a18f..39cf5ece8f 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -23,33 +23,54 @@ import { sanitizedHtmlNode } from '../../HtmlUtils'; import { _t } from '../../languageHandler'; import AccessibleButton from '../views/elements/AccessibleButton'; +const RoomSummaryType = PropTypes.shape({ + room_id: PropTypes.string.isRequired, + profile: PropTypes.shape({ + name: PropTypes.string, + avatar_url: PropTypes.string, + canonical_alias: PropTypes.string, + }).isRequired +}); -function categoryRoomListNode(rooms, categoryId, category) { - const roomNodes = rooms.map((r) => { - return ; - }); - let catHeader = null; - if (category && category.profile) { - catHeader =
    {category.profile.name}
    ; - } - return
    - {catHeader} - {roomNodes} -
    ; -} +const UserSummaryType = PropTypes.shape({ + summaryInfo: PropTypes.shape({ + user_id: PropTypes.string.isRequired, + }).isRequired, +}); + +const CategoryRoomList = React.createClass({ + displayName: 'CategoryRoomList', + + props: { + rooms: PropTypes.arrayOf(RoomSummaryType).isRequired, + categoryId: PropTypes.string, + category: PropTypes.shape({ + profile: PropTypes.shape({ + name: PropTypes.string, + }).isRequired, + }), + }, + + render: function() { + const roomNodes = this.props.rooms.map((r) => { + return ; + }); + let catHeader = null; + if (this.props.category && this.props.category.profile) { + catHeader =
    {this.props.category.profile.name}
    ; + } + return
    + {catHeader} + {roomNodes} +
    ; + }, +}); const FeaturedRoom = React.createClass({ displayName: 'FeaturedRoom', props: { - summaryInfo: PropTypes.shape({ - room_id: PropTypes.string.isRequired, - profile: PropTypes.shape({ - name: PropTypes.string, - avatar_url: PropTypes.string, - canonical_alias: PropTypes.string, - }).isRequired, - }).isRequired, + summaryInfo: RoomSummaryType.isRequired, }, onClick: function(e) { @@ -89,27 +110,39 @@ const FeaturedRoom = React.createClass({ }, }); -function roleUserListNode(users, roleId, role) { - const userNodes = users.map((u) => { - return ; - }); - let roleHeader = null; - if (role && role.profile) { - roleHeader =
    {role.profile.name}
    ; - } - return
    - {roleHeader} - {userNodes} -
    ; -} +const RoleUserList = React.createClass({ + displayName: 'RoleUserList', + + props: { + users: PropTypes.arrayOf(UserSummaryType).isRequired, + roleId: PropTypes.string, + role: PropTypes.shape({ + profile: PropTypes.shape({ + name: PropTypes.string, + }).isRequired, + }), + }, + + render: function() { + const userNodes = this.props.users.map((u) => { + return ; + }); + let roleHeader = null; + if (this.props.role && this.props.role.profile) { + roleHeader =
    {this.props.role.profile.name}
    ; + } + return
    + {roleHeader} + {userNodes} +
    ; + }, +}); const FeaturedUser = React.createClass({ displayName: 'FeaturedUser', props: { - summaryInfo: PropTypes.shape({ - user_id: PropTypes.string.isRequired, - }).isRequired, + summaryInfo: UserSummaryType.isRequired, }, onClick: function(e) { @@ -206,11 +239,11 @@ export default React.createClass({ let defaultCategoryNode = null; if (defaultCategoryRooms.length > 0) { - defaultCategoryNode = categoryRoomListNode(defaultCategoryRooms); + defaultCategoryNode = ; } const categoryRoomNodes = Object.keys(categoryRooms).map((catId) => { const cat = summary.rooms_section.categories[catId]; - return categoryRoomListNode(categoryRooms[catId], catId, cat); + return ; }); return
    @@ -244,11 +277,11 @@ export default React.createClass({ let noRoleNode = null; if (noRoleUsers.length > 0) { - noRoleNode = roleUserListNode(noRoleUsers); + noRoleNode = ; } const roleUserNodes = Object.keys(roleUsers).map((roleId) => { const role = summary.users_section.roles[roleId]; - return roleUserListNode(roleUsers[roleId], roleId, role); + return ; }); return
    From 4e49ebd6ce14df71b4de54bb8ab063f0230d303c Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 11 Jul 2017 14:31:07 +0100 Subject: [PATCH 411/481] Change incorrect refs to this.props --- src/components/views/avatars/RoomAvatar.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/views/avatars/RoomAvatar.js b/src/components/views/avatars/RoomAvatar.js index 728d71a6a9..a18a52b3c0 100644 --- a/src/components/views/avatars/RoomAvatar.js +++ b/src/components/views/avatars/RoomAvatar.js @@ -72,7 +72,7 @@ module.exports = React.createClass({ }, getRoomAvatarUrl: function(props) { - if (!this.props.room) return null; + if (!props.room) return null; return props.room.getAvatarUrl( MatrixClientPeg.get().getHomeserverUrl(), @@ -84,7 +84,7 @@ module.exports = React.createClass({ }, getOneToOneAvatar: function(props) { - if (!this.props.room) return null; + if (!props.room) return null; var mlist = props.room.currentState.members; var userIds = []; From ff3c21ef107e51c92a67488582af754e3d34d177 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 11 Jul 2017 15:16:58 +0100 Subject: [PATCH 412/481] Lint, including putting key in right place --- src/components/structures/GroupView.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 39cf5ece8f..30d67202e7 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -29,7 +29,7 @@ const RoomSummaryType = PropTypes.shape({ name: PropTypes.string, avatar_url: PropTypes.string, canonical_alias: PropTypes.string, - }).isRequired + }).isRequired, }); const UserSummaryType = PropTypes.shape({ @@ -42,8 +42,7 @@ const CategoryRoomList = React.createClass({ displayName: 'CategoryRoomList', props: { - rooms: PropTypes.arrayOf(RoomSummaryType).isRequired, - categoryId: PropTypes.string, + rooms: PropTypes.arrayOf(RoomSummaryType).isRequired, category: PropTypes.shape({ profile: PropTypes.shape({ name: PropTypes.string, @@ -59,7 +58,7 @@ const CategoryRoomList = React.createClass({ if (this.props.category && this.props.category.profile) { catHeader =
    {this.props.category.profile.name}
    ; } - return
    + return
    {catHeader} {roomNodes}
    ; @@ -115,7 +114,6 @@ const RoleUserList = React.createClass({ props: { users: PropTypes.arrayOf(UserSummaryType).isRequired, - roleId: PropTypes.string, role: PropTypes.shape({ profile: PropTypes.shape({ name: PropTypes.string, @@ -131,7 +129,7 @@ const RoleUserList = React.createClass({ if (this.props.role && this.props.role.profile) { roleHeader =
    {this.props.role.profile.name}
    ; } - return
    + return
    {roleHeader} {userNodes}
    ; @@ -243,7 +241,7 @@ export default React.createClass({ } const categoryRoomNodes = Object.keys(categoryRooms).map((catId) => { const cat = summary.rooms_section.categories[catId]; - return ; + return ; }); return
    @@ -281,7 +279,7 @@ export default React.createClass({ } const roleUserNodes = Object.keys(roleUsers).map((roleId) => { const role = summary.users_section.roles[roleId]; - return ; + return ; }); return
    From 636925314259c48c96fe0c07c07b2e1cca237177 Mon Sep 17 00:00:00 2001 From: Kegsay Date: Tue, 11 Jul 2017 15:20:33 +0100 Subject: [PATCH 413/481] Scalar messaging: Add can_send_event operation (#1204) This is mainly for use to pre-emptively show/hide buttons. --- src/ScalarMessaging.js | 61 ++++++++++++++++++++++++++++++++++++- src/i18n/strings/en_EN.json | 2 ++ 2 files changed, 62 insertions(+), 1 deletion(-) diff --git a/src/ScalarMessaging.js b/src/ScalarMessaging.js index df89f7dba2..88a78595d6 100644 --- a/src/ScalarMessaging.js +++ b/src/ScalarMessaging.js @@ -18,7 +18,7 @@ limitations under the License. /* Listens for incoming postMessage requests from the integrations UI URL. The following API is exposed: { - action: "invite" | "membership_state" | "bot_options" | "set_bot_options", + action: "invite" | "membership_state" | "bot_options" | "set_bot_options" | etc... , room_id: $ROOM_ID, user_id: $USER_ID // additional request fields @@ -110,6 +110,26 @@ Example: response: 78 } +can_send_event +-------------- +Check if the client can send the given event into the given room. If the client +is unable to do this, an error response is returned instead of 'response: false'. + +Request: + - room_id is the room to do the check in. + - event_type is the event type which will be sent. + - is_state is true if the event to be sent is a state event. +Response: +true +Example: +{ + action: "can_send_event", + is_state: false, + event_type: "m.room.message", + room_id: "!foo:bar", + response: true +} + set_widget ---------- Set a new widget in the room. Clobbers based on the ID. @@ -442,6 +462,42 @@ function getMembershipCount(event, roomId) { sendResponse(event, count); } +function canSendEvent(event, roomId) { + const evType = "" + event.data.event_type; // force stringify + const isState = Boolean(event.data.is_state); + const client = MatrixClientPeg.get(); + if (!client) { + sendError(event, _t('You need to be logged in.')); + return; + } + const room = client.getRoom(roomId); + if (!room) { + sendError(event, _t('This room is not recognised.')); + return; + } + const me = client.credentials.userId; + const member = room.getMember(me); + if (!member || member.membership !== "join") { + sendError(event, _t('You are not in this room.')); + return; + } + + let canSend = false; + if (isState) { + canSend = room.currentState.maySendStateEvent(evType, me); + } + else { + canSend = room.currentState.maySendEvent(evType, me); + } + + if (!canSend) { + sendError(event, _t('You do not have permission in this room.')); + return; + } + + sendResponse(event, true); +} + function returnStateEvent(event, roomId, eventType, stateKey) { const client = MatrixClientPeg.get(); if (!client) { @@ -538,6 +594,9 @@ const onMessage = function(event) { } else if (event.data.action === "get_widgets") { getWidgets(event, roomId); return; + } else if (event.data.action === "can_send_event") { + canSendEvent(event, roomId); + return; } if (!userId) { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index fc4257cbc1..d68d517302 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -661,6 +661,8 @@ "Would you like to accept or decline this invitation?": "Would you like to accept or decline this invitation?", "You already have existing direct chats with this user:": "You already have existing direct chats with this user:", "You are already in a call.": "You are already in a call.", + "You are not in this room.": "You are not in this room.", + "You do not have permission to do that in this room.": "You do not have permission to do that in this room.", "You're not in any rooms yet! Press to make a room or to browse the directory": "You're not in any rooms yet! Press to make a room or to browse the directory", "You are trying to access %(roomName)s.": "You are trying to access %(roomName)s.", "You cannot place a call with yourself.": "You cannot place a call with yourself.", From 67372d4fed3caa946e8fa6abea93d166af86d359 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Tue, 11 Jul 2017 17:03:25 +0100 Subject: [PATCH 414/481] Give Login an unmounted guard --- src/components/structures/login/Login.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/components/structures/login/Login.js b/src/components/structures/login/Login.js index 27c0c200be..a081d2a205 100644 --- a/src/components/structures/login/Login.js +++ b/src/components/structures/login/Login.js @@ -72,9 +72,14 @@ module.exports = React.createClass({ }, componentWillMount: function() { + this._unmounted = false; this._initLoginLogic(); }, + componentWillUnmount: function() { + this._unmounted = true; + }, + onPasswordLogin: function(username, phoneCountry, phoneNumber, password) { this.setState({ busy: true, @@ -87,6 +92,9 @@ module.exports = React.createClass({ ).then((data) => { this.props.onLoggedIn(data); }, (error) => { + if(this._unmounted) { + return; + } let errorText; // Some error strings only apply for logging in @@ -109,8 +117,11 @@ module.exports = React.createClass({ loginIncorrect: error.httpStatus === 401 || error.httpStatus == 403, }); }).finally(() => { + if(this._unmounted) { + return; + } this.setState({ - busy: false + busy: false, }); }).done(); }, From f5f1fe6ae694970b0a0ad2a8e8682134f78a1d84 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Tue, 11 Jul 2017 17:09:06 +0100 Subject: [PATCH 415/481] Fix a race in session loading code it was possible for on_logging_in to get dispatched *after* on_logged_in, causing the app to wedge. Fix it by dispatching on_logging_in synchronously. --- src/Lifecycle.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Lifecycle.js b/src/Lifecycle.js index f64e2b3858..00a82bad21 100644 --- a/src/Lifecycle.js +++ b/src/Lifecycle.js @@ -309,7 +309,10 @@ async function _doSetLoggedIn(credentials, clearStorage) { // because `teamPromise` may take some time to resolve, breaking the assumption that // `setLoggedIn` takes an "instant" to complete, and dispatch `on_logged_in` a few ms // later than MatrixChat might assume. - dis.dispatch({action: 'on_logging_in'}); + // + // we fire it *synchronously* to make sure it fires before on_logged_in. + // (dis.dispatch uses `setTimeout`, which does not guarantee ordering.) + dis.dispatch({action: 'on_logging_in'}, true); if (clearStorage) { await _clearStorage(); @@ -344,6 +347,9 @@ async function _doSetLoggedIn(credentials, clearStorage) { localStorage.setItem("mx_team_token", body.team_token); } return body.team_token; + }, (err) => { + console.warn(`Failed to get team token on login: ${err}` ); + return null; }); } } else { @@ -354,9 +360,6 @@ async function _doSetLoggedIn(credentials, clearStorage) { teamPromise.then((teamToken) => { dis.dispatch({action: 'on_logged_in', teamToken: teamToken}); - }, (err) => { - console.warn("Failed to get team token on login", err); - dis.dispatch({action: 'on_logged_in', teamToken: null}); }); startMatrixClient(); From 1139dd2be57172ef977beb8314ba13ae26ec8e56 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Tue, 11 Jul 2017 17:21:41 +0100 Subject: [PATCH 416/481] Fix a flaky test in the timelinepanel code Sometimes it was possible for there to be a scroll event before the initial pagination completed, which then upset the rest of the test. Just give it a few ms to sort itself out instead. --- src/components/structures/TimelinePanel.js | 4 ++-- .../structures/TimelinePanel-test.js | 18 ++++++++++++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/components/structures/TimelinePanel.js b/src/components/structures/TimelinePanel.js index 928e2405aa..cdee03ab63 100644 --- a/src/components/structures/TimelinePanel.js +++ b/src/components/structures/TimelinePanel.js @@ -350,9 +350,9 @@ var TimelinePanel = React.createClass({ }); }, - onMessageListScroll: function() { + onMessageListScroll: function(e) { if (this.props.onScroll) { - this.props.onScroll(); + this.props.onScroll(e); } if (this.props.manageReadMarkers) { diff --git a/test/components/structures/TimelinePanel-test.js b/test/components/structures/TimelinePanel-test.js index be60691b5c..748e37bee3 100644 --- a/test/components/structures/TimelinePanel-test.js +++ b/test/components/structures/TimelinePanel-test.js @@ -126,10 +126,15 @@ describe('TimelinePanel', function() { timeline.addEvent(mkMessage(i)); } - var scrollDefer; + let scrollDefer; + const onScroll = (e) => { + console.log(`TimelinePanel called onScroll: ${e.target.scrollTop}`); + if (scrollDefer) { + scrollDefer.resolve(); + } + }; var rendered = ReactDOM.render( - {scrollDefer.resolve()}} - />, + , parentDiv, ); var panel = rendered.refs.panel; @@ -152,9 +157,8 @@ describe('TimelinePanel', function() { return scrollDefer.promise; }; - // wait for the panel to load - we'll get a scroll event once it - // happens - awaitScroll().then(() => { + // let the first round of pagination finish off + q.delay(5).then(() => { expect(panel.state.canBackPaginate).toBe(false); expect(scryEventTiles(panel).length).toEqual(N_EVENTS); @@ -164,6 +168,8 @@ describe('TimelinePanel', function() { // wait for the scroll event to land }).then(awaitScroll).then(() => { + expect(scrollingDiv.scrollTop).toEqual(0); + // there should be no pagination going on now expect(panel.state.backPaginating).toBe(false); expect(panel.state.forwardPaginating).toBe(false); From 0df144cb622f2fe69e7b0ab975c7046d2d3e931d Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 11 Jul 2017 18:27:35 +0100 Subject: [PATCH 417/481] Update `unicodeToImage` to maintain compatibility with emojione We recently updated our version of emojione but this update included the addition of emoji represented in unicode with ZWJ (Zero-Width-Joiners). These ZWJs are not present in the asset file names, so any emoji with ZWJ in them were just not found (404 on the web client). This updates `unicodeToImage` to be compatible with emojione 2.2.7 so that the correct filenames are used when converting from unicode to . --- src/HtmlUtils.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/HtmlUtils.js b/src/HtmlUtils.js index 9041e88594..20b444b8da 100644 --- a/src/HtmlUtils.js +++ b/src/HtmlUtils.js @@ -38,7 +38,7 @@ const COLOR_REGEX = /^#[0-9a-fA-F]{6}$/; * because we want to include emoji shortnames in title text */ export function unicodeToImage(str) { - let replaceWith, unicode, alt; + let replaceWith, unicode, alt, short, fname; const mappedUnicode = emojione.mapUnicodeToShort(); str = str.replace(emojione.regUnicode, function(unicodeChar) { @@ -50,11 +50,14 @@ export function unicodeToImage(str) { // get the unicode codepoint from the actual char unicode = emojione.jsEscapeMap[unicodeChar]; + short = mappedUnicode[unicode]; + fname = emojione.emojioneList[short].fname; + // depending on the settings, we'll either add the native unicode as the alt tag, otherwise the shortname alt = (emojione.unicodeAlt) ? emojione.convert(unicode.toUpperCase()) : mappedUnicode[unicode]; const title = mappedUnicode[unicode]; - replaceWith = `${alt}`; + replaceWith = `${alt}`; return replaceWith; } }); From 7473c654d5afdf62bd5e460df4b68eebe88e5cb9 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 11 Jul 2017 22:54:18 +0100 Subject: [PATCH 418/481] use npm scripts arg passing instead of $KARMAFLAGS to make cross-compat --- jenkins.sh | 3 +-- package.json | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/jenkins.sh b/jenkins.sh index d9bb62855b..a0e8d2e893 100755 --- a/jenkins.sh +++ b/jenkins.sh @@ -2,7 +2,6 @@ set -e -export KARMAFLAGS="--no-colors" export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" nvm use 4 @@ -16,7 +15,7 @@ npm install (cd node_modules/matrix-js-sdk && npm install) # run the mocha tests -npm run test +npm run test -- --no-colors # run eslint npm run lintall -- -f checkstyle -o eslint.xml || true diff --git a/package.json b/package.json index 0f114bf63d..439fc30465 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 --single-run=true --browsers ChromeHeadless", - "test-multi": "karma start $KARMAFLAGS" + "test": "karma start --single-run=true --browsers ChromeHeadless", + "test-multi": "karma start" }, "dependencies": { "babel-runtime": "^6.11.6", From ab61b6b1b67914bf312ddf9cbed3de1c749eac59 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Tue, 11 Jul 2017 23:14:56 +0100 Subject: [PATCH 419/481] Use matrix-react-test-utils rather than our own impl waitForRenderedDOMComponentWithTag is now in matrix-react-test-utils. --- package.json | 1 + .../dialogs/InteractiveAuthDialog-test.js | 7 ++-- test/test-utils.js | 40 ------------------- 3 files changed, 5 insertions(+), 43 deletions(-) diff --git a/package.json b/package.json index 0f114bf63d..d3a3538a55 100644 --- a/package.json +++ b/package.json @@ -109,6 +109,7 @@ "karma-mocha": "^0.2.2", "karma-sourcemap-loader": "^0.3.7", "karma-webpack": "^1.7.0", + "matrix-react-test-utils": "^0.1.0", "mocha": "^2.4.5", "parallelshell": "^1.2.0", "react-addons-test-utils": "^15.4.0", diff --git a/test/components/views/dialogs/InteractiveAuthDialog-test.js b/test/components/views/dialogs/InteractiveAuthDialog-test.js index c8f16225de..f555b2c8ef 100644 --- a/test/components/views/dialogs/InteractiveAuthDialog-test.js +++ b/test/components/views/dialogs/InteractiveAuthDialog-test.js @@ -20,6 +20,7 @@ import React from 'react'; import ReactDOM from 'react-dom'; import ReactTestUtils from 'react-addons-test-utils'; import sinon from 'sinon'; +import MatrixReactTestUtils from 'matrix-react-test-utils'; import sdk from 'matrix-react-sdk'; import MatrixClientPeg from '../../../../src/MatrixClientPeg'; @@ -47,7 +48,7 @@ describe('InteractiveAuthDialog', function () { sandbox.restore(); }); - it('Should successfully complete a password flow', function(done) { + it('Should successfully complete a password flow', function() { const onFinished = sinon.spy(); const doRequest = sinon.stub().returns(q({a:1})); @@ -69,7 +70,7 @@ describe('InteractiveAuthDialog', function () { />, parentDiv); // wait for a password box and a submit button - test_utils.waitForRenderedDOMComponentWithTag(dlg, "form").then((formNode) => { + return MatrixReactTestUtils.waitForRenderedDOMComponentWithTag(dlg, "form").then((formNode) => { const inputNodes = ReactTestUtils.scryRenderedDOMComponentsWithTag( dlg, "input" ); @@ -113,6 +114,6 @@ describe('InteractiveAuthDialog', function () { }).then(() => { expect(onFinished.callCount).toEqual(1); expect(onFinished.calledWithExactly(true, {a:1})).toBe(true); - }).done(done, done); + }); }); }); diff --git a/test/test-utils.js b/test/test-utils.js index 569208b355..bc6b484bb5 100644 --- a/test/test-utils.js +++ b/test/test-utils.js @@ -2,52 +2,12 @@ import sinon from 'sinon'; import q from 'q'; -import ReactTestUtils from 'react-addons-test-utils'; import peg from '../src/MatrixClientPeg'; import dis from '../src/dispatcher'; import jssdk from 'matrix-js-sdk'; const MatrixEvent = jssdk.MatrixEvent; -/** - * Wrapper around window.requestAnimationFrame that returns a promise - * @private - */ -function _waitForFrame() { - const def = q.defer(); - window.requestAnimationFrame(() => { - def.resolve(); - }); - return def.promise; -} - -/** - * Waits a small number of animation frames for a component to appear - * in the DOM. Like findRenderedDOMComponentWithTag(), but allows - * for the element to appear a short time later, eg. if a promise needs - * to resolve first. - * @return a promise that resolves once the component appears, or rejects - * if it doesn't appear after a nominal number of animation frames. - */ -export function waitForRenderedDOMComponentWithTag(tree, tag, attempts) { - if (attempts === undefined) { - // Let's start by assuming we'll only need to wait a single frame, and - // we can try increasing this if necessary. - attempts = 1; - } else if (attempts == 0) { - return q.reject("Gave up waiting for component with tag: " + tag); - } - - return _waitForFrame().then(() => { - const result = ReactTestUtils.scryRenderedDOMComponentsWithTag(tree, tag); - if (result.length > 0) { - return result[0]; - } else { - return waitForRenderedDOMComponentWithTag(tree, tag, attempts - 1); - } - }); -} - /** * Perform common actions before each test case, e.g. printing the test case * name to stdout. From 928287b8fc3b02b1c06b5bad19e6fb03379d6754 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Wed, 12 Jul 2017 00:02:52 +0100 Subject: [PATCH 420/481] Bump to matrix-react-test-utils 0.1.1 ... because 0.1.0 was broken --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d3a3538a55..09cd417361 100644 --- a/package.json +++ b/package.json @@ -109,7 +109,7 @@ "karma-mocha": "^0.2.2", "karma-sourcemap-loader": "^0.3.7", "karma-webpack": "^1.7.0", - "matrix-react-test-utils": "^0.1.0", + "matrix-react-test-utils": "^0.1.1", "mocha": "^2.4.5", "parallelshell": "^1.2.0", "react-addons-test-utils": "^15.4.0", From 7455002b1a0cf8d6c736d425415fdc3f27b275ec Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Wed, 12 Jul 2017 00:24:00 +0100 Subject: [PATCH 421/481] InteractiveAuthDialogTest: increase timeout Blindly increase the number of attempts, because it's failing on travis, but not on my dev box... --- test/components/views/dialogs/InteractiveAuthDialog-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/components/views/dialogs/InteractiveAuthDialog-test.js b/test/components/views/dialogs/InteractiveAuthDialog-test.js index f555b2c8ef..ecfaba4e2c 100644 --- a/test/components/views/dialogs/InteractiveAuthDialog-test.js +++ b/test/components/views/dialogs/InteractiveAuthDialog-test.js @@ -70,7 +70,7 @@ describe('InteractiveAuthDialog', function () { />, parentDiv); // wait for a password box and a submit button - return MatrixReactTestUtils.waitForRenderedDOMComponentWithTag(dlg, "form").then((formNode) => { + return MatrixReactTestUtils.waitForRenderedDOMComponentWithTag(dlg, "form", 2).then((formNode) => { const inputNodes = ReactTestUtils.scryRenderedDOMComponentsWithTag( dlg, "input" ); From 53316a76f458da6ab1c8d683e170f8fc08f74915 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 12 Jul 2017 10:21:43 +0100 Subject: [PATCH 422/481] Sandbox app iframes --- src/components/structures/RoomView.js | 4 ++++ src/components/views/elements/AppTile.js | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index f09e1197cf..75ab4a0db2 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -50,6 +50,8 @@ import RoomViewStore from '../../stores/RoomViewStore'; let DEBUG = false; let debuglog = function() {}; +const BROWSER_SUPPORTS_SANDBOX = 'sandbox' in document.createElement('iframe'); + if (DEBUG) { // using bind means that we get to keep useful line numbers in the console debuglog = console.log.bind(console); @@ -275,6 +277,8 @@ module.exports = React.createClass({ }, _shouldShowApps: function(room) { + if (!BROWSER_SUPPORTS_SANDBOX) return false; + const appsStateEvents = room.currentState.getStateEvents('im.vector.modular.widgets'); // any valid widget = show apps for (let i = 0; i < appsStateEvents.length; i++) { diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 23b7d9f604..79cf5969b3 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -121,7 +121,14 @@ export default React.createClass({ } else { appTileBody = (
    - + // Note that there is advice saying allow-scripts shouldn;t be used with allow-same-origin + // because that would allow the iframe to prgramatically remove the sandbox attribute, but + // this would only be for content hosted on the same origin as the riot client: anything + // hosted on the same origin as the client will get the same access access as if you clicked + // a link to it. +
    ); } From 918f5abe816024d048071a4d0870c239f8c94e8d Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 12 Jul 2017 10:34:50 +0100 Subject: [PATCH 423/481] Lint correctly --- src/components/views/elements/AppTile.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 79cf5969b3..66d6b1ff3a 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -119,15 +119,17 @@ export default React.createClass({
    Loading...
    ); } else { + // Note that there is advice saying allow-scripts shouldn;t be used with allow-same-origin + // because that would allow the iframe to prgramatically remove the sandbox attribute, but + // this would only be for content hosted on the same origin as the riot client: anything + // hosted on the same origin as the client will get the same access access as if you clicked + // a link to it. + const sandboxFlags = "allow-forms allow-popups allow-popups-to-escape-sandbox "+ + "allow-same-origin allow-scripts"; appTileBody = (
    - // Note that there is advice saying allow-scripts shouldn;t be used with allow-same-origin - // because that would allow the iframe to prgramatically remove the sandbox attribute, but - // this would only be for content hosted on the same origin as the riot client: anything - // hosted on the same origin as the client will get the same access access as if you clicked - // a link to it.
    ); From 0dbd1d988ec2509af09c51f58a88287064d68cea Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 12 Jul 2017 13:51:55 +0100 Subject: [PATCH 424/481] Enable ctrl+k room filter focus By using the `focus_room_filter` dispatch --- src/components/structures/LoggedInView.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js index f1053618dc..9750a2c99b 100644 --- a/src/components/structures/LoggedInView.js +++ b/src/components/structures/LoggedInView.js @@ -184,6 +184,13 @@ export default React.createClass({ handled = true; } break; + case KeyCode.KEY_K: + if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) { + dis.dispatch({ + action: 'focus_room_filter', + }); + } + break; } if (handled) { From a48c7d2364d46bcbb049624b5dd4c056eb90a496 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 12 Jul 2017 14:16:47 +0100 Subject: [PATCH 425/481] Only allow http and https widget URLs --- src/components/views/elements/AppTile.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 66d6b1ff3a..3c3f01c1cd 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -16,13 +16,14 @@ limitations under the License. 'use strict'; +import url from 'url'; import React from 'react'; import MatrixClientPeg from '../../../MatrixClientPeg'; import ScalarAuthClient from '../../../ScalarAuthClient'; import SdkConfig from '../../../SdkConfig'; import { _t } from '../../../languageHandler'; -import url from 'url'; +const ALLOWED_APP_URL_SCHEMES = ['https:', 'http:']; export default React.createClass({ displayName: 'AppTile', @@ -126,9 +127,14 @@ export default React.createClass({ // a link to it. const sandboxFlags = "allow-forms allow-popups allow-popups-to-escape-sandbox "+ "allow-same-origin allow-scripts"; + const parsedWidgetUrl = url.parse(this.state.widgetUrl); + let safeWidgetUrl = ''; + if (ALLOWED_APP_URL_SCHEMES.indexOf(parsedWidgetUrl.protocol) !== -1) { + safeWidgetUrl = url.format(parsedWidgetUrl); + } appTileBody = (
    -
    From 6547a558529faccb447f659ad7d73ebe374e764b Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 12 Jul 2017 17:12:57 +0100 Subject: [PATCH 426/481] Update to reflect previous implementation Which was originally https://github.com/vector-im/riot-web/pull/3654/commits/a74bbb424c7c07494d71329e8d4c6ef9fc37a7b9 --- src/KeyCode.js | 1 + src/components/structures/LoggedInView.js | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/KeyCode.js b/src/KeyCode.js index 90c2caeb0e..ec5595b71b 100644 --- a/src/KeyCode.js +++ b/src/KeyCode.js @@ -21,6 +21,7 @@ module.exports = { ENTER: 13, SHIFT: 16, ESCAPE: 27, + SPACE: 32, PAGE_UP: 33, PAGE_DOWN: 34, END: 35, diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js index 9750a2c99b..a051af5d08 100644 --- a/src/components/structures/LoggedInView.js +++ b/src/components/structures/LoggedInView.js @@ -156,13 +156,20 @@ export default React.createClass({ } */ - var handled = false; + let handled = false; + const isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0; + let ctrlCmdOnly; + if (isMac) { + ctrlCmdOnly = ev.metaKey && !ev.altKey && !ev.ctrlKey && !ev.shiftKey; + } else { + ctrlCmdOnly = ev.ctrlKey && !ev.altKey && !ev.metaKey && !ev.shiftKey; + } switch (ev.keyCode) { case KeyCode.UP: case KeyCode.DOWN: if (ev.altKey && !ev.shiftKey && !ev.ctrlKey && !ev.metaKey) { - var action = ev.keyCode == KeyCode.UP ? + let action = ev.keyCode == KeyCode.UP ? 'view_prev_room' : 'view_next_room'; dis.dispatch({action: action}); handled = true; @@ -185,10 +192,11 @@ export default React.createClass({ } break; case KeyCode.KEY_K: - if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) { + if (ctrlCmdOnly) { dis.dispatch({ action: 'focus_room_filter', }); + handled = true; } break; } From 0585fa048fca0a5ebbc82963539c71900561b898 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 12 Jul 2017 17:35:19 +0100 Subject: [PATCH 427/481] Remove `disableMarkdown` setting This was used by the old composer to control whether to interpret text as markdown prior to sending. The new setting is `MessageComposerInput.isRichTextEnabled`. --- src/components/structures/UserSettings.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index bfbb9831b0..14432dff81 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -89,10 +89,6 @@ const SETTINGS_LABELS = [ id: 'hideRedactions', label: 'Hide removed messages', }, - { - id: 'disableMarkdown', - label: 'Disable markdown formatting', - }, { id: 'enableSyntaxHighlightLanguageDetection', label: 'Enable automatic language detection for syntax highlighting', From 6ff924fc0ddc2e54d55babd7674fecf98ad4dff6 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 12 Jul 2017 18:03:13 +0100 Subject: [PATCH 428/481] Remove MessageComposerInputOld --- .../views/rooms/MessageComposerInput.js | 18 +- .../views/rooms/MessageComposerInputOld.js | 470 ------------------ 2 files changed, 16 insertions(+), 472 deletions(-) delete mode 100644 src/components/views/rooms/MessageComposerInputOld.js diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index cf6dfbb6b7..b5c4f31f95 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -41,8 +41,6 @@ import Autocomplete from './Autocomplete'; import {Completion} from "../../../autocomplete/Autocompleter"; 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; @@ -56,6 +54,22 @@ function stateToMarkdown(state) { ''); // this is *not* a zero width space, trust me :) } +function onSendMessageFailed(err, room) { + // XXX: temporary logging to try to diagnose + // https://github.com/vector-im/riot-web/issues/3148 + console.log('MessageComposer got send failure: ' + err.name + '('+err+')'); + if (err.name === "UnknownDeviceError") { + dis.dispatch({ + action: 'unknown_device_error', + err: err, + room: room, + }); + } + dis.dispatch({ + action: 'message_send_failed', + }); +} + /* * The textInput part of the MessageComposer */ diff --git a/src/components/views/rooms/MessageComposerInputOld.js b/src/components/views/rooms/MessageComposerInputOld.js deleted file mode 100644 index 577aac6342..0000000000 --- a/src/components/views/rooms/MessageComposerInputOld.js +++ /dev/null @@ -1,470 +0,0 @@ -/* - Copyright 2015, 2016 OpenMarket 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. - */ -var React = require("react"); - -var MatrixClientPeg = require("../../../MatrixClientPeg"); -var SlashCommands = require("../../../SlashCommands"); -var Modal = require("../../../Modal"); -var MemberEntry = require("../../../TabCompleteEntries").MemberEntry; -var sdk = require('../../../index'); -import { _t } from '../../../languageHandler'; -import UserSettingsStore from "../../../UserSettingsStore"; - -var dis = require("../../../dispatcher"); -var KeyCode = require("../../../KeyCode"); -var Markdown = require("../../../Markdown"); - -var TYPING_USER_TIMEOUT = 10000; -var TYPING_SERVER_TIMEOUT = 30000; - -export function onSendMessageFailed(err, room) { - // XXX: temporary logging to try to diagnose - // https://github.com/vector-im/riot-web/issues/3148 - console.log('MessageComposer got send failure: ' + err.name + '('+err+')'); - if (err.name === "UnknownDeviceError") { - dis.dispatch({ - action: 'unknown_device_error', - err: err, - room: room, - }); - } - dis.dispatch({ - action: 'message_send_failed', - }); -} - -/* - * The textInput part of the MessageComposer - */ -export default React.createClass({ - displayName: 'MessageComposerInput', - - statics: { - // the height we limit the composer to - MAX_HEIGHT: 100, - }, - - propTypes: { - tabComplete: React.PropTypes.any, - - // a callback which is called when the height of the composer is - // changed due to a change in content. - onResize: React.PropTypes.func, - - // js-sdk Room object - room: React.PropTypes.object.isRequired, - - // The text to use a placeholder in the input box - placeholder: React.PropTypes.string.isRequired, - - // callback to handle files pasted into the composer - onFilesPasted: React.PropTypes.func, - }, - - componentWillMount: function() { - this.oldScrollHeight = 0; - this.markdownEnabled = !UserSettingsStore.getSyncedSetting('disableMarkdown', false); - - var self = this; - this.sentHistory = { - // The list of typed messages. Index 0 is more recent - data: [], - // The position in data currently displayed - position: -1, - // The room the history is for. - roomId: null, - // The original text before they hit UP - originalText: null, - // The textarea element to set text to. - element: null, - - init: function(element, roomId) { - this.roomId = roomId; - this.element = element; - this.position = -1; - var storedData = window.sessionStorage.getItem( - "history_" + roomId - ); - if (storedData) { - this.data = JSON.parse(storedData); - } - if (this.roomId) { - this.setLastTextEntry(); - } - }, - - push: function(text) { - // store a message in the sent history - this.data.unshift(text); - window.sessionStorage.setItem( - "history_" + this.roomId, - JSON.stringify(this.data) - ); - // reset history position - this.position = -1; - this.originalText = null; - }, - - // move in the history. Returns true if we managed to move. - next: function(offset) { - if (this.position === -1) { - // user is going into the history, save the current line. - this.originalText = this.element.value; - } - else { - // user may have modified this line in the history; remember it. - this.data[this.position] = this.element.value; - } - - if (offset > 0 && this.position === (this.data.length - 1)) { - // we've run out of history - return false; - } - - // retrieve the next item (bounded). - var newPosition = this.position + offset; - newPosition = Math.max(-1, newPosition); - newPosition = Math.min(newPosition, this.data.length - 1); - this.position = newPosition; - - if (this.position !== -1) { - // show the message - this.element.value = this.data[this.position]; - } - else if (this.originalText !== undefined) { - // restore the original text the user was typing. - this.element.value = this.originalText; - } - - self.resizeInput(); - return true; - }, - - saveLastTextEntry: function() { - // save the currently entered text in order to restore it later. - // NB: This isn't 'originalText' because we want to restore - // sent history items too! - var text = this.element.value; - window.sessionStorage.setItem("input_" + this.roomId, text); - }, - - setLastTextEntry: function() { - var text = window.sessionStorage.getItem("input_" + this.roomId); - if (text) { - this.element.value = text; - self.resizeInput(); - } - } - }; - }, - - componentDidMount: function() { - this.dispatcherRef = dis.register(this.onAction); - this.sentHistory.init( - this.refs.textarea, - this.props.room.roomId - ); - this.resizeInput(); - if (this.props.tabComplete) { - this.props.tabComplete.setTextArea(this.refs.textarea); - } - }, - - componentWillUnmount: function() { - dis.unregister(this.dispatcherRef); - this.sentHistory.saveLastTextEntry(); - }, - - onAction: function(payload) { - var textarea = this.refs.textarea; - switch (payload.action) { - case 'focus_composer': - textarea.focus(); - break; - case 'insert_displayname': - if (textarea.value.length) { - var left = textarea.value.substring(0, textarea.selectionStart); - var right = textarea.value.substring(textarea.selectionEnd); - if (right.length) { - left += payload.displayname; - } - else { - left = left.replace(/( ?)$/, " " + payload.displayname); - } - textarea.value = left + right; - textarea.focus(); - textarea.setSelectionRange(left.length, left.length); - } - else { - textarea.value = payload.displayname + ": "; - textarea.focus(); - } - break; - } - }, - - onKeyDown: function(ev) { - if (ev.keyCode === KeyCode.ENTER && !ev.shiftKey) { - var input = this.refs.textarea.value; - if (input.length === 0) { - ev.preventDefault(); - return; - } - this.sentHistory.push(input); - this.onEnter(ev); - } - else if (ev.keyCode === KeyCode.UP || ev.keyCode === KeyCode.DOWN) { - var oldSelectionStart = this.refs.textarea.selectionStart; - // Remember the keyCode because React will recycle the synthetic event - var keyCode = ev.keyCode; - // set a callback so we can see if the cursor position changes as - // a result of this event. If it doesn't, we cycle history. - setTimeout(() => { - if (this.refs.textarea.selectionStart == oldSelectionStart) { - this.sentHistory.next(keyCode === KeyCode.UP ? 1 : -1); - this.resizeInput(); - } - }, 0); - } - - if (this.props.tabComplete) { - this.props.tabComplete.onKeyDown(ev); - } - - var self = this; - setTimeout(function() { - if (self.refs.textarea && self.refs.textarea.value != '') { - self.onTypingActivity(); - } else { - self.onFinishedTyping(); - } - }, 10); // XXX: what is this 10ms setTimeout doing? Looks hacky :( - }, - - resizeInput: function() { - // scrollHeight is at least equal to clientHeight, so we have to - // temporarily crimp clientHeight to 0 to get an accurate scrollHeight value - this.refs.textarea.style.height = "20px"; // 20 hardcoded from CSS - var newHeight = Math.min(this.refs.textarea.scrollHeight, - this.constructor.MAX_HEIGHT); - this.refs.textarea.style.height = Math.ceil(newHeight) + "px"; - this.oldScrollHeight = this.refs.textarea.scrollHeight; - - if (this.props.onResize) { - // kick gemini-scrollbar to re-layout - this.props.onResize(); - } - }, - - onKeyUp: function(ev) { - if (this.refs.textarea.scrollHeight !== this.oldScrollHeight || - ev.keyCode === KeyCode.DELETE || - ev.keyCode === KeyCode.BACKSPACE) - { - this.resizeInput(); - } - }, - - onEnter: function(ev) { - var contentText = this.refs.textarea.value; - - // bodge for now to set markdown state on/off. We probably want a separate - // area for "local" commands which don't hit out to the server. - if (contentText.indexOf("/markdown") === 0) { - ev.preventDefault(); - this.refs.textarea.value = ''; - if (contentText.indexOf("/markdown on") === 0) { - this.markdownEnabled = true; - } - else if (contentText.indexOf("/markdown off") === 0) { - this.markdownEnabled = false; - } - else { - var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - Modal.createDialog(ErrorDialog, { - title: _t("Unknown command"), - description: _t("Usage") + ": /markdown on|off", - }); - } - return; - } - - var cmd = SlashCommands.processInput(this.props.room.roomId, contentText); - if (cmd) { - ev.preventDefault(); - if (!cmd.error) { - this.refs.textarea.value = ''; - } - if (cmd.promise) { - cmd.promise.done(function() { - console.log("Command success."); - }, function(err) { - console.error("Command failure: %s", err); - var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - Modal.createDialog(ErrorDialog, { - title: _t("Server error"), - description: ((err && err.message) ? err.message : _t("Server unavailable, overloaded, or something else went wrong.")), - }); - }); - } - else if (cmd.error) { - console.error(cmd.error); - var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - Modal.createDialog(ErrorDialog, { - title: _t("Command error"), - description: cmd.error, - }); - } - return; - } - - var isEmote = /^\/me( |$)/i.test(contentText); - var sendMessagePromise; - - if (isEmote) { - contentText = contentText.substring(4); - } - else if (contentText[0] === '/') { - contentText = contentText.substring(1); - } - - let send_markdown = false; - let mdown; - if (this.markdownEnabled) { - mdown = new Markdown(contentText); - send_markdown = !mdown.isPlainText(); - } - - if (send_markdown) { - const htmlText = mdown.toHTML(); - sendMessagePromise = isEmote ? - MatrixClientPeg.get().sendHtmlEmote(this.props.room.roomId, contentText, htmlText) : - MatrixClientPeg.get().sendHtmlMessage(this.props.room.roomId, contentText, htmlText); - } - else { - if (mdown) contentText = mdown.toPlaintext(); - sendMessagePromise = isEmote ? - MatrixClientPeg.get().sendEmoteMessage(this.props.room.roomId, contentText) : - MatrixClientPeg.get().sendTextMessage(this.props.room.roomId, contentText); - } - - sendMessagePromise.done(function(res) { - dis.dispatch({ - action: 'message_sent' - }); - }, (e) => onSendMessageFailed(e, this.props.room)); - - this.refs.textarea.value = ''; - this.resizeInput(); - ev.preventDefault(); - }, - - onTypingActivity: function() { - this.isTyping = true; - if (!this.userTypingTimer) { - this.sendTyping(true); - } - this.startUserTypingTimer(); - this.startServerTypingTimer(); - }, - - onFinishedTyping: function() { - this.isTyping = false; - this.sendTyping(false); - this.stopUserTypingTimer(); - this.stopServerTypingTimer(); - }, - - startUserTypingTimer: function() { - this.stopUserTypingTimer(); - var self = this; - this.userTypingTimer = setTimeout(function() { - self.isTyping = false; - self.sendTyping(self.isTyping); - self.userTypingTimer = null; - }, TYPING_USER_TIMEOUT); - }, - - stopUserTypingTimer: function() { - if (this.userTypingTimer) { - clearTimeout(this.userTypingTimer); - this.userTypingTimer = null; - } - }, - - startServerTypingTimer: function() { - if (!this.serverTypingTimer) { - var self = this; - this.serverTypingTimer = setTimeout(function() { - if (self.isTyping) { - self.sendTyping(self.isTyping); - self.startServerTypingTimer(); - } - }, TYPING_SERVER_TIMEOUT / 2); - } - }, - - stopServerTypingTimer: function() { - if (this.serverTypingTimer) { - clearTimeout(this.servrTypingTimer); - this.serverTypingTimer = null; - } - }, - - sendTyping: function(isTyping) { - if (UserSettingsStore.getSyncedSetting('dontSendTypingNotifications', false)) return; - MatrixClientPeg.get().sendTyping( - this.props.room.roomId, - this.isTyping, TYPING_SERVER_TIMEOUT - ).done(); - }, - - refreshTyping: function() { - if (this.typingTimeout) { - clearTimeout(this.typingTimeout); - this.typingTimeout = null; - } - }, - - onInputClick: function(ev) { - this.refs.textarea.focus(); - }, - - _onPaste: function(ev) { - const items = ev.clipboardData.items; - const files = []; - for (const item of items) { - if (item.kind === 'file') { - files.push(item.getAsFile()); - } - } - if (files.length && this.props.onFilesPasted) { - this.props.onFilesPasted(files); - return true; - } - return false; - }, - - render: function() { - return ( -
    -