diff --git a/Base/.gitignore b/Base/.gitignore
index f9be8dfe090..d9468659a2a 100644
--- a/Base/.gitignore
+++ b/Base/.gitignore
@@ -1 +1,2 @@
!*
+home/anon/Documents/emoji.txt
diff --git a/Base/home/anon/Documents/emoji.txt b/Base/home/anon/Documents/emoji.txt
deleted file mode 100644
index 348a83fcb6e..00000000000
--- a/Base/home/anon/Documents/emoji.txt
+++ /dev/null
@@ -1,509 +0,0 @@
-Faces & Misc Emoji
-------------------
-
-☀️ - U+2600 U+FE0F SUN
-☁️ - U+2601 U+FE0F CLOUD
-☹️ - U+2639 U+FE0F FROWNING FACE
-☺️ - U+263A U+FE0F SMILING FACE
-✌️ - U+270C U+FE0F VICTORY HAND
-✍️ - U+270D U+FE0F WRITING HAND
-🅰️ - U+1F170 A BUTTON (BLOOD TYPE)
-🅱️ - U+1F171 B BUTTON (BLOOD TYPE)
-🅾️ - U+1F17E O BUTTON (BLOOD TYPE)
-🅿️ - U+1F17F P BUTTON
-🆎 - U+1F18E AB BUTTON (BLOOD TYPE)
-🆑 - U+1F191 CL BUTTON
-🆔 - U+1F194 ID BUTTON
-🆖 - U+1F196 NG BUTTON
-🆗 - U+1F197 OK BUTTON
-🆘 - U+1F198 SOS BUTTON
-🆙 - U+1F199 UP! BUTTON
-🆚 - U+1F19A VS BUTTON
-🈁 - U+1F201 JAPANESE “HERE” BUTTON
-🈂️ - U+1F202 JAPANESE “SERVICE CHARGE” BUTTON
-🈳 - U+1F233 JAPANESE “VACANCY” BUTTON
-🈴 - U+1F234 JAPANESE “PASSING GRADE” BUTTON
-🈶 - U+1F236 JAPANESE “NOT FREE OF CHARGE” BUTTON
-🈷️ - U+1F237 JAPANESE “MONTHLY AMOUNT” BUTTON
-🈸 - U+1F238 JAPANESE “APPLICATION” BUTTON
-🉑 - U+1F251 JAPANESE “ACCEPTABLE” BUTTON
-🌈 - U+1F308 RAINBOW
-🌋 - U+1F30B VOLCANO
-🌍 - U+1F30D GLOBE SHOWING EUROPE-AFRICA
-🌎 - U+1F30E GLOBE SHOWING AMERICAS
-🌏 - U+1F30F GLOBE SHOWING ASIA-AUSTRALIA
-🌑 - U+1F311 NEW MOON
-🌒 - U+1F312 WAXING CRESCENT MOON
-🌓 - U+1F313 FIRST QUARTER MOON
-🌔 - U+1F314 WAXING GIBBOUS MOON
-🌕 - U+1F315 FULL MOON
-🌖 - U+1F316 WANING GIBBOUS MOON
-🌗 - U+1F317 LAST QUARTER MOON
-🌘 - U+1F318 WANING CRESCENT MOON
-🌙 - U+1F319 CRESCENT MOON
-🌚 - U+1F31A NEW MOON FACE
-🌛 - U+1F31B FIRST QUARTER MOON FACE
-🌜 - U+1F31C LAST QUARTER MOON FACE
-🌝 - U+1F31D FULL MOON FACE
-🌤️ - U+1F324 U+FE0F SUN BEHIND SMALL CLOUD
-🌥️ - U+1F325 U+FE0F SUN BEHIND LARGE CLOUD
-🌦️ - U+1F326 U+FE0F SUN BEHIND RAIN CLOUD
-🌧️ - U+1F327 U+FE0F CLOUD WITH RAIN
-🌨️ - U+1F328 U+FE0F CLOUD WITH SNOW
-🌩️ - U+1F329 U+FE0F CLOUD WITH LIGHTNING
-🌭 - U+1F32D HOT DOG
-🌮 - U+1F32E TACO
-🌯 - U+1F32F BURRITO
-🌱 - U+1F331 SEEDLING
-🌲 - U+1F332 EVERGREEN TREE
-🌴 - U+1F334 PALM TREE
-🌵 - U+1F335 CACTUS
-🌻 - U+1F33B SUNFLOWER
-🍄 - U+1F344 MUSHROOM
-🍅 - U+1F345 TOMATO
-🍆 - U+1F346 EGGPLANT
-🍇 - U+1F347 GRAPES
-🍈 - U+1F348 MELON
-🍉 - U+1F349 WATERMELON
-🍊 - U+1F34A TANGERINE
-🍋 - U+1F34B LEMON
-🍌 - U+1F34C BANANA
-🍍 - U+1F34D PINEAPPLE
-🍎 - U+1F34E RED APPLE
-🍏 - U+1F34E GREEN APPLE
-🍐 - U+1F350 PEAR
-🍑 - U+1F351 PEACH
-🍒 - U+1F352 CHERRIES
-🍓 - U+1F353 STRAWBERRY
-🍔 - U+1F354 HAMBURGER
-🍕 - U+1F355 SLICE OF PIZZA
-🍟 - U+1F35F FRENCH FRIES
-🍩 - U+1F369 DOUGHNUT
-🍪 - U+1F36A COOKIE
-🍳 - U+1F373 COOKING
-🍷 - U+1F377 WINE GLASS
-🍹 - U+1F379 TROPICAL DRINK
-🎄 - U+1F384 CHRISTMAS TREE
-🎉 - U+1F389 PARTY POPPER
-🎨 - U+1F3A8 ARTIST PALETTE
-🎹 - U+1F3B9 MUSICAL KEYBOARD
-🏔️ - U+1F3D4 SNOW-CAPPED MOUNTAIN
-🏜️ - U+1F3DC DESERT
-🏝️ - U+1F3DD DESERT ISLAND
-🐌 - U+1F40C SNAIL
-🐙 - U+1F419 OCTOPUS
-🐞 - U+1F41E LADY BEETLE
-👀 - U+1F440 EYES
-👆 - U+1F446 BACKHAND INDEX POINTING UP
-👇 - U+1F447 BACKHAND INDEX POINTING DOWN
-👈 - U+1F448 BACKHAND INDEX POINTING LEFT
-👉 - U+1F449 BACKHAND INDEX POINTING RIGHT
-👋 - U+1F44B WAVING HAND
-👌 - U+1F44C OK HAND
-👍 - U+1F44D THUMBS UP SIGN
-👎 - U+1F44E THUMBS DOWN SIGN
-👏 - U+1F44F CLAPPING HANDS
-👑 - U+1F451 CROWN
-👽 - U+1F47D ALIEN
-💀 - U+1F480 SKULL
-💌 - U+1F48C LOVE LETTER
-💖 - U+1F496 SPARKLING HEART
-💡 - U+1F4A1 ELECTRIC LIGHT BULB
-💣 - U+1F4A3 BOMB
-💦 - U+1F4A6 SWEAT DROPLETS
-💯 - U+1F4AF HUNDRED POINTS
-💾 - U+1F4BE FLOPPY DISK
-📈 - U+1F4C8 CHART INCREASING
-📉 - U+1F4C9 CHART DECREASING
-📊 - U+1F4CA BAR CHART
-📌 - U+1F4CC PUSHPIN
-📍 - U+1F4CD ROUND PUSHPIN
-📵 - U+1F4F5 NO MOBILE PHONES
-📷 - U+1F4F7 CAMERA
-📸 - U+1F4F8 CAMERA WITH FLASH
-📺 - U+1F4FA TELEVISION
-📻 - U+1F4FB RADIO
-🔥 - U+1F525 FIRE
-🔴 - U+1F534 RED CIRCLE
-🔵 - U+1F535 BLUE CIRCLE
-🔶 - U+1F536 LARGE ORANGE DIAMOND
-🔷 - U+1F537 LARGE BLUE DIAMOND
-🔸 - U+1F538 SMALL ORANGE DIAMOND
-🔹 - U+1F539 SMALL BLUE DIAMOND
-🔺 - U+1F53A UP-POINTING RED TRIANGLE
-🔻 - U+1F53B DOWN-POINTING RED TRIANGLE
-🕊 - U+1F54A DOVE
-🕐 - U+1F550 ONE O’CLOCK
-🕑 - U+1F551 TWO O’CLOCK
-🕒 - U+1F552 THREE O’CLOCK
-🕓 - U+1F553 FOUR O’CLOCK
-🕔 - U+1F554 FIVE O’CLOCK
-🕕 - U+1F555 SIX O’CLOCK
-🕖 - U+1F556 SEVEN O’CLOCK
-🕗 - U+1F557 EIGHT O’CLOCK
-🕘 - U+1F558 NINE O’CLOCK
-🕙 - U+1F559 TEN O’CLOCK
-🕚 - U+1F55A ELEVEN O’CLOCK
-🕛 - U+1F55B TWELVE O’CLOCK
-🕜 - U+1F55C ONE-THIRTY
-🕝 - U+1F55D TWO-THIRTY
-🕞 - U+1F55E THREE-THIRTY
-🕟 - U+1F55F FOUR-THIRTY
-🕠 - U+1F560 FIVE-THIRTY
-🕡 - U+1F561 SIX-THIRTY
-🕢 - U+1F562 SEVEN-THIRTY
-🕣 - U+1F563 EIGHT-THIRTY
-🕤 - U+1F564 NINE-THIRTY
-🕥 - U+1F565 TEN-THIRTY
-🕦 - U+1F566 ELEVEN-THIRTY
-🕧 - U+1F567 TWELVE-THIRTY
-🕯 - U+1F56F CANDLE
-🕳️ - U+1F573 HOLE
-🕶️ - U+1F576 SUNGLASSES
-🖊 - U+1F58A PEN
-🖋 - U+1F58B FOUNTAIN PEN
-🖌 - U+1F58C PAINTBRUSH
-🖍 - U+1F58D CRAYON
-🖐️ - U+1F590 HAND WITH FINGERS SPLAYED
-🗝 - U+1F5DD OLD KEY
-🗞 - U+1F5DE ROLLED-UP NEWSPAPER
-🗡 - U+1F5E1 DAGGER
-🗽 - U+1F5FD STATUE OF LIBERTY
-😀 - U+1F600 GRINNING FACE
-😁 - U+1F601 GRINNING FACE WITH SMILING EYES
-😂 - U+1F602 FACE WITH TEARS OF JOY
-😃 - U+1F603 SMILING FACE WITH OPEN MOUTH
-😄 - U+1F604 SMILING FACE WITH OPEN MOUTH AND SMILING EYES
-😆 - U+1F606 SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES
-😈 - U+1F608 SMILING FACE WITH HORNS
-😊 - U+1F60A SMILING FACE WITH SMILING EYES
-😎 - U+1F60E SMILING FACE WITH SUNGLASSES
-😬 - U+1F62C GRIMACING FACE
-😮💨 - U+1F62E U+200D U+1F4A8 FACE EXHALING
-😵💫 - U+1F635 U+200D U+1F4AB FACE WITH SPIRAL EYES
-😶 - U+1F636 FACE WITHOUT MOUTH
-😶🌫️ - U+1F636 U+200D U+1F32B U+FE0F FACE IN CLOUDS
-😸 - U+1F638 GRINNING CAT WITH SMILING EYES
-😺 - U+1F63A SMILING CAT FACE
-😼 - U+1F63C CAT FACE WITH WRY SMILE
-😽 - U+1F63D KISSING CAT FACE WITH CLOSED EYES
-😾 - U+1F63E POUTING CAT FACE
-😿 - U+1F63F CRYING CAT FACE
-😹 - U+1F639 CAT FACE WITH TEARS OF JOY
-🙀 - U+1F640 WEARY CAT FACE
-🙂 - U+1F642 SLIGHTLY SMILING FACE
-🙃 - U+1F643 UPSIDE-DOWN FACE
-🚀 - U+1F680 ROCKET
-🚥 - U+1F6A5 HORIZONTAL TRAFFIC LIGHT
-🚦 - U+1F6A6 VERTICAL TRAFFIC LIGHT
-🛖 - U+1F6D6 HUT
-🛠️ - U+1F6E0 HAMMER AND WRENCH
-🛡 - U+1F6E1 SHIELD
-🟠 - U+1F7E0 ORANGE CIRLE
-🟡 - U+1F7E1 YELLOW CIRLE
-🟢 - U+1F7E2 GREEN CIRLE
-🟣 - U+1F7E3 PURPLE CIRLE
-🟤 - U+1F7E4 BROWN CIRLE
-🟥 - U+1F7E5 RED SQUARE
-🟦 - U+1F7E6 BLUE SQUARE
-🟧 - U+1F7E7 ORANGE SQUARE
-🟨 - U+1F7E8 YELLOW SQUARE
-🟩 - U+1F7E9 GREEN SQUARE
-🟪 - U+1F7EA PURPLE SQUARE
-🟫 - U+1F7EB BROWN SQUARE
-🤍 - U+1F90D WHITE HEART
-🤎 - U+1F90E BROWN HEART
-🤏 - U+1F90F PINCHING HAND
-🤔 - U+1F914 THINKING FACE
-🤖 - U+1F916 ROBOT
-🤗 - U+1F917 SMILING FACE WITH OPEN HANDS
-🤙 - U+1F919 CALL ME HAND
-🤚 - U+1F91A RAISED BACK OF HAND
-🤝 - U+1F91D HANDSHAKE
-🤡 - U+1F921 CLOWN FACE
-🤣 - U+1F923 ROLLING ON THE FLOOR LAUGHING
-🤤 - U+1F924 DROOLING FACE
-🤦 - U+1F926 FACE PALM
-🤧 - U+1F927 SNEEZING FACE
-🤪 - U+1F92A ZANY FACE
-🤫 - U+1F92B SHUSHING FACE
-🤭 - U+1F92D FACE WITH HAND OVER MOUTH
-🥇 - U+1F947 FIRST PLACE MEDAL
-🥈 - U+1F948 SECOND PLACE MEDAL
-🥑 - U+1F951 AVOCADO
-🥓 - U+1F953 BACON
-🥕 - U+1F955 CARROT
-🥛 - U+1F95B GLASS OF MILK
-🥝 - U+1F95D KIWIFRUIT
-🥦 - U+1F966 BROCCOLI
-🥱 - U+1F971 YAWNING FACE
-🥲 - U+1F972 SMILING FACE WITH TEAR
-🥳 - U+1F973 PARTYING FACE
-🥴 - U+1F974 WOOZY FACE
-🥸 - U+1F978 DISGUISED FACE
-🥹 - U+1F979 FACE HOLDING BACK TEARS
-🥺 - U+1F97A PLEADING FACE
-🦁 - U+1F981 LION FACE
-🦄 - U+1F984 UNICORN FACE
-🧋 - U+1F9CB BUBBLE TEA
-🧐 - U+1F9D0 FACE WITH MONOCLE
-🪤 - U+1FAA4 MOUSE TRAP
-🫠 - U+1FAE0 MELTING FACE
-🫡 - U+1FAE1 SALUTING FACE
-🫢 - U+1FAE2 FACE WITH OPEN EYES AND HAND OVER MOUTH
-🫣 - U+1FAE3 FACE WITH PEEKING EYE
-🫤 - U+1FAE4 FACE WITH DIAGONAL MOUTH
-🫥 - U+1FAE5 DOTTED LINE FACE
-🫧 - U+1FAE7 BUBBLES
-🧱 - U+1F9F1 BRICK
-🧲 - U+1F9F2 MAGNET
-🩱 - U+1FA71 ONE-PIECE SWIMSUIT
-🩲 - U+1FA72 BRIEFS
-🩳 - U+1FA73 SHORTS
-🩸 - U+1FA78 DROP OF BLOOD
-🩹 - U+1FA79 ADHESIVE BANDAGE
-🪀 - U+1FA80 YO-YO
-🪑 - U+1FA91 CHAIR
-🪜 - U+1FA9C LADDER
-🪢 - U+1FAA2 KNOT
-🪵 - U+1FAB5 WOOD
-🫑 - U+1FAD1 BELL PEPPER
-🫒 - U+1FAD2 OLIVE
-🫱 - U+1FAF1 RIGHTWARDS HAND
-🫲 - U+1FAF2 LEFTWARDS HAND
-🫳 - U+1FAF3 PALM DOWN HAND
-🫴 - U+1FAF4 PALM UP HAND
-🫶 - U+1FAF6 HEART HANDS
-• - U+2022 BULLET
-☕ - U+2615 HOT BEVERAGE
-♋ - U+264B CANCER
-⚓ - U+2693 ANCHOR
-⚠ - U+26A0 WARNING SIGN
-⚡ - U+26A1 HIGH VOLTAGE SIGN
-⛓️ - U+26D3 CHAINS
-⛔ - U+26D4 NO ENTRY
-⛰️ - U+26F0 MOUNTAIN
-⛱️ - U+26F1 UMBRELLA ON GROUND
-⛽ - U+26FD FUEL PUMP
-✋ - U+270B RAISED HAND
-✨ - U+2728 SPARKLES
-❤ - U+2764 RED HEART
-⬆ - U+2B06 UPWARDS BLACK ARROW
-⬇ - U+2B07 DOWNWARDS BLACK ARROW
-⭐ - U+2B50 STAR
-
-ZWJ Sequence Emoji (limited cross-platform support)
----------
-
-🐱🐶 - U+1F431 U+200D U+1F436 CATDOG FACE
-
-Yak Emoji (limited cross-platform support)
----------
-
- - U+10CD00 HAIRYAK
- - U+10CD01 IMMINENTYAKSHAVE
- - U+10CD02 SHAVEDYAK
- - U+10CD03 YAKPLUS
- - U+10CD04 YAKPING
- - U+10CD05 YAKMINUS
- - U+10CD06 YAKTANGLE
- - U+10CD07 YAKBAIT
- - U+10CD08 REYAKTED
- - U+10CD09 SLEEPYAK
- - U+10CD0A YAKBRAIN
- - U+10CD0B GOLDYAK
- - U+10CD0C YAKKING
- - U+10CD0D YAKMAIL
- - U+10CD0E YAKMAGNET
- - U+10CD0F YAKFIRE
- - U+10CD10 YAKSPLODE
- - U+10CD11 YAKSHED
- - U+10CD12 YAKFUSED
- - U+10CD13 8BITYAK
- - U+10CD14 SKELEYAK
- - U+10CD15 NEOYAK
- - U+10CD16 YAKEA
- - U+10CD17 YAKID2
- - U+10CD18 YAKSLICE
- - U+10CD19 YAKSTICKER
- - U+10CD1A YAKKIE
- - U+10CD1B ANGELYAK
- - U+10CD1C YAK
- - U+10CD1D YAKGONE
- - U+10CD1E YAKMEASURE
- - U+10CD1F YAKCOWBOY
- - U+10CD20 YAKSPEED
- - U+10CD21 YAKMANDO
- - U+10CD22 NINJYAK
- - U+10CD23 YOWL
- - U+10CD60 PARTYAK
- - U+10CD61 YAKKISS
- - U+10CD62 THOUSANDYAKSTARE
- - U+10CD63 YAKBLUSH
- - U+10CD64 YAKSHRUG
- - U+10CD65 YAKTHONK
- - U+10CD66 YAKSAD
- - U+10CD67 BABYAK
- - U+10CD68 YAKKETYSAX
- - U+10CD69 YAKBANE
- - U+10CD90 YAKSTACK
- - U+10CD91 YAKCHAIN
- - U+10CD92 YAKRING
- - U+10CD93 YAKOVERFLOW
- - U+10CDB0 XMASYAK
- - U+10CDB1 YAKTOBERFEST
- - U+10CDD0 YAKSTEPS
- - U+10CDE0 YAKRAGE-FRAME-1
- - U+10CDE1 YAKRAGE-FRAME-2
- - U+10CDE2 YAKRAGE-FRAME-3
- - U+10CDE3 YAKRAGE-FRAME-4
- - U+10CDE4 YAKRAGE-FRAME-5
- - U+10CDE5 YAKRAGE-FRAME-6
-
-ZWJ Sequence Flags
-------------------
-
-🏳️🐞 - U+1F3F3 U+FE0F U+200D U+1F41E SerenityOS flag (limited cross-platform support)
-🏳️🌈 - U+1F3F3 U+FE0F U+200D U+1F308 Rainbow flag
-🏳️⚧️ - U+1F3F3 U+FE0F U+200D U+26A7 U+FE0F Transgender flag
-🏴☠️ - U+1F3F4 U+200D U+2620 U+FE0F Pirate flag
-🏳️ - U+1F3F3 U+FE0F U+200D U+F8FF Klingon flag (limited cross-platform support)
-🏳️🖖 - U+1F3F3 U+FE0F U+200D U+1F596 Vulcan flag (limited cross-platform support)
-
-Regional Indicator Symbol Flags
--------------------------------
-
-🇦🇪 - U+1F1E6 U+1F1EA AE United Arab Emirates
-🇦🇲 - U+1F1E6 U+1F1F2 AM Armenia
-🇦🇶 - U+1F1E6 U+1F1F6 AQ Antarctica
-🇦🇹 - U+1F1E6 U+1F1F9 AT Austria
-🇦🇽 - U+1F1E6 U+1F1FD AX Åland Islands
-🇧🇮 - U+1F1E7 U+1F1EE BI Burundi
-🇧🇻 - U+1F1E7 U+1F1FB BV Bouvet Island
-🇨🇬 - U+1F1E8 U+1F1EC CG Congo - Brazzaville
-🇨🇭 - U+1F1E8 U+1F1ED CH Switzerland
-🇨🇮 - U+1F1E8 U+1F1EE CI Côte d'Ivoire
-🇨🇵 - U+1F1E8 U+1F1F5 CP Clipperton Island
-🇨🇷 - U+1F1E8 U+1F1F7 CR Costa Rica
-🇨🇺 - U+1F1E8 U+1F1FA CU Cuba
-🇩🇪 - U+1F1E9 U+1F1EA DE Germany
-🇩🇯 - U+1F1E9 U+1F1EF DJ DJIBOUTI
-🇩🇰 - U+1F1E9 U+1F1F0 DK Denmark
-🇩🇴 - U+1F1E9 U+1F1F4 DO Dominican Republic
-🇪🇦 - U+1F1EA U+1F1E6 EA Ceuta & Melilla
-🇪🇭 - U+1F1EA U+1F1ED EH Western Sahara
-🇪🇺 - U+1F1EA U+1F1FA EU European Union
-🇫🇮 - U+1F1EB U+1F1EE FI Finland
-🇫🇴 - U+1F1EB U+1F1F4 FO Faroe Islands
-🇫🇷 - U+1F1EB U+1F1F7 FR France
-🇬🇧 - U+1F1EC U+1F1E7 GB United Kingdom
-🇬🇫 - U+1F1EC U+1F1EB GF French Guiana
-🇬🇬 - U+1F1EC U+1F1EC GG Guernsey
-🇬🇱 - U+1F1EC U+1F1F1 GL Greenland
-🇬🇷 - U+1F1EC U+1F1F7 GR Greece
-🇬🇹 - U+1F1EC U+1F1F9 GT Guatemala
-🇭🇺 - U+1F1ED U+1F1FA HU Hungary
-🇮🇩 - U+1F1EE_U+1F1E9 ID Indonesia
-🇮🇱 - U+1F1EE U+1F1F1 IL Israel
-🇮🇷 - U+1F1EE U+1F1F7 IR Iran
-🇮🇸 - U+1F1EE U+1F1F8 IS Iceland
-🇯🇴 - U+1F1EF U+1F1F4 JO Jordan
-🇰🇳 - U+1F1F0 U+1F1F3 KN St. Kitts & Nevis
-🇱🇦 - U+1F1F1 U+1F1E6 LA Laos
-🇱🇧 - U+1F1F1 U+1F1E7 LB Lebanon
-🇲🇫 - U+1F1F2_U+1F1EB MF St. Martin
-🇲🇰 - U+1F1F2 U+1F1F0 MK North Macedonia
-🇳🇫 - U+1F1F3 U+1F1EB NF Norfolk Island
-🇳🇱 - U+1F1F3 U+1F1F1 NL Netherlands
-🇳🇴 - U+1F1F3 U+1F1F4 NO Norway
-🇵🇦 - U+1F1F5 U+1F1E6 PA Panama
-🇵🇭 - U+1F1F5 U+1F1ED PH Philippines
-🇵🇱 - U+1F1F5 U+1F1F1 PL Poland
-🇵🇸 - U+1F1F5 U+1F1F8 PS Palestine
-🇵🇼 - U+1F1F5 U+1F1FC PW Palau
-🇷🇺 - U+1F1F7 U+1F1FA RU Russia
-🇸🇪 - U+1F1F8 U+1F1EA SE Sweden
-🇸🇯 - U+1F1F8 U+1F1EF SJ Svalbard & Jan Mayen
-🇸🇹 - U+1F1F8 U+1F1F9 ST São Tomé & Príncipe
-🇸🇾 - U+1F1F8 U+1F1FE SY Syria
-🇹🇷 - U+1F1F9 U+1F1F7 TR Turkey
-🇹🇼 - U+1F1F9 U+1F1FC TW Taiwan
-🇺🇦 - U+1F1FA U+1F1E6 UA Ukraine
-🇺🇲 - U+1F1FA_U+1F1F2 UM U.S. Outlying Islands
-🇺🇳 - U+1F1FA U+1F1F3 UN United Nations
-🇺🇸 - U+1F1FA U+1F1F8 US United States
-🇻🇳 - U+1F1FB U+1F1F3 VN Vietnam
-
-Emoji Tag Sequence Flags (limited cross-platform support)
-------------------------
-
-🏴 - U+1F3F4 U+E0063 U+E0061 U+E0071 U+E0063 U+E007F CA-QC Quebec
-🏴 - U+1F3F4 U+E0064 U+E0065 U+E0062 U+E0062 U+E007F DE-BB Brandenburg
-🏴 - U+1F3F4 U+E0064 U+E0065 U+E0062 U+E0065 U+E007F DE-BE Berlin
-🏴 - U+1F3F4 U+E0064 U+E0065 U+E0062 U+E0077 U+E007F DE-BW Baden-Württemberg
-🏴 - U+1F3F4 U+E0064 U+E0065 U+E0062 U+E0079 U+E007F DE-BY Bavaria
-🏴 - U+1F3F4 U+E0064 U+E0065 U+E0068 U+E0062 U+E007F DE-HB Bremen
-🏴 - U+1F3F4 U+E0064 U+E0065 U+E0068 U+E0065 U+E007F DE-HE Hesse
-🏴 - U+1F3F4 U+E0064 U+E0065 U+E0068 U+E0068 U+E007F DE-HH Hamburg
-🏴 - U+1F3F4 U+E0064 U+E0065 U+E006D U+E0076 U+E007F DE-MV Mecklenburg-Vorpommern
-🏴 - U+1F3F4 U+E0064 U+E0065 U+E006E U+E0069 U+E007F DE-NI Lower Saxony
-🏴 - U+1F3F4 U+E0064 U+E0065 U+E006E U+E0077 U+E007F DE-NW North Rhine-Westphalia
-🏴 - U+1F3F4 U+E0064 U+E0065 U+E0072 U+E0070 U+E007F DE-RP Rhineland-Palatinate
-🏴 - U+1F3F4 U+E0064 U+E0065 U+E0073 U+E0068 U+E007F DE-SH Schleswig-Holstein
-🏴 - U+1F3F4 U+E0064 U+E0065 U+E0073 U+E006C U+E007F DE-SL Saarland
-🏴 - U+1F3F4 U+E0064 U+E0065 U+E0073 U+E006E U+E007F DE-SN Saxony
-🏴 - U+1F3F4 U+E0064 U+E0065 U+E0073 U+E0074 U+E007F DE-ST Saxony-Anhalt
-🏴 - U+1F3F4 U+E0064 U+E0065 U+E0074 U+E0068 U+E007F DE-TH Thuringia
-🏴 - U+1F3F4 U+E0065 U+E0073 U+E0063 U+E0074 U+E007F ES-CT Catalonia
-🏴 - U+1F3F4 U+E0065 U+E0073 U+E0070 U+E0076 U+E007F ES-PV Basque Country
-🏴 - U+1F3F4 U+E0066 U+E0069 U+E0030 U+E0033 U+E007F FI-03 South Ostrobothnia
-🏴 - U+1F3F4 U+E0066 U+E0069 U+E0030 U+E0034 U+E007F FI-04 South Savonia
-🏴 - U+1F3F4 U+E0066 U+E0069 U+E0030 U+E0035 U+E007F FI-05 Kainuu
-🏴 - U+1F3F4 U+E0066 U+E0069 U+E0030 U+E0036 U+E007F FI-06 Kanta-Häme (Tavastia Proper)
-🏴 - U+1F3F4 U+E0066 U+E0069 U+E0030 U+E0037 U+E007F FI-07 Central Ostrobothnia
-🏴 - U+1F3F4 U+E0066 U+E0069 U+E0030 U+E0038 U+E007F FI-08 Central Finland
-🏴 - U+1F3F4 U+E0066 U+E0069 U+E0031 U+E0033 U+E007F FI-13 North Karelia
-🏴 - U+1F3F4 U+E0066 U+E0069 U+E0031 U+E0035 U+E007F FI-15 Northern Savonia
-🏴 - U+1F3F4 U+E0066 U+E0069 U+E0031 U+E0036 U+E007F FI-16 Päijänne Tavastia
-🏴 - U+1F3F4 U+E0066 U+E0069 U+E0031 U+E0037 U+E007F FI-17 Satakunta
-🏴 - U+1F3F4 U+E0066 U+E0069 U+E0031 U+E0038 U+E007F FI-18 Uusimaa
-🏴 - U+1F3F4 U+E0069 U+E0065 U+E006C U+E007F IE-L Leinster
-🏴 - U+1F3F4 U+E0069 U+E0065 U+E006D U+E007F IE-M Munster
-🏴 - U+1F3F4 U+E0069 U+E0065 U+E0075 U+E007F IE-U Ulster
-🏴 - U+1F3F4 U+E0073 U+E0065 U+E006D U+E007F SE-M Skåne
-🏴 - U+1F3F4 U+E0073 U+E006B U+E0062 U+E0063 U+E007F SK-BC Banská Bystrica
-🏴 - U+1F3F4 U+E0073 U+E006B U+E0062 U+E006C U+E007F SK-BL Bratislava
-🏴 - U+1F3F4 U+E0073 U+E006B U+E006B U+E0069 U+E007F SK-KI Košice
-🏴 - U+1F3F4 U+E0073 U+E006B U+E006E U+E0069 U+E007F SK-NI Nitra
-🏴 - U+1F3F4 U+E0073 U+E006B U+E0070 U+E0076 U+E007F SK-PV Prešov
-🏴 - U+1F3F4 U+E0073 U+E006B U+E0074 U+E0061 U+E007F SK-TA Trnava
-🏴 - U+1F3F4 U+E0073 U+E006B U+E0074 U+E0063 U+E007F SK-TC Trenčín
-🏴 - U+1F3F4 U+E0073 U+E006B U+E007A U+E0069 U+E007F SK-ZI Žilina
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0030 U+E0035 U+E007F UA-05 Vinnychchyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0030 U+E0037 U+E007F UA-07 Volyn
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0030 U+E0039 U+E007F UA-09 Luhanshchyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0031 U+E0032 U+E007F UA-12 Dnipropetrovshchyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0031 U+E0034 U+E007F UA-14 Donechchyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0031 U+E0038 U+E007F UA-18 Zhytomyrshchyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0032 U+E0031 U+E007F UA-21 Zakarpattia
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0032 U+E0033 U+E007F UA-23 Zaporizhzhya
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0032 U+E0036 U+E007F UA-26 Prykarpattia
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0033 U+E0030 U+E007F UA-30 Kiev
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0033 U+E0032 U+E007F UA-32 Kyivshchyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0033 U+E0035 U+E007F UA-35 Kirovohradschyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0034 U+E0030 U+E007F UA-40 Sevastopol
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0034 U+E0033 U+E007F UA-43 Crimea
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0034 U+E0036 U+E007F UA-46 Lvivshchyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0034 U+E0038 U+E007F UA-48 Mykolayivschyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0035 U+E0031 U+E007F UA-51 Odeshchyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0035 U+E0033 U+E007F UA-53 Poltavshchyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0035 U+E0036 U+E007F UA-56 Rivnenshchyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0035 U+E0039 U+E007F UA-59 Sumshchyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0036 U+E0031 U+E007F UA-61 Ternopilshchyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0036 U+E0033 U+E007F UA-63 Kharkivshchyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0036 U+E0035 U+E007F UA-65 Khersonshchyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0036 U+E0038 U+E007F UA-68 Khmelnychchyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0037 U+E0031 U+E007F UA-71 Cherkashchyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0037 U+E0034 U+E007F UA-74 Chernihivshchyna
-🏴 - U+1F3F4 U+E0075 U+E0061 U+E0037 U+E0037 U+E007F UA-77 Chernivtsi Oblast
-
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4f80c58178a..101d4465faf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -206,6 +206,7 @@ option(BUILD_EVERYTHING "Build all optional components" ON)
include(utils)
include(wasm_spec_tests)
+include(emoji_txt)
serenity_component(
Tests
diff --git a/Meta/CMake/emoji_txt.cmake b/Meta/CMake/emoji_txt.cmake
new file mode 100644
index 00000000000..387be723399
--- /dev/null
+++ b/Meta/CMake/emoji_txt.cmake
@@ -0,0 +1,23 @@
+option(ENABLE_EMOJI_TXT_GENERATION "Enable download of emoji-test.txt and generation of emoji.txt at build time" ON)
+
+set(EMOJI_TEST_TXT_PATH ${CMAKE_BINARY_DIR}/emoji-test.txt)
+set(EMOJI_TEST_TXT_URL https://unicode.org/Public/emoji/14.0/emoji-test.txt)
+
+if(ENABLE_EMOJI_TXT_GENERATION)
+ if(NOT EXISTS ${EMOJI_TEST_TXT_PATH})
+ file(DOWNLOAD ${EMOJI_TEST_TXT_URL} ${EMOJI_TEST_TXT_PATH})
+ endif()
+ set(EMOJI_RES_PATH "${SerenityOS_SOURCE_DIR}/Base/res/emoji")
+ set(EMOJI_TXT_INSTALL_PATH "${SerenityOS_SOURCE_DIR}/Base/home/anon/Documents/emoji.txt")
+ add_custom_command(
+ OUTPUT ${EMOJI_TXT_INSTALL_PATH}
+ COMMAND ${SerenityOS_SOURCE_DIR}/Meta/generate-emoji-txt.sh "${EMOJI_TEST_TXT_PATH}" "${EMOJI_RES_PATH}" "${EMOJI_TXT_INSTALL_PATH}"
+ # This will make this command only run when the modified time of the directory changes,
+ # which only happens if files within it are added or deleted, but not when a file is modified.
+ # This is fine for this use-case, because the contents of a file changing should not affect
+ # the generated emoji.txt file.
+ MAIN_DEPENDENCY ${EMOJI_RES_PATH}
+ USES_TERMINAL
+ )
+ add_custom_target(generate_emoji_txt ALL DEPENDS ${EMOJI_TXT_INSTALL_PATH})
+endif()
diff --git a/Meta/generate-emoji-txt.sh b/Meta/generate-emoji-txt.sh
new file mode 100755
index 00000000000..9b247025e5a
--- /dev/null
+++ b/Meta/generate-emoji-txt.sh
@@ -0,0 +1,61 @@
+#!/usr/bin/env bash
+
+set -e
+
+if [ $# -ne 3 ]; then
+ echo "Usage: $0