Page MenuHomePhabricator

D17244.id41475.diff
No OneTemporary

D17244.id41475.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -540,7 +540,7 @@
'rsrc/js/phui/behavior-phui-tab-group.js' => '0a0b10e9',
'rsrc/js/phuix/PHUIXActionListView.js' => 'b5c256b8',
'rsrc/js/phuix/PHUIXActionView.js' => 'b3465b9b',
- 'rsrc/js/phuix/PHUIXAutocomplete.js' => '6d86ce8b',
+ 'rsrc/js/phuix/PHUIXAutocomplete.js' => '7c492cd2',
'rsrc/js/phuix/PHUIXDropdownMenu.js' => '8018ee50',
'rsrc/js/phuix/PHUIXFormControl.js' => 'bbece68d',
'rsrc/js/phuix/PHUIXIconView.js' => 'bff6884b',
@@ -899,7 +899,7 @@
'phui-workpanel-view-css' => 'a3a63478',
'phuix-action-list-view' => 'b5c256b8',
'phuix-action-view' => 'b3465b9b',
- 'phuix-autocomplete' => '6d86ce8b',
+ 'phuix-autocomplete' => '7c492cd2',
'phuix-dropdown-menu' => '8018ee50',
'phuix-form-control-view' => 'bbece68d',
'phuix-icon-view' => 'bff6884b',
@@ -1423,12 +1423,6 @@
'javelin-typeahead',
'javelin-uri',
),
- '6d86ce8b' => array(
- 'javelin-install',
- 'javelin-dom',
- 'phuix-icon-view',
- 'phabricator-prefab',
- ),
'70baed2f' => array(
'javelin-install',
'javelin-dom',
@@ -1496,6 +1490,12 @@
'owners-path-editor',
'javelin-behavior',
),
+ '7c492cd2' => array(
+ 'javelin-install',
+ 'javelin-dom',
+ 'phuix-icon-view',
+ 'phabricator-prefab',
+ ),
'7cbe244b' => array(
'javelin-install',
'javelin-util',
diff --git a/resources/emoji/manifest.json b/resources/emoji/manifest.json
new file mode 100644
--- /dev/null
+++ b/resources/emoji/manifest.json
@@ -0,0 +1,1626 @@
+{
+ "grinning": "\ud83d\ude00",
+ "grimacing": "\ud83d\ude2c",
+ "grin": "\ud83d\ude01",
+ "joy": "\ud83d\ude02",
+ "smiley": "\ud83d\ude03",
+ "smile": "\ud83d\ude04",
+ "sweat_smile": "\ud83d\ude05",
+ "laughing": "\ud83d\ude06",
+ "innocent": "\ud83d\ude07",
+ "wink": "\ud83d\ude09",
+ "blush": "\ud83d\ude0a",
+ "slight_smile": "\ud83d\ude42",
+ "upside_down": "\ud83d\ude43",
+ "relaxed": "\u263a",
+ "yum": "\ud83d\ude0b",
+ "relieved": "\ud83d\ude0c",
+ "heart_eyes": "\ud83d\ude0d",
+ "kissing_heart": "\ud83d\ude18",
+ "kissing": "\ud83d\ude17",
+ "kissing_smiling_eyes": "\ud83d\ude19",
+ "kissing_closed_eyes": "\ud83d\ude1a",
+ "stuck_out_tongue_winking_eye": "\ud83d\ude1c",
+ "stuck_out_tongue_closed_eyes": "\ud83d\ude1d",
+ "stuck_out_tongue": "\ud83d\ude1b",
+ "money_mouth": "\ud83e\udd11",
+ "nerd": "\ud83e\udd13",
+ "sunglasses": "\ud83d\ude0e",
+ "hugging": "\ud83e\udd17",
+ "smirk": "\ud83d\ude0f",
+ "no_mouth": "\ud83d\ude36",
+ "neutral_face": "\ud83d\ude10",
+ "expressionless": "\ud83d\ude11",
+ "unamused": "\ud83d\ude12",
+ "rolling_eyes": "\ud83d\ude44",
+ "thinking": "\ud83e\udd14",
+ "flushed": "\ud83d\ude33",
+ "disappointed": "\ud83d\ude1e",
+ "worried": "\ud83d\ude1f",
+ "angry": "\ud83d\ude20",
+ "rage": "\ud83d\ude21",
+ "pensive": "\ud83d\ude14",
+ "confused": "\ud83d\ude15",
+ "slight_frown": "\ud83d\ude41",
+ "frowning2": "\u2639",
+ "persevere": "\ud83d\ude23",
+ "confounded": "\ud83d\ude16",
+ "tired_face": "\ud83d\ude2b",
+ "weary": "\ud83d\ude29",
+ "triumph": "\ud83d\ude24",
+ "open_mouth": "\ud83d\ude2e",
+ "scream": "\ud83d\ude31",
+ "fearful": "\ud83d\ude28",
+ "cold_sweat": "\ud83d\ude30",
+ "hushed": "\ud83d\ude2f",
+ "frowning": "\ud83d\ude26",
+ "anguished": "\ud83d\ude27",
+ "cry": "\ud83d\ude22",
+ "disappointed_relieved": "\ud83d\ude25",
+ "sleepy": "\ud83d\ude2a",
+ "sweat": "\ud83d\ude13",
+ "sob": "\ud83d\ude2d",
+ "dizzy_face": "\ud83d\ude35",
+ "astonished": "\ud83d\ude32",
+ "zipper_mouth": "\ud83e\udd10",
+ "mask": "\ud83d\ude37",
+ "thermometer_face": "\ud83e\udd12",
+ "head_bandage": "\ud83e\udd15",
+ "sleeping": "\ud83d\ude34",
+ "zzz": "\ud83d\udca4",
+ "poop": "\ud83d\udca9",
+ "smiling_imp": "\ud83d\ude08",
+ "imp": "\ud83d\udc7f",
+ "japanese_ogre": "\ud83d\udc79",
+ "japanese_goblin": "\ud83d\udc7a",
+ "skull": "\ud83d\udc80",
+ "ghost": "\ud83d\udc7b",
+ "alien": "\ud83d\udc7d",
+ "robot": "\ud83e\udd16",
+ "smiley_cat": "\ud83d\ude3a",
+ "smile_cat": "\ud83d\ude38",
+ "joy_cat": "\ud83d\ude39",
+ "heart_eyes_cat": "\ud83d\ude3b",
+ "smirk_cat": "\ud83d\ude3c",
+ "kissing_cat": "\ud83d\ude3d",
+ "scream_cat": "\ud83d\ude40",
+ "crying_cat_face": "\ud83d\ude3f",
+ "pouting_cat": "\ud83d\ude3e",
+ "raised_hands": "\ud83d\ude4c",
+ "clap": "\ud83d\udc4f",
+ "wave": "\ud83d\udc4b",
+ "thumbsup": "\ud83d\udc4d",
+ "thumbsdown": "\ud83d\udc4e",
+ "punch": "\ud83d\udc4a",
+ "fist": "\u270a",
+ "v": "\u270c",
+ "ok_hand": "\ud83d\udc4c",
+ "raised_hand": "\u270b",
+ "open_hands": "\ud83d\udc50",
+ "muscle": "\ud83d\udcaa",
+ "pray": "\ud83d\ude4f",
+ "point_up": "\u261d",
+ "point_up_2": "\ud83d\udc46",
+ "point_down": "\ud83d\udc47",
+ "point_left": "\ud83d\udc48",
+ "point_right": "\ud83d\udc49",
+ "middle_finger": "\ud83d\udd95",
+ "hand_splayed": "\ud83d\udd90",
+ "metal": "\ud83e\udd18",
+ "vulcan": "\ud83d\udd96",
+ "writing_hand": "\u270d",
+ "nail_care": "\ud83d\udc85",
+ "lips": "\ud83d\udc44",
+ "tongue": "\ud83d\udc45",
+ "ear": "\ud83d\udc42",
+ "nose": "\ud83d\udc43",
+ "eye": "\ud83d\udc41",
+ "eyes": "\ud83d\udc40",
+ "bust_in_silhouette": "\ud83d\udc64",
+ "busts_in_silhouette": "\ud83d\udc65",
+ "speaking_head": "\ud83d\udde3",
+ "baby": "\ud83d\udc76",
+ "boy": "\ud83d\udc66",
+ "girl": "\ud83d\udc67",
+ "man": "\ud83d\udc68",
+ "woman": "\ud83d\udc69",
+ "person_with_blond_hair": "\ud83d\udc71",
+ "older_man": "\ud83d\udc74",
+ "older_woman": "\ud83d\udc75",
+ "man_with_gua_pi_mao": "\ud83d\udc72",
+ "man_with_turban": "\ud83d\udc73",
+ "cop": "\ud83d\udc6e",
+ "construction_worker": "\ud83d\udc77",
+ "guardsman": "\ud83d\udc82",
+ "spy": "\ud83d\udd75",
+ "santa": "\ud83c\udf85",
+ "angel": "\ud83d\udc7c",
+ "princess": "\ud83d\udc78",
+ "bride_with_veil": "\ud83d\udc70",
+ "walking": "\ud83d\udeb6",
+ "runner": "\ud83c\udfc3",
+ "dancer": "\ud83d\udc83",
+ "dancers": "\ud83d\udc6f",
+ "couple": "\ud83d\udc6b",
+ "two_men_holding_hands": "\ud83d\udc6c",
+ "two_women_holding_hands": "\ud83d\udc6d",
+ "bow": "\ud83d\ude47",
+ "information_desk_person": "\ud83d\udc81",
+ "no_good": "\ud83d\ude45",
+ "ok_woman": "\ud83d\ude46",
+ "raising_hand": "\ud83d\ude4b",
+ "person_with_pouting_face": "\ud83d\ude4e",
+ "person_frowning": "\ud83d\ude4d",
+ "haircut": "\ud83d\udc87",
+ "massage": "\ud83d\udc86",
+ "couple_with_heart": "\ud83d\udc91",
+ "couple_ww": "\ud83d\udc69\u2764\ud83d\udc69",
+ "couple_mm": "\ud83d\udc68\u2764\ud83d\udc68",
+ "couplekiss": "\ud83d\udc8f",
+ "kiss_ww": "\ud83d\udc69\u2764\ud83d\udc8b\ud83d\udc69",
+ "kiss_mm": "\ud83d\udc68\u2764\ud83d\udc8b\ud83d\udc68",
+ "family": "\ud83d\udc6a",
+ "family_mwg": "\ud83d\udc68\ud83d\udc69\ud83d\udc67",
+ "family_mwgb": "\ud83d\udc68\ud83d\udc69\ud83d\udc67\ud83d\udc66",
+ "family_mwbb": "\ud83d\udc68\ud83d\udc69\ud83d\udc66\ud83d\udc66",
+ "family_mwgg": "\ud83d\udc68\ud83d\udc69\ud83d\udc67\ud83d\udc67",
+ "family_wwb": "\ud83d\udc69\ud83d\udc69\ud83d\udc66",
+ "family_wwg": "\ud83d\udc69\ud83d\udc69\ud83d\udc67",
+ "family_wwgb": "\ud83d\udc69\ud83d\udc69\ud83d\udc67\ud83d\udc66",
+ "family_wwbb": "\ud83d\udc69\ud83d\udc69\ud83d\udc66\ud83d\udc66",
+ "family_wwgg": "\ud83d\udc69\ud83d\udc69\ud83d\udc67\ud83d\udc67",
+ "family_mmb": "\ud83d\udc68\ud83d\udc68\ud83d\udc66",
+ "family_mmg": "\ud83d\udc68\ud83d\udc68\ud83d\udc67",
+ "family_mmgb": "\ud83d\udc68\ud83d\udc68\ud83d\udc67\ud83d\udc66",
+ "family_mmbb": "\ud83d\udc68\ud83d\udc68\ud83d\udc66\ud83d\udc66",
+ "family_mmgg": "\ud83d\udc68\ud83d\udc68\ud83d\udc67\ud83d\udc67",
+ "womans_clothes": "\ud83d\udc5a",
+ "shirt": "\ud83d\udc55",
+ "jeans": "\ud83d\udc56",
+ "necktie": "\ud83d\udc54",
+ "dress": "\ud83d\udc57",
+ "bikini": "\ud83d\udc59",
+ "kimono": "\ud83d\udc58",
+ "lipstick": "\ud83d\udc84",
+ "kiss": "\ud83d\udc8b",
+ "footprints": "\ud83d\udc63",
+ "high_heel": "\ud83d\udc60",
+ "sandal": "\ud83d\udc61",
+ "boot": "\ud83d\udc62",
+ "mans_shoe": "\ud83d\udc5e",
+ "athletic_shoe": "\ud83d\udc5f",
+ "womans_hat": "\ud83d\udc52",
+ "tophat": "\ud83c\udfa9",
+ "helmet_with_cross": "\u26d1",
+ "mortar_board": "\ud83c\udf93",
+ "crown": "\ud83d\udc51",
+ "school_satchel": "\ud83c\udf92",
+ "pouch": "\ud83d\udc5d",
+ "purse": "\ud83d\udc5b",
+ "handbag": "\ud83d\udc5c",
+ "briefcase": "\ud83d\udcbc",
+ "eyeglasses": "\ud83d\udc53",
+ "dark_sunglasses": "\ud83d\udd76",
+ "ring": "\ud83d\udc8d",
+ "closed_umbrella": "\ud83c\udf02",
+ "dog": "\ud83d\udc36",
+ "cat": "\ud83d\udc31",
+ "mouse": "\ud83d\udc2d",
+ "hamster": "\ud83d\udc39",
+ "rabbit": "\ud83d\udc30",
+ "bear": "\ud83d\udc3b",
+ "panda_face": "\ud83d\udc3c",
+ "koala": "\ud83d\udc28",
+ "tiger": "\ud83d\udc2f",
+ "lion_face": "\ud83e\udd81",
+ "cow": "\ud83d\udc2e",
+ "pig": "\ud83d\udc37",
+ "pig_nose": "\ud83d\udc3d",
+ "frog": "\ud83d\udc38",
+ "octopus": "\ud83d\udc19",
+ "monkey_face": "\ud83d\udc35",
+ "see_no_evil": "\ud83d\ude48",
+ "hear_no_evil": "\ud83d\ude49",
+ "speak_no_evil": "\ud83d\ude4a",
+ "monkey": "\ud83d\udc12",
+ "chicken": "\ud83d\udc14",
+ "penguin": "\ud83d\udc27",
+ "bird": "\ud83d\udc26",
+ "baby_chick": "\ud83d\udc24",
+ "hatching_chick": "\ud83d\udc23",
+ "hatched_chick": "\ud83d\udc25",
+ "wolf": "\ud83d\udc3a",
+ "boar": "\ud83d\udc17",
+ "horse": "\ud83d\udc34",
+ "unicorn": "\ud83e\udd84",
+ "bee": "\ud83d\udc1d",
+ "bug": "\ud83d\udc1b",
+ "snail": "\ud83d\udc0c",
+ "beetle": "\ud83d\udc1e",
+ "ant": "\ud83d\udc1c",
+ "spider": "\ud83d\udd77",
+ "scorpion": "\ud83e\udd82",
+ "crab": "\ud83e\udd80",
+ "snake": "\ud83d\udc0d",
+ "turtle": "\ud83d\udc22",
+ "tropical_fish": "\ud83d\udc20",
+ "fish": "\ud83d\udc1f",
+ "blowfish": "\ud83d\udc21",
+ "dolphin": "\ud83d\udc2c",
+ "whale": "\ud83d\udc33",
+ "whale2": "\ud83d\udc0b",
+ "crocodile": "\ud83d\udc0a",
+ "leopard": "\ud83d\udc06",
+ "tiger2": "\ud83d\udc05",
+ "water_buffalo": "\ud83d\udc03",
+ "ox": "\ud83d\udc02",
+ "cow2": "\ud83d\udc04",
+ "dromedary_camel": "\ud83d\udc2a",
+ "camel": "\ud83d\udc2b",
+ "elephant": "\ud83d\udc18",
+ "goat": "\ud83d\udc10",
+ "ram": "\ud83d\udc0f",
+ "sheep": "\ud83d\udc11",
+ "racehorse": "\ud83d\udc0e",
+ "pig2": "\ud83d\udc16",
+ "rat": "\ud83d\udc00",
+ "mouse2": "\ud83d\udc01",
+ "rooster": "\ud83d\udc13",
+ "turkey": "\ud83e\udd83",
+ "dove": "\ud83d\udd4a",
+ "dog2": "\ud83d\udc15",
+ "poodle": "\ud83d\udc29",
+ "cat2": "\ud83d\udc08",
+ "rabbit2": "\ud83d\udc07",
+ "chipmunk": "\ud83d\udc3f",
+ "feet": "\ud83d\udc3e",
+ "dragon": "\ud83d\udc09",
+ "dragon_face": "\ud83d\udc32",
+ "cactus": "\ud83c\udf35",
+ "christmas_tree": "\ud83c\udf84",
+ "evergreen_tree": "\ud83c\udf32",
+ "deciduous_tree": "\ud83c\udf33",
+ "palm_tree": "\ud83c\udf34",
+ "seedling": "\ud83c\udf31",
+ "herb": "\ud83c\udf3f",
+ "shamrock": "\u2618",
+ "four_leaf_clover": "\ud83c\udf40",
+ "bamboo": "\ud83c\udf8d",
+ "tanabata_tree": "\ud83c\udf8b",
+ "leaves": "\ud83c\udf43",
+ "fallen_leaf": "\ud83c\udf42",
+ "maple_leaf": "\ud83c\udf41",
+ "ear_of_rice": "\ud83c\udf3e",
+ "hibiscus": "\ud83c\udf3a",
+ "sunflower": "\ud83c\udf3b",
+ "rose": "\ud83c\udf39",
+ "tulip": "\ud83c\udf37",
+ "blossom": "\ud83c\udf3c",
+ "cherry_blossom": "\ud83c\udf38",
+ "bouquet": "\ud83d\udc90",
+ "mushroom": "\ud83c\udf44",
+ "chestnut": "\ud83c\udf30",
+ "jack_o_lantern": "\ud83c\udf83",
+ "shell": "\ud83d\udc1a",
+ "spider_web": "\ud83d\udd78",
+ "earth_americas": "\ud83c\udf0e",
+ "earth_africa": "\ud83c\udf0d",
+ "earth_asia": "\ud83c\udf0f",
+ "full_moon": "\ud83c\udf15",
+ "waning_gibbous_moon": "\ud83c\udf16",
+ "last_quarter_moon": "\ud83c\udf17",
+ "waning_crescent_moon": "\ud83c\udf18",
+ "new_moon": "\ud83c\udf11",
+ "waxing_crescent_moon": "\ud83c\udf12",
+ "first_quarter_moon": "\ud83c\udf13",
+ "waxing_gibbous_moon": "\ud83c\udf14",
+ "new_moon_with_face": "\ud83c\udf1a",
+ "full_moon_with_face": "\ud83c\udf1d",
+ "first_quarter_moon_with_face": "\ud83c\udf1b",
+ "last_quarter_moon_with_face": "\ud83c\udf1c",
+ "sun_with_face": "\ud83c\udf1e",
+ "crescent_moon": "\ud83c\udf19",
+ "star": "\u2b50",
+ "star2": "\ud83c\udf1f",
+ "dizzy": "\ud83d\udcab",
+ "sparkles": "\u2728",
+ "comet": "\u2604",
+ "sunny": "\u2600",
+ "white_sun_small_cloud": "\ud83c\udf24",
+ "partly_sunny": "\u26c5",
+ "white_sun_cloud": "\ud83c\udf25",
+ "white_sun_rain_cloud": "\ud83c\udf26",
+ "cloud": "\u2601",
+ "cloud_rain": "\ud83c\udf27",
+ "thunder_cloud_rain": "\u26c8",
+ "cloud_lightning": "\ud83c\udf29",
+ "zap": "\u26a1",
+ "fire": "\ud83d\udd25",
+ "boom": "\ud83d\udca5",
+ "snowflake": "\u2744",
+ "cloud_snow": "\ud83c\udf28",
+ "snowman2": "\u2603",
+ "snowman": "\u26c4",
+ "wind_blowing_face": "\ud83c\udf2c",
+ "dash": "\ud83d\udca8",
+ "cloud_tornado": "\ud83c\udf2a",
+ "fog": "\ud83c\udf2b",
+ "umbrella2": "\u2602",
+ "umbrella": "\u2614",
+ "droplet": "\ud83d\udca7",
+ "sweat_drops": "\ud83d\udca6",
+ "ocean": "\ud83c\udf0a",
+ "green_apple": "\ud83c\udf4f",
+ "apple": "\ud83c\udf4e",
+ "pear": "\ud83c\udf50",
+ "tangerine": "\ud83c\udf4a",
+ "lemon": "\ud83c\udf4b",
+ "banana": "\ud83c\udf4c",
+ "watermelon": "\ud83c\udf49",
+ "grapes": "\ud83c\udf47",
+ "strawberry": "\ud83c\udf53",
+ "melon": "\ud83c\udf48",
+ "cherries": "\ud83c\udf52",
+ "peach": "\ud83c\udf51",
+ "pineapple": "\ud83c\udf4d",
+ "tomato": "\ud83c\udf45",
+ "eggplant": "\ud83c\udf46",
+ "hot_pepper": "\ud83c\udf36",
+ "corn": "\ud83c\udf3d",
+ "sweet_potato": "\ud83c\udf60",
+ "honey_pot": "\ud83c\udf6f",
+ "bread": "\ud83c\udf5e",
+ "cheese": "\ud83e\uddc0",
+ "poultry_leg": "\ud83c\udf57",
+ "meat_on_bone": "\ud83c\udf56",
+ "fried_shrimp": "\ud83c\udf64",
+ "egg": "\ud83c\udf73",
+ "hamburger": "\ud83c\udf54",
+ "fries": "\ud83c\udf5f",
+ "hotdog": "\ud83c\udf2d",
+ "pizza": "\ud83c\udf55",
+ "spaghetti": "\ud83c\udf5d",
+ "taco": "\ud83c\udf2e",
+ "burrito": "\ud83c\udf2f",
+ "ramen": "\ud83c\udf5c",
+ "stew": "\ud83c\udf72",
+ "fish_cake": "\ud83c\udf65",
+ "sushi": "\ud83c\udf63",
+ "bento": "\ud83c\udf71",
+ "curry": "\ud83c\udf5b",
+ "rice_ball": "\ud83c\udf59",
+ "rice": "\ud83c\udf5a",
+ "rice_cracker": "\ud83c\udf58",
+ "oden": "\ud83c\udf62",
+ "dango": "\ud83c\udf61",
+ "shaved_ice": "\ud83c\udf67",
+ "ice_cream": "\ud83c\udf68",
+ "icecream": "\ud83c\udf66",
+ "cake": "\ud83c\udf70",
+ "birthday": "\ud83c\udf82",
+ "custard": "\ud83c\udf6e",
+ "candy": "\ud83c\udf6c",
+ "lollipop": "\ud83c\udf6d",
+ "chocolate_bar": "\ud83c\udf6b",
+ "popcorn": "\ud83c\udf7f",
+ "doughnut": "\ud83c\udf69",
+ "cookie": "\ud83c\udf6a",
+ "beer": "\ud83c\udf7a",
+ "beers": "\ud83c\udf7b",
+ "wine_glass": "\ud83c\udf77",
+ "cocktail": "\ud83c\udf78",
+ "tropical_drink": "\ud83c\udf79",
+ "champagne": "\ud83c\udf7e",
+ "sake": "\ud83c\udf76",
+ "tea": "\ud83c\udf75",
+ "coffee": "\u2615",
+ "baby_bottle": "\ud83c\udf7c",
+ "fork_and_knife": "\ud83c\udf74",
+ "fork_knife_plate": "\ud83c\udf7d",
+ "soccer": "\u26bd",
+ "basketball": "\ud83c\udfc0",
+ "football": "\ud83c\udfc8",
+ "baseball": "\u26be",
+ "tennis": "\ud83c\udfbe",
+ "volleyball": "\ud83c\udfd0",
+ "rugby_football": "\ud83c\udfc9",
+ "8ball": "\ud83c\udfb1",
+ "golf": "\u26f3",
+ "golfer": "\ud83c\udfcc",
+ "ping_pong": "\ud83c\udfd3",
+ "badminton": "\ud83c\udff8",
+ "hockey": "\ud83c\udfd2",
+ "field_hockey": "\ud83c\udfd1",
+ "cricket": "\ud83c\udfcf",
+ "ski": "\ud83c\udfbf",
+ "skier": "\u26f7",
+ "snowboarder": "\ud83c\udfc2",
+ "ice_skate": "\u26f8",
+ "bow_and_arrow": "\ud83c\udff9",
+ "fishing_pole_and_fish": "\ud83c\udfa3",
+ "rowboat": "\ud83d\udea3",
+ "swimmer": "\ud83c\udfca",
+ "surfer": "\ud83c\udfc4",
+ "bath": "\ud83d\udec0",
+ "basketball_player": "\u26f9",
+ "lifter": "\ud83c\udfcb",
+ "bicyclist": "\ud83d\udeb4",
+ "mountain_bicyclist": "\ud83d\udeb5",
+ "horse_racing": "\ud83c\udfc7",
+ "levitate": "\ud83d\udd74",
+ "trophy": "\ud83c\udfc6",
+ "running_shirt_with_sash": "\ud83c\udfbd",
+ "medal": "\ud83c\udfc5",
+ "military_medal": "\ud83c\udf96",
+ "reminder_ribbon": "\ud83c\udf97",
+ "rosette": "\ud83c\udff5",
+ "ticket": "\ud83c\udfab",
+ "tickets": "\ud83c\udf9f",
+ "performing_arts": "\ud83c\udfad",
+ "art": "\ud83c\udfa8",
+ "circus_tent": "\ud83c\udfaa",
+ "microphone": "\ud83c\udfa4",
+ "headphones": "\ud83c\udfa7",
+ "musical_score": "\ud83c\udfbc",
+ "musical_keyboard": "\ud83c\udfb9",
+ "saxophone": "\ud83c\udfb7",
+ "trumpet": "\ud83c\udfba",
+ "guitar": "\ud83c\udfb8",
+ "violin": "\ud83c\udfbb",
+ "clapper": "\ud83c\udfac",
+ "video_game": "\ud83c\udfae",
+ "space_invader": "\ud83d\udc7e",
+ "dart": "\ud83c\udfaf",
+ "game_die": "\ud83c\udfb2",
+ "slot_machine": "\ud83c\udfb0",
+ "bowling": "\ud83c\udfb3",
+ "red_car": "\ud83d\ude97",
+ "taxi": "\ud83d\ude95",
+ "blue_car": "\ud83d\ude99",
+ "bus": "\ud83d\ude8c",
+ "trolleybus": "\ud83d\ude8e",
+ "race_car": "\ud83c\udfce",
+ "police_car": "\ud83d\ude93",
+ "ambulance": "\ud83d\ude91",
+ "fire_engine": "\ud83d\ude92",
+ "minibus": "\ud83d\ude90",
+ "truck": "\ud83d\ude9a",
+ "articulated_lorry": "\ud83d\ude9b",
+ "tractor": "\ud83d\ude9c",
+ "motorcycle": "\ud83c\udfcd",
+ "bike": "\ud83d\udeb2",
+ "rotating_light": "\ud83d\udea8",
+ "oncoming_police_car": "\ud83d\ude94",
+ "oncoming_bus": "\ud83d\ude8d",
+ "oncoming_automobile": "\ud83d\ude98",
+ "oncoming_taxi": "\ud83d\ude96",
+ "aerial_tramway": "\ud83d\udea1",
+ "mountain_cableway": "\ud83d\udea0",
+ "suspension_railway": "\ud83d\ude9f",
+ "railway_car": "\ud83d\ude83",
+ "train": "\ud83d\ude8b",
+ "monorail": "\ud83d\ude9d",
+ "bullettrain_side": "\ud83d\ude84",
+ "bullettrain_front": "\ud83d\ude85",
+ "light_rail": "\ud83d\ude88",
+ "mountain_railway": "\ud83d\ude9e",
+ "steam_locomotive": "\ud83d\ude82",
+ "train2": "\ud83d\ude86",
+ "metro": "\ud83d\ude87",
+ "tram": "\ud83d\ude8a",
+ "station": "\ud83d\ude89",
+ "helicopter": "\ud83d\ude81",
+ "airplane_small": "\ud83d\udee9",
+ "airplane": "\u2708",
+ "airplane_departure": "\ud83d\udeeb",
+ "airplane_arriving": "\ud83d\udeec",
+ "sailboat": "\u26f5",
+ "motorboat": "\ud83d\udee5",
+ "speedboat": "\ud83d\udea4",
+ "ferry": "\u26f4",
+ "cruise_ship": "\ud83d\udef3",
+ "rocket": "\ud83d\ude80",
+ "satellite_orbital": "\ud83d\udef0",
+ "seat": "\ud83d\udcba",
+ "anchor": "\u2693",
+ "construction": "\ud83d\udea7",
+ "fuelpump": "\u26fd",
+ "busstop": "\ud83d\ude8f",
+ "vertical_traffic_light": "\ud83d\udea6",
+ "traffic_light": "\ud83d\udea5",
+ "checkered_flag": "\ud83c\udfc1",
+ "ship": "\ud83d\udea2",
+ "ferris_wheel": "\ud83c\udfa1",
+ "roller_coaster": "\ud83c\udfa2",
+ "carousel_horse": "\ud83c\udfa0",
+ "construction_site": "\ud83c\udfd7",
+ "foggy": "\ud83c\udf01",
+ "tokyo_tower": "\ud83d\uddfc",
+ "factory": "\ud83c\udfed",
+ "fountain": "\u26f2",
+ "rice_scene": "\ud83c\udf91",
+ "mountain": "\u26f0",
+ "mountain_snow": "\ud83c\udfd4",
+ "mount_fuji": "\ud83d\uddfb",
+ "volcano": "\ud83c\udf0b",
+ "japan": "\ud83d\uddfe",
+ "camping": "\ud83c\udfd5",
+ "tent": "\u26fa",
+ "park": "\ud83c\udfde",
+ "motorway": "\ud83d\udee3",
+ "railway_track": "\ud83d\udee4",
+ "sunrise": "\ud83c\udf05",
+ "sunrise_over_mountains": "\ud83c\udf04",
+ "desert": "\ud83c\udfdc",
+ "beach": "\ud83c\udfd6",
+ "island": "\ud83c\udfdd",
+ "city_sunset": "\ud83c\udf07",
+ "city_dusk": "\ud83c\udf06",
+ "cityscape": "\ud83c\udfd9",
+ "night_with_stars": "\ud83c\udf03",
+ "bridge_at_night": "\ud83c\udf09",
+ "milky_way": "\ud83c\udf0c",
+ "stars": "\ud83c\udf20",
+ "sparkler": "\ud83c\udf87",
+ "fireworks": "\ud83c\udf86",
+ "rainbow": "\ud83c\udf08",
+ "homes": "\ud83c\udfd8",
+ "european_castle": "\ud83c\udff0",
+ "japanese_castle": "\ud83c\udfef",
+ "stadium": "\ud83c\udfdf",
+ "statue_of_liberty": "\ud83d\uddfd",
+ "house": "\ud83c\udfe0",
+ "house_with_garden": "\ud83c\udfe1",
+ "house_abandoned": "\ud83c\udfda",
+ "office": "\ud83c\udfe2",
+ "department_store": "\ud83c\udfec",
+ "post_office": "\ud83c\udfe3",
+ "european_post_office": "\ud83c\udfe4",
+ "hospital": "\ud83c\udfe5",
+ "bank": "\ud83c\udfe6",
+ "hotel": "\ud83c\udfe8",
+ "convenience_store": "\ud83c\udfea",
+ "school": "\ud83c\udfeb",
+ "love_hotel": "\ud83c\udfe9",
+ "wedding": "\ud83d\udc92",
+ "classical_building": "\ud83c\udfdb",
+ "church": "\u26ea",
+ "mosque": "\ud83d\udd4c",
+ "synagogue": "\ud83d\udd4d",
+ "kaaba": "\ud83d\udd4b",
+ "shinto_shrine": "\u26e9",
+ "watch": "\u231a",
+ "iphone": "\ud83d\udcf1",
+ "calling": "\ud83d\udcf2",
+ "computer": "\ud83d\udcbb",
+ "keyboard": "\u2328",
+ "desktop": "\ud83d\udda5",
+ "printer": "\ud83d\udda8",
+ "mouse_three_button": "\ud83d\uddb1",
+ "trackball": "\ud83d\uddb2",
+ "joystick": "\ud83d\udd79",
+ "compression": "\ud83d\udddc",
+ "minidisc": "\ud83d\udcbd",
+ "floppy_disk": "\ud83d\udcbe",
+ "cd": "\ud83d\udcbf",
+ "dvd": "\ud83d\udcc0",
+ "vhs": "\ud83d\udcfc",
+ "camera": "\ud83d\udcf7",
+ "camera_with_flash": "\ud83d\udcf8",
+ "video_camera": "\ud83d\udcf9",
+ "movie_camera": "\ud83c\udfa5",
+ "projector": "\ud83d\udcfd",
+ "film_frames": "\ud83c\udf9e",
+ "telephone_receiver": "\ud83d\udcde",
+ "telephone": "\u260e",
+ "pager": "\ud83d\udcdf",
+ "fax": "\ud83d\udce0",
+ "tv": "\ud83d\udcfa",
+ "radio": "\ud83d\udcfb",
+ "microphone2": "\ud83c\udf99",
+ "level_slider": "\ud83c\udf9a",
+ "control_knobs": "\ud83c\udf9b",
+ "stopwatch": "\u23f1",
+ "timer": "\u23f2",
+ "alarm_clock": "\u23f0",
+ "clock": "\ud83d\udd70",
+ "hourglass_flowing_sand": "\u23f3",
+ "hourglass": "\u231b",
+ "satellite": "\ud83d\udce1",
+ "battery": "\ud83d\udd0b",
+ "electric_plug": "\ud83d\udd0c",
+ "bulb": "\ud83d\udca1",
+ "flashlight": "\ud83d\udd26",
+ "candle": "\ud83d\udd6f",
+ "wastebasket": "\ud83d\uddd1",
+ "oil": "\ud83d\udee2",
+ "money_with_wings": "\ud83d\udcb8",
+ "dollar": "\ud83d\udcb5",
+ "yen": "\ud83d\udcb4",
+ "euro": "\ud83d\udcb6",
+ "pound": "\ud83d\udcb7",
+ "moneybag": "\ud83d\udcb0",
+ "credit_card": "\ud83d\udcb3",
+ "gem": "\ud83d\udc8e",
+ "scales": "\u2696",
+ "wrench": "\ud83d\udd27",
+ "hammer": "\ud83d\udd28",
+ "hammer_pick": "\u2692",
+ "tools": "\ud83d\udee0",
+ "pick": "\u26cf",
+ "nut_and_bolt": "\ud83d\udd29",
+ "gear": "\u2699",
+ "chains": "\u26d3",
+ "gun": "\ud83d\udd2b",
+ "bomb": "\ud83d\udca3",
+ "knife": "\ud83d\udd2a",
+ "dagger": "\ud83d\udde1",
+ "crossed_swords": "\u2694",
+ "shield": "\ud83d\udee1",
+ "smoking": "\ud83d\udeac",
+ "skull_crossbones": "\u2620",
+ "coffin": "\u26b0",
+ "urn": "\u26b1",
+ "amphora": "\ud83c\udffa",
+ "crystal_ball": "\ud83d\udd2e",
+ "prayer_beads": "\ud83d\udcff",
+ "barber": "\ud83d\udc88",
+ "alembic": "\u2697",
+ "telescope": "\ud83d\udd2d",
+ "microscope": "\ud83d\udd2c",
+ "hole": "\ud83d\udd73",
+ "pill": "\ud83d\udc8a",
+ "syringe": "\ud83d\udc89",
+ "thermometer": "\ud83c\udf21",
+ "label": "\ud83c\udff7",
+ "bookmark": "\ud83d\udd16",
+ "toilet": "\ud83d\udebd",
+ "shower": "\ud83d\udebf",
+ "bathtub": "\ud83d\udec1",
+ "key": "\ud83d\udd11",
+ "key2": "\ud83d\udddd",
+ "couch": "\ud83d\udecb",
+ "sleeping_accommodation": "\ud83d\udecc",
+ "bed": "\ud83d\udecf",
+ "door": "\ud83d\udeaa",
+ "bellhop": "\ud83d\udece",
+ "frame_photo": "\ud83d\uddbc",
+ "map": "\ud83d\uddfa",
+ "beach_umbrella": "\u26f1",
+ "moyai": "\ud83d\uddff",
+ "shopping_bags": "\ud83d\udecd",
+ "balloon": "\ud83c\udf88",
+ "flags": "\ud83c\udf8f",
+ "ribbon": "\ud83c\udf80",
+ "gift": "\ud83c\udf81",
+ "confetti_ball": "\ud83c\udf8a",
+ "tada": "\ud83c\udf89",
+ "dolls": "\ud83c\udf8e",
+ "wind_chime": "\ud83c\udf90",
+ "crossed_flags": "\ud83c\udf8c",
+ "izakaya_lantern": "\ud83c\udfee",
+ "envelope": "\u2709",
+ "envelope_with_arrow": "\ud83d\udce9",
+ "incoming_envelope": "\ud83d\udce8",
+ "e-mail": "\ud83d\udce7",
+ "love_letter": "\ud83d\udc8c",
+ "postbox": "\ud83d\udcee",
+ "mailbox_closed": "\ud83d\udcea",
+ "mailbox": "\ud83d\udceb",
+ "mailbox_with_mail": "\ud83d\udcec",
+ "mailbox_with_no_mail": "\ud83d\udced",
+ "package": "\ud83d\udce6",
+ "postal_horn": "\ud83d\udcef",
+ "inbox_tray": "\ud83d\udce5",
+ "outbox_tray": "\ud83d\udce4",
+ "scroll": "\ud83d\udcdc",
+ "page_with_curl": "\ud83d\udcc3",
+ "bookmark_tabs": "\ud83d\udcd1",
+ "bar_chart": "\ud83d\udcca",
+ "chart_with_upwards_trend": "\ud83d\udcc8",
+ "chart_with_downwards_trend": "\ud83d\udcc9",
+ "page_facing_up": "\ud83d\udcc4",
+ "date": "\ud83d\udcc5",
+ "calendar": "\ud83d\udcc6",
+ "calendar_spiral": "\ud83d\uddd3",
+ "card_index": "\ud83d\udcc7",
+ "card_box": "\ud83d\uddc3",
+ "ballot_box": "\ud83d\uddf3",
+ "file_cabinet": "\ud83d\uddc4",
+ "clipboard": "\ud83d\udccb",
+ "notepad_spiral": "\ud83d\uddd2",
+ "file_folder": "\ud83d\udcc1",
+ "open_file_folder": "\ud83d\udcc2",
+ "dividers": "\ud83d\uddc2",
+ "newspaper2": "\ud83d\uddde",
+ "newspaper": "\ud83d\udcf0",
+ "notebook": "\ud83d\udcd3",
+ "closed_book": "\ud83d\udcd5",
+ "green_book": "\ud83d\udcd7",
+ "blue_book": "\ud83d\udcd8",
+ "orange_book": "\ud83d\udcd9",
+ "notebook_with_decorative_cover": "\ud83d\udcd4",
+ "ledger": "\ud83d\udcd2",
+ "books": "\ud83d\udcda",
+ "book": "\ud83d\udcd6",
+ "link": "\ud83d\udd17",
+ "paperclip": "\ud83d\udcce",
+ "paperclips": "\ud83d\udd87",
+ "scissors": "\u2702",
+ "triangular_ruler": "\ud83d\udcd0",
+ "straight_ruler": "\ud83d\udccf",
+ "pushpin": "\ud83d\udccc",
+ "round_pushpin": "\ud83d\udccd",
+ "triangular_flag_on_post": "\ud83d\udea9",
+ "flag_white": "\ud83c\udff3",
+ "flag_black": "\ud83c\udff4",
+ "closed_lock_with_key": "\ud83d\udd10",
+ "lock": "\ud83d\udd12",
+ "unlock": "\ud83d\udd13",
+ "lock_with_ink_pen": "\ud83d\udd0f",
+ "pen_ballpoint": "\ud83d\udd8a",
+ "pen_fountain": "\ud83d\udd8b",
+ "black_nib": "\u2712",
+ "pencil": "\ud83d\udcdd",
+ "pencil2": "\u270f",
+ "crayon": "\ud83d\udd8d",
+ "paintbrush": "\ud83d\udd8c",
+ "mag": "\ud83d\udd0d",
+ "mag_right": "\ud83d\udd0e",
+ "heart": "\u2764",
+ "yellow_heart": "\ud83d\udc9b",
+ "green_heart": "\ud83d\udc9a",
+ "blue_heart": "\ud83d\udc99",
+ "purple_heart": "\ud83d\udc9c",
+ "broken_heart": "\ud83d\udc94",
+ "heart_exclamation": "\u2763",
+ "two_hearts": "\ud83d\udc95",
+ "revolving_hearts": "\ud83d\udc9e",
+ "heartbeat": "\ud83d\udc93",
+ "heartpulse": "\ud83d\udc97",
+ "sparkling_heart": "\ud83d\udc96",
+ "cupid": "\ud83d\udc98",
+ "gift_heart": "\ud83d\udc9d",
+ "heart_decoration": "\ud83d\udc9f",
+ "peace": "\u262e",
+ "cross": "\u271d",
+ "star_and_crescent": "\u262a",
+ "om_symbol": "\ud83d\udd49",
+ "wheel_of_dharma": "\u2638",
+ "star_of_david": "\u2721",
+ "six_pointed_star": "\ud83d\udd2f",
+ "menorah": "\ud83d\udd4e",
+ "yin_yang": "\u262f",
+ "orthodox_cross": "\u2626",
+ "place_of_worship": "\ud83d\uded0",
+ "ophiuchus": "\u26ce",
+ "aries": "\u2648",
+ "taurus": "\u2649",
+ "gemini": "\u264a",
+ "cancer": "\u264b",
+ "leo": "\u264c",
+ "virgo": "\u264d",
+ "libra": "\u264e",
+ "scorpius": "\u264f",
+ "sagittarius": "\u2650",
+ "capricorn": "\u2651",
+ "aquarius": "\u2652",
+ "pisces": "\u2653",
+ "id": "\ud83c\udd94",
+ "atom": "\u269b",
+ "u7a7a": "\ud83c\ude33",
+ "u5272": "\ud83c\ude39",
+ "radioactive": "\u2622",
+ "biohazard": "\u2623",
+ "mobile_phone_off": "\ud83d\udcf4",
+ "vibration_mode": "\ud83d\udcf3",
+ "u6709": "\ud83c\ude36",
+ "u7121": "\ud83c\ude1a",
+ "u7533": "\ud83c\ude38",
+ "u55b6": "\ud83c\ude3a",
+ "u6708": "\ud83c\ude37",
+ "eight_pointed_black_star": "\u2734",
+ "vs": "\ud83c\udd9a",
+ "accept": "\ud83c\ude51",
+ "white_flower": "\ud83d\udcae",
+ "ideograph_advantage": "\ud83c\ude50",
+ "secret": "\u3299",
+ "congratulations": "\u3297",
+ "u5408": "\ud83c\ude34",
+ "u6e80": "\ud83c\ude35",
+ "u7981": "\ud83c\ude32",
+ "a": "\ud83c\udd70",
+ "b": "\ud83c\udd71",
+ "ab": "\ud83c\udd8e",
+ "cl": "\ud83c\udd91",
+ "o2": "\ud83c\udd7e",
+ "sos": "\ud83c\udd98",
+ "no_entry": "\u26d4",
+ "name_badge": "\ud83d\udcdb",
+ "no_entry_sign": "\ud83d\udeab",
+ "x": "\u274c",
+ "o": "\u2b55",
+ "anger": "\ud83d\udca2",
+ "hotsprings": "\u2668",
+ "no_pedestrians": "\ud83d\udeb7",
+ "do_not_litter": "\ud83d\udeaf",
+ "no_bicycles": "\ud83d\udeb3",
+ "non-potable_water": "\ud83d\udeb1",
+ "underage": "\ud83d\udd1e",
+ "no_mobile_phones": "\ud83d\udcf5",
+ "exclamation": "\u2757",
+ "grey_exclamation": "\u2755",
+ "question": "\u2753",
+ "grey_question": "\u2754",
+ "bangbang": "\u203c",
+ "interrobang": "\u2049",
+ "100": "\ud83d\udcaf",
+ "low_brightness": "\ud83d\udd05",
+ "high_brightness": "\ud83d\udd06",
+ "trident": "\ud83d\udd31",
+ "fleur-de-lis": "\u269c",
+ "part_alternation_mark": "\u303d",
+ "warning": "\u26a0",
+ "children_crossing": "\ud83d\udeb8",
+ "beginner": "\ud83d\udd30",
+ "recycle": "\u267b",
+ "u6307": "\ud83c\ude2f",
+ "chart": "\ud83d\udcb9",
+ "sparkle": "\u2747",
+ "eight_spoked_asterisk": "\u2733",
+ "negative_squared_cross_mark": "\u274e",
+ "white_check_mark": "\u2705",
+ "diamond_shape_with_a_dot_inside": "\ud83d\udca0",
+ "cyclone": "\ud83c\udf00",
+ "loop": "\u27bf",
+ "globe_with_meridians": "\ud83c\udf10",
+ "m": "\u24c2",
+ "atm": "\ud83c\udfe7",
+ "sa": "\ud83c\ude02",
+ "passport_control": "\ud83d\udec2",
+ "customs": "\ud83d\udec3",
+ "baggage_claim": "\ud83d\udec4",
+ "left_luggage": "\ud83d\udec5",
+ "wheelchair": "\u267f",
+ "no_smoking": "\ud83d\udead",
+ "wc": "\ud83d\udebe",
+ "parking": "\ud83c\udd7f",
+ "potable_water": "\ud83d\udeb0",
+ "mens": "\ud83d\udeb9",
+ "womens": "\ud83d\udeba",
+ "baby_symbol": "\ud83d\udebc",
+ "restroom": "\ud83d\udebb",
+ "put_litter_in_its_place": "\ud83d\udeae",
+ "cinema": "\ud83c\udfa6",
+ "signal_strength": "\ud83d\udcf6",
+ "koko": "\ud83c\ude01",
+ "ng": "\ud83c\udd96",
+ "ok": "\ud83c\udd97",
+ "up": "\ud83c\udd99",
+ "cool": "\ud83c\udd92",
+ "new": "\ud83c\udd95",
+ "free": "\ud83c\udd93",
+ "zero": "0\u20e3",
+ "one": "1\u20e3",
+ "two": "2\u20e3",
+ "three": "3\u20e3",
+ "four": "4\u20e3",
+ "five": "5\u20e3",
+ "six": "6\u20e3",
+ "seven": "7\u20e3",
+ "eight": "8\u20e3",
+ "nine": "9\u20e3",
+ "ten": "\ud83d\udd1f",
+ "1234": "\ud83d\udd22",
+ "arrow_forward": "\u25b6",
+ "pause_button": "\u23f8",
+ "play_pause": "\u23ef",
+ "stop_button": "\u23f9",
+ "record_button": "\u23fa",
+ "track_next": "\u23ed",
+ "track_previous": "\u23ee",
+ "fast_forward": "\u23e9",
+ "rewind": "\u23ea",
+ "twisted_rightwards_arrows": "\ud83d\udd00",
+ "repeat": "\ud83d\udd01",
+ "repeat_one": "\ud83d\udd02",
+ "arrow_backward": "\u25c0",
+ "arrow_up_small": "\ud83d\udd3c",
+ "arrow_down_small": "\ud83d\udd3d",
+ "arrow_double_up": "\u23eb",
+ "arrow_double_down": "\u23ec",
+ "arrow_right": "\u27a1",
+ "arrow_left": "\u2b05",
+ "arrow_up": "\u2b06",
+ "arrow_down": "\u2b07",
+ "arrow_upper_right": "\u2197",
+ "arrow_lower_right": "\u2198",
+ "arrow_lower_left": "\u2199",
+ "arrow_upper_left": "\u2196",
+ "arrow_up_down": "\u2195",
+ "left_right_arrow": "\u2194",
+ "arrows_counterclockwise": "\ud83d\udd04",
+ "arrow_right_hook": "\u21aa",
+ "leftwards_arrow_with_hook": "\u21a9",
+ "arrow_heading_up": "\u2934",
+ "arrow_heading_down": "\u2935",
+ "hash": "#\u20e3",
+ "asterisk": "*\u20e3",
+ "information_source": "\u2139",
+ "abc": "\ud83d\udd24",
+ "abcd": "\ud83d\udd21",
+ "capital_abcd": "\ud83d\udd20",
+ "symbols": "\ud83d\udd23",
+ "musical_note": "\ud83c\udfb5",
+ "notes": "\ud83c\udfb6",
+ "wavy_dash": "\u3030",
+ "curly_loop": "\u27b0",
+ "heavy_check_mark": "\u2714",
+ "arrows_clockwise": "\ud83d\udd03",
+ "heavy_plus_sign": "\u2795",
+ "heavy_minus_sign": "\u2796",
+ "heavy_division_sign": "\u2797",
+ "heavy_multiplication_x": "\u2716",
+ "heavy_dollar_sign": "\ud83d\udcb2",
+ "currency_exchange": "\ud83d\udcb1",
+ "copyright": "\u00a9",
+ "registered": "\u00ae",
+ "tm": "\u2122",
+ "end": "\ud83d\udd1a",
+ "back": "\ud83d\udd19",
+ "on": "\ud83d\udd1b",
+ "top": "\ud83d\udd1d",
+ "soon": "\ud83d\udd1c",
+ "ballot_box_with_check": "\u2611",
+ "radio_button": "\ud83d\udd18",
+ "white_circle": "\u26aa",
+ "black_circle": "\u26ab",
+ "red_circle": "\ud83d\udd34",
+ "large_blue_circle": "\ud83d\udd35",
+ "small_orange_diamond": "\ud83d\udd38",
+ "small_blue_diamond": "\ud83d\udd39",
+ "large_orange_diamond": "\ud83d\udd36",
+ "large_blue_diamond": "\ud83d\udd37",
+ "small_red_triangle": "\ud83d\udd3a",
+ "black_small_square": "\u25aa",
+ "white_small_square": "\u25ab",
+ "black_large_square": "\u2b1b",
+ "white_large_square": "\u2b1c",
+ "small_red_triangle_down": "\ud83d\udd3b",
+ "black_medium_square": "\u25fc",
+ "white_medium_square": "\u25fb",
+ "black_medium_small_square": "\u25fe",
+ "white_medium_small_square": "\u25fd",
+ "black_square_button": "\ud83d\udd32",
+ "white_square_button": "\ud83d\udd33",
+ "speaker": "\ud83d\udd08",
+ "sound": "\ud83d\udd09",
+ "loud_sound": "\ud83d\udd0a",
+ "mute": "\ud83d\udd07",
+ "mega": "\ud83d\udce3",
+ "loudspeaker": "\ud83d\udce2",
+ "bell": "\ud83d\udd14",
+ "no_bell": "\ud83d\udd15",
+ "black_joker": "\ud83c\udccf",
+ "mahjong": "\ud83c\udc04",
+ "spades": "\u2660",
+ "clubs": "\u2663",
+ "hearts": "\u2665",
+ "diamonds": "\u2666",
+ "flower_playing_cards": "\ud83c\udfb4",
+ "thought_balloon": "\ud83d\udcad",
+ "anger_right": "\ud83d\uddef",
+ "speech_balloon": "\ud83d\udcac",
+ "clock1": "\ud83d\udd50",
+ "clock2": "\ud83d\udd51",
+ "clock3": "\ud83d\udd52",
+ "clock4": "\ud83d\udd53",
+ "clock5": "\ud83d\udd54",
+ "clock6": "\ud83d\udd55",
+ "clock7": "\ud83d\udd56",
+ "clock8": "\ud83d\udd57",
+ "clock9": "\ud83d\udd58",
+ "clock10": "\ud83d\udd59",
+ "clock11": "\ud83d\udd5a",
+ "clock12": "\ud83d\udd5b",
+ "clock130": "\ud83d\udd5c",
+ "clock230": "\ud83d\udd5d",
+ "clock330": "\ud83d\udd5e",
+ "clock430": "\ud83d\udd5f",
+ "clock530": "\ud83d\udd60",
+ "clock630": "\ud83d\udd61",
+ "clock730": "\ud83d\udd62",
+ "clock830": "\ud83d\udd63",
+ "clock930": "\ud83d\udd64",
+ "clock1030": "\ud83d\udd65",
+ "clock1130": "\ud83d\udd66",
+ "clock1230": "\ud83d\udd67",
+ "eye_in_speech_bubble": "\ud83d\udc41\ud83d\udde8",
+ "flag_ac": "\ud83c\udde6\ud83c\udde8",
+ "flag_af": "\ud83c\udde6\ud83c\uddeb",
+ "flag_al": "\ud83c\udde6\ud83c\uddf1",
+ "flag_dz": "\ud83c\udde9\ud83c\uddff",
+ "flag_ad": "\ud83c\udde6\ud83c\udde9",
+ "flag_ao": "\ud83c\udde6\ud83c\uddf4",
+ "flag_ai": "\ud83c\udde6\ud83c\uddee",
+ "flag_ag": "\ud83c\udde6\ud83c\uddec",
+ "flag_ar": "\ud83c\udde6\ud83c\uddf7",
+ "flag_am": "\ud83c\udde6\ud83c\uddf2",
+ "flag_aw": "\ud83c\udde6\ud83c\uddfc",
+ "flag_au": "\ud83c\udde6\ud83c\uddfa",
+ "flag_at": "\ud83c\udde6\ud83c\uddf9",
+ "flag_az": "\ud83c\udde6\ud83c\uddff",
+ "flag_bs": "\ud83c\udde7\ud83c\uddf8",
+ "flag_bh": "\ud83c\udde7\ud83c\udded",
+ "flag_bd": "\ud83c\udde7\ud83c\udde9",
+ "flag_bb": "\ud83c\udde7\ud83c\udde7",
+ "flag_by": "\ud83c\udde7\ud83c\uddfe",
+ "flag_be": "\ud83c\udde7\ud83c\uddea",
+ "flag_bz": "\ud83c\udde7\ud83c\uddff",
+ "flag_bj": "\ud83c\udde7\ud83c\uddef",
+ "flag_bm": "\ud83c\udde7\ud83c\uddf2",
+ "flag_bt": "\ud83c\udde7\ud83c\uddf9",
+ "flag_bo": "\ud83c\udde7\ud83c\uddf4",
+ "flag_ba": "\ud83c\udde7\ud83c\udde6",
+ "flag_bw": "\ud83c\udde7\ud83c\uddfc",
+ "flag_br": "\ud83c\udde7\ud83c\uddf7",
+ "flag_bn": "\ud83c\udde7\ud83c\uddf3",
+ "flag_bg": "\ud83c\udde7\ud83c\uddec",
+ "flag_bf": "\ud83c\udde7\ud83c\uddeb",
+ "flag_bi": "\ud83c\udde7\ud83c\uddee",
+ "flag_cv": "\ud83c\udde8\ud83c\uddfb",
+ "flag_kh": "\ud83c\uddf0\ud83c\udded",
+ "flag_cm": "\ud83c\udde8\ud83c\uddf2",
+ "flag_ca": "\ud83c\udde8\ud83c\udde6",
+ "flag_ky": "\ud83c\uddf0\ud83c\uddfe",
+ "flag_cf": "\ud83c\udde8\ud83c\uddeb",
+ "flag_td": "\ud83c\uddf9\ud83c\udde9",
+ "flag_cl": "\ud83c\udde8\ud83c\uddf1",
+ "flag_cn": "\ud83c\udde8\ud83c\uddf3",
+ "flag_co": "\ud83c\udde8\ud83c\uddf4",
+ "flag_km": "\ud83c\uddf0\ud83c\uddf2",
+ "flag_cg": "\ud83c\udde8\ud83c\uddec",
+ "flag_cd": "\ud83c\udde8\ud83c\udde9",
+ "flag_cr": "\ud83c\udde8\ud83c\uddf7",
+ "flag_hr": "\ud83c\udded\ud83c\uddf7",
+ "flag_cu": "\ud83c\udde8\ud83c\uddfa",
+ "flag_cy": "\ud83c\udde8\ud83c\uddfe",
+ "flag_cz": "\ud83c\udde8\ud83c\uddff",
+ "flag_dk": "\ud83c\udde9\ud83c\uddf0",
+ "flag_dj": "\ud83c\udde9\ud83c\uddef",
+ "flag_dm": "\ud83c\udde9\ud83c\uddf2",
+ "flag_do": "\ud83c\udde9\ud83c\uddf4",
+ "flag_ec": "\ud83c\uddea\ud83c\udde8",
+ "flag_eg": "\ud83c\uddea\ud83c\uddec",
+ "flag_sv": "\ud83c\uddf8\ud83c\uddfb",
+ "flag_gq": "\ud83c\uddec\ud83c\uddf6",
+ "flag_er": "\ud83c\uddea\ud83c\uddf7",
+ "flag_ee": "\ud83c\uddea\ud83c\uddea",
+ "flag_et": "\ud83c\uddea\ud83c\uddf9",
+ "flag_fk": "\ud83c\uddeb\ud83c\uddf0",
+ "flag_fo": "\ud83c\uddeb\ud83c\uddf4",
+ "flag_fj": "\ud83c\uddeb\ud83c\uddef",
+ "flag_fi": "\ud83c\uddeb\ud83c\uddee",
+ "flag_fr": "\ud83c\uddeb\ud83c\uddf7",
+ "flag_pf": "\ud83c\uddf5\ud83c\uddeb",
+ "flag_ga": "\ud83c\uddec\ud83c\udde6",
+ "flag_gm": "\ud83c\uddec\ud83c\uddf2",
+ "flag_ge": "\ud83c\uddec\ud83c\uddea",
+ "flag_de": "\ud83c\udde9\ud83c\uddea",
+ "flag_gh": "\ud83c\uddec\ud83c\udded",
+ "flag_gi": "\ud83c\uddec\ud83c\uddee",
+ "flag_gr": "\ud83c\uddec\ud83c\uddf7",
+ "flag_gl": "\ud83c\uddec\ud83c\uddf1",
+ "flag_gd": "\ud83c\uddec\ud83c\udde9",
+ "flag_gu": "\ud83c\uddec\ud83c\uddfa",
+ "flag_gt": "\ud83c\uddec\ud83c\uddf9",
+ "flag_gn": "\ud83c\uddec\ud83c\uddf3",
+ "flag_gw": "\ud83c\uddec\ud83c\uddfc",
+ "flag_gy": "\ud83c\uddec\ud83c\uddfe",
+ "flag_ht": "\ud83c\udded\ud83c\uddf9",
+ "flag_hn": "\ud83c\udded\ud83c\uddf3",
+ "flag_hk": "\ud83c\udded\ud83c\uddf0",
+ "flag_hu": "\ud83c\udded\ud83c\uddfa",
+ "flag_is": "\ud83c\uddee\ud83c\uddf8",
+ "flag_in": "\ud83c\uddee\ud83c\uddf3",
+ "flag_id": "\ud83c\uddee\ud83c\udde9",
+ "flag_ir": "\ud83c\uddee\ud83c\uddf7",
+ "flag_iq": "\ud83c\uddee\ud83c\uddf6",
+ "flag_ie": "\ud83c\uddee\ud83c\uddea",
+ "flag_il": "\ud83c\uddee\ud83c\uddf1",
+ "flag_it": "\ud83c\uddee\ud83c\uddf9",
+ "flag_ci": "\ud83c\udde8\ud83c\uddee",
+ "flag_jm": "\ud83c\uddef\ud83c\uddf2",
+ "flag_jp": "\ud83c\uddef\ud83c\uddf5",
+ "flag_je": "\ud83c\uddef\ud83c\uddea",
+ "flag_jo": "\ud83c\uddef\ud83c\uddf4",
+ "flag_kz": "\ud83c\uddf0\ud83c\uddff",
+ "flag_ke": "\ud83c\uddf0\ud83c\uddea",
+ "flag_ki": "\ud83c\uddf0\ud83c\uddee",
+ "flag_xk": "\ud83c\uddfd\ud83c\uddf0",
+ "flag_kw": "\ud83c\uddf0\ud83c\uddfc",
+ "flag_kg": "\ud83c\uddf0\ud83c\uddec",
+ "flag_la": "\ud83c\uddf1\ud83c\udde6",
+ "flag_lv": "\ud83c\uddf1\ud83c\uddfb",
+ "flag_lb": "\ud83c\uddf1\ud83c\udde7",
+ "flag_ls": "\ud83c\uddf1\ud83c\uddf8",
+ "flag_lr": "\ud83c\uddf1\ud83c\uddf7",
+ "flag_ly": "\ud83c\uddf1\ud83c\uddfe",
+ "flag_li": "\ud83c\uddf1\ud83c\uddee",
+ "flag_lt": "\ud83c\uddf1\ud83c\uddf9",
+ "flag_lu": "\ud83c\uddf1\ud83c\uddfa",
+ "flag_mo": "\ud83c\uddf2\ud83c\uddf4",
+ "flag_mk": "\ud83c\uddf2\ud83c\uddf0",
+ "flag_mg": "\ud83c\uddf2\ud83c\uddec",
+ "flag_mw": "\ud83c\uddf2\ud83c\uddfc",
+ "flag_my": "\ud83c\uddf2\ud83c\uddfe",
+ "flag_mv": "\ud83c\uddf2\ud83c\uddfb",
+ "flag_ml": "\ud83c\uddf2\ud83c\uddf1",
+ "flag_mt": "\ud83c\uddf2\ud83c\uddf9",
+ "flag_mh": "\ud83c\uddf2\ud83c\udded",
+ "flag_mr": "\ud83c\uddf2\ud83c\uddf7",
+ "flag_mu": "\ud83c\uddf2\ud83c\uddfa",
+ "flag_mx": "\ud83c\uddf2\ud83c\uddfd",
+ "flag_fm": "\ud83c\uddeb\ud83c\uddf2",
+ "flag_md": "\ud83c\uddf2\ud83c\udde9",
+ "flag_mc": "\ud83c\uddf2\ud83c\udde8",
+ "flag_mn": "\ud83c\uddf2\ud83c\uddf3",
+ "flag_me": "\ud83c\uddf2\ud83c\uddea",
+ "flag_ms": "\ud83c\uddf2\ud83c\uddf8",
+ "flag_ma": "\ud83c\uddf2\ud83c\udde6",
+ "flag_mz": "\ud83c\uddf2\ud83c\uddff",
+ "flag_mm": "\ud83c\uddf2\ud83c\uddf2",
+ "flag_na": "\ud83c\uddf3\ud83c\udde6",
+ "flag_nr": "\ud83c\uddf3\ud83c\uddf7",
+ "flag_np": "\ud83c\uddf3\ud83c\uddf5",
+ "flag_nl": "\ud83c\uddf3\ud83c\uddf1",
+ "flag_nc": "\ud83c\uddf3\ud83c\udde8",
+ "flag_nz": "\ud83c\uddf3\ud83c\uddff",
+ "flag_ni": "\ud83c\uddf3\ud83c\uddee",
+ "flag_ne": "\ud83c\uddf3\ud83c\uddea",
+ "flag_ng": "\ud83c\uddf3\ud83c\uddec",
+ "flag_nu": "\ud83c\uddf3\ud83c\uddfa",
+ "flag_kp": "\ud83c\uddf0\ud83c\uddf5",
+ "flag_no": "\ud83c\uddf3\ud83c\uddf4",
+ "flag_om": "\ud83c\uddf4\ud83c\uddf2",
+ "flag_pk": "\ud83c\uddf5\ud83c\uddf0",
+ "flag_pw": "\ud83c\uddf5\ud83c\uddfc",
+ "flag_ps": "\ud83c\uddf5\ud83c\uddf8",
+ "flag_pa": "\ud83c\uddf5\ud83c\udde6",
+ "flag_pg": "\ud83c\uddf5\ud83c\uddec",
+ "flag_py": "\ud83c\uddf5\ud83c\uddfe",
+ "flag_pe": "\ud83c\uddf5\ud83c\uddea",
+ "flag_ph": "\ud83c\uddf5\ud83c\udded",
+ "flag_pl": "\ud83c\uddf5\ud83c\uddf1",
+ "flag_pt": "\ud83c\uddf5\ud83c\uddf9",
+ "flag_pr": "\ud83c\uddf5\ud83c\uddf7",
+ "flag_qa": "\ud83c\uddf6\ud83c\udde6",
+ "flag_ro": "\ud83c\uddf7\ud83c\uddf4",
+ "flag_ru": "\ud83c\uddf7\ud83c\uddfa",
+ "flag_rw": "\ud83c\uddf7\ud83c\uddfc",
+ "flag_sh": "\ud83c\uddf8\ud83c\udded",
+ "flag_kn": "\ud83c\uddf0\ud83c\uddf3",
+ "flag_lc": "\ud83c\uddf1\ud83c\udde8",
+ "flag_vc": "\ud83c\uddfb\ud83c\udde8",
+ "flag_ws": "\ud83c\uddfc\ud83c\uddf8",
+ "flag_sm": "\ud83c\uddf8\ud83c\uddf2",
+ "flag_st": "\ud83c\uddf8\ud83c\uddf9",
+ "flag_sa": "\ud83c\uddf8\ud83c\udde6",
+ "flag_sn": "\ud83c\uddf8\ud83c\uddf3",
+ "flag_rs": "\ud83c\uddf7\ud83c\uddf8",
+ "flag_sc": "\ud83c\uddf8\ud83c\udde8",
+ "flag_sl": "\ud83c\uddf8\ud83c\uddf1",
+ "flag_sg": "\ud83c\uddf8\ud83c\uddec",
+ "flag_sk": "\ud83c\uddf8\ud83c\uddf0",
+ "flag_si": "\ud83c\uddf8\ud83c\uddee",
+ "flag_sb": "\ud83c\uddf8\ud83c\udde7",
+ "flag_so": "\ud83c\uddf8\ud83c\uddf4",
+ "flag_za": "\ud83c\uddff\ud83c\udde6",
+ "flag_kr": "\ud83c\uddf0\ud83c\uddf7",
+ "flag_es": "\ud83c\uddea\ud83c\uddf8",
+ "flag_lk": "\ud83c\uddf1\ud83c\uddf0",
+ "flag_sd": "\ud83c\uddf8\ud83c\udde9",
+ "flag_sr": "\ud83c\uddf8\ud83c\uddf7",
+ "flag_sz": "\ud83c\uddf8\ud83c\uddff",
+ "flag_se": "\ud83c\uddf8\ud83c\uddea",
+ "flag_ch": "\ud83c\udde8\ud83c\udded",
+ "flag_sy": "\ud83c\uddf8\ud83c\uddfe",
+ "flag_tw": "\ud83c\uddf9\ud83c\uddfc",
+ "flag_tj": "\ud83c\uddf9\ud83c\uddef",
+ "flag_tz": "\ud83c\uddf9\ud83c\uddff",
+ "flag_th": "\ud83c\uddf9\ud83c\udded",
+ "flag_tl": "\ud83c\uddf9\ud83c\uddf1",
+ "flag_tg": "\ud83c\uddf9\ud83c\uddec",
+ "flag_to": "\ud83c\uddf9\ud83c\uddf4",
+ "flag_tt": "\ud83c\uddf9\ud83c\uddf9",
+ "flag_tn": "\ud83c\uddf9\ud83c\uddf3",
+ "flag_tr": "\ud83c\uddf9\ud83c\uddf7",
+ "flag_tm": "\ud83c\uddf9\ud83c\uddf2",
+ "flag_tv": "\ud83c\uddf9\ud83c\uddfb",
+ "flag_ug": "\ud83c\uddfa\ud83c\uddec",
+ "flag_ua": "\ud83c\uddfa\ud83c\udde6",
+ "flag_ae": "\ud83c\udde6\ud83c\uddea",
+ "flag_gb": "\ud83c\uddec\ud83c\udde7",
+ "flag_us": "\ud83c\uddfa\ud83c\uddf8",
+ "flag_vi": "\ud83c\uddfb\ud83c\uddee",
+ "flag_uy": "\ud83c\uddfa\ud83c\uddfe",
+ "flag_uz": "\ud83c\uddfa\ud83c\uddff",
+ "flag_vu": "\ud83c\uddfb\ud83c\uddfa",
+ "flag_va": "\ud83c\uddfb\ud83c\udde6",
+ "flag_ve": "\ud83c\uddfb\ud83c\uddea",
+ "flag_vn": "\ud83c\uddfb\ud83c\uddf3",
+ "flag_wf": "\ud83c\uddfc\ud83c\uddeb",
+ "flag_eh": "\ud83c\uddea\ud83c\udded",
+ "flag_ye": "\ud83c\uddfe\ud83c\uddea",
+ "flag_zm": "\ud83c\uddff\ud83c\uddf2",
+ "flag_zw": "\ud83c\uddff\ud83c\uddfc",
+ "flag_re": "\ud83c\uddf7\ud83c\uddea",
+ "flag_ax": "\ud83c\udde6\ud83c\uddfd",
+ "flag_ta": "\ud83c\uddf9\ud83c\udde6",
+ "flag_io": "\ud83c\uddee\ud83c\uddf4",
+ "flag_bq": "\ud83c\udde7\ud83c\uddf6",
+ "flag_cx": "\ud83c\udde8\ud83c\uddfd",
+ "flag_cc": "\ud83c\udde8\ud83c\udde8",
+ "flag_gg": "\ud83c\uddec\ud83c\uddec",
+ "flag_im": "\ud83c\uddee\ud83c\uddf2",
+ "flag_yt": "\ud83c\uddfe\ud83c\uddf9",
+ "flag_nf": "\ud83c\uddf3\ud83c\uddeb",
+ "flag_pn": "\ud83c\uddf5\ud83c\uddf3",
+ "flag_bl": "\ud83c\udde7\ud83c\uddf1",
+ "flag_pm": "\ud83c\uddf5\ud83c\uddf2",
+ "flag_gs": "\ud83c\uddec\ud83c\uddf8",
+ "flag_tk": "\ud83c\uddf9\ud83c\uddf0",
+ "flag_bv": "\ud83c\udde7\ud83c\uddfb",
+ "flag_hm": "\ud83c\udded\ud83c\uddf2",
+ "flag_sj": "\ud83c\uddf8\ud83c\uddef",
+ "flag_um": "\ud83c\uddfa\ud83c\uddf2",
+ "flag_ic": "\ud83c\uddee\ud83c\udde8",
+ "flag_ea": "\ud83c\uddea\ud83c\udde6",
+ "flag_cp": "\ud83c\udde8\ud83c\uddf5",
+ "flag_dg": "\ud83c\udde9\ud83c\uddec",
+ "flag_as": "\ud83c\udde6\ud83c\uddf8",
+ "flag_aq": "\ud83c\udde6\ud83c\uddf6",
+ "flag_vg": "\ud83c\uddfb\ud83c\uddec",
+ "flag_ck": "\ud83c\udde8\ud83c\uddf0",
+ "flag_cw": "\ud83c\udde8\ud83c\uddfc",
+ "flag_eu": "\ud83c\uddea\ud83c\uddfa",
+ "flag_gf": "\ud83c\uddec\ud83c\uddeb",
+ "flag_tf": "\ud83c\uddf9\ud83c\uddeb",
+ "flag_gp": "\ud83c\uddec\ud83c\uddf5",
+ "flag_mq": "\ud83c\uddf2\ud83c\uddf6",
+ "flag_mp": "\ud83c\uddf2\ud83c\uddf5",
+ "flag_sx": "\ud83c\uddf8\ud83c\uddfd",
+ "flag_ss": "\ud83c\uddf8\ud83c\uddf8",
+ "flag_tc": "\ud83c\uddf9\ud83c\udde8",
+ "flag_mf": "\ud83c\uddf2\ud83c\uddeb",
+ "raised_hands_tone1": "\ud83d\ude4c\ud83c\udffb",
+ "raised_hands_tone2": "\ud83d\ude4c\ud83c\udffc",
+ "raised_hands_tone3": "\ud83d\ude4c\ud83c\udffd",
+ "raised_hands_tone4": "\ud83d\ude4c\ud83c\udffe",
+ "raised_hands_tone5": "\ud83d\ude4c\ud83c\udfff",
+ "clap_tone1": "\ud83d\udc4f\ud83c\udffb",
+ "clap_tone2": "\ud83d\udc4f\ud83c\udffc",
+ "clap_tone3": "\ud83d\udc4f\ud83c\udffd",
+ "clap_tone4": "\ud83d\udc4f\ud83c\udffe",
+ "clap_tone5": "\ud83d\udc4f\ud83c\udfff",
+ "wave_tone1": "\ud83d\udc4b\ud83c\udffb",
+ "wave_tone2": "\ud83d\udc4b\ud83c\udffc",
+ "wave_tone3": "\ud83d\udc4b\ud83c\udffd",
+ "wave_tone4": "\ud83d\udc4b\ud83c\udffe",
+ "wave_tone5": "\ud83d\udc4b\ud83c\udfff",
+ "thumbsup_tone1": "\ud83d\udc4d\ud83c\udffb",
+ "thumbsup_tone2": "\ud83d\udc4d\ud83c\udffc",
+ "thumbsup_tone3": "\ud83d\udc4d\ud83c\udffd",
+ "thumbsup_tone4": "\ud83d\udc4d\ud83c\udffe",
+ "thumbsup_tone5": "\ud83d\udc4d\ud83c\udfff",
+ "thumbsdown_tone1": "\ud83d\udc4e\ud83c\udffb",
+ "thumbsdown_tone2": "\ud83d\udc4e\ud83c\udffc",
+ "thumbsdown_tone3": "\ud83d\udc4e\ud83c\udffd",
+ "thumbsdown_tone4": "\ud83d\udc4e\ud83c\udffe",
+ "thumbsdown_tone5": "\ud83d\udc4e\ud83c\udfff",
+ "punch_tone1": "\ud83d\udc4a\ud83c\udffb",
+ "punch_tone2": "\ud83d\udc4a\ud83c\udffc",
+ "punch_tone3": "\ud83d\udc4a\ud83c\udffd",
+ "punch_tone4": "\ud83d\udc4a\ud83c\udffe",
+ "punch_tone5": "\ud83d\udc4a\ud83c\udfff",
+ "fist_tone1": "\u270a\ud83c\udffb",
+ "fist_tone2": "\u270a\ud83c\udffc",
+ "fist_tone3": "\u270a\ud83c\udffd",
+ "fist_tone4": "\u270a\ud83c\udffe",
+ "fist_tone5": "\u270a\ud83c\udfff",
+ "v_tone1": "\u270c\ud83c\udffb",
+ "v_tone2": "\u270c\ud83c\udffc",
+ "v_tone3": "\u270c\ud83c\udffd",
+ "v_tone4": "\u270c\ud83c\udffe",
+ "v_tone5": "\u270c\ud83c\udfff",
+ "ok_hand_tone1": "\ud83d\udc4c\ud83c\udffb",
+ "ok_hand_tone2": "\ud83d\udc4c\ud83c\udffc",
+ "ok_hand_tone3": "\ud83d\udc4c\ud83c\udffd",
+ "ok_hand_tone4": "\ud83d\udc4c\ud83c\udffe",
+ "ok_hand_tone5": "\ud83d\udc4c\ud83c\udfff",
+ "raised_hand_tone1": "\u270b\ud83c\udffb",
+ "raised_hand_tone2": "\u270b\ud83c\udffc",
+ "raised_hand_tone3": "\u270b\ud83c\udffd",
+ "raised_hand_tone4": "\u270b\ud83c\udffe",
+ "raised_hand_tone5": "\u270b\ud83c\udfff",
+ "open_hands_tone1": "\ud83d\udc50\ud83c\udffb",
+ "open_hands_tone2": "\ud83d\udc50\ud83c\udffc",
+ "open_hands_tone3": "\ud83d\udc50\ud83c\udffd",
+ "open_hands_tone4": "\ud83d\udc50\ud83c\udffe",
+ "open_hands_tone5": "\ud83d\udc50\ud83c\udfff",
+ "muscle_tone1": "\ud83d\udcaa\ud83c\udffb",
+ "muscle_tone2": "\ud83d\udcaa\ud83c\udffc",
+ "muscle_tone3": "\ud83d\udcaa\ud83c\udffd",
+ "muscle_tone4": "\ud83d\udcaa\ud83c\udffe",
+ "muscle_tone5": "\ud83d\udcaa\ud83c\udfff",
+ "pray_tone1": "\ud83d\ude4f\ud83c\udffb",
+ "pray_tone2": "\ud83d\ude4f\ud83c\udffc",
+ "pray_tone3": "\ud83d\ude4f\ud83c\udffd",
+ "pray_tone4": "\ud83d\ude4f\ud83c\udffe",
+ "pray_tone5": "\ud83d\ude4f\ud83c\udfff",
+ "point_up_tone1": "\u261d\ud83c\udffb",
+ "point_up_tone2": "\u261d\ud83c\udffc",
+ "point_up_tone3": "\u261d\ud83c\udffd",
+ "point_up_tone4": "\u261d\ud83c\udffe",
+ "point_up_tone5": "\u261d\ud83c\udfff",
+ "point_up_2_tone1": "\ud83d\udc46\ud83c\udffb",
+ "point_up_2_tone2": "\ud83d\udc46\ud83c\udffc",
+ "point_up_2_tone3": "\ud83d\udc46\ud83c\udffd",
+ "point_up_2_tone4": "\ud83d\udc46\ud83c\udffe",
+ "point_up_2_tone5": "\ud83d\udc46\ud83c\udfff",
+ "point_down_tone1": "\ud83d\udc47\ud83c\udffb",
+ "point_down_tone2": "\ud83d\udc47\ud83c\udffc",
+ "point_down_tone3": "\ud83d\udc47\ud83c\udffd",
+ "point_down_tone4": "\ud83d\udc47\ud83c\udffe",
+ "point_down_tone5": "\ud83d\udc47\ud83c\udfff",
+ "point_left_tone1": "\ud83d\udc48\ud83c\udffb",
+ "point_left_tone2": "\ud83d\udc48\ud83c\udffc",
+ "point_left_tone3": "\ud83d\udc48\ud83c\udffd",
+ "point_left_tone4": "\ud83d\udc48\ud83c\udffe",
+ "point_left_tone5": "\ud83d\udc48\ud83c\udfff",
+ "point_right_tone1": "\ud83d\udc49\ud83c\udffb",
+ "point_right_tone2": "\ud83d\udc49\ud83c\udffc",
+ "point_right_tone3": "\ud83d\udc49\ud83c\udffd",
+ "point_right_tone4": "\ud83d\udc49\ud83c\udffe",
+ "point_right_tone5": "\ud83d\udc49\ud83c\udfff",
+ "middle_finger_tone1": "\ud83d\udd95\ud83c\udffb",
+ "middle_finger_tone2": "\ud83d\udd95\ud83c\udffc",
+ "middle_finger_tone3": "\ud83d\udd95\ud83c\udffd",
+ "middle_finger_tone4": "\ud83d\udd95\ud83c\udffe",
+ "middle_finger_tone5": "\ud83d\udd95\ud83c\udfff",
+ "hand_splayed_tone1": "\ud83d\udd90\ud83c\udffb",
+ "hand_splayed_tone2": "\ud83d\udd90\ud83c\udffc",
+ "hand_splayed_tone3": "\ud83d\udd90\ud83c\udffd",
+ "hand_splayed_tone4": "\ud83d\udd90\ud83c\udffe",
+ "hand_splayed_tone5": "\ud83d\udd90\ud83c\udfff",
+ "metal_tone1": "\ud83e\udd18\ud83c\udffb",
+ "metal_tone2": "\ud83e\udd18\ud83c\udffc",
+ "metal_tone3": "\ud83e\udd18\ud83c\udffd",
+ "metal_tone4": "\ud83e\udd18\ud83c\udffe",
+ "metal_tone5": "\ud83e\udd18\ud83c\udfff",
+ "vulcan_tone1": "\ud83d\udd96\ud83c\udffb",
+ "vulcan_tone2": "\ud83d\udd96\ud83c\udffc",
+ "vulcan_tone3": "\ud83d\udd96\ud83c\udffd",
+ "vulcan_tone4": "\ud83d\udd96\ud83c\udffe",
+ "vulcan_tone5": "\ud83d\udd96\ud83c\udfff",
+ "writing_hand_tone1": "\u270d\ud83c\udffb",
+ "writing_hand_tone2": "\u270d\ud83c\udffc",
+ "writing_hand_tone3": "\u270d\ud83c\udffd",
+ "writing_hand_tone4": "\u270d\ud83c\udffe",
+ "writing_hand_tone5": "\u270d\ud83c\udfff",
+ "nail_care_tone1": "\ud83d\udc85\ud83c\udffb",
+ "nail_care_tone2": "\ud83d\udc85\ud83c\udffc",
+ "nail_care_tone3": "\ud83d\udc85\ud83c\udffd",
+ "nail_care_tone4": "\ud83d\udc85\ud83c\udffe",
+ "nail_care_tone5": "\ud83d\udc85\ud83c\udfff",
+ "ear_tone1": "\ud83d\udc42\ud83c\udffb",
+ "ear_tone2": "\ud83d\udc42\ud83c\udffc",
+ "ear_tone3": "\ud83d\udc42\ud83c\udffd",
+ "ear_tone4": "\ud83d\udc42\ud83c\udffe",
+ "ear_tone5": "\ud83d\udc42\ud83c\udfff",
+ "nose_tone1": "\ud83d\udc43\ud83c\udffb",
+ "nose_tone2": "\ud83d\udc43\ud83c\udffc",
+ "nose_tone3": "\ud83d\udc43\ud83c\udffd",
+ "nose_tone4": "\ud83d\udc43\ud83c\udffe",
+ "nose_tone5": "\ud83d\udc43\ud83c\udfff",
+ "baby_tone1": "\ud83d\udc76\ud83c\udffb",
+ "baby_tone2": "\ud83d\udc76\ud83c\udffc",
+ "baby_tone3": "\ud83d\udc76\ud83c\udffd",
+ "baby_tone4": "\ud83d\udc76\ud83c\udffe",
+ "baby_tone5": "\ud83d\udc76\ud83c\udfff",
+ "boy_tone1": "\ud83d\udc66\ud83c\udffb",
+ "boy_tone2": "\ud83d\udc66\ud83c\udffc",
+ "boy_tone3": "\ud83d\udc66\ud83c\udffd",
+ "boy_tone4": "\ud83d\udc66\ud83c\udffe",
+ "boy_tone5": "\ud83d\udc66\ud83c\udfff",
+ "girl_tone1": "\ud83d\udc67\ud83c\udffb",
+ "girl_tone2": "\ud83d\udc67\ud83c\udffc",
+ "girl_tone3": "\ud83d\udc67\ud83c\udffd",
+ "girl_tone4": "\ud83d\udc67\ud83c\udffe",
+ "girl_tone5": "\ud83d\udc67\ud83c\udfff",
+ "man_tone1": "\ud83d\udc68\ud83c\udffb",
+ "man_tone2": "\ud83d\udc68\ud83c\udffc",
+ "man_tone3": "\ud83d\udc68\ud83c\udffd",
+ "man_tone4": "\ud83d\udc68\ud83c\udffe",
+ "man_tone5": "\ud83d\udc68\ud83c\udfff",
+ "woman_tone1": "\ud83d\udc69\ud83c\udffb",
+ "woman_tone2": "\ud83d\udc69\ud83c\udffc",
+ "woman_tone3": "\ud83d\udc69\ud83c\udffd",
+ "woman_tone4": "\ud83d\udc69\ud83c\udffe",
+ "woman_tone5": "\ud83d\udc69\ud83c\udfff",
+ "person_with_blond_hair_tone1": "\ud83d\udc71\ud83c\udffb",
+ "person_with_blond_hair_tone2": "\ud83d\udc71\ud83c\udffc",
+ "person_with_blond_hair_tone3": "\ud83d\udc71\ud83c\udffd",
+ "person_with_blond_hair_tone4": "\ud83d\udc71\ud83c\udffe",
+ "person_with_blond_hair_tone5": "\ud83d\udc71\ud83c\udfff",
+ "older_man_tone1": "\ud83d\udc74\ud83c\udffb",
+ "older_man_tone2": "\ud83d\udc74\ud83c\udffc",
+ "older_man_tone3": "\ud83d\udc74\ud83c\udffd",
+ "older_man_tone4": "\ud83d\udc74\ud83c\udffe",
+ "older_man_tone5": "\ud83d\udc74\ud83c\udfff",
+ "older_woman_tone1": "\ud83d\udc75\ud83c\udffb",
+ "older_woman_tone2": "\ud83d\udc75\ud83c\udffc",
+ "older_woman_tone3": "\ud83d\udc75\ud83c\udffd",
+ "older_woman_tone4": "\ud83d\udc75\ud83c\udffe",
+ "older_woman_tone5": "\ud83d\udc75\ud83c\udfff",
+ "man_with_gua_pi_mao_tone1": "\ud83d\udc72\ud83c\udffb",
+ "man_with_gua_pi_mao_tone2": "\ud83d\udc72\ud83c\udffc",
+ "man_with_gua_pi_mao_tone3": "\ud83d\udc72\ud83c\udffd",
+ "man_with_gua_pi_mao_tone4": "\ud83d\udc72\ud83c\udffe",
+ "man_with_gua_pi_mao_tone5": "\ud83d\udc72\ud83c\udfff",
+ "man_with_turban_tone1": "\ud83d\udc73\ud83c\udffb",
+ "man_with_turban_tone2": "\ud83d\udc73\ud83c\udffc",
+ "man_with_turban_tone3": "\ud83d\udc73\ud83c\udffd",
+ "man_with_turban_tone4": "\ud83d\udc73\ud83c\udffe",
+ "man_with_turban_tone5": "\ud83d\udc73\ud83c\udfff",
+ "cop_tone1": "\ud83d\udc6e\ud83c\udffb",
+ "cop_tone2": "\ud83d\udc6e\ud83c\udffc",
+ "cop_tone3": "\ud83d\udc6e\ud83c\udffd",
+ "cop_tone4": "\ud83d\udc6e\ud83c\udffe",
+ "cop_tone5": "\ud83d\udc6e\ud83c\udfff",
+ "construction_worker_tone1": "\ud83d\udc77\ud83c\udffb",
+ "construction_worker_tone2": "\ud83d\udc77\ud83c\udffc",
+ "construction_worker_tone3": "\ud83d\udc77\ud83c\udffd",
+ "construction_worker_tone4": "\ud83d\udc77\ud83c\udffe",
+ "construction_worker_tone5": "\ud83d\udc77\ud83c\udfff",
+ "guardsman_tone1": "\ud83d\udc82\ud83c\udffb",
+ "guardsman_tone2": "\ud83d\udc82\ud83c\udffc",
+ "guardsman_tone3": "\ud83d\udc82\ud83c\udffd",
+ "guardsman_tone4": "\ud83d\udc82\ud83c\udffe",
+ "guardsman_tone5": "\ud83d\udc82\ud83c\udfff",
+ "santa_tone1": "\ud83c\udf85\ud83c\udffb",
+ "santa_tone2": "\ud83c\udf85\ud83c\udffc",
+ "santa_tone3": "\ud83c\udf85\ud83c\udffd",
+ "santa_tone4": "\ud83c\udf85\ud83c\udffe",
+ "santa_tone5": "\ud83c\udf85\ud83c\udfff",
+ "angel_tone1": "\ud83d\udc7c\ud83c\udffb",
+ "angel_tone2": "\ud83d\udc7c\ud83c\udffc",
+ "angel_tone3": "\ud83d\udc7c\ud83c\udffd",
+ "angel_tone4": "\ud83d\udc7c\ud83c\udffe",
+ "angel_tone5": "\ud83d\udc7c\ud83c\udfff",
+ "princess_tone1": "\ud83d\udc78\ud83c\udffb",
+ "princess_tone2": "\ud83d\udc78\ud83c\udffc",
+ "princess_tone3": "\ud83d\udc78\ud83c\udffd",
+ "princess_tone4": "\ud83d\udc78\ud83c\udffe",
+ "princess_tone5": "\ud83d\udc78\ud83c\udfff",
+ "bride_with_veil_tone1": "\ud83d\udc70\ud83c\udffb",
+ "bride_with_veil_tone2": "\ud83d\udc70\ud83c\udffc",
+ "bride_with_veil_tone3": "\ud83d\udc70\ud83c\udffd",
+ "bride_with_veil_tone4": "\ud83d\udc70\ud83c\udffe",
+ "bride_with_veil_tone5": "\ud83d\udc70\ud83c\udfff",
+ "walking_tone1": "\ud83d\udeb6\ud83c\udffb",
+ "walking_tone2": "\ud83d\udeb6\ud83c\udffc",
+ "walking_tone3": "\ud83d\udeb6\ud83c\udffd",
+ "walking_tone4": "\ud83d\udeb6\ud83c\udffe",
+ "walking_tone5": "\ud83d\udeb6\ud83c\udfff",
+ "runner_tone1": "\ud83c\udfc3\ud83c\udffb",
+ "runner_tone2": "\ud83c\udfc3\ud83c\udffc",
+ "runner_tone3": "\ud83c\udfc3\ud83c\udffd",
+ "runner_tone4": "\ud83c\udfc3\ud83c\udffe",
+ "runner_tone5": "\ud83c\udfc3\ud83c\udfff",
+ "dancer_tone1": "\ud83d\udc83\ud83c\udffb",
+ "dancer_tone2": "\ud83d\udc83\ud83c\udffc",
+ "dancer_tone3": "\ud83d\udc83\ud83c\udffd",
+ "dancer_tone4": "\ud83d\udc83\ud83c\udffe",
+ "dancer_tone5": "\ud83d\udc83\ud83c\udfff",
+ "bow_tone1": "\ud83d\ude47\ud83c\udffb",
+ "bow_tone2": "\ud83d\ude47\ud83c\udffc",
+ "bow_tone3": "\ud83d\ude47\ud83c\udffd",
+ "bow_tone4": "\ud83d\ude47\ud83c\udffe",
+ "bow_tone5": "\ud83d\ude47\ud83c\udfff",
+ "information_desk_person_tone1": "\ud83d\udc81\ud83c\udffb",
+ "information_desk_person_tone2": "\ud83d\udc81\ud83c\udffc",
+ "information_desk_person_tone3": "\ud83d\udc81\ud83c\udffd",
+ "information_desk_person_tone4": "\ud83d\udc81\ud83c\udffe",
+ "information_desk_person_tone5": "\ud83d\udc81\ud83c\udfff",
+ "no_good_tone1": "\ud83d\ude45\ud83c\udffb",
+ "no_good_tone2": "\ud83d\ude45\ud83c\udffc",
+ "no_good_tone3": "\ud83d\ude45\ud83c\udffd",
+ "no_good_tone4": "\ud83d\ude45\ud83c\udffe",
+ "no_good_tone5": "\ud83d\ude45\ud83c\udfff",
+ "ok_woman_tone1": "\ud83d\ude46\ud83c\udffb",
+ "ok_woman_tone2": "\ud83d\ude46\ud83c\udffc",
+ "ok_woman_tone3": "\ud83d\ude46\ud83c\udffd",
+ "ok_woman_tone4": "\ud83d\ude46\ud83c\udffe",
+ "ok_woman_tone5": "\ud83d\ude46\ud83c\udfff",
+ "raising_hand_tone1": "\ud83d\ude4b\ud83c\udffb",
+ "raising_hand_tone2": "\ud83d\ude4b\ud83c\udffc",
+ "raising_hand_tone3": "\ud83d\ude4b\ud83c\udffd",
+ "raising_hand_tone4": "\ud83d\ude4b\ud83c\udffe",
+ "raising_hand_tone5": "\ud83d\ude4b\ud83c\udfff",
+ "person_with_pouting_face_tone1": "\ud83d\ude4e\ud83c\udffb",
+ "person_with_pouting_face_tone2": "\ud83d\ude4e\ud83c\udffc",
+ "person_with_pouting_face_tone3": "\ud83d\ude4e\ud83c\udffd",
+ "person_with_pouting_face_tone4": "\ud83d\ude4e\ud83c\udffe",
+ "person_with_pouting_face_tone5": "\ud83d\ude4e\ud83c\udfff",
+ "person_frowning_tone1": "\ud83d\ude4d\ud83c\udffb",
+ "person_frowning_tone2": "\ud83d\ude4d\ud83c\udffc",
+ "person_frowning_tone3": "\ud83d\ude4d\ud83c\udffd",
+ "person_frowning_tone4": "\ud83d\ude4d\ud83c\udffe",
+ "person_frowning_tone5": "\ud83d\ude4d\ud83c\udfff",
+ "haircut_tone1": "\ud83d\udc87\ud83c\udffb",
+ "haircut_tone2": "\ud83d\udc87\ud83c\udffc",
+ "haircut_tone3": "\ud83d\udc87\ud83c\udffd",
+ "haircut_tone4": "\ud83d\udc87\ud83c\udffe",
+ "haircut_tone5": "\ud83d\udc87\ud83c\udfff",
+ "massage_tone1": "\ud83d\udc86\ud83c\udffb",
+ "massage_tone2": "\ud83d\udc86\ud83c\udffc",
+ "massage_tone3": "\ud83d\udc86\ud83c\udffd",
+ "massage_tone4": "\ud83d\udc86\ud83c\udffe",
+ "massage_tone5": "\ud83d\udc86\ud83c\udfff",
+ "rowboat_tone1": "\ud83d\udea3\ud83c\udffb",
+ "rowboat_tone2": "\ud83d\udea3\ud83c\udffc",
+ "rowboat_tone3": "\ud83d\udea3\ud83c\udffd",
+ "rowboat_tone4": "\ud83d\udea3\ud83c\udffe",
+ "rowboat_tone5": "\ud83d\udea3\ud83c\udfff",
+ "swimmer_tone1": "\ud83c\udfca\ud83c\udffb",
+ "swimmer_tone2": "\ud83c\udfca\ud83c\udffc",
+ "swimmer_tone3": "\ud83c\udfca\ud83c\udffd",
+ "swimmer_tone4": "\ud83c\udfca\ud83c\udffe",
+ "swimmer_tone5": "\ud83c\udfca\ud83c\udfff",
+ "surfer_tone1": "\ud83c\udfc4\ud83c\udffb",
+ "surfer_tone2": "\ud83c\udfc4\ud83c\udffc",
+ "surfer_tone3": "\ud83c\udfc4\ud83c\udffd",
+ "surfer_tone4": "\ud83c\udfc4\ud83c\udffe",
+ "surfer_tone5": "\ud83c\udfc4\ud83c\udfff",
+ "bath_tone1": "\ud83d\udec0\ud83c\udffb",
+ "bath_tone2": "\ud83d\udec0\ud83c\udffc",
+ "bath_tone3": "\ud83d\udec0\ud83c\udffd",
+ "bath_tone4": "\ud83d\udec0\ud83c\udffe",
+ "bath_tone5": "\ud83d\udec0\ud83c\udfff",
+ "basketball_player_tone1": "\u26f9\ud83c\udffb",
+ "basketball_player_tone2": "\u26f9\ud83c\udffc",
+ "basketball_player_tone3": "\u26f9\ud83c\udffd",
+ "basketball_player_tone4": "\u26f9\ud83c\udffe",
+ "basketball_player_tone5": "\u26f9\ud83c\udfff",
+ "lifter_tone1": "\ud83c\udfcb\ud83c\udffb",
+ "lifter_tone2": "\ud83c\udfcb\ud83c\udffc",
+ "lifter_tone3": "\ud83c\udfcb\ud83c\udffd",
+ "lifter_tone4": "\ud83c\udfcb\ud83c\udffe",
+ "lifter_tone5": "\ud83c\udfcb\ud83c\udfff",
+ "bicyclist_tone1": "\ud83d\udeb4\ud83c\udffb",
+ "bicyclist_tone2": "\ud83d\udeb4\ud83c\udffc",
+ "bicyclist_tone3": "\ud83d\udeb4\ud83c\udffd",
+ "bicyclist_tone4": "\ud83d\udeb4\ud83c\udffe",
+ "bicyclist_tone5": "\ud83d\udeb4\ud83c\udfff",
+ "mountain_bicyclist_tone1": "\ud83d\udeb5\ud83c\udffb",
+ "mountain_bicyclist_tone2": "\ud83d\udeb5\ud83c\udffc",
+ "mountain_bicyclist_tone3": "\ud83d\udeb5\ud83c\udffd",
+ "mountain_bicyclist_tone4": "\ud83d\udeb5\ud83c\udffe",
+ "mountain_bicyclist_tone5": "\ud83d\udeb5\ud83c\udfff",
+ "horse_racing_tone1": "\ud83c\udfc7\ud83c\udffb",
+ "horse_racing_tone2": "\ud83c\udfc7\ud83c\udffc",
+ "horse_racing_tone3": "\ud83c\udfc7\ud83c\udffd",
+ "horse_racing_tone4": "\ud83c\udfc7\ud83c\udffe",
+ "horse_racing_tone5": "\ud83c\udfc7\ud83c\udfff",
+ "spy_tone1": "\ud83d\udd75\ud83c\udffb",
+ "spy_tone2": "\ud83d\udd75\ud83c\udffc",
+ "spy_tone3": "\ud83d\udd75\ud83c\udffd",
+ "spy_tone4": "\ud83d\udd75\ud83c\udffe",
+ "spy_tone5": "\ud83d\udd75\ud83c\udfff",
+ "tone1": "\ud83c\udffb",
+ "tone2": "\ud83c\udffc",
+ "tone3": "\ud83c\udffd",
+ "tone4": "\ud83c\udffe",
+ "tone5": "\ud83c\udfff"
+}
diff --git a/scripts/celerity/generate_emoji.php b/scripts/celerity/generate_emoji.php
new file mode 100755
--- /dev/null
+++ b/scripts/celerity/generate_emoji.php
@@ -0,0 +1,48 @@
+#!/usr/bin/env php
+<?php
+
+require_once dirname(dirname(__FILE__)).'/__init_script__.php';
+
+$args = new PhutilArgumentParser($argv);
+$args->setTagline(pht('regenerate Emoji data sheets'));
+$args->setSynopsis(<<<EOHELP
+**emoji**
+ Rebuild Emoji data sheets.
+
+EOHELP
+);
+$args->parseStandardArguments();
+$args->parse(
+ array(
+ array(
+ 'name' => 'force',
+ 'help' => pht('Force regeneration even if sources have not changed.'),
+ ),
+ ));
+
+$root = dirname(phutil_get_library_root('phabricator'));
+$path = $root.'/webroot/rsrc/externals/emojione/emoji_strategy.json';
+$export_path = $root.'/webroot/rsrc/emoji/manifest.json';
+
+if (Filesystem::pathExists($path)) {
+ $json = Filesystem::readFile($path);
+
+ $emojis = phutil_json_decode($json);
+ $data = array();
+ foreach ($emojis as $shortname => $emoji) {
+ $unicode = $emoji['unicode'];
+ $codes = explode('-', $unicode);
+ $hex = '';
+ foreach ($codes as $code) {
+ $hex .= phutil_utf8_encode_codepoint(hexdec($code));
+ }
+ $data[$shortname] = $hex;
+ }
+
+ $json = new PhutilJSON();
+ $data = $json->encodeFormatted($data);
+ Filesystem::writeFile($export_path, $data);
+ echo pht('Done.')."\n";
+} else {
+ echo pht('Path %s not exist.', $path)."\n";
+}
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -1412,6 +1412,7 @@
'LiskRawMigrationIterator' => 'infrastructure/storage/lisk/LiskRawMigrationIterator.php',
'MacroConduitAPIMethod' => 'applications/macro/conduit/MacroConduitAPIMethod.php',
'MacroCreateMemeConduitAPIMethod' => 'applications/macro/conduit/MacroCreateMemeConduitAPIMethod.php',
+ 'MacroEmojiExample' => 'applications/uiexample/examples/MacroEmojiExample.php',
'MacroQueryConduitAPIMethod' => 'applications/macro/conduit/MacroQueryConduitAPIMethod.php',
'ManiphestAssignEmailCommand' => 'applications/maniphest/command/ManiphestAssignEmailCommand.php',
'ManiphestAssigneeDatasource' => 'applications/maniphest/typeahead/ManiphestAssigneeDatasource.php',
@@ -2626,6 +2627,7 @@
'PhabricatorEmailVarySubjectsSetting' => 'applications/settings/setting/PhabricatorEmailVarySubjectsSetting.php',
'PhabricatorEmailVerificationController' => 'applications/auth/controller/PhabricatorEmailVerificationController.php',
'PhabricatorEmbedFileRemarkupRule' => 'applications/files/markup/PhabricatorEmbedFileRemarkupRule.php',
+ 'PhabricatorEmojiDatasource' => 'applications/macro/typeahead/PhabricatorEmojiDatasource.php',
'PhabricatorEmojiRemarkupRule' => 'applications/macro/markup/PhabricatorEmojiRemarkupRule.php',
'PhabricatorEmojiTranslation' => 'infrastructure/internationalization/translation/PhabricatorEmojiTranslation.php',
'PhabricatorEmptyQueryException' => 'infrastructure/query/PhabricatorEmptyQueryException.php',
@@ -6242,6 +6244,7 @@
'LiskRawMigrationIterator' => 'PhutilBufferedIterator',
'MacroConduitAPIMethod' => 'ConduitAPIMethod',
'MacroCreateMemeConduitAPIMethod' => 'MacroConduitAPIMethod',
+ 'MacroEmojiExample' => 'PhabricatorUIExample',
'MacroQueryConduitAPIMethod' => 'MacroConduitAPIMethod',
'ManiphestAssignEmailCommand' => 'ManiphestEmailCommand',
'ManiphestAssigneeDatasource' => 'PhabricatorTypeaheadCompositeDatasource',
@@ -7639,6 +7642,7 @@
'PhabricatorEmailVarySubjectsSetting' => 'PhabricatorSelectSetting',
'PhabricatorEmailVerificationController' => 'PhabricatorAuthController',
'PhabricatorEmbedFileRemarkupRule' => 'PhabricatorObjectRemarkupRule',
+ 'PhabricatorEmojiDatasource' => 'PhabricatorTypeaheadDatasource',
'PhabricatorEmojiRemarkupRule' => 'PhutilRemarkupRule',
'PhabricatorEmojiTranslation' => 'PhutilTranslation',
'PhabricatorEmptyQueryException' => 'Exception',
diff --git a/src/applications/macro/markup/PhabricatorEmojiRemarkupRule.php b/src/applications/macro/markup/PhabricatorEmojiRemarkupRule.php
--- a/src/applications/macro/markup/PhabricatorEmojiRemarkupRule.php
+++ b/src/applications/macro/markup/PhabricatorEmojiRemarkupRule.php
@@ -13,6 +13,13 @@
$text);
}
+ public function markupEmojiJSON() {
+ $root = dirname(phutil_get_library_root('phabricator'));
+ $json = Filesystem::readFile(
+ $root.'/resources/emoji/manifest.json');
+ return $json;
+ }
+
public function markupEmoji(array $matches) {
if (!$this->isFlatText($matches[0])) {
return $matches[0];
diff --git a/src/applications/macro/typeahead/PhabricatorEmojiDatasource.php b/src/applications/macro/typeahead/PhabricatorEmojiDatasource.php
new file mode 100644
--- /dev/null
+++ b/src/applications/macro/typeahead/PhabricatorEmojiDatasource.php
@@ -0,0 +1,45 @@
+<?php
+
+final class PhabricatorEmojiDatasource extends PhabricatorTypeaheadDatasource {
+
+ public function getPlaceholderText() {
+ return pht('Type an emoji name...');
+ }
+
+ public function getBrowseTitle() {
+ return pht('Browse Emojis');
+ }
+
+ public function getDatasourceApplicationClass() {
+ return 'PhabricatorMacroApplication';
+ }
+
+ public function loadResults() {
+ $results = $this->buildResults();
+ return $this->filterResultsAgainstTokens($results);
+ }
+
+ protected function renderSpecialTokens(array $values) {
+ return $this->renderTokensFromResults($this->buildResults(), $values);
+ }
+
+ private function buildResults() {
+ $raw_query = $this->getRawQuery();
+
+ $data = id(new PhabricatorEmojiRemarkupRule())->markupEmojiJSON();
+ $emojis = phutil_json_decode($data);
+
+ $results = array();
+ foreach ($emojis as $shortname => $emoji) {
+ $display_name = $emoji.' '.$shortname;
+ $result = id(new PhabricatorTypeaheadResult())
+ ->setPHID($shortname)
+ ->setName($display_name)
+ ->setAutocomplete($emoji);
+
+ $results[$shortname] = $result;
+ }
+ return $results;
+ }
+
+}
diff --git a/src/applications/uiexample/examples/MacroEmojiExample.php b/src/applications/uiexample/examples/MacroEmojiExample.php
new file mode 100644
--- /dev/null
+++ b/src/applications/uiexample/examples/MacroEmojiExample.php
@@ -0,0 +1,47 @@
+<?php
+
+final class MacroEmojiExample extends PhabricatorUIExample {
+
+ public function getName() {
+ return pht('Emoji Support');
+ }
+
+ public function getDescription() {
+ return pht('Shiny happy people holding hands');
+ }
+
+ public function renderExample() {
+
+ $raw = id(new PhabricatorEmojiRemarkupRule())
+ ->markupEmojiJSON();
+
+ $json = phutil_json_decode($raw);
+
+ $content = array();
+ foreach ($json as $shortname => $hex) {
+
+ $display_name = ' '.$hex.' '.$shortname;
+
+ $content[] = phutil_tag(
+ 'div',
+ array(
+ 'class' => 'ms grouped',
+ 'style' => 'width: 240px; height: 24px; float: left;',
+ ),
+ $display_name);
+
+ }
+
+ $wrap = id(new PHUIObjectBoxView())
+ ->setHeaderText(pht('Emojis'))
+ ->addClass('grouped')
+ ->appendChild($content);
+
+ return phutil_tag(
+ 'div',
+ array(),
+ array(
+ $wrap,
+ ));
+ }
+}
diff --git a/src/view/form/control/PhabricatorRemarkupControl.php b/src/view/form/control/PhabricatorRemarkupControl.php
--- a/src/view/form/control/PhabricatorRemarkupControl.php
+++ b/src/view/form/control/PhabricatorRemarkupControl.php
@@ -55,6 +55,7 @@
$root_id = celerity_generate_unique_node_id();
$user_datasource = new PhabricatorPeopleDatasource();
+ $emoji_datasource = new PhabricatorEmojiDatasource();
$proj_datasource = id(new PhabricatorProjectDatasource())
->setParameters(
array(
@@ -91,6 +92,12 @@
'headerText' => pht('Find Project:'),
'hintText' => $proj_datasource->getPlaceholderText(),
),
+ 58 => array( // ":"
+ 'datasourceURI' => $emoji_datasource->getDatasourceURI(),
+ 'headerIcon' => 'fa-smile-o',
+ 'headerText' => pht('Find Emoji:'),
+ 'hintText' => $emoji_datasource->getPlaceholderText(),
+ ),
),
));
Javelin::initBehavior('phabricator-tooltips', array());
diff --git a/webroot/rsrc/js/phuix/PHUIXAutocomplete.js b/webroot/rsrc/js/phuix/PHUIXAutocomplete.js
--- a/webroot/rsrc/js/phuix/PHUIXAutocomplete.js
+++ b/webroot/rsrc/js/phuix/PHUIXAutocomplete.js
@@ -118,7 +118,6 @@
case '|': // Might be a table cell.
case '>': // Might be a blockquote.
case '!': // Might be a blockquote attribution line.
- case ':': // Might be a "NOTE:".
// We'll let these autocomplete.
break;
default:

File Metadata

Mime Type
text/plain
Expires
Thu, Dec 19, 11:18 AM (19 h, 35 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6906900
Default Alt Text
D17244.id41475.diff (69 KB)

Event Timeline