From 23449a43e0a6d8b00b80c61f0e5769b38e2c6284 Mon Sep 17 00:00:00 2001 From: DolceTriade Date: Sun, 25 Sep 2022 01:57:27 -0700 Subject: [PATCH] emoji: Add emoji support to rmlui. You can use [:)] or [salute] or other known emoji short codes to use emojis in Unvanquished. These are a critical feature to help player express themselves. This change generates an emoji map using Google's emoji data to map short names and emoticons to emojis and also provides a script to regenerate this should a new emoji spec come out. --- pkg/unvanquished_src.dpkdir | 2 +- src.cmake | 2 + src/cgame/rocket/emojis/emojimap.cpp | 1939 +++++++++++++++++ src/cgame/rocket/emojis/emojimap.h | 3 + src/cgame/rocket/emojis/generate_emoji_map.py | 88 + src/cgame/rocket/rocket.cpp | 34 + 6 files changed, 2067 insertions(+), 1 deletion(-) create mode 100644 src/cgame/rocket/emojis/emojimap.cpp create mode 100644 src/cgame/rocket/emojis/emojimap.h create mode 100755 src/cgame/rocket/emojis/generate_emoji_map.py diff --git a/pkg/unvanquished_src.dpkdir b/pkg/unvanquished_src.dpkdir index 58494bc0ad1..a546fd9c115 160000 --- a/pkg/unvanquished_src.dpkdir +++ b/pkg/unvanquished_src.dpkdir @@ -1 +1 @@ -Subproject commit 58494bc0ad1a28a3c29cadaaca5dda9f20a5e315 +Subproject commit a546fd9c1151aae2d73eef0e4976d88b01f9777c diff --git a/src.cmake b/src.cmake index 3003e60429d..dd334aa6dc0 100644 --- a/src.cmake +++ b/src.cmake @@ -159,6 +159,8 @@ set(CGAMELIST ${GAMELOGIC_DIR}/cgame/rocket/rocket_events.cpp ${GAMELOGIC_DIR}/cgame/rocket/rocket_hud.cpp ${GAMELOGIC_DIR}/cgame/rocket/rocket_keys.cpp + ${GAMELOGIC_DIR}/cgame/rocket/emojis/emojimap.h + ${GAMELOGIC_DIR}/cgame/rocket/emojis/emojimap.cpp ${GAMELOGIC_DIR}/cgame/rocket/lua/CDataSource.cpp ${GAMELOGIC_DIR}/cgame/rocket/lua/CDataSource.h ${GAMELOGIC_DIR}/cgame/rocket/lua/Cmd.cpp diff --git a/src/cgame/rocket/emojis/emojimap.cpp b/src/cgame/rocket/emojis/emojimap.cpp new file mode 100644 index 00000000000..f2e6f388391 --- /dev/null +++ b/src/cgame/rocket/emojis/emojimap.cpp @@ -0,0 +1,1939 @@ + +#include "emojimap.h" + +#include + +const std::unordered_map emojimap = { + + {":D", "๐Ÿ˜€"}, + {"smile", "๐Ÿ˜€"}, + {":-D", "๐Ÿ˜ƒ"}, + {"smile-with-big-eyes", "๐Ÿ˜ƒ"}, + {"^_^", "๐Ÿ˜„"}, + {"grin", "๐Ÿ˜„"}, + {"*^_^*", "๐Ÿ˜"}, + {"grinning", "๐Ÿ˜"}, + {"X-D", "๐Ÿ˜†"}, + {"laughing", "๐Ÿ˜†"}, + {"^_^;", "๐Ÿ˜…"}, + {"grin-sweat", "๐Ÿ˜…"}, + {">w<", "๐Ÿ˜‚"}, + {"joy", "๐Ÿ˜‚"}, + {"*>w<*", "๐Ÿคฃ"}, + {"rofl", "๐Ÿคฃ"}, + {";_;", "๐Ÿ˜ญ"}, + {"loudly-crying", "๐Ÿ˜ญ"}, + {";)", "๐Ÿ˜‰"}, + {"wink", "๐Ÿ˜‰"}, + {":*", "๐Ÿ˜—"}, + {"kissing", "๐Ÿ˜—"}, + {"^3^", "๐Ÿ˜™"}, + {"kissing-smiling-eyes", "๐Ÿ˜™"}, + {":**", "๐Ÿ˜š"}, + {"kissing-closed-eyes", "๐Ÿ˜š"}, + {";*", "๐Ÿ˜˜"}, + {"kissing-heart", "๐Ÿ˜˜"}, + {"<3:)", "๐Ÿฅฐ"}, + {"heart-face", "๐Ÿฅฐ"}, + {"3-hearts", "๐Ÿฅฐ"}, + {"โ™ฅ_โ™ฅ", "๐Ÿ˜"}, + {"heart-eyes", "๐Ÿ˜"}, + {"*_*", "๐Ÿคฉ"}, + {"star-struck", "๐Ÿคฉ"}, + {"partying-face", "๐Ÿฅณ"}, + {"melting", "๐Ÿซ "}, + {"(:", "๐Ÿ™ƒ"}, + {"upside-down-face", "๐Ÿ™ƒ"}, + {":)", "๐Ÿ™‚"}, + {":-)", "๐Ÿ™‚"}, + {"slightly-happy", "๐Ÿ™‚"}, + {":,)", "๐Ÿฅฒ"}, + {"happy-cry", "๐Ÿฅฒ"}, + {"holding-back-tears", "๐Ÿฅน"}, + {"blush", "๐Ÿ˜Š"}, + {"warm-smile", "โ˜บ๏ธ"}, + {"relieved", "๐Ÿ˜Œ"}, + {">~>", "๐Ÿ˜"}, + {"smirk", "๐Ÿ˜"}, + {"Z_Z", "๐Ÿ˜ด"}, + {"sleep", "๐Ÿ˜ด"}, + {"tired", "๐Ÿ˜ด"}, + {"sleepy", "๐Ÿ˜ช"}, + {"^p^", "๐Ÿคค"}, + {"drool", "๐Ÿคค"}, + {"o_O", "๐Ÿ˜‹"}, + {"yum", "๐Ÿ˜‹"}, + {"O:)", "๐Ÿ˜›"}, + {"stuck-out-tongue", "๐Ÿ˜›"}, + {"._.", "๐Ÿ˜"}, + {"squinting-tongue", "๐Ÿ˜"}, + {"-_-", "๐Ÿ˜œ"}, + {"winky-tongue", "๐Ÿ˜œ"}, + {":|", "๐Ÿคช"}, + {"zany-face", "๐Ÿคช"}, + {"woozy", "๐Ÿฅด"}, + {"pensive", "๐Ÿ˜”"}, + {"pleading", "๐Ÿฅบ"}, + {">:(", "๐Ÿ˜ฌ"}, + {"grimacing", "๐Ÿ˜ฌ"}, + {"dotted-line-face", "๐Ÿซฅ"}, + {"invisible", "๐Ÿซฅ"}, + {"expressionless", "๐Ÿ˜‘"}, + {"(ใƒปะดใƒปใ‚๏ผ‰", "๐Ÿ˜"}, + {"neutral-face", "๐Ÿ˜"}, + {"=L", "๐Ÿ˜ถ"}, + {"mouth-none", "๐Ÿ˜ถ"}, + {"face-in-clouds", "๐Ÿ˜ถโ€๐ŸŒซ๏ธ"}, + {"lost", "๐Ÿ˜ถโ€๐ŸŒซ๏ธ"}, + {"D-:", "๐Ÿค"}, + {"zipper-face", "๐Ÿค"}, + {"salute", "๐Ÿซก"}, + {"~O~", "๐Ÿค”"}, + {"thinking-face", "๐Ÿค”"}, + {"\(^o^)/", "๐Ÿคซ"}, + {"shushing-face", "๐Ÿคซ"}, + {"|ะด๏ฝฅ)", "๐Ÿซข"}, + {"hand-over-mouth", "๐Ÿซข"}, + {"@0@", "๐Ÿคญ"}, + {"smiling-eyes-with-hand-over-mouth", "๐Ÿคญ"}, + {"chuckling", "๐Ÿคญ"}, + {"yawn", "๐Ÿฅฑ"}, + {"hug-face", "๐Ÿค—"}, + {"(-_-)ใ‚ž", "๐Ÿซฃ"}, + {"peeking", "๐Ÿซฃ"}, + {"o~O", "๐Ÿ˜ฑ"}, + {"screaming", "๐Ÿ˜ฑ"}, + {"raised-eyebrow", "๐Ÿคจ"}, + {"monocle", "๐Ÿง"}, + {"X-(", "๐Ÿ˜’"}, + {"unamused", "๐Ÿ˜’"}, + {">:O", "๐Ÿ™„"}, + {"rolling-eyes", "๐Ÿ™„"}, + {"#$@!", "๐Ÿ˜ฎโ€๐Ÿ’จ"}, + {"exhale", "๐Ÿ˜ฎโ€๐Ÿ’จ"}, + {"triumph", "๐Ÿ˜ค"}, + {"angry", "๐Ÿ˜ "}, + {"rage", "๐Ÿ˜ก"}, + {":S", "๐Ÿคฌ"}, + {"cursing", "๐Ÿคฌ"}, + {"D-X", "๐Ÿ˜ž"}, + {"sad", "๐Ÿ˜ž"}, + {"D:", "๐Ÿ˜“"}, + {"sweat", "๐Ÿ˜“"}, + {"downcast", "๐Ÿ˜“"}, + {":-(", "๐Ÿ˜Ÿ"}, + {"worried", "๐Ÿ˜Ÿ"}, + {":(", "๐Ÿ˜ฅ"}, + {"concerned", "๐Ÿ˜ฅ"}, + {":/", "๐Ÿ˜ข"}, + {"cry", "๐Ÿ˜ข"}, + {":-/", "โ˜น๏ธ"}, + {"big-frown", "โ˜น๏ธ"}, + {"frown", "๐Ÿ™"}, + {"diagonal-mouth", "๐Ÿซค"}, + {"D-':", "๐Ÿ˜•"}, + {"slightly-frowning", "๐Ÿ˜•"}, + {":O", "๐Ÿ˜ฐ"}, + {"anxious-with-sweat", "๐Ÿ˜ฐ"}, + {":o", "๐Ÿ˜จ"}, + {"scared", "๐Ÿ˜จ"}, + {"anguished", "๐Ÿ˜ง"}, + {"8โ€‘0", "๐Ÿ˜ฆ"}, + {"gasp", "๐Ÿ˜ฆ"}, + {"mouth-open", "๐Ÿ˜ฎ"}, + {":-|", "๐Ÿ˜ฏ"}, + {"surprised", "๐Ÿ˜ฏ"}, + {"hushed", "๐Ÿ˜ฏ"}, + {"(0ใธ0)", "๐Ÿ˜ฒ"}, + {"astonished", "๐Ÿ˜ฒ"}, + {"flushed", "๐Ÿ˜ณ"}, + {">:[", "๐Ÿคฏ"}, + {"mind-blown", "๐Ÿคฏ"}, + {"exploding-head", "๐Ÿคฏ"}, + {"X_o", "๐Ÿ˜–"}, + {"scrunched-mouth", "๐Ÿ˜–"}, + {"confounded", "๐Ÿ˜–"}, + {"zigzag-mouth", "๐Ÿ˜–"}, + {"scrunched-eyes", "๐Ÿ˜ฃ"}, + {"persevering", "๐Ÿ˜ฃ"}, + {"weary", "๐Ÿ˜ฉ"}, + {"distraught", "๐Ÿ˜ซ"}, + {"x-eyes", "๐Ÿ˜ต"}, + {"dizzy-face", "๐Ÿ˜ตโ€๐Ÿ’ซ"}, + {"shaking-face", "๐Ÿซจ"}, + {"cold-face", "๐Ÿฅถ"}, + {"hot-face", "๐Ÿฅต"}, + {"sweat-face", "๐Ÿฅต"}, + {":-###", "๐Ÿคข"}, + {"sick", "๐Ÿคข"}, + {"nauseated", "๐Ÿคข"}, + {":-O##", "๐Ÿคฎ"}, + {"vomit", "๐Ÿคฎ"}, + {"(*ยดๅฐ๏ฝ€*)", "๐Ÿคง"}, + {"sneeze", "๐Ÿคง"}, + {"thermometer-face", "๐Ÿค’"}, + {"bandage-face", "๐Ÿค•"}, + {"mask", "๐Ÿ˜ท"}, + {"liar", "๐Ÿคฅ"}, + {"halo", "๐Ÿ˜‡"}, + {"innocent", "๐Ÿ˜‡"}, + {"<):)", "๐Ÿค "}, + {"cowboy", "๐Ÿค "}, + {"money-face", "๐Ÿค‘"}, + {":-B", "๐Ÿค“"}, + {"nerd-face", "๐Ÿค“"}, + {"B-)", "๐Ÿ˜Ž"}, + {"sunglasses-face", "๐Ÿ˜Ž"}, + {"disguise", "๐Ÿฅธ"}, + {":o)", "๐Ÿคก"}, + {"clown", "๐Ÿคก"}, + {"3:)", "๐Ÿ˜ˆ"}, + {"imp-smile", "๐Ÿ˜ˆ"}, + {"3:(", "๐Ÿ‘ฟ"}, + {"imp-frown", "๐Ÿ‘ฟ"}, + {"โŠ‚(ยดใƒปโ—กใƒปโŠ‚)โˆ˜หšหณยฐ", "๐Ÿ‘ป"}, + {"ghost", "๐Ÿ‘ป"}, + {"jack-o-lantern", "๐ŸŽƒ"}, + {"เผผ^-^เผฝ", "๐Ÿ’ฉ"}, + {"poop", "๐Ÿ’ฉ"}, + {"โ””[โˆตโ”Œ]โ””[โˆต]โ”˜[โ”โˆต]โ”˜", "๐Ÿค–"}, + {"robot", "๐Ÿค–"}, + {"(<>..<>)", "๐Ÿ‘ฝ"}, + {"alien", "๐Ÿ‘ฝ"}, + {"alien-monster", "๐Ÿ‘พ"}, + {"moon-face-first-quarter", "๐ŸŒ›"}, + {"moon-face-last-quarter", "๐ŸŒœ"}, + {">_>", "๐ŸŒš"}, + {"moon-face-new", "๐ŸŒš"}, + {"<_<", "๐ŸŒ"}, + {"moon-face-full", "๐ŸŒ"}, + {"sun-with-face", "๐ŸŒž"}, + {"skull-and-crossbones", "โ˜ ๏ธ"}, + {"ogre", "๐Ÿ‘น"}, + {"goblin", "๐Ÿ‘บ"}, + {"fire", "๐Ÿ”ฅ"}, + {"burn", "๐Ÿ”ฅ"}, + {"lit", "๐Ÿ”ฅ"}, + {"100", "๐Ÿ’ฏ"}, + {"one-hundred", "๐Ÿ’ฏ"}, + {"hundred", "๐Ÿ’ฏ"}, + {"points", "๐Ÿ’ฏ"}, + {"dizzy", "๐Ÿ’ซ"}, + {"star", "โญ"}, + {"glowing-star", "๐ŸŒŸ"}, + {"sparkles", "โœจ"}, + {"collision", "๐Ÿ’ฅ"}, + {"dash", "๐Ÿ’จ"}, + {"poof", "๐Ÿ’จ"}, + {"sweat-droplets", "๐Ÿ’ฆ"}, + {"zzz", "๐Ÿ’ค"}, + {"hole", "๐Ÿ•ณ๏ธ"}, + {"party-popper", "๐ŸŽ‰"}, + {"see-no-evil-monkey", "๐Ÿ™ˆ"}, + {"hear-no-evil-monkey", "๐Ÿ™‰"}, + {"speak-no-evil-monkey", "๐Ÿ™Š"}, + {":3", "๐Ÿ˜บ"}, + {"smiley-cat", "๐Ÿ˜บ"}, + {"smile-cat", "๐Ÿ˜ธ"}, + {"joy-cat", "๐Ÿ˜น"}, + {"heart-eyes-cat", "๐Ÿ˜ป"}, + {"smirk-cat", "๐Ÿ˜ผ"}, + {"kissing-cat", "๐Ÿ˜ฝ"}, + {"scream-cat", "๐Ÿ™€"}, + {"crying-cat-face", "๐Ÿ˜ฟ"}, + {"pouting-cat", "๐Ÿ˜พ"}, + {"<3", "โค๏ธ"}, + {"red-heart", "โค๏ธ"}, + {"orange-heart", "๐Ÿงก"}, + {"yellow-heart", "๐Ÿ’›"}, + {"green-heart", "๐Ÿ’š"}, + {"light-blue-heart", "๐Ÿฉต"}, + {"blue-heart", "๐Ÿ’™"}, + {"purple-heart", "๐Ÿ’œ"}, + {"brown-heart", "๐ŸคŽ"}, + {"black-heart", "๐Ÿ–ค"}, + {"grey-heart", "๐Ÿฉถ"}, + {"white-heart", "๐Ÿค"}, + {"pink-heart", "๐Ÿฉท"}, + {"cupid", "๐Ÿ’˜"}, + {"gift-heart", "๐Ÿ’"}, + {"sparkling-heart", "๐Ÿ’–"}, + {"heart-grow", "๐Ÿ’—"}, + {"beating-heart", "๐Ÿ’“"}, + {"revolving-hearts", "๐Ÿ’ž"}, + {"<3<3", "๐Ÿ’•"}, + {"two-hearts", "๐Ÿ’•"}, + {"love-letter", "๐Ÿ’Œ"}, + {"heart-box", "๐Ÿ’Ÿ"}, + {"heart", "โ™ฅ๏ธ"}, + {"<3!", "โฃ๏ธ"}, + {"heart-exclamation-point", "โฃ๏ธ"}, + {"bandaged-heart", "โค๏ธโ€๐Ÿฉน"}, + {"ใ‚œ๏ผ‰๏ฝž๏ฝž๏ฝž๏ฝž", "๐Ÿ"}, + {"snake", "๐Ÿ"}, + {"frog", "๐Ÿธ"}, + {"rabbit", "๐Ÿ‡"}, + {"<:3)~", "๐Ÿ"}, + {"mouse", "๐Ÿ"}, + {"rat", "๐Ÿ€"}, + {"cat", "๐Ÿˆ"}, + {"black-cat", "๐Ÿˆโ€โฌ›"}, + {"poodle", "๐Ÿฉ"}, + {"dog", "๐Ÿ•"}, + {"guide-dog", "๐Ÿฆฎ"}, + {"service-dog", "๐Ÿ•โ€๐Ÿฆบ"}, + {"pig", "๐Ÿ–"}, + {"racehorse", "๐ŸŽ"}, + {"cow", "๐Ÿ„"}, + {"ox", "๐Ÿ‚"}, + {"water-buffalo", "๐Ÿƒ"}, + {"bison", "๐Ÿฆฌ"}, + {"ram", "๐Ÿ"}, + {"sheep", "๐Ÿ‘"}, + {"ewe", "๐Ÿ‘"}, + {"goat", "๐Ÿ"}, + {"deer", "๐ŸฆŒ"}, + {"llama", "๐Ÿฆ™"}, + {"sloth", "๐Ÿฆฅ"}, + {"kangaroo", "๐Ÿฆ˜"}, + {"elephant", "๐Ÿ˜"}, + {"mammoth", "๐Ÿฆฃ"}, + {"rhino", "๐Ÿฆ"}, + {"rhinoceros", "๐Ÿฆ"}, + {"hippo", "๐Ÿฆ›"}, + {"giraffe", "๐Ÿฆ’"}, + {"leopard", "๐Ÿ†"}, + {"tiger", "๐Ÿ…"}, + {"monkey", "๐Ÿ’"}, + {"gorilla", "๐Ÿฆ"}, + {"orangutan", "๐Ÿฆง"}, + {"camel", "๐Ÿช"}, + {"bactrian-camel", "๐Ÿซ"}, + {"chipmunk", "๐Ÿฟ๏ธ"}, + {"beaver", "๐Ÿฆซ"}, + {"skunk", "๐Ÿฆจ"}, + {"badger", "๐Ÿฆก"}, + {"hedgehog", "๐Ÿฆ”"}, + {"(:3๊‡คโ๊ƒณ", "๐Ÿฆฆ"}, + {"otter", "๐Ÿฆฆ"}, + {"โŽ›โŽ(โ€ขโฑ…โ€ข)โŽ โŽž", "๐Ÿฆ‡"}, + {"bat", "๐Ÿฆ‡"}, + {"wing:; :fly", "๐Ÿชฝ"}, + {"feather", "๐Ÿชถ"}, + {"bird", "๐Ÿฆ"}, + {"black-bird", "๐Ÿฆโ€โฌ›"}, + {"rooster", "๐Ÿ“"}, + {"chicken", "๐Ÿ”"}, + {"hatching-chick", "๐Ÿฃ"}, + {"baby-chick", "๐Ÿค"}, + {"hatched-chick", "๐Ÿฅ"}, + {"eagle", "๐Ÿฆ…"}, + {"owl", "๐Ÿฆ‰"}, + {"parrot", "๐Ÿฆœ"}, + {"peace", "๐Ÿ•Š๏ธ"}, + {"dove", "๐Ÿ•Š๏ธ"}, + {"dodo", "๐Ÿฆค"}, + {"swan", "๐Ÿฆข"}, + {"duck", "๐Ÿฆ†"}, + {"goose", "๐Ÿชฟ"}, + {"flamingo", "๐Ÿฆฉ"}, + {"peacock", "๐Ÿฆš"}, + {"turkey", "๐Ÿฆƒ"}, + {"<(\")", "๐Ÿง"}, + {"penguin", "๐Ÿง"}, + {"seal", "๐Ÿฆญ"}, + {"shark", "๐Ÿฆˆ"}, + {"dolphin", "๐Ÿฌ"}, + {"humpback-whale", "๐Ÿ‹"}, + {"whale", "๐Ÿณ"}, + {"<><", "๐ŸŸ"}, + {"fish", "๐ŸŸ"}, + {"tropical-fish", "๐Ÿ "}, + {"blowfish", "๐Ÿก"}, + {"shrimp", "๐Ÿฆ"}, + {"lobster", "๐Ÿฆž"}, + {"crab", "๐Ÿฆ€"}, + {"ใใ‚ณ:ๅฝก", "๐Ÿฆ‘"}, + {"squid", "๐Ÿฆ‘"}, + {"octopus", "๐Ÿ™"}, + {"jellyfish", "๐Ÿชผ"}, + {"oyster", "๐Ÿฆช"}, + {"coral", "๐Ÿชธ"}, + {"scorpion", "๐Ÿฆ‚"}, + {"spider", "๐Ÿ•ท๏ธ"}, + {"spider-web", "๐Ÿ•ธ๏ธ"}, + {"shell", "๐Ÿš"}, + {"snail", "๐ŸŒ"}, + {"ant", "๐Ÿœ"}, + {"cricket", "๐Ÿฆ—"}, + {"beetle", "๐Ÿชฒ"}, + {"mosquito", "๐ŸฆŸ"}, + {"cockroach", "๐Ÿชณ"}, + {"fly", "๐Ÿชฐ"}, + {"honeybee", "๐Ÿ"}, + {"lady-bug", "๐Ÿž"}, + {"ฮตั—ะท", "๐Ÿฆ‹"}, + {"butterfly", "๐Ÿฆ‹"}, + {"bug", "๐Ÿ›"}, + {"worm", "๐Ÿชฑ"}, + {"paw prints", "๐Ÿพ"}, + {"strawberry", "๐Ÿ“"}, + {"cherries", "๐Ÿ’"}, + {"red-apple", "๐ŸŽ"}, + {"watermelon", "๐Ÿ‰"}, + {"peach", "๐Ÿ‘"}, + {"tangerine", "๐ŸŠ"}, + {"orange", "๐ŸŠ"}, + {"mandarin", "๐ŸŠ"}, + {"mango", "๐Ÿฅญ"}, + {"pineapple", "๐Ÿ"}, + {"banana", "๐ŸŒ"}, + {"lemon", "๐Ÿ‹"}, + {"melon", "๐Ÿˆ"}, + {"green-apple", "๐Ÿ"}, + {"pear", "๐Ÿ"}, + {"kiwi-fruit", "๐Ÿฅ"}, + {"olive", "๐Ÿซ’"}, + {"blueberries", "๐Ÿซ"}, + {"grapes", "๐Ÿ‡"}, + {"coconut", "๐Ÿฅฅ"}, + {"tomato", "๐Ÿ…"}, + {"hot-pepper", "๐ŸŒถ๏ธ"}, + {"ginger", "๐Ÿซš"}, + {"carrot", "๐Ÿฅ•"}, + {"roasted-sweet-potato", "๐Ÿ "}, + {"onion", "๐Ÿง…"}, + {"ear-of-corn", "๐ŸŒฝ"}, + {"broccoli", "๐Ÿฅฆ"}, + {"cucumber", "๐Ÿฅ’"}, + {"leafy-green", "๐Ÿฅฌ"}, + {"pea-pod", "๐Ÿซ›"}, + {"bell-pepper", "๐Ÿซ‘"}, + {"avocado", "๐Ÿฅ‘"}, + {"eggplant", "๐Ÿ†"}, + {"garlic", "๐Ÿง„"}, + {"potato", "๐Ÿฅ”"}, + {"beans", "๐Ÿซ˜"}, + {"chestnut", "๐ŸŒฐ"}, + {"peanuts", "๐Ÿฅœ"}, + {"bread", "๐Ÿž"}, + {"flatbread", "๐Ÿซ“"}, + {"croissant", "๐Ÿฅ"}, + {"baguette-bread", "๐Ÿฅ–"}, + {"bagel", "๐Ÿฅฏ"}, + {"waffle", "๐Ÿง‡"}, + {"pancakes", "๐Ÿฅž"}, + {"cooking", "๐Ÿณ"}, + {"egg", "๐Ÿฅš"}, + {"cheese-wedge", "๐Ÿง€"}, + {"bacon", "๐Ÿฅ“"}, + {"cut-of-meat", "๐Ÿฅฉ"}, + {"poultry-leg", "๐Ÿ—"}, + {"meat-on-bone", "๐Ÿ–"}, + {"hamburger", "๐Ÿ”"}, + {"hot-dog", "๐ŸŒญ"}, + {"sandwich", "๐Ÿฅช"}, + {"pretzel", "๐Ÿฅจ"}, + {"french-fries", "๐ŸŸ"}, + {"pizza", "๐Ÿ•"}, + {"tamale", "๐Ÿซ”"}, + {"taco", "๐ŸŒฎ"}, + {"burrito", "๐ŸŒฏ"}, + {"stuffed-flatbread", "๐Ÿฅ™"}, + {"falafel", "๐Ÿง†"}, + {"shallow-pan-of-food", "๐Ÿฅ˜"}, + {"spaghetti", "๐Ÿ"}, + {"canned-food", "๐Ÿฅซ"}, + {"fondue", "๐Ÿซ•"}, + {"bowl-with-spoon", "๐Ÿฅฃ"}, + {"green-salad", "๐Ÿฅ—"}, + {"pot-of-food", "๐Ÿฒ"}, + {"curry-rice", "๐Ÿ›"}, + {"steaming-bowl", "๐Ÿœ"}, + {"sushi", "๐Ÿฃ"}, + {"fried-shrimp", "๐Ÿค"}, + {"takeout-box", "๐Ÿฅก"}, + {"cooked-rice", "๐Ÿš"}, + {"bento-box", "๐Ÿฑ"}, + {"dumpling", "๐ŸฅŸ"}, + {"oden", "๐Ÿข"}, + {"rice-ball", "๐Ÿ™"}, + {"rice-cracker", "๐Ÿ˜"}, + {"fish-cake-with-swirl", "๐Ÿฅ"}, + {"dango", "๐Ÿก"}, + {"fortune-cookie", "๐Ÿฅ "}, + {"moon-cake", "๐Ÿฅฎ"}, + {"shaved-ice", "๐Ÿง"}, + {"ice-cream", "๐Ÿจ"}, + {"soft-ice-cream", "๐Ÿฆ"}, + {"pie", "๐Ÿฅง"}, + {"shortcake", "๐Ÿฐ"}, + {"custard", "๐Ÿฎ"}, + {"birthday-cake", "๐ŸŽ‚"}, + {"cupcake", "๐Ÿง"}, + {"lollipop", "๐Ÿญ"}, + {"candy", "๐Ÿฌ"}, + {"chocolate-bar", "๐Ÿซ"}, + {"doughnut", "๐Ÿฉ"}, + {"cookie", "๐Ÿช"}, + {"honey-pot", "๐Ÿฏ"}, + {"salt", "๐Ÿง‚"}, + {"butter", "๐Ÿงˆ"}, + {"popcorn", "๐Ÿฟ"}, + {"ice-cube", "๐ŸงŠ"}, + {"jar", "๐Ÿซ™"}, + {"cup-with-straw", "๐Ÿฅค"}, + {"bubble-tea", "๐Ÿง‹"}, + {"milk-tea", "๐Ÿง‹"}, + {"beverage-box", "๐Ÿงƒ"}, + {"glass-of-milk", "๐Ÿฅ›"}, + {"baby-bottle", "๐Ÿผ"}, + {"teacup-without-handle", "๐Ÿต"}, + {"hot-beverage", "โ˜•"}, + {"teapot", "๐Ÿซ–"}, + {"mate", "๐Ÿง‰"}, + {"beer-mug", "๐Ÿบ"}, + {"clinking-beer-mugs", "๐Ÿป"}, + {"clinking-glasses", "๐Ÿฅ‚"}, + {"bottle-with-popping-cork", "๐Ÿพ"}, + {"wine-glass", "๐Ÿท"}, + {"tumbler-glass", "๐Ÿฅƒ"}, + {"pour", "๐Ÿซ—"}, + {"cocktail-glass", "๐Ÿธ"}, + {"tropical-drink", "๐Ÿน"}, + {"sake", "๐Ÿถ"}, + {"chopsticks", "๐Ÿฅข"}, + {"fork-and-knife", "๐Ÿด"}, + {"spoon", "๐Ÿฅ„"}, + {"kitchen-knife", "๐Ÿ”ช"}, + {"fork-and-knife-with-plate", "๐Ÿฝ๏ธ"}, + {"stop-sign", "๐Ÿ›‘"}, + {"construction", "๐Ÿšง"}, + {"police-car-light", "๐Ÿšจ"}, + {"fuel-pump", "โ›ฝ"}, + {"oil-drum", "๐Ÿ›ข๏ธ"}, + {"compass", "๐Ÿงญ"}, + {"wheel", "๐Ÿ›ž"}, + {"ring-buoy", "๐Ÿ›Ÿ"}, + {"anchor", "โš“"}, + {"bus-stop", "๐Ÿš"}, + {"metro", "๐Ÿš‡"}, + {"horizontal-traffic-light", "๐Ÿšฅ"}, + {"vertical-traffic-light", "๐Ÿšฆ"}, + {"kick-scooter", "๐Ÿ›ด"}, + {"manual-wheelchair", "๐Ÿฆฝ"}, + {"motorized-wheelchair", "๐Ÿฆผ"}, + {"crutch", "๐Ÿฉผ"}, + {"bicycle", "๐Ÿšฒ"}, + {"motor-scooter", "๐Ÿ›ต"}, + {"motorcycle", "๐Ÿ๏ธ"}, + {"sport-utility-vehicle", "๐Ÿš™"}, + {"automobile", "๐Ÿš—"}, + {"pickup-truck", "๐Ÿ›ป"}, + {"minibus", "๐Ÿš"}, + {"delivery-truck", "๐Ÿšš"}, + {"articulated-lorry", "๐Ÿš›"}, + {"tractor", "๐Ÿšœ"}, + {"racing-car", "๐ŸŽ๏ธ"}, + {"fire-engine", "๐Ÿš’"}, + {"ambulance", "๐Ÿš‘"}, + {"police-car", "๐Ÿš“"}, + {"taxi", "๐Ÿš•"}, + {"auto-rickshaw", "๐Ÿ›บ"}, + {"bus", "๐ŸšŒ"}, + {"light-rail", "๐Ÿšˆ"}, + {"monorail", "๐Ÿš"}, + {"bullet-train", "๐Ÿš…"}, + {"high-speed-train", "๐Ÿš„"}, + {"locomotive", "๐Ÿš‚"}, + {"railway-car", "๐Ÿšƒ"}, + {"tram-car", "๐Ÿš‹"}, + {"trolleybus", "๐ŸšŽ"}, + {"mountain-railway", "๐Ÿšž"}, + {"tram", "๐ŸšŠ"}, + {"station", "๐Ÿš‰"}, + {"bus-front", "๐Ÿš"}, + {"police-car-front", "๐Ÿš”"}, + {"automobile-front", "๐Ÿš˜"}, + {"taxi-front", "๐Ÿš–"}, + {"train", "๐Ÿš†"}, + {"ship", "๐Ÿšข"}, + {"passenger-ship", "๐Ÿ›ณ๏ธ"}, + {"motor-boat", "๐Ÿ›ฅ๏ธ"}, + {"speedboat", "๐Ÿšค"}, + {"ferry", "โ›ด๏ธ"}, + {"sailboat", "โ›ต"}, + {"canoe", "๐Ÿ›ถ"}, + {"suspension-railway", "๐ŸšŸ"}, + {"mountain-cableway", "๐Ÿš "}, + {"aerial-tramway", "๐Ÿšก"}, + {"helicopter", "๐Ÿš"}, + {"flying-saucer", "๐Ÿ›ธ"}, + {"rocket", "๐Ÿš€"}, + {"airplane", "โœˆ๏ธ"}, + {"airplane-departure", "๐Ÿ›ซ"}, + {"airplane-arrival", "๐Ÿ›ฌ"}, + {"small-airplane", "๐Ÿ›ฉ๏ธ"}, + {"slide", "๐Ÿ›"}, + {"playground", "๐Ÿ›"}, + {"roller-coaster", "๐ŸŽข"}, + {"ferris-wheel", "๐ŸŽก"}, + {"carousel-horse", "๐ŸŽ "}, + {"circus-tent", "๐ŸŽช"}, + {"tokyo-tower", "๐Ÿ—ผ"}, + {"statue-of-Liberty", "๐Ÿ—ฝ"}, + {"moai", "๐Ÿ—ฟ"}, + {"mount-fuji", "๐Ÿ—ป"}, + {"classical-building", "๐Ÿ›๏ธ"}, + {"barber-pole", "๐Ÿ’ˆ"}, + {"fountain", "โ›ฒ"}, + {"shinto-shrine", "โ›ฉ๏ธ"}, + {"synagogue", "๐Ÿ•"}, + {"mosque", "๐Ÿ•Œ"}, + {"kaaba", "๐Ÿ•‹"}, + {"hindu-temple", "๐Ÿ›•"}, + {"church", "โ›ช"}, + {"wedding", "๐Ÿ’’"}, + {"love-hotel", "๐Ÿฉ"}, + {"Japanese-castle", "๐Ÿฏ"}, + {"castle", "๐Ÿฐ"}, + {"construction-building", "๐Ÿ—๏ธ"}, + {"office-building", "๐Ÿข"}, + {"factory", "๐Ÿญ"}, + {"department-store", "๐Ÿฌ"}, + {"convenience-store", "๐Ÿช"}, + {"stadium", "๐ŸŸ๏ธ"}, + {"bank", "๐Ÿฆ"}, + {"school", "๐Ÿซ"}, + {"hotel", "๐Ÿจ"}, + {"Japanese-post-office", "๐Ÿฃ"}, + {"post-office", "๐Ÿค"}, + {"hospital", "๐Ÿฅ"}, + {"derelict-house", "๐Ÿš๏ธ"}, + {"house", "๐Ÿ "}, + {"house-with-garden", "๐Ÿก"}, + {"houses", "๐Ÿ˜๏ธ"}, + {"hut", "๐Ÿ›–"}, + {"tent", "โ›บ"}, + {"camping", "๐Ÿ•๏ธ"}, + {"umbrella-on-ground", "โ›ฑ๏ธ"}, + {"cityscape", "๐Ÿ™๏ธ"}, + {"sunset-cityscape", "๐ŸŒ†"}, + {"sunset", "๐ŸŒ‡"}, + {"night-with-stars", "๐ŸŒƒ"}, + {"bridge-at-night", "๐ŸŒ‰"}, + {"foggy", "๐ŸŒ"}, + {"railway-track", "๐Ÿ›ค๏ธ"}, + {"motorway", "๐Ÿ›ฃ๏ธ"}, + {"map-of-Japan", "๐Ÿ—พ"}, + {"world-map", "๐Ÿ—บ๏ธ"}, + {"globe-with-meridians", "๐ŸŒ"}, + {"seat", "๐Ÿ’บ"}, + {"luggage", "๐Ÿงณ"}, + {"confetti-ball", "๐ŸŽŠ"}, + {"balloon", "๐ŸŽˆ"}, + {"ribbon", "๐ŸŽ€"}, + {"wrapped-gift", "๐ŸŽ"}, + {"sparkler", "๐ŸŽ‡"}, + {"fireworks", "๐ŸŽ†"}, + {"firecracker", "๐Ÿงจ"}, + {"red-envelope", "๐Ÿงง"}, + {"diya-lamp", "๐Ÿช”"}, + {"piรฑata", "๐Ÿช…"}, + {"mirror-ball", "๐Ÿชฉ"}, + {"disco-ball", "๐Ÿชฉ"}, + {"wind-chime", "๐ŸŽ"}, + {"carp-streamer", "๐ŸŽ"}, + {"Japanese-dolls", "๐ŸŽŽ"}, + {"moon-viewing-ceremony", "๐ŸŽ‘"}, + {"pine-decoration", "๐ŸŽ"}, + {"tanabata-tree", "๐ŸŽ‹"}, + {"Christmas-tree", "๐ŸŽ„"}, + {"reminder-ribbon", "๐ŸŽ—๏ธ"}, + {"gold-medal", "๐Ÿฅ‡"}, + {"1st-place-medal", "๐Ÿฅ‡"}, + {"silver-medal", "๐Ÿฅˆ"}, + {"2nd-place-medal", "๐Ÿฅˆ"}, + {"bronze-medal", "๐Ÿฅ‰"}, + {"3rd-place-medal", "๐Ÿฅ‰"}, + {"medal", "๐Ÿ…"}, + {"military-medal", "๐ŸŽ–๏ธ"}, + {"trophy", "๐Ÿ†"}, + {"loudspeaker", "๐Ÿ“ข"}, + {"soccer-ball", "โšฝ"}, + {"baseball", "โšพ"}, + {"softball", "๐ŸฅŽ"}, + {"basketball", "๐Ÿ€"}, + {"volleyball", "๐Ÿ"}, + {"american-football", "๐Ÿˆ"}, + {"rugby-football", "๐Ÿ‰"}, + {"goal-net", "๐Ÿฅ…"}, + {"tennis", "๐ŸŽพ"}, + {"badminton", "๐Ÿธ"}, + {"lacrosse", "๐Ÿฅ"}, + {"cricket-game", "๐Ÿ"}, + {"field-hockey", "๐Ÿ‘"}, + {"ice-hockey", "๐Ÿ’"}, + {"curling-stone", "๐ŸฅŒ"}, + {"sled", "๐Ÿ›ท"}, + {"skis", "๐ŸŽฟ"}, + {"ice-skate", "โ›ธ๏ธ"}, + {"roller-skates", "๐Ÿ›ผ"}, + {"ballet-shoes", "๐Ÿฉฐ"}, + {"skateboard", "๐Ÿ›น"}, + {"flag-in-hole", "โ›ณ"}, + {"direct-hit", "๐ŸŽฏ"}, + {"target", "๐ŸŽฏ"}, + {"bow-and-arrow", "๐Ÿน"}, + {"flying-disc", "๐Ÿฅ"}, + {"boomerang", "๐Ÿชƒ"}, + {"kite", "๐Ÿช"}, + {"fishing-pole", "๐ŸŽฃ"}, + {"diving-mask", "๐Ÿคฟ"}, + {"one-piece-swimsuit", "๐Ÿฉฑ"}, + {"running-shirt", "๐ŸŽฝ"}, + {"martial-arts-uniform", "๐Ÿฅ‹"}, + {"boxing-glove", "๐ŸฅŠ"}, + {"8-ball", "๐ŸŽฑ"}, + {"ping-pong", "๐Ÿ“"}, + {"bowling", "๐ŸŽณ"}, + {"chess-pawn", "โ™Ÿ๏ธ"}, + {"yo-yo", "๐Ÿช€"}, + {"jigsaw", "๐Ÿงฉ"}, + {"video-game", "๐ŸŽฎ"}, + {"joystick", "๐Ÿ•น๏ธ"}, + {"pistol", "๐Ÿ”ซ"}, + {"die", "๐ŸŽฒ"}, + {"slot-machine", "๐ŸŽฐ"}, + {"flower-playing-cards", "๐ŸŽด"}, + {"mahjong-red-dragon", "๐Ÿ€„"}, + {"joker", "๐Ÿƒ"}, + {"wand", "๐Ÿช„"}, + {"game-die", "๐ŸŽฉ"}, + {"camera", "๐Ÿ“ท"}, + {"camera-flash", "๐Ÿ“ธ"}, + {"framed-picture", "๐Ÿ–ผ๏ธ"}, + {"artist-palette", "๐ŸŽจ"}, + {"paintbrush", "๐Ÿ–Œ๏ธ"}, + {"crayon", "๐Ÿ–๏ธ"}, + {"needle", "๐Ÿชก"}, + {"thread", "๐Ÿงต"}, + {"yarn", "๐Ÿงถ"}, + {"piano", "๐ŸŽน"}, + {"musical-keyboard", "๐ŸŽน"}, + {"saxophone", "๐ŸŽท"}, + {"trumpet", "๐ŸŽบ"}, + {"guitar", "๐ŸŽธ"}, + {"banjo", "๐Ÿช•"}, + {"violin", "๐ŸŽป"}, + {"long-drum", "๐Ÿช˜"}, + {"drum", "๐Ÿฅ"}, + {"maracas", "๐Ÿช‡"}, + {"flute", "๐Ÿชˆ"}, + {"accordion", "๐Ÿช—"}, + {"microphone", "๐ŸŽค"}, + {"headphone", "๐ŸŽง"}, + {"level-slider", "๐ŸŽš๏ธ"}, + {"control-knobs", "๐ŸŽ›๏ธ"}, + {"studio-microphone", "๐ŸŽ™๏ธ"}, + {"radio", "๐Ÿ“ป"}, + {"television", "๐Ÿ“บ"}, + {"videocassette", "๐Ÿ“ผ"}, + {"video-camera", "๐Ÿ“น"}, + {"film-projector", "๐Ÿ“ฝ๏ธ"}, + {"movie-camera", "๐ŸŽฅ"}, + {"film", "๐ŸŽž๏ธ"}, + {"clapper", "๐ŸŽฌ"}, + {"performing-arts", "๐ŸŽญ"}, + {"ticket", "๐ŸŽซ"}, + {"admission-tickets", "๐ŸŽŸ๏ธ"}, + {"mobile-phone", "๐Ÿ“ฑ"}, + {"telephone", "โ˜Ž๏ธ"}, + {"telephone-receiver", "๐Ÿ“ž"}, + {"pager", "๐Ÿ“Ÿ"}, + {"fax-machine", "๐Ÿ“ "}, + {"electric-plug", "๐Ÿ”Œ"}, + {"battery-full", "๐Ÿ”‹"}, + {"battery-low", "๐Ÿชซ"}, + {"trackball", "๐Ÿ–ฒ๏ธ"}, + {"computer-disk", "๐Ÿ’ฝ"}, + {"floppy-disk", "๐Ÿ’พ"}, + {"optical-disk", "๐Ÿ’ฟ"}, + {"dvd", "๐Ÿ“€"}, + {"desktop-computer", "๐Ÿ–ฅ๏ธ"}, + {"laptop-computer", "๐Ÿ’ป"}, + {"keyboard", "โŒจ๏ธ"}, + {"printer", "๐Ÿ–จ๏ธ"}, + {"computer-mouse", "๐Ÿ–ฑ๏ธ"}, + {"coin", "๐Ÿช™"}, + {"money-with-wings", "๐Ÿ’ธ"}, + {"dollar", "๐Ÿ’ต"}, + {"yen", "๐Ÿ’ด"}, + {"euro", "๐Ÿ’ถ"}, + {"pound", "๐Ÿ’ท"}, + {"credit-card", "๐Ÿ’ณ"}, + {"money-bag", "๐Ÿ’ฐ"}, + {"receipt", "๐Ÿงพ"}, + {"abacus", "๐Ÿงฎ"}, + {"balance-scale", "โš–๏ธ"}, + {"shopping-cart", "๐Ÿ›’"}, + {"shopping-bags", "๐Ÿ›๏ธ"}, + {"candle", "๐Ÿ•ฏ๏ธ"}, + {"light-bulb", "๐Ÿ’ก"}, + {"flashlight", "๐Ÿ”ฆ"}, + {"red-paper-lantern", "๐Ÿฎ"}, + {"bricks", "๐Ÿงฑ"}, + {"window", "๐ŸชŸ"}, + {"mirror", "๐Ÿชž"}, + {"door", "๐Ÿšช"}, + {"chair", "๐Ÿช‘"}, + {"bed", "๐Ÿ›๏ธ"}, + {"couch-and-lamp", "๐Ÿ›‹๏ธ"}, + {"shower", "๐Ÿšฟ"}, + {"bathtub", "๐Ÿ›"}, + {"toilet", "๐Ÿšฝ"}, + {"roll-of-paper", "๐Ÿงป"}, + {"plunger", "๐Ÿช "}, + {"teddy-bear", "๐Ÿงธ"}, + {"nesting-doll", "๐Ÿช†"}, + {"safety-pin", "๐Ÿงท"}, + {"knot", "๐Ÿชข"}, + {"broom", "๐Ÿงน"}, + {"lotion-bottle", "๐Ÿงด"}, + {"sponge", "๐Ÿงฝ"}, + {"soap", "๐Ÿงผ"}, + {"toothbrush", "๐Ÿชฅ"}, + {"razor", "๐Ÿช’"}, + {"hair-pick", "๐Ÿชฎ"}, + {"basket", "๐Ÿงบ"}, + {"socks", "๐Ÿงฆ"}, + {"gloves", "๐Ÿงค"}, + {"scarf", "๐Ÿงฃ"}, + {"jeans", "๐Ÿ‘–"}, + {"t-shirt", "๐Ÿ‘•"}, + {"womanโ€™s-clothes", "๐Ÿ‘š"}, + {"necktie", "๐Ÿ‘”"}, + {"dress", "๐Ÿ‘—"}, + {"kimono", "๐Ÿ‘˜"}, + {"sari", "๐Ÿฅป"}, + {"bikini", "๐Ÿ‘™"}, + {"shorts", "๐Ÿฉณ"}, + {"swim-brief", "๐Ÿฉฒ"}, + {"coat", "๐Ÿงฅ"}, + {"lab-coat", "๐Ÿฅผ"}, + {"safety-vest", "๐Ÿฆบ"}, + {"rescue-workerโ€™s-helmet", "โ›‘๏ธ"}, + {"military-helmet", "๐Ÿช–"}, + {"graduation-cap", "๐ŸŽ“"}, + {"top-hat", "๐ŸŽฉ"}, + {"womanโ€™s-hat", "๐Ÿ‘’"}, + {"billed-cap", "๐Ÿงข"}, + {"crown", "๐Ÿ‘‘"}, + {"fan", "๐Ÿชญ"}, + {"school-backpack", "๐ŸŽ’"}, + {"clutch-bag", "๐Ÿ‘"}, + {"purse", "๐Ÿ‘›"}, + {"handbag", "๐Ÿ‘œ"}, + {"briefcase", "๐Ÿ’ผ"}, + {"umbrella", "โ˜‚๏ธ"}, + {"closed-umbrella", "๐ŸŒ‚"}, + {"ring", "๐Ÿ’"}, + {"gem-stone", "๐Ÿ’Ž"}, + {"lipstick", "๐Ÿ’„"}, + {"high-heeled-shoe", "๐Ÿ‘ "}, + {"running-shoe", "๐Ÿ‘Ÿ"}, + {"manโ€™s-shoe", "๐Ÿ‘ž"}, + {"flat-shoe", "๐Ÿฅฟ"}, + {"flip-flop", "๐Ÿฉด"}, + {"thong-sandal", "๐Ÿฉด"}, + {"sandal", "๐Ÿ‘ก"}, + {"boot", "๐Ÿ‘ข"}, + {"hiking-boot", "๐Ÿฅพ"}, + {"probing-cane", "๐Ÿฆฏ"}, + {"sunglasses", "๐Ÿ•ถ๏ธ"}, + {"glasses", "๐Ÿ‘“"}, + {"goggles", "๐Ÿฅฝ"}, + {"alembic", "โš—๏ธ"}, + {"petri-dish", "๐Ÿงซ"}, + {"test-tube", "๐Ÿงช"}, + {"syringe", "๐Ÿ’‰"}, + {"pill", "๐Ÿ’Š"}, + {"adhesive-bandage", "๐Ÿฉน"}, + {"stethoscope", "๐Ÿฉบ"}, + {"x-ray", "๐Ÿฉป"}, + {"dna", "๐Ÿงฌ"}, + {"telescope", "๐Ÿ”ญ"}, + {"microscope", "๐Ÿ”ฌ"}, + {"satellite-antenna", "๐Ÿ“ก"}, + {"satellite", "๐Ÿ›ฐ๏ธ"}, + {"fire-extinguisher", "๐Ÿงฏ"}, + {"axe", "๐Ÿช“"}, + {"ladder", "๐Ÿชœ"}, + {"bucket", "๐Ÿชฃ"}, + {"hook", "๐Ÿช"}, + {"magnet", "๐Ÿงฒ"}, + {"toolbox", "๐Ÿงฐ"}, + {"clamp", "๐Ÿ—œ๏ธ"}, + {"nut-and-bolt", "๐Ÿ”ฉ"}, + {"screwdriver", "๐Ÿช›"}, + {"saw", "๐Ÿชš"}, + {"wrench", "๐Ÿ”ง"}, + {"hammer", "๐Ÿ”จ"}, + {"hammer-and-pick", "โš’๏ธ"}, + {"hammer-and-wrench", "๐Ÿ› ๏ธ"}, + {"pick", "โ›๏ธ"}, + {"gear", "โš™๏ธ"}, + {"link", "๐Ÿ”—"}, + {"chains", "โ›“๏ธ"}, + {"paperclip", "๐Ÿ“Ž"}, + {"linked-paperclips", "๐Ÿ–‡๏ธ"}, + {"straight-ruler", "๐Ÿ“"}, + {"triangular-ruler", "๐Ÿ“"}, + {"pen", "๐Ÿ–Š๏ธ"}, + {"fountain-pen", "๐Ÿ–‹๏ธ"}, + {"black-nib", "โœ’๏ธ"}, + {"pencil", "โœ๏ธ"}, + {"memo", "๐Ÿ“"}, + {"open-book", "๐Ÿ“–"}, + {"books", "๐Ÿ“š"}, + {"ledger", "๐Ÿ“’"}, + {"notebook-with-decorative-cover", "๐Ÿ“”"}, + {"closed-book", "๐Ÿ“•"}, + {"notebook", "๐Ÿ““"}, + {"green-book", "๐Ÿ“—"}, + {"blue-book", "๐Ÿ“˜"}, + {"orange-book", "๐Ÿ“™"}, + {"bookmark", "๐Ÿ”–"}, + {"spiral-notepad", "๐Ÿ—’๏ธ"}, + {"page-facing-up", "๐Ÿ“„"}, + {"page-with-curl", "๐Ÿ“ƒ"}, + {"clipboard", "๐Ÿ“‹"}, + {"bookmark-tabs", "๐Ÿ“‘"}, + {"open-file-folder", "๐Ÿ“‚"}, + {"file-folder", "๐Ÿ“"}, + {"card-index-dividers", "๐Ÿ—‚๏ธ"}, + {"card-file-box", "๐Ÿ—ƒ๏ธ"}, + {"file-cabinet", "๐Ÿ—„๏ธ"}, + {"bar-chart", "๐Ÿ“Š"}, + {"chart-increasing", "๐Ÿ“ˆ"}, + {"chart-decreasing", "๐Ÿ“‰"}, + {"card-index", "๐Ÿ“‡"}, + {"id", "๐Ÿชช"}, + {"pushpin", "๐Ÿ“Œ"}, + {"round-pushpin", "๐Ÿ“"}, + {"scissors", "โœ‚๏ธ"}, + {"wastebasket", "๐Ÿ—‘๏ธ"}, + {"newspaper", "๐Ÿ“ฐ"}, + {"rolled-up-newspaper", "๐Ÿ—ž๏ธ"}, + {"label", "๐Ÿท๏ธ"}, + {"package", "๐Ÿ“ฆ"}, + {"closed-mailbox-with-raised", "๐Ÿ“ซ"}, + {"closed-mailbox-with-lowered", "๐Ÿ“ช"}, + {"open-mailbox-with-raised", "๐Ÿ“ฌ"}, + {"open-mailbox-with-lowered", "๐Ÿ“ญ"}, + {"postbox", "๐Ÿ“ฎ"}, + {"envelope", "โœ‰๏ธ"}, + {"e-mail", "๐Ÿ“ง"}, + {"envelope-with-arrow", "๐Ÿ“ฉ"}, + {"incoming-envelope", "๐Ÿ“จ"}, + {"outbox-tray", "๐Ÿ“ค"}, + {"inbox-tray", "๐Ÿ“ฅ"}, + {"ballot-box", "๐Ÿ—ณ๏ธ"}, + {"twelve-o-clock", "๐Ÿ•›"}, + {"twelve-thirty", "๐Ÿ•ง"}, + {"one-o-clock", "๐Ÿ•"}, + {"one-thirty", "๐Ÿ•œ"}, + {"two-o-clock", "๐Ÿ•‘"}, + {"two-thirty", "๐Ÿ•"}, + {"three-o-clock", "๐Ÿ•’"}, + {"three-thirty", "๐Ÿ•ž"}, + {"four-o-clock", "๐Ÿ•“"}, + {"four-thirty", "๐Ÿ•Ÿ"}, + {"five-o-clock", "๐Ÿ•”"}, + {"five-thirty", "๐Ÿ• "}, + {"six-o-clock", "๐Ÿ••"}, + {"six-thirty", "๐Ÿ•ก"}, + {"seven-o-clock", "๐Ÿ•–"}, + {"seven-thirty", "๐Ÿ•ข"}, + {"eight-o-clock", "๐Ÿ•—"}, + {"eight-thirty", "๐Ÿ•ฃ"}, + {"nine-o-clock", "๐Ÿ•˜"}, + {"nine-thirty", "๐Ÿ•ค"}, + {"ten-o-clock", "๐Ÿ•™"}, + {"ten-thirty", "๐Ÿ•ฅ"}, + {"eleven-o-clock", "๐Ÿ•š"}, + {"eleven-thirty", "๐Ÿ•ฆ"}, + {"stopwatch", "โฑ๏ธ"}, + {"watch", "โŒš"}, + {"mantelpiece-clock", "๐Ÿ•ฐ๏ธ"}, + {"hourglass-done", "โŒ›"}, + {"hourglass-not-done", "โณ"}, + {"timer-clock", "โฒ๏ธ"}, + {"alarm-clock", "โฐ"}, + {"calendar", "๐Ÿ“…"}, + {"tear-off-calendar", "๐Ÿ“†"}, + {"spiral-calendar", "๐Ÿ—“๏ธ"}, + {"placard", "๐Ÿชง"}, + {"bellhop-bell", "๐Ÿ›Ž๏ธ"}, + {"bell", "๐Ÿ””"}, + {"postal-horn", "๐Ÿ“ฏ"}, + {"megaphone", "๐Ÿ“ฃ"}, + {"magnifying-glass-tilted-left", "๐Ÿ”"}, + {"magnifying-glass-tilted-right", "๐Ÿ”Ž"}, + {"crystal-ball", "๐Ÿ”ฎ"}, + {"evil-eye", "๐Ÿงฟ"}, + {"nazar-amulet", "๐Ÿงฟ"}, + {"hamsa", "๐Ÿชฌ"}, + {"prayer-beads", "๐Ÿ“ฟ"}, + {"amphora", "๐Ÿบ"}, + {"urn", "โšฑ๏ธ"}, + {"coffin", "โšฐ๏ธ"}, + {"headstone", "๐Ÿชฆ"}, + {"cigarette", "๐Ÿšฌ"}, + {"bomb", "๐Ÿ’ฃ"}, + {"mouse-trap", "๐Ÿชค"}, + {"scroll", "๐Ÿ“œ"}, + {"crossed-swords", "โš”๏ธ"}, + {"dagger", "๐Ÿ—ก๏ธ"}, + {"shield", "๐Ÿ›ก๏ธ"}, + {"old-key", "๐Ÿ—๏ธ"}, + {"key", "๐Ÿ”‘"}, + {"lock-with-key", "๐Ÿ”"}, + {"lock-with-pen", "๐Ÿ”"}, + {"locked", "๐Ÿ”’"}, + {"unlocked", "๐Ÿ”“"}, + {"red-circle", "๐Ÿ”ด"}, + {"orange-circle", "๐ŸŸ "}, + {"yellow-circle", "๐ŸŸก"}, + {"green-circle", "๐ŸŸข"}, + {"blue-circle", "๐Ÿ”ต"}, + {"purple-circle", "๐ŸŸฃ"}, + {"brown-circle", "๐ŸŸค"}, + {"black-circle", "โšซ"}, + {"white-circle", "โšช"}, + {"red-square", "๐ŸŸฅ"}, + {"orange-square", "๐ŸŸง"}, + {"yellow-square", "๐ŸŸจ"}, + {"green-square", "๐ŸŸฉ"}, + {"blue-square", "๐ŸŸฆ"}, + {"purple-square", "๐ŸŸช"}, + {"brown-square", "๐ŸŸซ"}, + {"black-square", "โฌ›"}, + {"white-square", "โฌœ"}, + {"gray-heart", "๐Ÿฉถ"}, + {"diamond", "โ™ฆ๏ธ"}, + {"club", "โ™ฃ๏ธ"}, + {"spade", "โ™ ๏ธ"}, + {"Aries", "โ™ˆ"}, + {"Taurus", "โ™‰"}, + {"Gemini", "โ™Š"}, + {"Cancer", "โ™‹"}, + {"Leo", "โ™Œ"}, + {"Virgo", "โ™"}, + {"Libra", "โ™Ž"}, + {"Scorpio", "โ™"}, + {"Sagittarius", "โ™"}, + {"Capricorn", "โ™‘"}, + {"Aquarius", "โ™’"}, + {"Pisces", "โ™“"}, + {"Ophiuchus", "โ›Ž"}, + {"female-sign", "โ™€๏ธ"}, + {"male-sign", "โ™‚๏ธ"}, + {"trans-sign", "โšง๏ธ"}, + {"thought-bubble", "๐Ÿ’ญ"}, + {"thought-balloon", "๐Ÿ’ญ"}, + {"anger-bubble", "๐Ÿ—ฏ๏ธ"}, + {"speech-bubble", "๐Ÿ’ฌ"}, + {"speech-bubble-leftwards", "๐Ÿ—จ๏ธ"}, + {"exclamation-mark-white", "โ•"}, + {"exclamation", "โ—"}, + {"exclamation-mark", "โ—"}, + {"question-mark-white", "โ”"}, + {"question", "โ“"}, + {"question-mark", "โ“"}, + {"?", "โ“"}, + {"exclamation-question-mark", "โ‰๏ธ"}, + {"!?", "โ‰๏ธ"}, + {"exclamation-double", "โ€ผ๏ธ"}, + {"!!", "โ€ผ๏ธ"}, + {"large-circle", "โญ•"}, + {"x", "โŒ"}, + {"cross-mark", "โŒ"}, + {"prohibited", "๐Ÿšซ"}, + {"no-bicycles", "๐Ÿšณ"}, + {"no-smoking", "๐Ÿšญ"}, + {"no-littering", "๐Ÿšฏ"}, + {"non-potable-water", "๐Ÿšฑ"}, + {"no-pedestrians", "๐Ÿšท"}, + {"no-mobile-phones", "๐Ÿ“ต"}, + {"no-under-eighteen", "๐Ÿ”ž"}, + {"no-sound", "๐Ÿ”•"}, + {"no-bell", "๐Ÿ”•"}, + {"mute", "๐Ÿ”‡"}, + {"a-button", "๐Ÿ…ฐ๏ธ"}, + {"blood-type-a", "๐Ÿ…ฐ๏ธ"}, + {"ab-button", "๐Ÿ†Ž"}, + {"blood-type-ab", "๐Ÿ†Ž"}, + {"b-button", "๐Ÿ…ฑ๏ธ"}, + {"blood-type-b", "๐Ÿ…ฑ๏ธ"}, + {"o-button", "๐Ÿ…พ๏ธ"}, + {"blood-type-o", "๐Ÿ…พ๏ธ"}, + {"cl-button", "๐Ÿ†‘"}, + {"sos", "๐Ÿ†˜"}, + {"stop", "๐Ÿ›‘"}, + {"no-entry", "โ›”"}, + {"name-badge", "๐Ÿ“›"}, + {"hot-springs", "โ™จ๏ธ"}, + {"anger", "๐Ÿ’ข"}, + {"triangle-pointed-down", "๐Ÿ”ป"}, + {"triangle-pointed-up", "๐Ÿ”บ"}, + {"bargain", "๐Ÿ‰"}, + {"secret", "ใŠ™๏ธ"}, + {"congratulations", "ใŠ—๏ธ"}, + {"passing-grade", "๐Ÿˆด"}, + {"no-vacancy", "๐Ÿˆต"}, + {"discount", "๐Ÿˆน"}, + {"prohibited-button", "๐Ÿˆฒ"}, + {"accept", "๐Ÿ‰‘"}, + {"not-free-of-charge", "๐Ÿˆถ"}, + {"free-of-charge", "๐Ÿˆš"}, + {"application", "๐Ÿˆธ"}, + {"open-for-business", "๐Ÿˆบ"}, + {"monthly-amount", "๐Ÿˆท๏ธ"}, + {"eight-pointed-star", "โœด๏ธ"}, + {"diamond-orange-large", "๐Ÿ”ถ"}, + {"diamond-orange-small", "๐Ÿ”ธ"}, + {"bright", "๐Ÿ”†"}, + {"brightness", "๐Ÿ”†"}, + {"dim", "๐Ÿ”…"}, + {"dimness", "๐Ÿ”…"}, + {"vs", "๐Ÿ†š"}, + {"cinema", "๐ŸŽฆ"}, + {"signal-strength", "๐Ÿ“ถ"}, + {"repeat", "๐Ÿ”"}, + {"repeat-one", "๐Ÿ”‚"}, + {"shuffle", "๐Ÿ”€"}, + {"twisted-rightwards-arrows", "๐Ÿ”€"}, + {"arrow-forward", "โ–ถ๏ธ"}, + {"play-button", "โ–ถ๏ธ"}, + {"fast-forward", "โฉ"}, + {"next-track", "โญ๏ธ"}, + {"play-next", "โญ๏ธ"}, + {"next", "โญ๏ธ"}, + {"right-pointing-double-triangle-with-vertical-bar", "โญ๏ธ"}, + {"play-or-pause", "โฏ๏ธ"}, + {"right-pointing-triangle-with-double-vertical-bar", "โฏ๏ธ"}, + {"reverse", "โ—€๏ธ"}, + {"leftwards-triangle", "โ—€๏ธ"}, + {"arrow-backward", "โ—€๏ธ"}, + {"rewind", "โช"}, + {"leftwards-double-triangles", "โช"}, + {"previous", "โฎ๏ธ"}, + {"left-pointing-double-triangle-with-vertical-bar", "โฎ๏ธ"}, + {"upwards", "๐Ÿ”ผ"}, + {"arrow-up", "๐Ÿ”ผ"}, + {"triangle-up", "๐Ÿ”ผ"}, + {"fast-up", "โซ"}, + {"double-triangle-up", "โซ"}, + {"downwards", "๐Ÿ”ฝ"}, + {"arrow-down", "๐Ÿ”ฝ"}, + {"triangle-down", "๐Ÿ”ฝ"}, + {"fast-down", "โฌ"}, + {"double-triangle-down", "โฌ"}, + {"pause", "โธ๏ธ"}, + {"double-vertical-bar", "โธ๏ธ"}, + {"stop-button", "โน๏ธ"}, + {"square-button", "โน๏ธ"}, + {"record", "โบ๏ธ"}, + {"eject", "โ๏ธ"}, + {"triangle-up-with-horizontal-bar", "โ๏ธ"}, + {"phone-off", "๐Ÿ“ด"}, + {"wireless", "๐Ÿ›œ"}, + {"vibration", "๐Ÿ“ณ"}, + {"vibration-mode", "๐Ÿ“ณ"}, + {"phone-with-arrow", "๐Ÿ“ฒ"}, + {"low-volume", "๐Ÿ”ˆ"}, + {"speaker-low-volume", "๐Ÿ”ˆ"}, + {"medium-volume", "๐Ÿ”‰"}, + {"speaker-medium-volume", "๐Ÿ”‰"}, + {"high-volume", "๐Ÿ”Š"}, + {"speaker-high-volume", "๐Ÿ”Š"}, + {"musical-score", "๐ŸŽผ"}, + {"treble-clef", "๐ŸŽผ"}, + {"musical-note", "๐ŸŽต"}, + {"musical-notes", "๐ŸŽถ"}, + {"radioactive", "โ˜ข๏ธ"}, + {"biohazard", "โ˜ฃ๏ธ"}, + {"warning", "โš ๏ธ"}, + {"children-crossing", "๐Ÿšธ"}, + {"fleur-de-lis", "โšœ๏ธ"}, + {"trident-emblem", "๐Ÿ”ฑ"}, + {"part-alternation-mark", "ใ€ฝ๏ธ"}, + {"Japanese-symbol-for-beginner", "๐Ÿ”ฐ"}, + {"beginner", "๐Ÿ”ฐ"}, + {"eight-spoked-asterisk", "โœณ๏ธ"}, + {"sparkle", "โ‡๏ธ"}, + {"recycling-symbol", "โ™ป๏ธ"}, + {"currency-exchange", "๐Ÿ’ฑ"}, + {"dollar-sign", "๐Ÿ’ฒ"}, + {"chart-increasing-with-yen", "๐Ÿ’น"}, + {"reserved", "๐Ÿˆฏ"}, + {"x-mark", "โŽ"}, + {"cross mark button", "โŽ"}, + {"no-mark", "โŽ"}, + {"check-mark", "โœ…"}, + {"check-mark-green", "โœ…"}, + {"check-mark-black", "โœ”๏ธ"}, + {"check-mark-button", "โ˜‘๏ธ"}, + {"vote", "โ˜‘๏ธ"}, + {"up-arrow", "โฌ†๏ธ"}, + {"up-right-arrow", "โ†—๏ธ"}, + {"right-arrow", "โžก๏ธ"}, + {"down-right-arrow", "โ†˜๏ธ"}, + {"down-arrow", "โฌ‡๏ธ"}, + {"down-left-arrow", "โ†™๏ธ"}, + {"left-arrow", "โฌ…๏ธ"}, + {"up-left-arrow", "โ†–๏ธ"}, + {"up-down-arrow", "โ†•๏ธ"}, + {"left-right-arrow", "โ†”๏ธ"}, + {"right-arrow-curving-left", "โ†ฉ๏ธ"}, + {"left-arrow-curving-right", "โ†ช๏ธ"}, + {"right-arrow-curving-up", "โคด๏ธ"}, + {"right-arrow-curving-down", "โคต๏ธ"}, + {"clockwise-arrows", "๐Ÿ”ƒ"}, + {"counterclockwise-arrows", "๐Ÿ”„"}, + {"back", "๐Ÿ”™"}, + {"arrow-back", "๐Ÿ”™"}, + {"on", "๐Ÿ”›"}, + {"arrow-on", "๐Ÿ”›"}, + {"top", "๐Ÿ”"}, + {"arrow-top", "๐Ÿ”"}, + {"end", "๐Ÿ”š"}, + {"arrow-end", "๐Ÿ”š"}, + {"soon", "๐Ÿ”œ"}, + {"arrow-soon", "๐Ÿ”œ"}, + {"new", "๐Ÿ†•"}, + {"free", "๐Ÿ†“"}, + {"up!", "๐Ÿ†™"}, + {"ok-button", "๐Ÿ†—"}, + {"cool", "๐Ÿ†’"}, + {"ng", "๐Ÿ†–"}, + {"information", "โ„น๏ธ"}, + {"Parking", "๐Ÿ…ฟ๏ธ"}, + {"here", "๐Ÿˆ"}, + {"service-charge", "๐Ÿˆ‚๏ธ"}, + {"vacancy", "๐Ÿˆณ"}, + {"symbols", "๐Ÿ”ฃ"}, + {"letters", "๐Ÿ”ค"}, + {"abc", "๐Ÿ”ค"}, + {"uppercase-letters", "๐Ÿ” "}, + {"lowercase-letters", "๐Ÿ”ก"}, + {"numbers", "๐Ÿ”ข"}, + {"#", "#๏ธโƒฃ"}, + {"number-sign", "#๏ธโƒฃ"}, + {"asterisk", "*๏ธโƒฃ"}, + {"keycap-asterisk", "*๏ธโƒฃ"}, + {"zero", "0๏ธโƒฃ"}, + {"keycap-zero", "0๏ธโƒฃ"}, + {"one", "1๏ธโƒฃ"}, + {"keycap-one", "1๏ธโƒฃ"}, + {"two", "2๏ธโƒฃ"}, + {"keycap-two", "2๏ธโƒฃ"}, + {"three", "3๏ธโƒฃ"}, + {"keycap-three", "3๏ธโƒฃ"}, + {"four", "4๏ธโƒฃ"}, + {"keycap-four", "4๏ธโƒฃ"}, + {"five", "5๏ธโƒฃ"}, + {"keycap-five", "5๏ธโƒฃ"}, + {"six", "6๏ธโƒฃ"}, + {"keycap-six", "6๏ธโƒฃ"}, + {"seven", "7๏ธโƒฃ"}, + {"keycap-seven", "7๏ธโƒฃ"}, + {"eight", "8๏ธโƒฃ"}, + {"keycap-eight", "8๏ธโƒฃ"}, + {"nine", "9๏ธโƒฃ"}, + {"keycap-nine", "9๏ธโƒฃ"}, + {"ten", "๐Ÿ”Ÿ"}, + {"keycap-ten", "๐Ÿ”Ÿ"}, + {"diamond-jewel", "๐Ÿ’ "}, + {"blue-diamond-large", "๐Ÿ”ท"}, + {"blue-diamond-small", "๐Ÿ”น"}, + {"globe", "๐ŸŒ"}, + {"ATM", "๐Ÿง"}, + {"metro-sign", "โ“‚๏ธ"}, + {"circled-m", "โ“‚๏ธ"}, + {"water-closet", "๐Ÿšพ"}, + {"restroom", "๐Ÿšป"}, + {"mens-room", "๐Ÿšน"}, + {"womens-room", "๐Ÿšบ"}, + {"wheelchair-symbol", "โ™ฟ"}, + {"baby-symbol", "๐Ÿšผ"}, + {"elevator", "๐Ÿ›—"}, + {"litter", "๐Ÿšฎ"}, + {"water-faucet", "๐Ÿšฐ"}, + {"passport-control", "๐Ÿ›‚"}, + {"customs", "๐Ÿ›ƒ"}, + {"baggage-claim", "๐Ÿ›„"}, + {"left-luggage", "๐Ÿ›…"}, + {"atom-symbol", "โš›๏ธ"}, + {"place-of-worship", "๐Ÿ›"}, + {"om", "๐Ÿ•‰๏ธ"}, + {"wheel-of-dharma", "โ˜ธ๏ธ"}, + {"peace-symbol", "โ˜ฎ๏ธ"}, + {"yin-yang", "โ˜ฏ๏ธ"}, + {"star-and-crescent", "โ˜ช๏ธ"}, + {"khanda", "๐Ÿชฏ"}, + {"latin-cross", "โœ๏ธ"}, + {"orthodox-cross", "โ˜ฆ๏ธ"}, + {"star-of-David", "โœก๏ธ"}, + {"star-of-david-with-dot", "๐Ÿ”ฏ"}, + {"menorah", "๐Ÿ•Ž"}, + {"infinity", "โ™พ๏ธ"}, + {"id-button", "๐Ÿ†”"}, + {"medical-symbol", "โš•๏ธ"}, + {"multiplication-x", "โœ–๏ธ"}, + {"plus-sign", "โž•"}, + {"+", "โž•"}, + {"minus-sign", "โž–"}, + {"-", "โž–"}, + {"division-sign", "โž—"}, + {"equals-sign", "๐ŸŸฐ"}, + {"=", "๐ŸŸฐ"}, + {"curly-loop", "โžฐ"}, + {"curly-loop-double", "โžฟ"}, + {"wavy-dash", "ใ€ฐ๏ธ"}, + {"copyright", "ยฉ๏ธ"}, + {"registered", "ยฎ๏ธ"}, + {"trade-mark", "โ„ข๏ธ"}, + {"radio-button", "๐Ÿ”˜"}, + {"white-square-button", "๐Ÿ”ณ"}, + {"black-square-medium", "โ—ผ๏ธ"}, + {"black-square-medium-small", "โ—พ"}, + {"black-square-small", "โ–ช๏ธ"}, + {"button-black-square", "๐Ÿ”ฒ"}, + {"white-square-medium", "โ—ป๏ธ"}, + {"white-square-medium-small", "โ—ฝ"}, + {"white-square-small", "โ–ซ๏ธ"}, + {"eye-bubble", "๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ"}, + {"chequered-flag", "๐Ÿ"}, + {"triangular-flag", "๐Ÿšฉ"}, + {"crossed-flags", "๐ŸŽŒ"}, + {"black-flag", "๐Ÿด"}, + {"white-flag", "๐Ÿณ๏ธ"}, + {"rainbow-flag", "๐Ÿณ๏ธโ€๐ŸŒˆ"}, + {"trans-flag", "๐Ÿณ๏ธโ€โšง๏ธ"}, + {"pirate-flag", "๐Ÿดโ€โ˜ ๏ธ"}, + {"Ascension-Island-flag", "๐Ÿ‡ฆ๐Ÿ‡จ"}, + {"Andorra-flag", "๐Ÿ‡ฆ๐Ÿ‡ฉ"}, + {"United-Arab-Emirates-flag", "๐Ÿ‡ฆ๐Ÿ‡ช"}, + {"Afghanistan-flag", "๐Ÿ‡ฆ๐Ÿ‡ซ"}, + {"Antigua-Barbuda-flag", "๐Ÿ‡ฆ๐Ÿ‡ฌ"}, + {"Anguilla-flag", "๐Ÿ‡ฆ๐Ÿ‡ฎ"}, + {"Albania-flag", "๐Ÿ‡ฆ๐Ÿ‡ฑ"}, + {"Armenia-flag", "๐Ÿ‡ฆ๐Ÿ‡ฒ"}, + {"Angola-flag", "๐Ÿ‡ฆ๐Ÿ‡ด"}, + {"Antarctica-flag", "๐Ÿ‡ฆ๐Ÿ‡ถ"}, + {"Argentina-flag", "๐Ÿ‡ฆ๐Ÿ‡ท"}, + {"American-Samoa-flag", "๐Ÿ‡ฆ๐Ÿ‡ธ"}, + {"Austria-flag", "๐Ÿ‡ฆ๐Ÿ‡น"}, + {"Australia-flag", "๐Ÿ‡ฆ๐Ÿ‡บ"}, + {"Aruba-flag", "๐Ÿ‡ฆ๐Ÿ‡ผ"}, + {"ร…land-Islands-flag", "๐Ÿ‡ฆ๐Ÿ‡ฝ"}, + {"Azerbaijan-flag", "๐Ÿ‡ฆ๐Ÿ‡ฟ"}, + {"Bosnia-Herzegovina-flag", "๐Ÿ‡ง๐Ÿ‡ฆ"}, + {"Barbados-flag", "๐Ÿ‡ง๐Ÿ‡ง"}, + {"Bangladesh-flag", "๐Ÿ‡ง๐Ÿ‡ฉ"}, + {"Belgium-flag", "๐Ÿ‡ง๐Ÿ‡ช"}, + {"Burkina-Faso-flag", "๐Ÿ‡ง๐Ÿ‡ซ"}, + {"Bulgaria-flag", "๐Ÿ‡ง๐Ÿ‡ฌ"}, + {"Bahrain-flag", "๐Ÿ‡ง๐Ÿ‡ญ"}, + {"Burundi-flag", "๐Ÿ‡ง๐Ÿ‡ฎ"}, + {"Benin-flag", "๐Ÿ‡ง๐Ÿ‡ฏ"}, + {"St-Barthรฉlemy-flag", "๐Ÿ‡ง๐Ÿ‡ฑ"}, + {"Bermuda-flag", "๐Ÿ‡ง๐Ÿ‡ฒ"}, + {"Brunei-flag", "๐Ÿ‡ง๐Ÿ‡ณ"}, + {"Bolivia-flag", "๐Ÿ‡ง๐Ÿ‡ด"}, + {"Caribbean-Netherlands-flag", "๐Ÿ‡ง๐Ÿ‡ถ"}, + {"Brazil-flag", "๐Ÿ‡ง๐Ÿ‡ท"}, + {"Bahamas-flag", "๐Ÿ‡ง๐Ÿ‡ธ"}, + {"Bhutan-flag", "๐Ÿ‡ง๐Ÿ‡น"}, + {"Bouvet-Island-flag", "๐Ÿ‡ง๐Ÿ‡ป"}, + {"Botswana-flag", "๐Ÿ‡ง๐Ÿ‡ผ"}, + {"Belarus-flag", "๐Ÿ‡ง๐Ÿ‡พ"}, + {"Belize-flag", "๐Ÿ‡ง๐Ÿ‡ฟ"}, + {"Canada-flag", "๐Ÿ‡จ๐Ÿ‡ฆ"}, + {"Cocos-Islands-flag", "๐Ÿ‡จ๐Ÿ‡จ"}, + {"Congo-Kinshasa-flag", "๐Ÿ‡จ๐Ÿ‡ฉ"}, + {"Central-African-Republic-flag", "๐Ÿ‡จ๐Ÿ‡ซ"}, + {"Congo-Brazzaville-flag", "๐Ÿ‡จ๐Ÿ‡ฌ"}, + {"Switzerland-flag", "๐Ÿ‡จ๐Ÿ‡ญ"}, + {"Cรดte-dโ€™Ivoire-flag", "๐Ÿ‡จ๐Ÿ‡ฎ"}, + {"Cook-Islands-flag", "๐Ÿ‡จ๐Ÿ‡ฐ"}, + {"Chile-flag", "๐Ÿ‡จ๐Ÿ‡ฑ"}, + {"Cameroon-flag", "๐Ÿ‡จ๐Ÿ‡ฒ"}, + {"China-flag", "๐Ÿ‡จ๐Ÿ‡ณ"}, + {"Colombia-flag", "๐Ÿ‡จ๐Ÿ‡ด"}, + {"Clipperton-Island-flag", "๐Ÿ‡จ๐Ÿ‡ต"}, + {"Costa-Rica-flag", "๐Ÿ‡จ๐Ÿ‡ท"}, + {"Cuba-flag", "๐Ÿ‡จ๐Ÿ‡บ"}, + {"Cape-Verde-flag", "๐Ÿ‡จ๐Ÿ‡ป"}, + {"Curaรงao-flag", "๐Ÿ‡จ๐Ÿ‡ผ"}, + {"Christmas-Island-flag", "๐Ÿ‡จ๐Ÿ‡ฝ"}, + {"Cyprus-flag", "๐Ÿ‡จ๐Ÿ‡พ"}, + {"Czechia-flag", "๐Ÿ‡จ๐Ÿ‡ฟ"}, + {"Germany-flag", "๐Ÿ‡ฉ๐Ÿ‡ช"}, + {"Diego-Garcia-flag", "๐Ÿ‡ฉ๐Ÿ‡ฌ"}, + {"Djibouti-flag", "๐Ÿ‡ฉ๐Ÿ‡ฏ"}, + {"Denmark-flag", "๐Ÿ‡ฉ๐Ÿ‡ฐ"}, + {"Dominica-flag", "๐Ÿ‡ฉ๐Ÿ‡ฒ"}, + {"Dominican Republic-flag", "๐Ÿ‡ฉ๐Ÿ‡ด"}, + {"Algeria-flag", "๐Ÿ‡ฉ๐Ÿ‡ฟ"}, + {"Ceuta-Melilla-flag", "๐Ÿ‡ช๐Ÿ‡ฆ"}, + {"Ecuador-flag", "๐Ÿ‡ช๐Ÿ‡จ"}, + {"Estonia-flag", "๐Ÿ‡ช๐Ÿ‡ช"}, + {"Egypt-flag", "๐Ÿ‡ช๐Ÿ‡ฌ"}, + {"Western-Sahara-flag", "๐Ÿ‡ช๐Ÿ‡ญ"}, + {"Eritrea-flag", "๐Ÿ‡ช๐Ÿ‡ท"}, + {"Spain-flag", "๐Ÿ‡ช๐Ÿ‡ธ"}, + {"Ethiopia-flag", "๐Ÿ‡ช๐Ÿ‡น"}, + {"European-Union-flag", "๐Ÿ‡ช๐Ÿ‡บ"}, + {"Finland-flag", "๐Ÿ‡ซ๐Ÿ‡ฎ"}, + {"Fiji-flag", "๐Ÿ‡ซ๐Ÿ‡ฏ"}, + {"Falkland-Islands-flag", "๐Ÿ‡ซ๐Ÿ‡ฐ"}, + {"Micronesia-flag", "๐Ÿ‡ซ๐Ÿ‡ฒ"}, + {"Faroe-Islands-flag", "๐Ÿ‡ซ๐Ÿ‡ด"}, + {"France-flag", "๐Ÿ‡ซ๐Ÿ‡ท"}, + {"Gabon-flag", "๐Ÿ‡ฌ๐Ÿ‡ฆ"}, + {"United-Kingdom-flag", "๐Ÿ‡ฌ๐Ÿ‡ง"}, + {"Grenada-flag", "๐Ÿ‡ฌ๐Ÿ‡ฉ"}, + {"Georgia-flag", "๐Ÿ‡ฌ๐Ÿ‡ช"}, + {"French Guiana-flag", "๐Ÿ‡ฌ๐Ÿ‡ซ"}, + {"Guernsey-flag", "๐Ÿ‡ฌ๐Ÿ‡ฌ"}, + {"Ghana-flag", "๐Ÿ‡ฌ๐Ÿ‡ญ"}, + {"Gibraltar-flag", "๐Ÿ‡ฌ๐Ÿ‡ฎ"}, + {"Greenland-flag", "๐Ÿ‡ฌ๐Ÿ‡ฑ"}, + {"Gambia-flag", "๐Ÿ‡ฌ๐Ÿ‡ฒ"}, + {"Guinea-flag", "๐Ÿ‡ฌ๐Ÿ‡ณ"}, + {"Guadeloupe-flag", "๐Ÿ‡ฌ๐Ÿ‡ต"}, + {"Equatorial-Guinea-flag", "๐Ÿ‡ฌ๐Ÿ‡ถ"}, + {"Greece-flag", "๐Ÿ‡ฌ๐Ÿ‡ท"}, + {"South-Georgia-South-flag", "๐Ÿ‡ฌ๐Ÿ‡ธ"}, + {"Guatemala-flag", "๐Ÿ‡ฌ๐Ÿ‡น"}, + {"Guam-flag", "๐Ÿ‡ฌ๐Ÿ‡บ"}, + {"Guinea-Bissau-flag", "๐Ÿ‡ฌ๐Ÿ‡ผ"}, + {"Guyana-flag", "๐Ÿ‡ฌ๐Ÿ‡พ"}, + {"Hong-Kong-SAR-China-flag", "๐Ÿ‡ญ๐Ÿ‡ฐ"}, + {"Heard-McDonald Islands-flag", "๐Ÿ‡ญ๐Ÿ‡ฒ"}, + {"Honduras-flag", "๐Ÿ‡ญ๐Ÿ‡ณ"}, + {"Croatia-flag", "๐Ÿ‡ญ๐Ÿ‡ท"}, + {"Haiti-flag", "๐Ÿ‡ญ๐Ÿ‡น"}, + {"Hungary-flag", "๐Ÿ‡ญ๐Ÿ‡บ"}, + {"Canary-Islands-flag", "๐Ÿ‡ฎ๐Ÿ‡จ"}, + {"Indonesia-flag", "๐Ÿ‡ฎ๐Ÿ‡ฉ"}, + {"Ireland-flag", "๐Ÿ‡ฎ๐Ÿ‡ช"}, + {"Israel-flag", "๐Ÿ‡ฎ๐Ÿ‡ฑ"}, + {"Isle-of-Man-flag", "๐Ÿ‡ฎ๐Ÿ‡ฒ"}, + {"India-flag", "๐Ÿ‡ฎ๐Ÿ‡ณ"}, + {"British-Indian-Ocean-Territory-flag", "๐Ÿ‡ฎ๐Ÿ‡ด"}, + {"Iraq-flag", "๐Ÿ‡ฎ๐Ÿ‡ถ"}, + {"Iran-flag", "๐Ÿ‡ฎ๐Ÿ‡ท"}, + {"Iceland-flag", "๐Ÿ‡ฎ๐Ÿ‡ธ"}, + {"Italy-flag", "๐Ÿ‡ฎ๐Ÿ‡น"}, + {"Jersey-flag", "๐Ÿ‡ฏ๐Ÿ‡ช"}, + {"Jamaica-flag", "๐Ÿ‡ฏ๐Ÿ‡ฒ"}, + {"Jordan-flag", "๐Ÿ‡ฏ๐Ÿ‡ด"}, + {"Japan-flag", "๐Ÿ‡ฏ๐Ÿ‡ต"}, + {"Kenya-flag", "๐Ÿ‡ฐ๐Ÿ‡ช"}, + {"Kyrgyzstan-flag", "๐Ÿ‡ฐ๐Ÿ‡ฌ"}, + {"Cambodia-flag", "๐Ÿ‡ฐ๐Ÿ‡ญ"}, + {"Kiribati-flag", "๐Ÿ‡ฐ๐Ÿ‡ฎ"}, + {"Comoros-flag", "๐Ÿ‡ฐ๐Ÿ‡ฒ"}, + {"St. Kitts & Nevis-flag", "๐Ÿ‡ฐ๐Ÿ‡ณ"}, + {"North Korea-flag", "๐Ÿ‡ฐ๐Ÿ‡ต"}, + {"South Korea-flag", "๐Ÿ‡ฐ๐Ÿ‡ท"}, + {"Kuwait-flag", "๐Ÿ‡ฐ๐Ÿ‡ผ"}, + {"Cayman Islands-flag", "๐Ÿ‡ฐ๐Ÿ‡พ"}, + {"Kazakhstan-flag", "๐Ÿ‡ฐ๐Ÿ‡ฟ"}, + {"Laos-flag", "๐Ÿ‡ฑ๐Ÿ‡ฆ"}, + {"Lebanon-flag", "๐Ÿ‡ฑ๐Ÿ‡ง"}, + {"St. Lucia-flag", "๐Ÿ‡ฑ๐Ÿ‡จ"}, + {"Liechtenstein-flag", "๐Ÿ‡ฑ๐Ÿ‡ฎ"}, + {"Sri Lanka-flag", "๐Ÿ‡ฑ๐Ÿ‡ฐ"}, + {"Liberia-flag", "๐Ÿ‡ฑ๐Ÿ‡ท"}, + {"Lesotho-flag", "๐Ÿ‡ฑ๐Ÿ‡ธ"}, + {"Lithuania-flag", "๐Ÿ‡ฑ๐Ÿ‡น"}, + {"Luxembourg-flag", "๐Ÿ‡ฑ๐Ÿ‡บ"}, + {"Latvia-flag", "๐Ÿ‡ฑ๐Ÿ‡ป"}, + {"Libya-flag", "๐Ÿ‡ฑ๐Ÿ‡พ"}, + {"Morocco-flag", "๐Ÿ‡ฒ๐Ÿ‡ฆ"}, + {"Monaco-flag", "๐Ÿ‡ฒ๐Ÿ‡จ"}, + {"Moldova-flag", "๐Ÿ‡ฒ๐Ÿ‡ฉ"}, + {"Montenegro-flag", "๐Ÿ‡ฒ๐Ÿ‡ช"}, + {"St-Martin-flag", "๐Ÿ‡ฒ๐Ÿ‡ซ"}, + {"Madagascar-flag", "๐Ÿ‡ฒ๐Ÿ‡ฌ"}, + {"Marshall-Islands-flag", "๐Ÿ‡ฒ๐Ÿ‡ญ"}, + {"Macedonia-flag", "๐Ÿ‡ฒ๐Ÿ‡ฐ"}, + {"Mali-flag", "๐Ÿ‡ฒ๐Ÿ‡ฑ"}, + {"Myanmar-flag", "๐Ÿ‡ฒ๐Ÿ‡ฒ"}, + {"Mongolia-flag", "๐Ÿ‡ฒ๐Ÿ‡ณ"}, + {"Macau-SAR-China-flag", "๐Ÿ‡ฒ๐Ÿ‡ด"}, + {"Northern-Mariana-Islands-flag", "๐Ÿ‡ฒ๐Ÿ‡ต"}, + {"Martinique-flag", "๐Ÿ‡ฒ๐Ÿ‡ถ"}, + {"Mauritania-flag", "๐Ÿ‡ฒ๐Ÿ‡ท"}, + {"Montserrat-flag", "๐Ÿ‡ฒ๐Ÿ‡ธ"}, + {"Malta-flag", "๐Ÿ‡ฒ๐Ÿ‡น"}, + {"Mauritius-flag", "๐Ÿ‡ฒ๐Ÿ‡บ"}, + {"Maldives-flag", "๐Ÿ‡ฒ๐Ÿ‡ป"}, + {"Malawi-flag", "๐Ÿ‡ฒ๐Ÿ‡ผ"}, + {"Mexico-flag", "๐Ÿ‡ฒ๐Ÿ‡ฝ"}, + {"Malaysia-flag", "๐Ÿ‡ฒ๐Ÿ‡พ"}, + {"Mozambique-flag", "๐Ÿ‡ฒ๐Ÿ‡ฟ"}, + {"Namibia-flag", "๐Ÿ‡ณ๐Ÿ‡ฆ"}, + {"New-Caledonia-flag", "๐Ÿ‡ณ๐Ÿ‡จ"}, + {"Niger-flag", "๐Ÿ‡ณ๐Ÿ‡ช"}, + {"Norfolk-Island-flag", "๐Ÿ‡ณ๐Ÿ‡ซ"}, + {"Nigeria-flag", "๐Ÿ‡ณ๐Ÿ‡ฌ"}, + {"Nicaragua-flag", "๐Ÿ‡ณ๐Ÿ‡ฎ"}, + {"Netherlands-flag", "๐Ÿ‡ณ๐Ÿ‡ฑ"}, + {"Norway-flag", "๐Ÿ‡ณ๐Ÿ‡ด"}, + {"Nepal-flag", "๐Ÿ‡ณ๐Ÿ‡ต"}, + {"Nauru-flag", "๐Ÿ‡ณ๐Ÿ‡ท"}, + {"Niue-flag", "๐Ÿ‡ณ๐Ÿ‡บ"}, + {"New-Zealand-flag", "๐Ÿ‡ณ๐Ÿ‡ฟ"}, + {"Oman-flag", "๐Ÿ‡ด๐Ÿ‡ฒ"}, + {"Panama-flag", "๐Ÿ‡ต๐Ÿ‡ฆ"}, + {"Peru-flag", "๐Ÿ‡ต๐Ÿ‡ช"}, + {"French-Polynesia-flag", "๐Ÿ‡ต๐Ÿ‡ซ"}, + {"Papua-New-Guinea-flag", "๐Ÿ‡ต๐Ÿ‡ฌ"}, + {"Philippines-flag", "๐Ÿ‡ต๐Ÿ‡ญ"}, + {"Pakistan-flag", "๐Ÿ‡ต๐Ÿ‡ฐ"}, + {"Poland-flag", "๐Ÿ‡ต๐Ÿ‡ฑ"}, + {"St-Pierre-Miquelon-flag", "๐Ÿ‡ต๐Ÿ‡ฒ"}, + {"Pitcairn-Islands-flag", "๐Ÿ‡ต๐Ÿ‡ณ"}, + {"Puerto-Rico-flag", "๐Ÿ‡ต๐Ÿ‡ท"}, + {"Palestinian-Territories-flag", "๐Ÿ‡ต๐Ÿ‡ธ"}, + {"Portugal-flag", "๐Ÿ‡ต๐Ÿ‡น"}, + {"Palau-flag", "๐Ÿ‡ต๐Ÿ‡ผ"}, + {"Paraguay-flag", "๐Ÿ‡ต๐Ÿ‡พ"}, + {"Qatar-flag", "๐Ÿ‡ถ๐Ÿ‡ฆ"}, + {"Rรฉunion-flag", "๐Ÿ‡ท๐Ÿ‡ช"}, + {"Romania-flag", "๐Ÿ‡ท๐Ÿ‡ด"}, + {"Serbia-flag", "๐Ÿ‡ท๐Ÿ‡ธ"}, + {"Russia-flag", "๐Ÿ‡ท๐Ÿ‡บ"}, + {"Rwanda-flag", "๐Ÿ‡ท๐Ÿ‡ผ"}, + {"Saudi-Arabia-flag", "๐Ÿ‡ธ๐Ÿ‡ฆ"}, + {"Solomon-Islands-flag", "๐Ÿ‡ธ๐Ÿ‡ง"}, + {"Seychelles-flag", "๐Ÿ‡ธ๐Ÿ‡จ"}, + {"Sudan-flag", "๐Ÿ‡ธ๐Ÿ‡ฉ"}, + {"Sweden-flag", "๐Ÿ‡ธ๐Ÿ‡ช"}, + {"Singapore-flag", "๐Ÿ‡ธ๐Ÿ‡ฌ"}, + {"St-Helena-flag", "๐Ÿ‡ธ๐Ÿ‡ญ"}, + {"Slovenia-flag", "๐Ÿ‡ธ๐Ÿ‡ฎ"}, + {"Svalbard-Jan Mayen-flag", "๐Ÿ‡ธ๐Ÿ‡ฏ"}, + {"Slovakia-flag", "๐Ÿ‡ธ๐Ÿ‡ฐ"}, + {"Sierra-Leone-flag", "๐Ÿ‡ธ๐Ÿ‡ฑ"}, + {"San-Marino-flag", "๐Ÿ‡ธ๐Ÿ‡ฒ"}, + {"Senegal-flag", "๐Ÿ‡ธ๐Ÿ‡ณ"}, + {"Somalia-flag", "๐Ÿ‡ธ๐Ÿ‡ด"}, + {"Suriname-flag", "๐Ÿ‡ธ๐Ÿ‡ท"}, + {"South-Sudan-flag", "๐Ÿ‡ธ๐Ÿ‡ธ"}, + {"Sรฃo-Tomรฉ-Prรญncipe-flag", "๐Ÿ‡ธ๐Ÿ‡น"}, + {"El-Salvador-flag", "๐Ÿ‡ธ๐Ÿ‡ป"}, + {"Sint-Maarten-flag", "๐Ÿ‡ธ๐Ÿ‡ฝ"}, + {"Syria-flag", "๐Ÿ‡ธ๐Ÿ‡พ"}, + {"Swaziland-flag", "๐Ÿ‡ธ๐Ÿ‡ฟ"}, + {"Tristan-da-Cunha-flag", "๐Ÿ‡น๐Ÿ‡ฆ"}, + {"Turks-Caicos Islands-flag", "๐Ÿ‡น๐Ÿ‡จ"}, + {"Chad-flag", "๐Ÿ‡น๐Ÿ‡ฉ"}, + {"French-Southern-Territories-flag", "๐Ÿ‡น๐Ÿ‡ซ"}, + {"Togo-flag", "๐Ÿ‡น๐Ÿ‡ฌ"}, + {"Thailand-flag", "๐Ÿ‡น๐Ÿ‡ญ"}, + {"Tajikistan-flag", "๐Ÿ‡น๐Ÿ‡ฏ"}, + {"Tokelau-flag", "๐Ÿ‡น๐Ÿ‡ฐ"}, + {"Timor-Leste-flag", "๐Ÿ‡น๐Ÿ‡ฑ"}, + {"Turkmenistan-flag", "๐Ÿ‡น๐Ÿ‡ฒ"}, + {"Tunisia-flag", "๐Ÿ‡น๐Ÿ‡ณ"}, + {"Tonga-flag", "๐Ÿ‡น๐Ÿ‡ด"}, + {"Turkey-flag", "๐Ÿ‡น๐Ÿ‡ท"}, + {"Trinidad-Tobago-flag", "๐Ÿ‡น๐Ÿ‡น"}, + {"Tuvalu-flag", "๐Ÿ‡น๐Ÿ‡ป"}, + {"Taiwan-flag", "๐Ÿ‡น๐Ÿ‡ผ"}, + {"Tanzania-flag", "๐Ÿ‡น๐Ÿ‡ฟ"}, + {"Ukraine-flag", "๐Ÿ‡บ๐Ÿ‡ฆ"}, + {"Uganda-flag", "๐Ÿ‡บ๐Ÿ‡ฌ"}, + {"US-Outlying Islands-flag", "๐Ÿ‡บ๐Ÿ‡ฒ"}, + {"United-Nations-flag", "๐Ÿ‡บ๐Ÿ‡ณ"}, + {"United-States-flag", "๐Ÿ‡บ๐Ÿ‡ธ"}, + {"Uruguay-flag", "๐Ÿ‡บ๐Ÿ‡พ"}, + {"Uzbekistan-flag", "๐Ÿ‡บ๐Ÿ‡ฟ"}, + {"Vatican City-flag", "๐Ÿ‡ป๐Ÿ‡ฆ"}, + {"St-Vincent-Grenadines-flag", "๐Ÿ‡ป๐Ÿ‡จ"}, + {"Venezuela-flag", "๐Ÿ‡ป๐Ÿ‡ช"}, + {"British-Virgin Islands-flag", "๐Ÿ‡ป๐Ÿ‡ฌ"}, + {"US-Virgin-Islands-flag", "๐Ÿ‡ป๐Ÿ‡ฎ"}, + {"Vietnam-flag", "๐Ÿ‡ป๐Ÿ‡ณ"}, + {"Vanuatu-flag", "๐Ÿ‡ป๐Ÿ‡บ"}, + {"Wallis-Futuna-flag", "๐Ÿ‡ผ๐Ÿ‡ซ"}, + {"Samoa-flag", "๐Ÿ‡ผ๐Ÿ‡ธ"}, + {"Kosovo-flag", "๐Ÿ‡ฝ๐Ÿ‡ฐ"}, + {"Yemen-flag", "๐Ÿ‡พ๐Ÿ‡ช"}, + {"Mayotte-flag", "๐Ÿ‡พ๐Ÿ‡น"}, + {"South-Africa-flag", "๐Ÿ‡ฟ๐Ÿ‡ฆ"}, + {"Zambia-flag", "๐Ÿ‡ฟ๐Ÿ‡ฒ"}, + {"Zimbabwe-flag", "๐Ÿ‡ฟ๐Ÿ‡ผ"}, + {"England-flag", "๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ"}, + {"Scotland-flag", "๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ"}, + {"Wales-flag", "๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ"}, +}; + +Str::StringRef FindEmoji( Str::StringRef emoji ) +{ + auto it = emojimap.find( emoji.c_str() ); + if ( it == emojimap.end() ) + { + return ""; + } + return it->second; +} + + diff --git a/src/cgame/rocket/emojis/emojimap.h b/src/cgame/rocket/emojis/emojimap.h new file mode 100644 index 00000000000..d70457587c6 --- /dev/null +++ b/src/cgame/rocket/emojis/emojimap.h @@ -0,0 +1,3 @@ +#include "../../cg_local.h" + +Str::StringRef FindEmoji( Str::StringRef emoji ); diff --git a/src/cgame/rocket/emojis/generate_emoji_map.py b/src/cgame/rocket/emojis/generate_emoji_map.py new file mode 100755 index 00000000000..ffbacfa09c7 --- /dev/null +++ b/src/cgame/rocket/emojis/generate_emoji_map.py @@ -0,0 +1,88 @@ +#!/usr/bin/python + +import requests +import sys +import os + +EMOJI_MAP_SRC = 'https://raw.githubusercontent.com/muan/emojilib/main/dist/emoji-en-US.json' +GOOGLE_EMOJI_SRC = 'https://github.com/googlefonts/emoji-metadata/raw/main/emoji_15_0_ordering.json' + +CPLUSPLUS_CODE_HEADER=""" +#include "emojimap.h" + +#include + +const std::unordered_map emojimap = { +""" + +CPLUSPLUS_CODE_FOOTER="""}; + +Str::StringRef FindEmoji( Str::StringRef emoji ) +{ + auto it = emojimap.find( emoji.c_str() ); + if ( it == emojimap.end() ) + { + return ""; + } + return it->second; +} + +""" + +def render_base(base): + s = '' + for codept in base: + s += chr(codept) + return s + +def escapeq(s): + return s.replace('"', '\\"') + +def parse_google_emojis(): + req = requests.get(GOOGLE_EMOJI_SRC) + if req.status_code != 200: + print('Error fetching %s: %s' % (GOOGLE_EMOJI_SRC, req.text), file=sys.stderr) + return None + emojis = {} + groups = req.json() + for group in groups: + for emoji in group['emoji']: + for emoticon in emoji['emoticons']: + if not emoticon in emoji: + emojis[escapeq(emoticon)] = render_base(emoji['base']) + for short in emoji['shortcodes']: + stripped = short[1:-1] + if not stripped in emoji: + emojis[escapeq(stripped)] = render_base(emoji['base']) + return emojis + + +def parse_emojilib_emojis(): + req = requests.get(EMOJI_MAP_SRC) + if req.status_code != 200: + print('Error fetching %s: %s' % (EMOJI_MAP_SRC, req.text), file=sys.stderr) + return None + + emojis = req.json() + # Filter duplicates + dedup = {} + for codepoint, tags in emojis.items(): + for tag in tags: + if not tag in emojis: + dedup[tag] = codepoint + return dedup + + +def main(): + emojis = parse_google_emojis() + if not emojis: + return -1 + print(CPLUSPLUS_CODE_HEADER) + + for tag, codepoint in emojis.items(): + print('\t{"%s", "%s"},' % (tag, codepoint)) + print(CPLUSPLUS_CODE_FOOTER) + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/src/cgame/rocket/rocket.cpp b/src/cgame/rocket/rocket.cpp index 467ca4b7837..eb50d7843cf 100644 --- a/src/cgame/rocket/rocket.cpp +++ b/src/cgame/rocket/rocket.cpp @@ -66,6 +66,7 @@ Maryland 20850 USA. #include "lua/Events.h" #include "lua/Timer.h" #include "../cg_local.h" +#include "emojis/emojimap.h" class DaemonFileInterface : public Rml::FileInterface { @@ -354,6 +355,7 @@ void Rocket_Init() .GetId(); // Set backup font + Rml::GetFontEngineInterface()->LoadFontFace( "fonts/NotoColorEmoji.ttf", /*fallback_face=*/true, Rml::Style::FontWeight::Normal ); Rml::GetFontEngineInterface()->LoadFontFace( "fonts/unifont.ttf", /*fallback_face=*/true, Rml::Style::FontWeight::Normal ); // Initialize keymap @@ -508,6 +510,24 @@ std::string CG_EscapeHTMLText( Str::StringRef text ) return out; } +static Str::StringRef EmojiAt( const char* s ) +{ + if ( s && *s != '[' ) + { + return ""; + } + + const char* bracket = strpbrk( s + 1, "[]" ); + if ( bracket == nullptr || *bracket != ']' ) + { + return ""; + } + + std::string name(s + 1, bracket); + auto e = FindEmoji( name ); + return e; +} + // TODO: Make this take Rml::String as an input. // FIXME: This always parses colors even when RP_QUAKE is not specified. Many callers rely on this behavior. Rml::String Rocket_QuakeToRML( const char *in, int parseFlags = 0 ) @@ -525,6 +545,7 @@ Rml::String Rocket_QuakeToRML( const char *in, int parseFlags = 0 ) { char c = *token.Begin(); const emoticonData_t *emoticon; + Str::StringRef emoji(""); if ( c == '<' ) { if ( span && !spanHasContent ) @@ -571,6 +592,19 @@ Rml::String Rocket_QuakeToRML( const char *in, int parseFlags = 0 ) ++iter; } } + else if ( ( parseFlags & RP_EMOTICONS ) && !( emoji = EmojiAt( token.Begin() ) ).empty() ) + { + if ( span && !spanHasContent ) + { + spanHasContent = true; + out.append( spanstr ); + } + out.append( emoji.c_str() ); + while ( iter != parser.end() && *iter->Begin() != ']' ) + { + ++iter; + } + } else { if ( span && !spanHasContent )