The following code:
#include <iostream>
#include <sstream>
#include <codecvt>
#include <string>
#include <vector>
#include <locale>
template<class Facet>
struct deletable_facet : Facet {
template<class ...Args>
deletable_facet(Args&& ...args) : Facet(std::forward<Args>(args)...) {}
~deletable_facet() {}
};
bool is_emoji(char32_t c, char32_t n) {
// https://stackoverflow.com/a/32546901/9072753
// curl -sS https://www.unicode.org/Public/emoji/1.0//emoji-data.txt | awk -F';' 'NF == 5 && $2 = "emoji"{print $1}' | awk '{printf("||")} NF == 1{print "C(U'\''\\x"$1"'\'')"} NF==2{print "(C(U'\''\\x"$1"'\'')&&N(U'\''\\x"$2"'\''))"}' | fmt -w 200
#define C(x) (c == x)
#define N(x) (n == x)
return 0
||C(U'\x00A9') ||C(U'\x00AE') ||C(U'\x203C') ||C(U'\x2049') ||C(U'\x2122') ||C(U'\x2139') ||C(U'\x2194') ||C(U'\x2195') ||C(U'\x2196') ||C(U'\x2197') ||C(U'\x2198') ||C(U'\x2199') ||C(U'\x21A9')
||C(U'\x21AA') ||C(U'\x231A') ||C(U'\x231B') ||C(U'\x2328') ||C(U'\x23CF') ||C(U'\x23E9') ||C(U'\x23EA') ||C(U'\x23EB') ||C(U'\x23EC') ||C(U'\x23ED') ||C(U'\x23EE') ||C(U'\x23EF') ||C(U'\x23F0')
||C(U'\x23F1') ||C(U'\x23F2') ||C(U'\x23F3') ||C(U'\x23F8') ||C(U'\x23F9') ||C(U'\x23FA') ||C(U'\x24C2') ||C(U'\x25AA') ||C(U'\x25AB') ||C(U'\x25B6') ||C(U'\x25C0') ||C(U'\x25FB') ||C(U'\x25FC')
||C(U'\x25FD') ||C(U'\x25FE') ||C(U'\x2600') ||C(U'\x2601') ||C(U'\x2602') ||C(U'\x2603') ||C(U'\x2604') ||C(U'\x260E') ||C(U'\x2611') ||C(U'\x2614') ||C(U'\x2615') ||C(U'\x2618') ||C(U'\x261D')
||C(U'\x2620') ||C(U'\x2622') ||C(U'\x2623') ||C(U'\x2626') ||C(U'\x262A') ||C(U'\x262E') ||C(U'\x262F') ||C(U'\x2638') ||C(U'\x2639') ||C(U'\x263A') ||C(U'\x2648') ||C(U'\x2649') ||C(U'\x264A')
||C(U'\x264B') ||C(U'\x264C') ||C(U'\x264D') ||C(U'\x264E') ||C(U'\x264F') ||C(U'\x2650') ||C(U'\x2651') ||C(U'\x2652') ||C(U'\x2653') ||C(U'\x2660') ||C(U'\x2663') ||C(U'\x2665') ||C(U'\x2666')
||C(U'\x2668') ||C(U'\x267B') ||C(U'\x267F') ||C(U'\x2692') ||C(U'\x2693') ||C(U'\x2694') ||C(U'\x2696') ||C(U'\x2697') ||C(U'\x2699') ||C(U'\x269B') ||C(U'\x269C') ||C(U'\x26A0') ||C(U'\x26A1')
||C(U'\x26AA') ||C(U'\x26AB') ||C(U'\x26B0') ||C(U'\x26B1') ||C(U'\x26BD') ||C(U'\x26BE') ||C(U'\x26C4') ||C(U'\x26C5') ||C(U'\x26C8') ||C(U'\x26CE') ||C(U'\x26CF') ||C(U'\x26D1') ||C(U'\x26D3')
||C(U'\x26D4') ||C(U'\x26E9') ||C(U'\x26EA') ||C(U'\x26F0') ||C(U'\x26F1') ||C(U'\x26F2') ||C(U'\x26F3') ||C(U'\x26F4') ||C(U'\x26F5') ||C(U'\x26F7') ||C(U'\x26F8') ||C(U'\x26F9') ||C(U'\x26FA')
||C(U'\x26FD') ||C(U'\x2702') ||C(U'\x2705') ||C(U'\x2708') ||C(U'\x2709') ||C(U'\x270A') ||C(U'\x270B') ||C(U'\x270C') ||C(U'\x270D') ||C(U'\x270F') ||C(U'\x2712') ||C(U'\x2714') ||C(U'\x2716')
||C(U'\x271D') ||C(U'\x2721') ||C(U'\x2728') ||C(U'\x2733') ||C(U'\x2734') ||C(U'\x2744') ||C(U'\x2747') ||C(U'\x274C') ||C(U'\x274E') ||C(U'\x2753') ||C(U'\x2754') ||C(U'\x2755')
||C(U'\x2757') ||C(U'\x2763') ||C(U'\x2764') ||C(U'\x2795') ||C(U'\x2796') ||C(U'\x2797') ||C(U'\x27A1') ||C(U'\x27B0') ||C(U'\x27BF') ||C(U'\x2934') ||C(U'\x2935') ||C(U'\x2B05')
||C(U'\x2B06') ||C(U'\x2B07') ||C(U'\x2B1B') ||C(U'\x2B1C') ||C(U'\x2B50') ||C(U'\x2B55') ||C(U'\x3030') ||C(U'\x303D') ||C(U'\x3297') ||C(U'\x3299') ||C(U'\x1F004') ||C(U'\x1F0CF')
||C(U'\x1F170') ||C(U'\x1F171') ||C(U'\x1F17E') ||C(U'\x1F17F') ||C(U'\x1F18E') ||C(U'\x1F191') ||C(U'\x1F192') ||C(U'\x1F193') ||C(U'\x1F194') ||C(U'\x1F195') ||C(U'\x1F196') ||C(U'\x1F197')
||C(U'\x1F198') ||C(U'\x1F199') ||C(U'\x1F19A') ||C(U'\x1F201') ||C(U'\x1F202') ||C(U'\x1F21A') ||C(U'\x1F22F') ||C(U'\x1F232') ||C(U'\x1F233') ||C(U'\x1F234') ||C(U'\x1F235') ||C(U'\x1F236')
||C(U'\x1F237') ||C(U'\x1F238') ||C(U'\x1F239') ||C(U'\x1F23A') ||C(U'\x1F250') ||C(U'\x1F251') ||C(U'\x1F300') ||C(U'\x1F301') ||C(U'\x1F302') ||C(U'\x1F303') ||C(U'\x1F304') ||C(U'\x1F305')
||C(U'\x1F306') ||C(U'\x1F307') ||C(U'\x1F308') ||C(U'\x1F309') ||C(U'\x1F30A') ||C(U'\x1F30B') ||C(U'\x1F30C') ||C(U'\x1F30D') ||C(U'\x1F30E') ||C(U'\x1F30F') ||C(U'\x1F310') ||C(U'\x1F311')
||C(U'\x1F312') ||C(U'\x1F313') ||C(U'\x1F314') ||C(U'\x1F315') ||C(U'\x1F316') ||C(U'\x1F317') ||C(U'\x1F318') ||C(U'\x1F319') ||C(U'\x1F31A') ||C(U'\x1F31B') ||C(U'\x1F31C') ||C(U'\x1F31D')
||C(U'\x1F31E') ||C(U'\x1F31F') ||C(U'\x1F320') ||C(U'\x1F321') ||C(U'\x1F324') ||C(U'\x1F325') ||C(U'\x1F326') ||C(U'\x1F327') ||C(U'\x1F328') ||C(U'\x1F329') ||C(U'\x1F32A') ||C(U'\x1F32B')
||C(U'\x1F32C') ||C(U'\x1F32D') ||C(U'\x1F32E') ||C(U'\x1F32F') ||C(U'\x1F330') ||C(U'\x1F331') ||C(U'\x1F332') ||C(U'\x1F333') ||C(U'\x1F334') ||C(U'\x1F335') ||C(U'\x1F336') ||C(U'\x1F337')
||C(U'\x1F338') ||C(U'\x1F339') ||C(U'\x1F33A') ||C(U'\x1F33B') ||C(U'\x1F33C') ||C(U'\x1F33D') ||C(U'\x1F33E') ||C(U'\x1F33F') ||C(U'\x1F340') ||C(U'\x1F341') ||C(U'\x1F342') ||C(U'\x1F343')
||C(U'\x1F344') ||C(U'\x1F345') ||C(U'\x1F346') ||C(U'\x1F347') ||C(U'\x1F348') ||C(U'\x1F349') ||C(U'\x1F34A') ||C(U'\x1F34B') ||C(U'\x1F34C') ||C(U'\x1F34D') ||C(U'\x1F34E') ||C(U'\x1F34F')
||C(U'\x1F350') ||C(U'\x1F351') ||C(U'\x1F352') ||C(U'\x1F353') ||C(U'\x1F354') ||C(U'\x1F355') ||C(U'\x1F356') ||C(U'\x1F357') ||C(U'\x1F358') ||C(U'\x1F359') ||C(U'\x1F35A') ||C(U'\x1F35B')
||C(U'\x1F35C') ||C(U'\x1F35D') ||C(U'\x1F35E') ||C(U'\x1F35F') ||C(U'\x1F360') ||C(U'\x1F361') ||C(U'\x1F362') ||C(U'\x1F363') ||C(U'\x1F364') ||C(U'\x1F365') ||C(U'\x1F366') ||C(U'\x1F367')
||C(U'\x1F368') ||C(U'\x1F369') ||C(U'\x1F36A') ||C(U'\x1F36B') ||C(U'\x1F36C') ||C(U'\x1F36D') ||C(U'\x1F36E') ||C(U'\x1F36F') ||C(U'\x1F370') ||C(U'\x1F371') ||C(U'\x1F372') ||C(U'\x1F373')
||C(U'\x1F374') ||C(U'\x1F375') ||C(U'\x1F376') ||C(U'\x1F377') ||C(U'\x1F378') ||C(U'\x1F379') ||C(U'\x1F37A') ||C(U'\x1F37B') ||C(U'\x1F37C') ||C(U'\x1F37D') ||C(U'\x1F37E') ||C(U'\x1F37F')
||C(U'\x1F380') ||C(U'\x1F381') ||C(U'\x1F382') ||C(U'\x1F383') ||C(U'\x1F384') ||C(U'\x1F385') ||C(U'\x1F386') ||C(U'\x1F387') ||C(U'\x1F388') ||C(U'\x1F389') ||C(U'\x1F38A') ||C(U'\x1F38B')
||C(U'\x1F38C') ||C(U'\x1F38D') ||C(U'\x1F38E') ||C(U'\x1F38F') ||C(U'\x1F390') ||C(U'\x1F391') ||C(U'\x1F392') ||C(U'\x1F393') ||C(U'\x1F396') ||C(U'\x1F397') ||C(U'\x1F399') ||C(U'\x1F39A')
||C(U'\x1F39B') ||C(U'\x1F39E') ||C(U'\x1F39F') ||C(U'\x1F3A0') ||C(U'\x1F3A1') ||C(U'\x1F3A2') ||C(U'\x1F3A3') ||C(U'\x1F3A4') ||C(U'\x1F3A5') ||C(U'\x1F3A6') ||C(U'\x1F3A7') ||C(U'\x1F3A8')
||C(U'\x1F3A9') ||C(U'\x1F3AA') ||C(U'\x1F3AB') ||C(U'\x1F3AC') ||C(U'\x1F3AD') ||C(U'\x1F3AE') ||C(U'\x1F3AF') ||C(U'\x1F3B0') ||C(U'\x1F3B1') ||C(U'\x1F3B2') ||C(U'\x1F3B3') ||C(U'\x1F3B4')
||C(U'\x1F3B5') ||C(U'\x1F3B6') ||C(U'\x1F3B7') ||C(U'\x1F3B8') ||C(U'\x1F3B9') ||C(U'\x1F3BA') ||C(U'\x1F3BB') ||C(U'\x1F3BC') ||C(U'\x1F3BD') ||C(U'\x1F3BE') ||C(U'\x1F3BF') ||C(U'\x1F3C0')
||C(U'\x1F3C1') ||C(U'\x1F3C2') ||C(U'\x1F3C3') ||C(U'\x1F3C4') ||C(U'\x1F3C5') ||C(U'\x1F3C6') ||C(U'\x1F3C7') ||C(U'\x1F3C8') ||C(U'\x1F3C9') ||C(U'\x1F3CA') ||C(U'\x1F3CB') ||C(U'\x1F3CC')
||C(U'\x1F3CD') ||C(U'\x1F3CE') ||C(U'\x1F3CF') ||C(U'\x1F3D0') ||C(U'\x1F3D1') ||C(U'\x1F3D2') ||C(U'\x1F3D3') ||C(U'\x1F3D4') ||C(U'\x1F3D5') ||C(U'\x1F3D6') ||C(U'\x1F3D7') ||C(U'\x1F3D8')
||C(U'\x1F3D9') ||C(U'\x1F3DA') ||C(U'\x1F3DB') ||C(U'\x1F3DC') ||C(U'\x1F3DD') ||C(U'\x1F3DE') ||C(U'\x1F3DF') ||C(U'\x1F3E0') ||C(U'\x1F3E1') ||C(U'\x1F3E2') ||C(U'\x1F3E3') ||C(U'\x1F3E4')
||C(U'\x1F3E5') ||C(U'\x1F3E6') ||C(U'\x1F3E7') ||C(U'\x1F3E8') ||C(U'\x1F3E9') ||C(U'\x1F3EA') ||C(U'\x1F3EB') ||C(U'\x1F3EC') ||C(U'\x1F3ED') ||C(U'\x1F3EE') ||C(U'\x1F3EF') ||C(U'\x1F3F0')
||C(U'\x1F3F3') ||C(U'\x1F3F4') ||C(U'\x1F3F5') ||C(U'\x1F3F7') ||C(U'\x1F3F8') ||C(U'\x1F3F9') ||C(U'\x1F3FA') ||C(U'\x1F3FB') ||C(U'\x1F3FC') ||C(U'\x1F3FD') ||C(U'\x1F3FE') ||C(U'\x1F3FF')
||C(U'\x1F400') ||C(U'\x1F401') ||C(U'\x1F402') ||C(U'\x1F403') ||C(U'\x1F404') ||C(U'\x1F405') ||C(U'\x1F406') ||C(U'\x1F407') ||C(U'\x1F408') ||C(U'\x1F409') ||C(U'\x1F40A') ||C(U'\x1F40B')
||C(U'\x1F40C') ||C(U'\x1F40D') ||C(U'\x1F40E') ||C(U'\x1F40F') ||C(U'\x1F410') ||C(U'\x1F411') ||C(U'\x1F412') ||C(U'\x1F413') ||C(U'\x1F414') ||C(U'\x1F415') ||C(U'\x1F416') ||C(U'\x1F417')
||C(U'\x1F418') ||C(U'\x1F419') ||C(U'\x1F41A') ||C(U'\x1F41B') ||C(U'\x1F41C') ||C(U'\x1F41D') ||C(U'\x1F41E') ||C(U'\x1F41F') ||C(U'\x1F420') ||C(U'\x1F421') ||C(U'\x1F422') ||C(U'\x1F423')
||C(U'\x1F424') ||C(U'\x1F425') ||C(U'\x1F426') ||C(U'\x1F427') ||C(U'\x1F428') ||C(U'\x1F429') ||C(U'\x1F42A') ||C(U'\x1F42B') ||C(U'\x1F42C') ||C(U'\x1F42D') ||C(U'\x1F42E') ||C(U'\x1F42F')
||C(U'\x1F430') ||C(U'\x1F431') ||C(U'\x1F432') ||C(U'\x1F433') ||C(U'\x1F434') ||C(U'\x1F435') ||C(U'\x1F436') ||C(U'\x1F437') ||C(U'\x1F438') ||C(U'\x1F439') ||C(U'\x1F43A') ||C(U'\x1F43B')
||C(U'\x1F43C') ||C(U'\x1F43D') ||C(U'\x1F43E') ||C(U'\x1F43F') ||C(U'\x1F440') ||C(U'\x1F441') ||C(U'\x1F442') ||C(U'\x1F443') ||C(U'\x1F444') ||C(U'\x1F445') ||C(U'\x1F446') ||C(U'\x1F447')
||C(U'\x1F448') ||C(U'\x1F449') ||C(U'\x1F44A') ||C(U'\x1F44B') ||C(U'\x1F44C') ||C(U'\x1F44D') ||C(U'\x1F44E') ||C(U'\x1F44F') ||C(U'\x1F450') ||C(U'\x1F451') ||C(U'\x1F452') ||C(U'\x1F453')
||C(U'\x1F454') ||C(U'\x1F455') ||C(U'\x1F456') ||C(U'\x1F457') ||C(U'\x1F458') ||C(U'\x1F459') ||C(U'\x1F45A') ||C(U'\x1F45B') ||C(U'\x1F45C') ||C(U'\x1F45D') ||C(U'\x1F45E') ||C(U'\x1F45F')
||C(U'\x1F460') ||C(U'\x1F461') ||C(U'\x1F462') ||C(U'\x1F463') ||C(U'\x1F464') ||C(U'\x1F465') ||C(U'\x1F466') ||C(U'\x1F467') ||C(U'\x1F468') ||C(U'\x1F469') ||C(U'\x1F46A') ||C(U'\x1F46B')
||C(U'\x1F46C') ||C(U'\x1F46D') ||C(U'\x1F46E') ||C(U'\x1F46F') ||C(U'\x1F470') ||C(U'\x1F471') ||C(U'\x1F472') ||C(U'\x1F473') ||C(U'\x1F474') ||C(U'\x1F475') ||C(U'\x1F476') ||C(U'\x1F477')
||C(U'\x1F478') ||C(U'\x1F479') ||C(U'\x1F47A') ||C(U'\x1F47B') ||C(U'\x1F47C') ||C(U'\x1F47D') ||C(U'\x1F47E') ||C(U'\x1F47F') ||C(U'\x1F480') ||C(U'\x1F481') ||C(U'\x1F482') ||C(U'\x1F483')
||C(U'\x1F484') ||C(U'\x1F485') ||C(U'\x1F486') ||C(U'\x1F487') ||C(U'\x1F488') ||C(U'\x1F489') ||C(U'\x1F48A') ||C(U'\x1F48B') ||C(U'\x1F48C') ||C(U'\x1F48D') ||C(U'\x1F48E') ||C(U'\x1F48F')
||C(U'\x1F490') ||C(U'\x1F491') ||C(U'\x1F492') ||C(U'\x1F493') ||C(U'\x1F494') ||C(U'\x1F495') ||C(U'\x1F496') ||C(U'\x1F497') ||C(U'\x1F498') ||C(U'\x1F499') ||C(U'\x1F49A') ||C(U'\x1F49B')
||C(U'\x1F49C') ||C(U'\x1F49D') ||C(U'\x1F49E') ||C(U'\x1F49F') ||C(U'\x1F4A0') ||C(U'\x1F4A1') ||C(U'\x1F4A2') ||C(U'\x1F4A3') ||C(U'\x1F4A4') ||C(U'\x1F4A5') ||C(U'\x1F4A6') ||C(U'\x1F4A7')
||C(U'\x1F4A8') ||C(U'\x1F4A9') ||C(U'\x1F4AA') ||C(U'\x1F4AB') ||C(U'\x1F4AC') ||C(U'\x1F4AD') ||C(U'\x1F4AE') ||C(U'\x1F4AF') ||C(U'\x1F4B0') ||C(U'\x1F4B1') ||C(U'\x1F4B2') ||C(U'\x1F4B3')
||C(U'\x1F4B4') ||C(U'\x1F4B5') ||C(U'\x1F4B6') ||C(U'\x1F4B7') ||C(U'\x1F4B8') ||C(U'\x1F4B9') ||C(U'\x1F4BA') ||C(U'\x1F4BB') ||C(U'\x1F4BC') ||C(U'\x1F4BD') ||C(U'\x1F4BE') ||C(U'\x1F4BF')
||C(U'\x1F4C0') ||C(U'\x1F4C1') ||C(U'\x1F4C2') ||C(U'\x1F4C3') ||C(U'\x1F4C4') ||C(U'\x1F4C5') ||C(U'\x1F4C6') ||C(U'\x1F4C7') ||C(U'\x1F4C8') ||C(U'\x1F4C9') ||C(U'\x1F4CA') ||C(U'\x1F4CB')
||C(U'\x1F4CC') ||C(U'\x1F4CD') ||C(U'\x1F4CE') ||C(U'\x1F4CF') ||C(U'\x1F4D0') ||C(U'\x1F4D1') ||C(U'\x1F4D2') ||C(U'\x1F4D3') ||C(U'\x1F4D4') ||C(U'\x1F4D5') ||C(U'\x1F4D6') ||C(U'\x1F4D7')
||C(U'\x1F4D8') ||C(U'\x1F4D9') ||C(U'\x1F4DA') ||C(U'\x1F4DB') ||C(U'\x1F4DC') ||C(U'\x1F4DD') ||C(U'\x1F4DE') ||C(U'\x1F4DF') ||C(U'\x1F4E0') ||C(U'\x1F4E1') ||C(U'\x1F4E2') ||C(U'\x1F4E3')
||C(U'\x1F4E4') ||C(U'\x1F4E5') ||C(U'\x1F4E6') ||C(U'\x1F4E7') ||C(U'\x1F4E8') ||C(U'\x1F4E9') ||C(U'\x1F4EA') ||C(U'\x1F4EB') ||C(U'\x1F4EC') ||C(U'\x1F4ED') ||C(U'\x1F4EE') ||C(U'\x1F4EF')
||C(U'\x1F4F0') ||C(U'\x1F4F1') ||C(U'\x1F4F2') ||C(U'\x1F4F3') ||C(U'\x1F4F4') ||C(U'\x1F4F5') ||C(U'\x1F4F6') ||C(U'\x1F4F7') ||C(U'\x1F4F8') ||C(U'\x1F4F9') ||C(U'\x1F4FA') ||C(U'\x1F4FB')
||C(U'\x1F4FC') ||C(U'\x1F4FD') ||C(U'\x1F4FF') ||C(U'\x1F500') ||C(U'\x1F501') ||C(U'\x1F502') ||C(U'\x1F503') ||C(U'\x1F504') ||C(U'\x1F505') ||C(U'\x1F506') ||C(U'\x1F507') ||C(U'\x1F508')
||C(U'\x1F509') ||C(U'\x1F50A') ||C(U'\x1F50B') ||C(U'\x1F50C') ||C(U'\x1F50D') ||C(U'\x1F50E') ||C(U'\x1F50F') ||C(U'\x1F510') ||C(U'\x1F511') ||C(U'\x1F512') ||C(U'\x1F513') ||C(U'\x1F514')
||C(U'\x1F515') ||C(U'\x1F516') ||C(U'\x1F517') ||C(U'\x1F518') ||C(U'\x1F519') ||C(U'\x1F51A') ||C(U'\x1F51B') ||C(U'\x1F51C') ||C(U'\x1F51D') ||C(U'\x1F51E') ||C(U'\x1F51F') ||C(U'\x1F520')
||C(U'\x1F521') ||C(U'\x1F522') ||C(U'\x1F523') ||C(U'\x1F524') ||C(U'\x1F525') ||C(U'\x1F526') ||C(U'\x1F527') ||C(U'\x1F528') ||C(U'\x1F529') ||C(U'\x1F52A') ||C(U'\x1F52B') ||C(U'\x1F52C')
||C(U'\x1F52D') ||C(U'\x1F52E') ||C(U'\x1F52F') ||C(U'\x1F530') ||C(U'\x1F531') ||C(U'\x1F532') ||C(U'\x1F533') ||C(U'\x1F534') ||C(U'\x1F535') ||C(U'\x1F536') ||C(U'\x1F537') ||C(U'\x1F538')
||C(U'\x1F539') ||C(U'\x1F53A') ||C(U'\x1F53B') ||C(U'\x1F53C') ||C(U'\x1F53D') ||C(U'\x1F549') ||C(U'\x1F54A') ||C(U'\x1F54B') ||C(U'\x1F54C') ||C(U'\x1F54D') ||C(U'\x1F54E') ||C(U'\x1F550')
||C(U'\x1F551') ||C(U'\x1F552') ||C(U'\x1F553') ||C(U'\x1F554') ||C(U'\x1F555') ||C(U'\x1F556') ||C(U'\x1F557') ||C(U'\x1F558') ||C(U'\x1F559') ||C(U'\x1F55A') ||C(U'\x1F55B') ||C(U'\x1F55C')
||C(U'\x1F55D') ||C(U'\x1F55E') ||C(U'\x1F55F') ||C(U'\x1F560') ||C(U'\x1F561') ||C(U'\x1F562') ||C(U'\x1F563') ||C(U'\x1F564') ||C(U'\x1F565') ||C(U'\x1F566') ||C(U'\x1F567') ||C(U'\x1F56F')
||C(U'\x1F570') ||C(U'\x1F573') ||C(U'\x1F574') ||C(U'\x1F575') ||C(U'\x1F576') ||C(U'\x1F577') ||C(U'\x1F578') ||C(U'\x1F579') ||C(U'\x1F587') ||C(U'\x1F58A') ||C(U'\x1F58B') ||C(U'\x1F58C')
||C(U'\x1F58D') ||C(U'\x1F590') ||C(U'\x1F595') ||C(U'\x1F596') ||C(U'\x1F5A5') ||C(U'\x1F5A8') ||C(U'\x1F5B1') ||C(U'\x1F5B2') ||C(U'\x1F5BC') ||C(U'\x1F5C2') ||C(U'\x1F5C3') ||C(U'\x1F5C4')
||C(U'\x1F5D1') ||C(U'\x1F5D2') ||C(U'\x1F5D3') ||C(U'\x1F5DC') ||C(U'\x1F5DD') ||C(U'\x1F5DE') ||C(U'\x1F5E1') ||C(U'\x1F5E3') ||C(U'\x1F5EF') ||C(U'\x1F5F3') ||C(U'\x1F5FA') ||C(U'\x1F5FB')
||C(U'\x1F5FC') ||C(U'\x1F5FD') ||C(U'\x1F5FE') ||C(U'\x1F5FF') ||C(U'\x1F600') ||C(U'\x1F601') ||C(U'\x1F602') ||C(U'\x1F603') ||C(U'\x1F604') ||C(U'\x1F605') ||C(U'\x1F606') ||C(U'\x1F607')
||C(U'\x1F608') ||C(U'\x1F609') ||C(U'\x1F60A') ||C(U'\x1F60B') ||C(U'\x1F60C') ||C(U'\x1F60D') ||C(U'\x1F60E') ||C(U'\x1F60F') ||C(U'\x1F610') ||C(U'\x1F611') ||C(U'\x1F612') ||C(U'\x1F613')
||C(U'\x1F614') ||C(U'\x1F615') ||C(U'\x1F616') ||C(U'\x1F617') ||C(U'\x1F618') ||C(U'\x1F619') ||C(U'\x1F61A') ||C(U'\x1F61B') ||C(U'\x1F61C') ||C(U'\x1F61D') ||C(U'\x1F61E') ||C(U'\x1F61F')
||C(U'\x1F620') ||C(U'\x1F621') ||C(U'\x1F622') ||C(U'\x1F623') ||C(U'\x1F624') ||C(U'\x1F625') ||C(U'\x1F626') ||C(U'\x1F627') ||C(U'\x1F628') ||C(U'\x1F629') ||C(U'\x1F62A') ||C(U'\x1F62B')
||C(U'\x1F62C') ||C(U'\x1F62D') ||C(U'\x1F62E') ||C(U'\x1F62F') ||C(U'\x1F630') ||C(U'\x1F631') ||C(U'\x1F632') ||C(U'\x1F633') ||C(U'\x1F634') ||C(U'\x1F635') ||C(U'\x1F636') ||C(U'\x1F637')
||C(U'\x1F638') ||C(U'\x1F639') ||C(U'\x1F63A') ||C(U'\x1F63B') ||C(U'\x1F63C') ||C(U'\x1F63D') ||C(U'\x1F63E') ||C(U'\x1F63F') ||C(U'\x1F640') ||C(U'\x1F641') ||C(U'\x1F642') ||C(U'\x1F643')
||C(U'\x1F644') ||C(U'\x1F645') ||C(U'\x1F646') ||C(U'\x1F647') ||C(U'\x1F648') ||C(U'\x1F649') ||C(U'\x1F64A') ||C(U'\x1F64B') ||C(U'\x1F64C') ||C(U'\x1F64D') ||C(U'\x1F64E') ||C(U'\x1F64F')
||C(U'\x1F680') ||C(U'\x1F681') ||C(U'\x1F682') ||C(U'\x1F683') ||C(U'\x1F684') ||C(U'\x1F685') ||C(U'\x1F686') ||C(U'\x1F687') ||C(U'\x1F688') ||C(U'\x1F689') ||C(U'\x1F68A') ||C(U'\x1F68B')
||C(U'\x1F68C') ||C(U'\x1F68D') ||C(U'\x1F68E') ||C(U'\x1F68F') ||C(U'\x1F690') ||C(U'\x1F691') ||C(U'\x1F692') ||C(U'\x1F693') ||C(U'\x1F694') ||C(U'\x1F695') ||C(U'\x1F696') ||C(U'\x1F697')
||C(U'\x1F698') ||C(U'\x1F699') ||C(U'\x1F69A') ||C(U'\x1F69B') ||C(U'\x1F69C') ||C(U'\x1F69D') ||C(U'\x1F69E') ||C(U'\x1F69F') ||C(U'\x1F6A0') ||C(U'\x1F6A1') ||C(U'\x1F6A2') ||C(U'\x1F6A3')
||C(U'\x1F6A4') ||C(U'\x1F6A5') ||C(U'\x1F6A6') ||C(U'\x1F6A7') ||C(U'\x1F6A8') ||C(U'\x1F6A9') ||C(U'\x1F6AA') ||C(U'\x1F6AB') ||C(U'\x1F6AC') ||C(U'\x1F6AD') ||C(U'\x1F6AE') ||C(U'\x1F6AF')
||C(U'\x1F6B0') ||C(U'\x1F6B1') ||C(U'\x1F6B2') ||C(U'\x1F6B3') ||C(U'\x1F6B4') ||C(U'\x1F6B5') ||C(U'\x1F6B6') ||C(U'\x1F6B7') ||C(U'\x1F6B8') ||C(U'\x1F6B9') ||C(U'\x1F6BA') ||C(U'\x1F6BB')
||C(U'\x1F6BC') ||C(U'\x1F6BD') ||C(U'\x1F6BE') ||C(U'\x1F6BF') ||C(U'\x1F6C0') ||C(U'\x1F6C1') ||C(U'\x1F6C2') ||C(U'\x1F6C3') ||C(U'\x1F6C4') ||C(U'\x1F6C5') ||C(U'\x1F6CB') ||C(U'\x1F6CC')
||C(U'\x1F6CD') ||C(U'\x1F6CE') ||C(U'\x1F6CF') ||C(U'\x1F6D0') ||C(U'\x1F6E0') ||C(U'\x1F6E1') ||C(U'\x1F6E2') ||C(U'\x1F6E3') ||C(U'\x1F6E4') ||C(U'\x1F6E5') ||C(U'\x1F6E9') ||C(U'\x1F6EB')
||C(U'\x1F6EC') ||C(U'\x1F6F0') ||C(U'\x1F6F3') ||C(U'\x1F910') ||C(U'\x1F911') ||C(U'\x1F912') ||C(U'\x1F913') ||C(U'\x1F914') ||C(U'\x1F915') ||C(U'\x1F916') ||C(U'\x1F917') ||C(U'\x1F918')
||C(U'\x1F980') ||C(U'\x1F981') ||C(U'\x1F982') ||C(U'\x1F983') ||C(U'\x1F984') ||C(U'\x1F9C0') ||(C(U'\x0023')&&N(U'\x20E3')) ||(C(U'\x002A')&&N(U'\x20E3')) ||(C(U'\x0030')&&N(U'\x20E3'))
||(C(U'\x0031')&&N(U'\x20E3')) ||(C(U'\x0032')&&N(U'\x20E3')) ||(C(U'\x0033')&&N(U'\x20E3')) ||(C(U'\x0034')&&N(U'\x20E3')) ||(C(U'\x0035')&&N(U'\x20E3')) ||(C(U'\x0036')&&N(U'\x20E3'))
||(C(U'\x0037')&&N(U'\x20E3')) ||(C(U'\x0038')&&N(U'\x20E3')) ||(C(U'\x0039')&&N(U'\x20E3')) ||(C(U'\x1F1E6')&&N(U'\x1F1E8')) ||(C(U'\x1F1E6')&&N(U'\x1F1E9')) ||(C(U'\x1F1E6')&&N(U'\x1F1EA'))
||(C(U'\x1F1E6')&&N(U'\x1F1EB')) ||(C(U'\x1F1E6')&&N(U'\x1F1EC')) ||(C(U'\x1F1E6')&&N(U'\x1F1EE')) ||(C(U'\x1F1E6')&&N(U'\x1F1F1')) ||(C(U'\x1F1E6')&&N(U'\x1F1F2')) ||(C(U'\x1F1E6')&&N(U'\x1F1F4'))
||(C(U'\x1F1E6')&&N(U'\x1F1F6')) ||(C(U'\x1F1E6')&&N(U'\x1F1F7')) ||(C(U'\x1F1E6')&&N(U'\x1F1F8')) ||(C(U'\x1F1E6')&&N(U'\x1F1F9')) ||(C(U'\x1F1E6')&&N(U'\x1F1FA')) ||(C(U'\x1F1E6')&&N(U'\x1F1FC'))
||(C(U'\x1F1E6')&&N(U'\x1F1FD')) ||(C(U'\x1F1E6')&&N(U'\x1F1FF')) ||(C(U'\x1F1E7')&&N(U'\x1F1E6')) ||(C(U'\x1F1E7')&&N(U'\x1F1E7')) ||(C(U'\x1F1E7')&&N(U'\x1F1E9')) ||(C(U'\x1F1E7')&&N(U'\x1F1EA'))
||(C(U'\x1F1E7')&&N(U'\x1F1EB')) ||(C(U'\x1F1E7')&&N(U'\x1F1EC')) ||(C(U'\x1F1E7')&&N(U'\x1F1ED')) ||(C(U'\x1F1E7')&&N(U'\x1F1EE')) ||(C(U'\x1F1E7')&&N(U'\x1F1EF')) ||(C(U'\x1F1E7')&&N(U'\x1F1F1'))
||(C(U'\x1F1E7')&&N(U'\x1F1F2')) ||(C(U'\x1F1E7')&&N(U'\x1F1F3')) ||(C(U'\x1F1E7')&&N(U'\x1F1F4')) ||(C(U'\x1F1E7')&&N(U'\x1F1F6')) ||(C(U'\x1F1E7')&&N(U'\x1F1F7')) ||(C(U'\x1F1E7')&&N(U'\x1F1F8'))
||(C(U'\x1F1E7')&&N(U'\x1F1F9')) ||(C(U'\x1F1E7')&&N(U'\x1F1FB')) ||(C(U'\x1F1E7')&&N(U'\x1F1FC')) ||(C(U'\x1F1E7')&&N(U'\x1F1FE')) ||(C(U'\x1F1E7')&&N(U'\x1F1FF')) ||(C(U'\x1F1E8')&&N(U'\x1F1E6'))
||(C(U'\x1F1E8')&&N(U'\x1F1E8')) ||(C(U'\x1F1E8')&&N(U'\x1F1E9')) ||(C(U'\x1F1E8')&&N(U'\x1F1EB')) ||(C(U'\x1F1E8')&&N(U'\x1F1EC')) ||(C(U'\x1F1E8')&&N(U'\x1F1ED')) ||(C(U'\x1F1E8')&&N(U'\x1F1EE'))
||(C(U'\x1F1E8')&&N(U'\x1F1F0')) ||(C(U'\x1F1E8')&&N(U'\x1F1F1')) ||(C(U'\x1F1E8')&&N(U'\x1F1F2')) ||(C(U'\x1F1E8')&&N(U'\x1F1F3')) ||(C(U'\x1F1E8')&&N(U'\x1F1F4')) ||(C(U'\x1F1E8')&&N(U'\x1F1F5'))
||(C(U'\x1F1E8')&&N(U'\x1F1F7')) ||(C(U'\x1F1E8')&&N(U'\x1F1FA')) ||(C(U'\x1F1E8')&&N(U'\x1F1FB')) ||(C(U'\x1F1E8')&&N(U'\x1F1FC')) ||(C(U'\x1F1E8')&&N(U'\x1F1FD')) ||(C(U'\x1F1E8')&&N(U'\x1F1FE'))
||(C(U'\x1F1E8')&&N(U'\x1F1FF')) ||(C(U'\x1F1E9')&&N(U'\x1F1EA')) ||(C(U'\x1F1E9')&&N(U'\x1F1EC')) ||(C(U'\x1F1E9')&&N(U'\x1F1EF')) ||(C(U'\x1F1E9')&&N(U'\x1F1F0')) ||(C(U'\x1F1E9')&&N(U'\x1F1F2'))
||(C(U'\x1F1E9')&&N(U'\x1F1F4')) ||(C(U'\x1F1E9')&&N(U'\x1F1FF')) ||(C(U'\x1F1EA')&&N(U'\x1F1E6')) ||(C(U'\x1F1EA')&&N(U'\x1F1E8')) ||(C(U'\x1F1EA')&&N(U'\x1F1EA')) ||(C(U'\x1F1EA')&&N(U'\x1F1EC'))
||(C(U'\x1F1EA')&&N(U'\x1F1ED')) ||(C(U'\x1F1EA')&&N(U'\x1F1F7')) ||(C(U'\x1F1EA')&&N(U'\x1F1F8')) ||(C(U'\x1F1EA')&&N(U'\x1F1F9')) ||(C(U'\x1F1EA')&&N(U'\x1F1FA')) ||(C(U'\x1F1EB')&&N(U'\x1F1EE'))
||(C(U'\x1F1EB')&&N(U'\x1F1EF')) ||(C(U'\x1F1EB')&&N(U'\x1F1F0')) ||(C(U'\x1F1EB')&&N(U'\x1F1F2')) ||(C(U'\x1F1EB')&&N(U'\x1F1F4')) ||(C(U'\x1F1EB')&&N(U'\x1F1F7')) ||(C(U'\x1F1EC')&&N(U'\x1F1E6'))
||(C(U'\x1F1EC')&&N(U'\x1F1E7')) ||(C(U'\x1F1EC')&&N(U'\x1F1E9')) ||(C(U'\x1F1EC')&&N(U'\x1F1EA')) ||(C(U'\x1F1EC')&&N(U'\x1F1EB')) ||(C(U'\x1F1EC')&&N(U'\x1F1EC')) ||(C(U'\x1F1EC')&&N(U'\x1F1ED'))
||(C(U'\x1F1EC')&&N(U'\x1F1EE')) ||(C(U'\x1F1EC')&&N(U'\x1F1F1')) ||(C(U'\x1F1EC')&&N(U'\x1F1F2')) ||(C(U'\x1F1EC')&&N(U'\x1F1F3')) ||(C(U'\x1F1EC')&&N(U'\x1F1F5')) ||(C(U'\x1F1EC')&&N(U'\x1F1F6'))
||(C(U'\x1F1EC')&&N(U'\x1F1F7')) ||(C(U'\x1F1EC')&&N(U'\x1F1F8')) ||(C(U'\x1F1EC')&&N(U'\x1F1F9')) ||(C(U'\x1F1EC')&&N(U'\x1F1FA')) ||(C(U'\x1F1EC')&&N(U'\x1F1FC')) ||(C(U'\x1F1EC')&&N(U'\x1F1FE'))
||(C(U'\x1F1ED')&&N(U'\x1F1F0')) ||(C(U'\x1F1ED')&&N(U'\x1F1F2')) ||(C(U'\x1F1ED')&&N(U'\x1F1F3')) ||(C(U'\x1F1ED')&&N(U'\x1F1F7')) ||(C(U'\x1F1ED')&&N(U'\x1F1F9')) ||(C(U'\x1F1ED')&&N(U'\x1F1FA'))
||(C(U'\x1F1EE')&&N(U'\x1F1E8')) ||(C(U'\x1F1EE')&&N(U'\x1F1E9')) ||(C(U'\x1F1EE')&&N(U'\x1F1EA')) ||(C(U'\x1F1EE')&&N(U'\x1F1F1')) ||(C(U'\x1F1EE')&&N(U'\x1F1F2')) ||(C(U'\x1F1EE')&&N(U'\x1F1F3'))
||(C(U'\x1F1EE')&&N(U'\x1F1F4')) ||(C(U'\x1F1EE')&&N(U'\x1F1F6')) ||(C(U'\x1F1EE')&&N(U'\x1F1F7')) ||(C(U'\x1F1EE')&&N(U'\x1F1F8')) ||(C(U'\x1F1EE')&&N(U'\x1F1F9')) ||(C(U'\x1F1EF')&&N(U'\x1F1EA'))
||(C(U'\x1F1EF')&&N(U'\x1F1F2')) ||(C(U'\x1F1EF')&&N(U'\x1F1F4')) ||(C(U'\x1F1EF')&&N(U'\x1F1F5')) ||(C(U'\x1F1F0')&&N(U'\x1F1EA')) ||(C(U'\x1F1F0')&&N(U'\x1F1EC')) ||(C(U'\x1F1F0')&&N(U'\x1F1ED'))
||(C(U'\x1F1F0')&&N(U'\x1F1EE')) ||(C(U'\x1F1F0')&&N(U'\x1F1F2')) ||(C(U'\x1F1F0')&&N(U'\x1F1F3')) ||(C(U'\x1F1F0')&&N(U'\x1F1F5')) ||(C(U'\x1F1F0')&&N(U'\x1F1F7')) ||(C(U'\x1F1F0')&&N(U'\x1F1FC'))
||(C(U'\x1F1F0')&&N(U'\x1F1FE')) ||(C(U'\x1F1F0')&&N(U'\x1F1FF')) ||(C(U'\x1F1F1')&&N(U'\x1F1E6')) ||(C(U'\x1F1F1')&&N(U'\x1F1E7')) ||(C(U'\x1F1F1')&&N(U'\x1F1E8')) ||(C(U'\x1F1F1')&&N(U'\x1F1EE'))
||(C(U'\x1F1F1')&&N(U'\x1F1F0')) ||(C(U'\x1F1F1')&&N(U'\x1F1F7')) ||(C(U'\x1F1F1')&&N(U'\x1F1F8')) ||(C(U'\x1F1F1')&&N(U'\x1F1F9')) ||(C(U'\x1F1F1')&&N(U'\x1F1FA')) ||(C(U'\x1F1F1')&&N(U'\x1F1FB'))
||(C(U'\x1F1F1')&&N(U'\x1F1FE')) ||(C(U'\x1F1F2')&&N(U'\x1F1E6')) ||(C(U'\x1F1F2')&&N(U'\x1F1E8')) ||(C(U'\x1F1F2')&&N(U'\x1F1E9')) ||(C(U'\x1F1F2')&&N(U'\x1F1EA')) ||(C(U'\x1F1F2')&&N(U'\x1F1EB'))
||(C(U'\x1F1F2')&&N(U'\x1F1EC')) ||(C(U'\x1F1F2')&&N(U'\x1F1ED')) ||(C(U'\x1F1F2')&&N(U'\x1F1F0')) ||(C(U'\x1F1F2')&&N(U'\x1F1F1')) ||(C(U'\x1F1F2')&&N(U'\x1F1F2')) ||(C(U'\x1F1F2')&&N(U'\x1F1F3'))
||(C(U'\x1F1F2')&&N(U'\x1F1F4')) ||(C(U'\x1F1F2')&&N(U'\x1F1F5')) ||(C(U'\x1F1F2')&&N(U'\x1F1F6')) ||(C(U'\x1F1F2')&&N(U'\x1F1F7')) ||(C(U'\x1F1F2')&&N(U'\x1F1F8')) ||(C(U'\x1F1F2')&&N(U'\x1F1F9'))
||(C(U'\x1F1F2')&&N(U'\x1F1FA')) ||(C(U'\x1F1F2')&&N(U'\x1F1FB')) ||(C(U'\x1F1F2')&&N(U'\x1F1FC')) ||(C(U'\x1F1F2')&&N(U'\x1F1FD')) ||(C(U'\x1F1F2')&&N(U'\x1F1FE')) ||(C(U'\x1F1F2')&&N(U'\x1F1FF'))
||(C(U'\x1F1F3')&&N(U'\x1F1E6')) ||(C(U'\x1F1F3')&&N(U'\x1F1E8')) ||(C(U'\x1F1F3')&&N(U'\x1F1EA')) ||(C(U'\x1F1F3')&&N(U'\x1F1EB')) ||(C(U'\x1F1F3')&&N(U'\x1F1EC')) ||(C(U'\x1F1F3')&&N(U'\x1F1EE'))
||(C(U'\x1F1F3')&&N(U'\x1F1F1')) ||(C(U'\x1F1F3')&&N(U'\x1F1F4')) ||(C(U'\x1F1F3')&&N(U'\x1F1F5')) ||(C(U'\x1F1F3')&&N(U'\x1F1F7')) ||(C(U'\x1F1F3')&&N(U'\x1F1FA')) ||(C(U'\x1F1F3')&&N(U'\x1F1FF'))
||(C(U'\x1F1F4')&&N(U'\x1F1F2')) ||(C(U'\x1F1F5')&&N(U'\x1F1E6')) ||(C(U'\x1F1F5')&&N(U'\x1F1EA')) ||(C(U'\x1F1F5')&&N(U'\x1F1EB')) ||(C(U'\x1F1F5')&&N(U'\x1F1EC')) ||(C(U'\x1F1F5')&&N(U'\x1F1ED'))
||(C(U'\x1F1F5')&&N(U'\x1F1F0')) ||(C(U'\x1F1F5')&&N(U'\x1F1F1')) ||(C(U'\x1F1F5')&&N(U'\x1F1F2')) ||(C(U'\x1F1F5')&&N(U'\x1F1F3')) ||(C(U'\x1F1F5')&&N(U'\x1F1F7')) ||(C(U'\x1F1F5')&&N(U'\x1F1F8'))
||(C(U'\x1F1F5')&&N(U'\x1F1F9')) ||(C(U'\x1F1F5')&&N(U'\x1F1FC')) ||(C(U'\x1F1F5')&&N(U'\x1F1FE')) ||(C(U'\x1F1F6')&&N(U'\x1F1E6')) ||(C(U'\x1F1F7')&&N(U'\x1F1EA')) ||(C(U'\x1F1F7')&&N(U'\x1F1F4'))
||(C(U'\x1F1F7')&&N(U'\x1F1F8')) ||(C(U'\x1F1F7')&&N(U'\x1F1FA')) ||(C(U'\x1F1F7')&&N(U'\x1F1FC')) ||(C(U'\x1F1F8')&&N(U'\x1F1E6')) ||(C(U'\x1F1F8')&&N(U'\x1F1E7')) ||(C(U'\x1F1F8')&&N(U'\x1F1E8'))
||(C(U'\x1F1F8')&&N(U'\x1F1E9')) ||(C(U'\x1F1F8')&&N(U'\x1F1EA')) ||(C(U'\x1F1F8')&&N(U'\x1F1EC')) ||(C(U'\x1F1F8')&&N(U'\x1F1ED')) ||(C(U'\x1F1F8')&&N(U'\x1F1EE')) ||(C(U'\x1F1F8')&&N(U'\x1F1EF'))
||(C(U'\x1F1F8')&&N(U'\x1F1F0')) ||(C(U'\x1F1F8')&&N(U'\x1F1F1')) ||(C(U'\x1F1F8')&&N(U'\x1F1F2')) ||(C(U'\x1F1F8')&&N(U'\x1F1F3')) ||(C(U'\x1F1F8')&&N(U'\x1F1F4')) ||(C(U'\x1F1F8')&&N(U'\x1F1F7'))
||(C(U'\x1F1F8')&&N(U'\x1F1F8')) ||(C(U'\x1F1F8')&&N(U'\x1F1F9')) ||(C(U'\x1F1F8')&&N(U'\x1F1FB')) ||(C(U'\x1F1F8')&&N(U'\x1F1FD')) ||(C(U'\x1F1F8')&&N(U'\x1F1FE')) ||(C(U'\x1F1F8')&&N(U'\x1F1FF'))
||(C(U'\x1F1F9')&&N(U'\x1F1E6')) ||(C(U'\x1F1F9')&&N(U'\x1F1E8')) ||(C(U'\x1F1F9')&&N(U'\x1F1E9')) ||(C(U'\x1F1F9')&&N(U'\x1F1EB')) ||(C(U'\x1F1F9')&&N(U'\x1F1EC')) ||(C(U'\x1F1F9')&&N(U'\x1F1ED'))
||(C(U'\x1F1F9')&&N(U'\x1F1EF')) ||(C(U'\x1F1F9')&&N(U'\x1F1F0')) ||(C(U'\x1F1F9')&&N(U'\x1F1F1')) ||(C(U'\x1F1F9')&&N(U'\x1F1F2')) ||(C(U'\x1F1F9')&&N(U'\x1F1F3')) ||(C(U'\x1F1F9')&&N(U'\x1F1F4'))
||(C(U'\x1F1F9')&&N(U'\x1F1F7')) ||(C(U'\x1F1F9')&&N(U'\x1F1F9')) ||(C(U'\x1F1F9')&&N(U'\x1F1FB')) ||(C(U'\x1F1F9')&&N(U'\x1F1FC')) ||(C(U'\x1F1F9')&&N(U'\x1F1FF')) ||(C(U'\x1F1FA')&&N(U'\x1F1E6'))
||(C(U'\x1F1FA')&&N(U'\x1F1EC')) ||(C(U'\x1F1FA')&&N(U'\x1F1F2')) ||(C(U'\x1F1FA')&&N(U'\x1F1F8')) ||(C(U'\x1F1FA')&&N(U'\x1F1FE')) ||(C(U'\x1F1FA')&&N(U'\x1F1FF')) ||(C(U'\x1F1FB')&&N(U'\x1F1E6'))
||(C(U'\x1F1FB')&&N(U'\x1F1E8')) ||(C(U'\x1F1FB')&&N(U'\x1F1EA')) ||(C(U'\x1F1FB')&&N(U'\x1F1EC')) ||(C(U'\x1F1FB')&&N(U'\x1F1EE')) ||(C(U'\x1F1FB')&&N(U'\x1F1F3')) ||(C(U'\x1F1FB')&&N(U'\x1F1FA'))
||(C(U'\x1F1FC')&&N(U'\x1F1EB')) ||(C(U'\x1F1FC')&&N(U'\x1F1F8')) ||(C(U'\x1F1FD')&&N(U'\x1F1F0')) ||(C(U'\x1F1FE')&&N(U'\x1F1EA')) ||(C(U'\x1F1FE')&&N(U'\x1F1F9')) ||(C(U'\x1F1FF')&&N(U'\x1F1E6'))
||(C(U'\x1F1FF')&&N(U'\x1F1F2')) ||(C(U'\x1F1FF')&&N(U'\x1F1FC'))
;
#undef C
#undef N
}
int main() {
std::string input = u8"The Quick Brown Fox Jumps Over Lazy Dog";
std::vector<std::string> output;
// https://en.cppreference.com/w/cpp/locale/codecvt
std::wstring_convert<deletable_facet<std::codecvt<char32_t, char, std::mbstate_t>>, char32_t> conv;
std::u32string u32input = conv.from_bytes(input);
// https://stackoverflow.com/a/5888273/9072753
std::basic_stringstream<char32_t> iss(u32input);
const char32_t u32eof = std::char_traits<char32_t>::eof();
std::u32string temp;
char32_t c;
while (iss.get(c)) {
bool elem = false;
// If it is an emoji, include it.
if (is_emoji(c, u32eof)) {
temp.push_back(c);
elem = true;
} else if (is_emoji(c, iss.peek())) {
// Also if it is double emoji. Note the 'else' above.
temp.push_back(c);
temp.push_back(iss.get());
elem = true;
} else if (iss.peek() == u32eof && c != U' ') {
// Also when it is last character, but not a space.
temp.push_back(c);
elem = true;
} else if (c == U' ') {
// Next elem, but exclude the space.
elem = true;
}
if (elem) {
// Flush the string.
const std::string out = conv.to_bytes(temp);
output.push_back(out);
temp.clear();
} else {
// Otherwise just add to the string.
temp.push_back(c);
}
}
for (size_t i = 0; i < output.size(); ++i) {
std::cout << output[i] << (i + 1 != output.size() ? ',' : '\n');
}
}
outputs:
The,Quick,,,Brown,Fox,Jumps,,,,,Over,Lazy,Dog
Some additional work to make it safe and fixing double ,,
when a space is after emoji (probably adding while (iss.peek() == U' ') iss.get();
in if (elem)
) is left TODO.