diff --git a/contrib/unicode/GraphemeBreakProperty.txt b/contrib/unicode/GraphemeBreakProperty.txt
new file mode 100644
index 0000000000000000000000000000000000000000..12453cbdb54a15676fd023748cbcafa5042e27fc
--- /dev/null
+++ b/contrib/unicode/GraphemeBreakProperty.txt
@@ -0,0 +1,1475 @@
+# GraphemeBreakProperty-15.1.0.txt
+# Date: 2023-01-05, 20:34:41 GMT
+# © 2023 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see https://www.unicode.org/terms_of_use.html
+#
+# Unicode Character Database
+#   For documentation, see https://www.unicode.org/reports/tr44/
+
+# ================================================
+
+# Property:	Grapheme_Cluster_Break
+
+#  All code points not explicitly listed for Grapheme_Cluster_Break
+#  have the value Other (XX).
+
+# @missing: 0000..10FFFF; Other
+
+# ================================================
+
+0600..0605    ; Prepend # Cf   [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE
+06DD          ; Prepend # Cf       ARABIC END OF AYAH
+070F          ; Prepend # Cf       SYRIAC ABBREVIATION MARK
+0890..0891    ; Prepend # Cf   [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE
+08E2          ; Prepend # Cf       ARABIC DISPUTED END OF AYAH
+0D4E          ; Prepend # Lo       MALAYALAM LETTER DOT REPH
+110BD         ; Prepend # Cf       KAITHI NUMBER SIGN
+110CD         ; Prepend # Cf       KAITHI NUMBER SIGN ABOVE
+111C2..111C3  ; Prepend # Lo   [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA
+1193F         ; Prepend # Lo       DIVES AKURU PREFIXED NASAL SIGN
+11941         ; Prepend # Lo       DIVES AKURU INITIAL RA
+11A3A         ; Prepend # Lo       ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA
+11A84..11A89  ; Prepend # Lo   [6] SOYOMBO SIGN JIHVAMULIYA..SOYOMBO CLUSTER-INITIAL LETTER SA
+11D46         ; Prepend # Lo       MASARAM GONDI REPHA
+11F02         ; Prepend # Lo       KAWI SIGN REPHA
+
+# Total code points: 27
+
+# ================================================
+
+000D          ; CR # Cc       <control-000D>
+
+# Total code points: 1
+
+# ================================================
+
+000A          ; LF # Cc       <control-000A>
+
+# Total code points: 1
+
+# ================================================
+
+0000..0009    ; Control # Cc  [10] <control-0000>..<control-0009>
+000B..000C    ; Control # Cc   [2] <control-000B>..<control-000C>
+000E..001F    ; Control # Cc  [18] <control-000E>..<control-001F>
+007F..009F    ; Control # Cc  [33] <control-007F>..<control-009F>
+00AD          ; Control # Cf       SOFT HYPHEN
+061C          ; Control # Cf       ARABIC LETTER MARK
+180E          ; Control # Cf       MONGOLIAN VOWEL SEPARATOR
+200B          ; Control # Cf       ZERO WIDTH SPACE
+200E..200F    ; Control # Cf   [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
+2028          ; Control # Zl       LINE SEPARATOR
+2029          ; Control # Zp       PARAGRAPH SEPARATOR
+202A..202E    ; Control # Cf   [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+2060..2064    ; Control # Cf   [5] WORD JOINER..INVISIBLE PLUS
+2065          ; Control # Cn       <reserved-2065>
+2066..206F    ; Control # Cf  [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES
+FEFF          ; Control # Cf       ZERO WIDTH NO-BREAK SPACE
+FFF0..FFF8    ; Control # Cn   [9] <reserved-FFF0>..<reserved-FFF8>
+FFF9..FFFB    ; Control # Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
+13430..1343F  ; Control # Cf  [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE
+1BCA0..1BCA3  ; Control # Cf   [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
+1D173..1D17A  ; Control # Cf   [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+E0000         ; Control # Cn       <reserved-E0000>
+E0001         ; Control # Cf       LANGUAGE TAG
+E0002..E001F  ; Control # Cn  [30] <reserved-E0002>..<reserved-E001F>
+E0080..E00FF  ; Control # Cn [128] <reserved-E0080>..<reserved-E00FF>
+E01F0..E0FFF  ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
+
+# Total code points: 3893
+
+# ================================================
+
+0300..036F    ; Extend # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
+0483..0487    ; Extend # Mn   [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE
+0488..0489    ; Extend # Me   [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
+0591..05BD    ; Extend # Mn  [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
+05BF          ; Extend # Mn       HEBREW POINT RAFE
+05C1..05C2    ; Extend # Mn   [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
+05C4..05C5    ; Extend # Mn   [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
+05C7          ; Extend # Mn       HEBREW POINT QAMATS QATAN
+0610..061A    ; Extend # Mn  [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
+064B..065F    ; Extend # Mn  [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW
+0670          ; Extend # Mn       ARABIC LETTER SUPERSCRIPT ALEF
+06D6..06DC    ; Extend # Mn   [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
+06DF..06E4    ; Extend # Mn   [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
+06E7..06E8    ; Extend # Mn   [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+06EA..06ED    ; Extend # Mn   [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
+0711          ; Extend # Mn       SYRIAC LETTER SUPERSCRIPT ALAPH
+0730..074A    ; Extend # Mn  [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
+07A6..07B0    ; Extend # Mn  [11] THAANA ABAFILI..THAANA SUKUN
+07EB..07F3    ; Extend # Mn   [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
+07FD          ; Extend # Mn       NKO DANTAYALAN
+0816..0819    ; Extend # Mn   [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH
+081B..0823    ; Extend # Mn   [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
+0825..0827    ; Extend # Mn   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
+0829..082D    ; Extend # Mn   [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
+0859..085B    ; Extend # Mn   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
+0898..089F    ; Extend # Mn   [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
+08CA..08E1    ; Extend # Mn  [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
+08E3..0902    ; Extend # Mn  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
+093A          ; Extend # Mn       DEVANAGARI VOWEL SIGN OE
+093C          ; Extend # Mn       DEVANAGARI SIGN NUKTA
+0941..0948    ; Extend # Mn   [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+094D          ; Extend # Mn       DEVANAGARI SIGN VIRAMA
+0951..0957    ; Extend # Mn   [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE
+0962..0963    ; Extend # Mn   [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+0981          ; Extend # Mn       BENGALI SIGN CANDRABINDU
+09BC          ; Extend # Mn       BENGALI SIGN NUKTA
+09BE          ; Extend # Mc       BENGALI VOWEL SIGN AA
+09C1..09C4    ; Extend # Mn   [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+09CD          ; Extend # Mn       BENGALI SIGN VIRAMA
+09D7          ; Extend # Mc       BENGALI AU LENGTH MARK
+09E2..09E3    ; Extend # Mn   [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
+09FE          ; Extend # Mn       BENGALI SANDHI MARK
+0A01..0A02    ; Extend # Mn   [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
+0A3C          ; Extend # Mn       GURMUKHI SIGN NUKTA
+0A41..0A42    ; Extend # Mn   [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+0A47..0A48    ; Extend # Mn   [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+0A4B..0A4D    ; Extend # Mn   [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
+0A51          ; Extend # Mn       GURMUKHI SIGN UDAAT
+0A70..0A71    ; Extend # Mn   [2] GURMUKHI TIPPI..GURMUKHI ADDAK
+0A75          ; Extend # Mn       GURMUKHI SIGN YAKASH
+0A81..0A82    ; Extend # Mn   [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
+0ABC          ; Extend # Mn       GUJARATI SIGN NUKTA
+0AC1..0AC5    ; Extend # Mn   [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
+0AC7..0AC8    ; Extend # Mn   [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
+0ACD          ; Extend # Mn       GUJARATI SIGN VIRAMA
+0AE2..0AE3    ; Extend # Mn   [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
+0AFA..0AFF    ; Extend # Mn   [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE
+0B01          ; Extend # Mn       ORIYA SIGN CANDRABINDU
+0B3C          ; Extend # Mn       ORIYA SIGN NUKTA
+0B3E          ; Extend # Mc       ORIYA VOWEL SIGN AA
+0B3F          ; Extend # Mn       ORIYA VOWEL SIGN I
+0B41..0B44    ; Extend # Mn   [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
+0B4D          ; Extend # Mn       ORIYA SIGN VIRAMA
+0B55..0B56    ; Extend # Mn   [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK
+0B57          ; Extend # Mc       ORIYA AU LENGTH MARK
+0B62..0B63    ; Extend # Mn   [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
+0B82          ; Extend # Mn       TAMIL SIGN ANUSVARA
+0BBE          ; Extend # Mc       TAMIL VOWEL SIGN AA
+0BC0          ; Extend # Mn       TAMIL VOWEL SIGN II
+0BCD          ; Extend # Mn       TAMIL SIGN VIRAMA
+0BD7          ; Extend # Mc       TAMIL AU LENGTH MARK
+0C00          ; Extend # Mn       TELUGU SIGN COMBINING CANDRABINDU ABOVE
+0C04          ; Extend # Mn       TELUGU SIGN COMBINING ANUSVARA ABOVE
+0C3C          ; Extend # Mn       TELUGU SIGN NUKTA
+0C3E..0C40    ; Extend # Mn   [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
+0C46..0C48    ; Extend # Mn   [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+0C4A..0C4D    ; Extend # Mn   [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
+0C55..0C56    ; Extend # Mn   [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
+0C62..0C63    ; Extend # Mn   [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
+0C81          ; Extend # Mn       KANNADA SIGN CANDRABINDU
+0CBC          ; Extend # Mn       KANNADA SIGN NUKTA
+0CBF          ; Extend # Mn       KANNADA VOWEL SIGN I
+0CC2          ; Extend # Mc       KANNADA VOWEL SIGN UU
+0CC6          ; Extend # Mn       KANNADA VOWEL SIGN E
+0CCC..0CCD    ; Extend # Mn   [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
+0CD5..0CD6    ; Extend # Mc   [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0CE2..0CE3    ; Extend # Mn   [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+0D00..0D01    ; Extend # Mn   [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
+0D3B..0D3C    ; Extend # Mn   [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
+0D3E          ; Extend # Mc       MALAYALAM VOWEL SIGN AA
+0D41..0D44    ; Extend # Mn   [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
+0D4D          ; Extend # Mn       MALAYALAM SIGN VIRAMA
+0D57          ; Extend # Mc       MALAYALAM AU LENGTH MARK
+0D62..0D63    ; Extend # Mn   [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
+0D81          ; Extend # Mn       SINHALA SIGN CANDRABINDU
+0DCA          ; Extend # Mn       SINHALA SIGN AL-LAKUNA
+0DCF          ; Extend # Mc       SINHALA VOWEL SIGN AELA-PILLA
+0DD2..0DD4    ; Extend # Mn   [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6          ; Extend # Mn       SINHALA VOWEL SIGN DIGA PAA-PILLA
+0DDF          ; Extend # Mc       SINHALA VOWEL SIGN GAYANUKITTA
+0E31          ; Extend # Mn       THAI CHARACTER MAI HAN-AKAT
+0E34..0E3A    ; Extend # Mn   [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
+0E47..0E4E    ; Extend # Mn   [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
+0EB1          ; Extend # Mn       LAO VOWEL SIGN MAI KAN
+0EB4..0EBC    ; Extend # Mn   [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO
+0EC8..0ECE    ; Extend # Mn   [7] LAO TONE MAI EK..LAO YAMAKKAN
+0F18..0F19    ; Extend # Mn   [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0F35          ; Extend # Mn       TIBETAN MARK NGAS BZUNG NYI ZLA
+0F37          ; Extend # Mn       TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0F39          ; Extend # Mn       TIBETAN MARK TSA -PHRU
+0F71..0F7E    ; Extend # Mn  [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
+0F80..0F84    ; Extend # Mn   [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
+0F86..0F87    ; Extend # Mn   [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
+0F8D..0F97    ; Extend # Mn  [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA
+0F99..0FBC    ; Extend # Mn  [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0FC6          ; Extend # Mn       TIBETAN SYMBOL PADMA GDAN
+102D..1030    ; Extend # Mn   [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
+1032..1037    ; Extend # Mn   [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW
+1039..103A    ; Extend # Mn   [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
+103D..103E    ; Extend # Mn   [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
+1058..1059    ; Extend # Mn   [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
+105E..1060    ; Extend # Mn   [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
+1071..1074    ; Extend # Mn   [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
+1082          ; Extend # Mn       MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+1085..1086    ; Extend # Mn   [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
+108D          ; Extend # Mn       MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
+109D          ; Extend # Mn       MYANMAR VOWEL SIGN AITON AI
+135D..135F    ; Extend # Mn   [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
+1712..1714    ; Extend # Mn   [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+1732..1733    ; Extend # Mn   [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
+1752..1753    ; Extend # Mn   [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
+1772..1773    ; Extend # Mn   [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+17B4..17B5    ; Extend # Mn   [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+17B7..17BD    ; Extend # Mn   [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
+17C6          ; Extend # Mn       KHMER SIGN NIKAHIT
+17C9..17D3    ; Extend # Mn  [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
+17DD          ; Extend # Mn       KHMER SIGN ATTHACAN
+180B..180D    ; Extend # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+180F          ; Extend # Mn       MONGOLIAN FREE VARIATION SELECTOR FOUR
+1885..1886    ; Extend # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+18A9          ; Extend # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
+1920..1922    ; Extend # Mn   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
+1927..1928    ; Extend # Mn   [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
+1932          ; Extend # Mn       LIMBU SMALL LETTER ANUSVARA
+1939..193B    ; Extend # Mn   [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
+1A17..1A18    ; Extend # Mn   [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
+1A1B          ; Extend # Mn       BUGINESE VOWEL SIGN AE
+1A56          ; Extend # Mn       TAI THAM CONSONANT SIGN MEDIAL LA
+1A58..1A5E    ; Extend # Mn   [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA
+1A60          ; Extend # Mn       TAI THAM SIGN SAKOT
+1A62          ; Extend # Mn       TAI THAM VOWEL SIGN MAI SAT
+1A65..1A6C    ; Extend # Mn   [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW
+1A73..1A7C    ; Extend # Mn  [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN
+1A7F          ; Extend # Mn       TAI THAM COMBINING CRYPTOGRAMMIC DOT
+1AB0..1ABD    ; Extend # Mn  [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
+1ABE          ; Extend # Me       COMBINING PARENTHESES OVERLAY
+1ABF..1ACE    ; Extend # Mn  [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T
+1B00..1B03    ; Extend # Mn   [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
+1B34          ; Extend # Mn       BALINESE SIGN REREKAN
+1B35          ; Extend # Mc       BALINESE VOWEL SIGN TEDUNG
+1B36..1B3A    ; Extend # Mn   [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+1B3C          ; Extend # Mn       BALINESE VOWEL SIGN LA LENGA
+1B42          ; Extend # Mn       BALINESE VOWEL SIGN PEPET
+1B6B..1B73    ; Extend # Mn   [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
+1B80..1B81    ; Extend # Mn   [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
+1BA2..1BA5    ; Extend # Mn   [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
+1BA8..1BA9    ; Extend # Mn   [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
+1BAB..1BAD    ; Extend # Mn   [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA
+1BE6          ; Extend # Mn       BATAK SIGN TOMPI
+1BE8..1BE9    ; Extend # Mn   [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE
+1BED          ; Extend # Mn       BATAK VOWEL SIGN KARO O
+1BEF..1BF1    ; Extend # Mn   [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H
+1C2C..1C33    ; Extend # Mn   [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
+1C36..1C37    ; Extend # Mn   [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
+1CD0..1CD2    ; Extend # Mn   [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
+1CD4..1CE0    ; Extend # Mn  [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
+1CE2..1CE8    ; Extend # Mn   [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
+1CED          ; Extend # Mn       VEDIC SIGN TIRYAK
+1CF4          ; Extend # Mn       VEDIC TONE CANDRA ABOVE
+1CF8..1CF9    ; Extend # Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
+1DC0..1DFF    ; Extend # Mn  [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+200C          ; Extend # Cf       ZERO WIDTH NON-JOINER
+20D0..20DC    ; Extend # Mn  [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
+20DD..20E0    ; Extend # Me   [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
+20E1          ; Extend # Mn       COMBINING LEFT RIGHT ARROW ABOVE
+20E2..20E4    ; Extend # Me   [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+20E5..20F0    ; Extend # Mn  [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE
+2CEF..2CF1    ; Extend # Mn   [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS
+2D7F          ; Extend # Mn       TIFINAGH CONSONANT JOINER
+2DE0..2DFF    ; Extend # Mn  [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
+302A..302D    ; Extend # Mn   [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
+302E..302F    ; Extend # Mc   [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK
+3099..309A    ; Extend # Mn   [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+A66F          ; Extend # Mn       COMBINING CYRILLIC VZMET
+A670..A672    ; Extend # Me   [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN
+A674..A67D    ; Extend # Mn  [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK
+A69E..A69F    ; Extend # Mn   [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E
+A6F0..A6F1    ; Extend # Mn   [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS
+A802          ; Extend # Mn       SYLOTI NAGRI SIGN DVISVARA
+A806          ; Extend # Mn       SYLOTI NAGRI SIGN HASANTA
+A80B          ; Extend # Mn       SYLOTI NAGRI SIGN ANUSVARA
+A825..A826    ; Extend # Mn   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
+A82C          ; Extend # Mn       SYLOTI NAGRI SIGN ALTERNATE HASANTA
+A8C4..A8C5    ; Extend # Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
+A8E0..A8F1    ; Extend # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
+A8FF          ; Extend # Mn       DEVANAGARI VOWEL SIGN AY
+A926..A92D    ; Extend # Mn   [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
+A947..A951    ; Extend # Mn  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
+A980..A982    ; Extend # Mn   [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR
+A9B3          ; Extend # Mn       JAVANESE SIGN CECAK TELU
+A9B6..A9B9    ; Extend # Mn   [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
+A9BC..A9BD    ; Extend # Mn   [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET
+A9E5          ; Extend # Mn       MYANMAR SIGN SHAN SAW
+AA29..AA2E    ; Extend # Mn   [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
+AA31..AA32    ; Extend # Mn   [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
+AA35..AA36    ; Extend # Mn   [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
+AA43          ; Extend # Mn       CHAM CONSONANT SIGN FINAL NG
+AA4C          ; Extend # Mn       CHAM CONSONANT SIGN FINAL M
+AA7C          ; Extend # Mn       MYANMAR SIGN TAI LAING TONE-2
+AAB0          ; Extend # Mn       TAI VIET MAI KANG
+AAB2..AAB4    ; Extend # Mn   [3] TAI VIET VOWEL I..TAI VIET VOWEL U
+AAB7..AAB8    ; Extend # Mn   [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA
+AABE..AABF    ; Extend # Mn   [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK
+AAC1          ; Extend # Mn       TAI VIET TONE MAI THO
+AAEC..AAED    ; Extend # Mn   [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI
+AAF6          ; Extend # Mn       MEETEI MAYEK VIRAMA
+ABE5          ; Extend # Mn       MEETEI MAYEK VOWEL SIGN ANAP
+ABE8          ; Extend # Mn       MEETEI MAYEK VOWEL SIGN UNAP
+ABED          ; Extend # Mn       MEETEI MAYEK APUN IYEK
+FB1E          ; Extend # Mn       HEBREW POINT JUDEO-SPANISH VARIKA
+FE00..FE0F    ; Extend # Mn  [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+FE20..FE2F    ; Extend # Mn  [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
+FF9E..FF9F    ; Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+101FD         ; Extend # Mn       PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
+102E0         ; Extend # Mn       COPTIC EPACT THOUSANDS MARK
+10376..1037A  ; Extend # Mn   [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII
+10A01..10A03  ; Extend # Mn   [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
+10A05..10A06  ; Extend # Mn   [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+10A0C..10A0F  ; Extend # Mn   [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
+10A38..10A3A  ; Extend # Mn   [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
+10A3F         ; Extend # Mn       KHAROSHTHI VIRAMA
+10AE5..10AE6  ; Extend # Mn   [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
+10D24..10D27  ; Extend # Mn   [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+10EAB..10EAC  ; Extend # Mn   [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
+10EFD..10EFF  ; Extend # Mn   [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
+10F46..10F50  ; Extend # Mn  [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
+10F82..10F85  ; Extend # Mn   [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
+11001         ; Extend # Mn       BRAHMI SIGN ANUSVARA
+11038..11046  ; Extend # Mn  [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA
+11070         ; Extend # Mn       BRAHMI SIGN OLD TAMIL VIRAMA
+11073..11074  ; Extend # Mn   [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O
+1107F..11081  ; Extend # Mn   [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA
+110B3..110B6  ; Extend # Mn   [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI
+110B9..110BA  ; Extend # Mn   [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
+110C2         ; Extend # Mn       KAITHI VOWEL SIGN VOCALIC R
+11100..11102  ; Extend # Mn   [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA
+11127..1112B  ; Extend # Mn   [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
+1112D..11134  ; Extend # Mn   [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA
+11173         ; Extend # Mn       MAHAJANI SIGN NUKTA
+11180..11181  ; Extend # Mn   [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
+111B6..111BE  ; Extend # Mn   [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
+111C9..111CC  ; Extend # Mn   [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK
+111CF         ; Extend # Mn       SHARADA SIGN INVERTED CANDRABINDU
+1122F..11231  ; Extend # Mn   [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
+11234         ; Extend # Mn       KHOJKI SIGN ANUSVARA
+11236..11237  ; Extend # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+1123E         ; Extend # Mn       KHOJKI SIGN SUKUN
+11241         ; Extend # Mn       KHOJKI VOWEL SIGN VOCALIC R
+112DF         ; Extend # Mn       KHUDAWADI SIGN ANUSVARA
+112E3..112EA  ; Extend # Mn   [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
+11300..11301  ; Extend # Mn   [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
+1133B..1133C  ; Extend # Mn   [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
+1133E         ; Extend # Mc       GRANTHA VOWEL SIGN AA
+11340         ; Extend # Mn       GRANTHA VOWEL SIGN II
+11357         ; Extend # Mc       GRANTHA AU LENGTH MARK
+11366..1136C  ; Extend # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
+11370..11374  ; Extend # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11438..1143F  ; Extend # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11442..11444  ; Extend # Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11446         ; Extend # Mn       NEWA SIGN NUKTA
+1145E         ; Extend # Mn       NEWA SANDHI MARK
+114B0         ; Extend # Mc       TIRHUTA VOWEL SIGN AA
+114B3..114B8  ; Extend # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
+114BA         ; Extend # Mn       TIRHUTA VOWEL SIGN SHORT E
+114BD         ; Extend # Mc       TIRHUTA VOWEL SIGN SHORT O
+114BF..114C0  ; Extend # Mn   [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
+114C2..114C3  ; Extend # Mn   [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA
+115AF         ; Extend # Mc       SIDDHAM VOWEL SIGN AA
+115B2..115B5  ; Extend # Mn   [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR
+115BC..115BD  ; Extend # Mn   [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
+115BF..115C0  ; Extend # Mn   [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA
+115DC..115DD  ; Extend # Mn   [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU
+11633..1163A  ; Extend # Mn   [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI
+1163D         ; Extend # Mn       MODI SIGN ANUSVARA
+1163F..11640  ; Extend # Mn   [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA
+116AB         ; Extend # Mn       TAKRI SIGN ANUSVARA
+116AD         ; Extend # Mn       TAKRI VOWEL SIGN AA
+116B0..116B5  ; Extend # Mn   [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
+116B7         ; Extend # Mn       TAKRI SIGN NUKTA
+1171D..1171F  ; Extend # Mn   [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+11722..11725  ; Extend # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
+11727..1172B  ; Extend # Mn   [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
+1182F..11837  ; Extend # Mn   [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
+11839..1183A  ; Extend # Mn   [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
+11930         ; Extend # Mc       DIVES AKURU VOWEL SIGN AA
+1193B..1193C  ; Extend # Mn   [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU
+1193E         ; Extend # Mn       DIVES AKURU VIRAMA
+11943         ; Extend # Mn       DIVES AKURU SIGN NUKTA
+119D4..119D7  ; Extend # Mn   [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
+119DA..119DB  ; Extend # Mn   [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI
+119E0         ; Extend # Mn       NANDINAGARI SIGN VIRAMA
+11A01..11A0A  ; Extend # Mn  [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK
+11A33..11A38  ; Extend # Mn   [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA
+11A3B..11A3E  ; Extend # Mn   [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
+11A47         ; Extend # Mn       ZANABAZAR SQUARE SUBJOINER
+11A51..11A56  ; Extend # Mn   [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE
+11A59..11A5B  ; Extend # Mn   [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK
+11A8A..11A96  ; Extend # Mn  [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA
+11A98..11A99  ; Extend # Mn   [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER
+11C30..11C36  ; Extend # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D  ; Extend # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3F         ; Extend # Mn       BHAIKSUKI SIGN VIRAMA
+11C92..11CA7  ; Extend # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CAA..11CB0  ; Extend # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB2..11CB3  ; Extend # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB5..11CB6  ; Extend # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
+11D31..11D36  ; Extend # Mn   [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R
+11D3A         ; Extend # Mn       MASARAM GONDI VOWEL SIGN E
+11D3C..11D3D  ; Extend # Mn   [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O
+11D3F..11D45  ; Extend # Mn   [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA
+11D47         ; Extend # Mn       MASARAM GONDI RA-KARA
+11D90..11D91  ; Extend # Mn   [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
+11D95         ; Extend # Mn       GUNJALA GONDI SIGN ANUSVARA
+11D97         ; Extend # Mn       GUNJALA GONDI VIRAMA
+11EF3..11EF4  ; Extend # Mn   [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
+11F00..11F01  ; Extend # Mn   [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA
+11F36..11F3A  ; Extend # Mn   [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R
+11F40         ; Extend # Mn       KAWI VOWEL SIGN EU
+11F42         ; Extend # Mn       KAWI CONJOINER
+13440         ; Extend # Mn       EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
+13447..13455  ; Extend # Mn  [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+16AF0..16AF4  ; Extend # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
+16B30..16B36  ; Extend # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
+16F4F         ; Extend # Mn       MIAO SIGN CONSONANT MODIFIER BAR
+16F8F..16F92  ; Extend # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
+16FE4         ; Extend # Mn       KHITAN SMALL SCRIPT FILLER
+1BC9D..1BC9E  ; Extend # Mn   [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
+1CF00..1CF2D  ; Extend # Mn  [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
+1CF30..1CF46  ; Extend # Mn  [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
+1D165         ; Extend # Mc       MUSICAL SYMBOL COMBINING STEM
+1D167..1D169  ; Extend # Mn   [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
+1D16E..1D172  ; Extend # Mc   [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
+1D17B..1D182  ; Extend # Mn   [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
+1D185..1D18B  ; Extend # Mn   [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+1D1AA..1D1AD  ; Extend # Mn   [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+1D242..1D244  ; Extend # Mn   [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
+1DA00..1DA36  ; Extend # Mn  [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN
+1DA3B..1DA6C  ; Extend # Mn  [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT
+1DA75         ; Extend # Mn       SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS
+1DA84         ; Extend # Mn       SIGNWRITING LOCATION HEAD NECK
+1DA9B..1DA9F  ; Extend # Mn   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
+1DAA1..1DAAF  ; Extend # Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+1E000..1E006  ; Extend # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; Extend # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; Extend # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; Extend # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; Extend # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
+1E08F         ; Extend # Mn       COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+1E130..1E136  ; Extend # Mn   [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
+1E2AE         ; Extend # Mn       TOTO SIGN RISING TONE
+1E2EC..1E2EF  ; Extend # Mn   [4] WANCHO TONE TUP..WANCHO TONE KOINI
+1E4EC..1E4EF  ; Extend # Mn   [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
+1E8D0..1E8D6  ; Extend # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E944..1E94A  ; Extend # Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+1F3FB..1F3FF  ; Extend # Sk   [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
+E0020..E007F  ; Extend # Cf  [96] TAG SPACE..CANCEL TAG
+E0100..E01EF  ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+
+# Total code points: 2130
+
+# ================================================
+
+1F1E6..1F1FF  ; Regional_Indicator # So  [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
+
+# Total code points: 26
+
+# ================================================
+
+0903          ; SpacingMark # Mc       DEVANAGARI SIGN VISARGA
+093B          ; SpacingMark # Mc       DEVANAGARI VOWEL SIGN OOE
+093E..0940    ; SpacingMark # Mc   [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
+0949..094C    ; SpacingMark # Mc   [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
+094E..094F    ; SpacingMark # Mc   [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW
+0982..0983    ; SpacingMark # Mc   [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
+09BF..09C0    ; SpacingMark # Mc   [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II
+09C7..09C8    ; SpacingMark # Mc   [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
+09CB..09CC    ; SpacingMark # Mc   [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+0A03          ; SpacingMark # Mc       GURMUKHI SIGN VISARGA
+0A3E..0A40    ; SpacingMark # Mc   [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
+0A83          ; SpacingMark # Mc       GUJARATI SIGN VISARGA
+0ABE..0AC0    ; SpacingMark # Mc   [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
+0AC9          ; SpacingMark # Mc       GUJARATI VOWEL SIGN CANDRA O
+0ACB..0ACC    ; SpacingMark # Mc   [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
+0B02..0B03    ; SpacingMark # Mc   [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
+0B40          ; SpacingMark # Mc       ORIYA VOWEL SIGN II
+0B47..0B48    ; SpacingMark # Mc   [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
+0B4B..0B4C    ; SpacingMark # Mc   [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0BBF          ; SpacingMark # Mc       TAMIL VOWEL SIGN I
+0BC1..0BC2    ; SpacingMark # Mc   [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
+0BC6..0BC8    ; SpacingMark # Mc   [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
+0BCA..0BCC    ; SpacingMark # Mc   [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0C01..0C03    ; SpacingMark # Mc   [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+0C41..0C44    ; SpacingMark # Mc   [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
+0C82..0C83    ; SpacingMark # Mc   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+0CBE          ; SpacingMark # Mc       KANNADA VOWEL SIGN AA
+0CC0..0CC1    ; SpacingMark # Mc   [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U
+0CC3..0CC4    ; SpacingMark # Mc   [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR
+0CC7..0CC8    ; SpacingMark # Mc   [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB    ; SpacingMark # Mc   [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0CF3          ; SpacingMark # Mc       KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT
+0D02..0D03    ; SpacingMark # Mc   [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
+0D3F..0D40    ; SpacingMark # Mc   [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II
+0D46..0D48    ; SpacingMark # Mc   [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
+0D4A..0D4C    ; SpacingMark # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0D82..0D83    ; SpacingMark # Mc   [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
+0DD0..0DD1    ; SpacingMark # Mc   [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0DD8..0DDE    ; SpacingMark # Mc   [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0DF2..0DF3    ; SpacingMark # Mc   [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0E33          ; SpacingMark # Lo       THAI CHARACTER SARA AM
+0EB3          ; SpacingMark # Lo       LAO VOWEL SIGN AM
+0F3E..0F3F    ; SpacingMark # Mc   [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES
+0F7F          ; SpacingMark # Mc       TIBETAN SIGN RNAM BCAD
+1031          ; SpacingMark # Mc       MYANMAR VOWEL SIGN E
+103B..103C    ; SpacingMark # Mc   [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA
+1056..1057    ; SpacingMark # Mc   [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
+1084          ; SpacingMark # Mc       MYANMAR VOWEL SIGN SHAN E
+1715          ; SpacingMark # Mc       TAGALOG SIGN PAMUDPOD
+1734          ; SpacingMark # Mc       HANUNOO SIGN PAMUDPOD
+17B6          ; SpacingMark # Mc       KHMER VOWEL SIGN AA
+17BE..17C5    ; SpacingMark # Mc   [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
+17C7..17C8    ; SpacingMark # Mc   [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
+1923..1926    ; SpacingMark # Mc   [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
+1929..192B    ; SpacingMark # Mc   [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
+1930..1931    ; SpacingMark # Mc   [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
+1933..1938    ; SpacingMark # Mc   [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
+1A19..1A1A    ; SpacingMark # Mc   [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O
+1A55          ; SpacingMark # Mc       TAI THAM CONSONANT SIGN MEDIAL RA
+1A57          ; SpacingMark # Mc       TAI THAM CONSONANT SIGN LA TANG LAI
+1A6D..1A72    ; SpacingMark # Mc   [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI
+1B04          ; SpacingMark # Mc       BALINESE SIGN BISAH
+1B3B          ; SpacingMark # Mc       BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D..1B41    ; SpacingMark # Mc   [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43..1B44    ; SpacingMark # Mc   [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
+1B82          ; SpacingMark # Mc       SUNDANESE SIGN PANGWISAD
+1BA1          ; SpacingMark # Mc       SUNDANESE CONSONANT SIGN PAMINGKAL
+1BA6..1BA7    ; SpacingMark # Mc   [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG
+1BAA          ; SpacingMark # Mc       SUNDANESE SIGN PAMAAEH
+1BE7          ; SpacingMark # Mc       BATAK VOWEL SIGN E
+1BEA..1BEC    ; SpacingMark # Mc   [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O
+1BEE          ; SpacingMark # Mc       BATAK VOWEL SIGN U
+1BF2..1BF3    ; SpacingMark # Mc   [2] BATAK PANGOLAT..BATAK PANONGONAN
+1C24..1C2B    ; SpacingMark # Mc   [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
+1C34..1C35    ; SpacingMark # Mc   [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
+1CE1          ; SpacingMark # Mc       VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
+1CF7          ; SpacingMark # Mc       VEDIC SIGN ATIKRAMA
+A823..A824    ; SpacingMark # Mc   [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
+A827          ; SpacingMark # Mc       SYLOTI NAGRI VOWEL SIGN OO
+A880..A881    ; SpacingMark # Mc   [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
+A8B4..A8C3    ; SpacingMark # Mc  [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
+A952..A953    ; SpacingMark # Mc   [2] REJANG CONSONANT SIGN H..REJANG VIRAMA
+A983          ; SpacingMark # Mc       JAVANESE SIGN WIGNYAN
+A9B4..A9B5    ; SpacingMark # Mc   [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG
+A9BA..A9BB    ; SpacingMark # Mc   [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE
+A9BE..A9C0    ; SpacingMark # Mc   [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON
+AA2F..AA30    ; SpacingMark # Mc   [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
+AA33..AA34    ; SpacingMark # Mc   [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA
+AA4D          ; SpacingMark # Mc       CHAM CONSONANT SIGN FINAL H
+AAEB          ; SpacingMark # Mc       MEETEI MAYEK VOWEL SIGN II
+AAEE..AAEF    ; SpacingMark # Mc   [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU
+AAF5          ; SpacingMark # Mc       MEETEI MAYEK VOWEL SIGN VISARGA
+ABE3..ABE4    ; SpacingMark # Mc   [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP
+ABE6..ABE7    ; SpacingMark # Mc   [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP
+ABE9..ABEA    ; SpacingMark # Mc   [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG
+ABEC          ; SpacingMark # Mc       MEETEI MAYEK LUM IYEK
+11000         ; SpacingMark # Mc       BRAHMI SIGN CANDRABINDU
+11002         ; SpacingMark # Mc       BRAHMI SIGN VISARGA
+11082         ; SpacingMark # Mc       KAITHI SIGN VISARGA
+110B0..110B2  ; SpacingMark # Mc   [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II
+110B7..110B8  ; SpacingMark # Mc   [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU
+1112C         ; SpacingMark # Mc       CHAKMA VOWEL SIGN E
+11145..11146  ; SpacingMark # Mc   [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI
+11182         ; SpacingMark # Mc       SHARADA SIGN VISARGA
+111B3..111B5  ; SpacingMark # Mc   [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II
+111BF..111C0  ; SpacingMark # Mc   [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA
+111CE         ; SpacingMark # Mc       SHARADA VOWEL SIGN PRISHTHAMATRA E
+1122C..1122E  ; SpacingMark # Mc   [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II
+11232..11233  ; SpacingMark # Mc   [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU
+11235         ; SpacingMark # Mc       KHOJKI SIGN VIRAMA
+112E0..112E2  ; SpacingMark # Mc   [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II
+11302..11303  ; SpacingMark # Mc   [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA
+1133F         ; SpacingMark # Mc       GRANTHA VOWEL SIGN I
+11341..11344  ; SpacingMark # Mc   [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR
+11347..11348  ; SpacingMark # Mc   [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
+1134B..1134D  ; SpacingMark # Mc   [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA
+11362..11363  ; SpacingMark # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+11435..11437  ; SpacingMark # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11440..11441  ; SpacingMark # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11445         ; SpacingMark # Mc       NEWA SIGN VISARGA
+114B1..114B2  ; SpacingMark # Mc   [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II
+114B9         ; SpacingMark # Mc       TIRHUTA VOWEL SIGN E
+114BB..114BC  ; SpacingMark # Mc   [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O
+114BE         ; SpacingMark # Mc       TIRHUTA VOWEL SIGN AU
+114C1         ; SpacingMark # Mc       TIRHUTA SIGN VISARGA
+115B0..115B1  ; SpacingMark # Mc   [2] SIDDHAM VOWEL SIGN I..SIDDHAM VOWEL SIGN II
+115B8..115BB  ; SpacingMark # Mc   [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU
+115BE         ; SpacingMark # Mc       SIDDHAM SIGN VISARGA
+11630..11632  ; SpacingMark # Mc   [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II
+1163B..1163C  ; SpacingMark # Mc   [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU
+1163E         ; SpacingMark # Mc       MODI SIGN VISARGA
+116AC         ; SpacingMark # Mc       TAKRI SIGN VISARGA
+116AE..116AF  ; SpacingMark # Mc   [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II
+116B6         ; SpacingMark # Mc       TAKRI SIGN VIRAMA
+11726         ; SpacingMark # Mc       AHOM VOWEL SIGN E
+1182C..1182E  ; SpacingMark # Mc   [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
+11838         ; SpacingMark # Mc       DOGRA SIGN VISARGA
+11931..11935  ; SpacingMark # Mc   [5] DIVES AKURU VOWEL SIGN I..DIVES AKURU VOWEL SIGN E
+11937..11938  ; SpacingMark # Mc   [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O
+1193D         ; SpacingMark # Mc       DIVES AKURU SIGN HALANTA
+11940         ; SpacingMark # Mc       DIVES AKURU MEDIAL YA
+11942         ; SpacingMark # Mc       DIVES AKURU MEDIAL RA
+119D1..119D3  ; SpacingMark # Mc   [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II
+119DC..119DF  ; SpacingMark # Mc   [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA
+119E4         ; SpacingMark # Mc       NANDINAGARI VOWEL SIGN PRISHTHAMATRA E
+11A39         ; SpacingMark # Mc       ZANABAZAR SQUARE SIGN VISARGA
+11A57..11A58  ; SpacingMark # Mc   [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU
+11A97         ; SpacingMark # Mc       SOYOMBO SIGN VISARGA
+11C2F         ; SpacingMark # Mc       BHAIKSUKI VOWEL SIGN AA
+11C3E         ; SpacingMark # Mc       BHAIKSUKI SIGN VISARGA
+11CA9         ; SpacingMark # Mc       MARCHEN SUBJOINED LETTER YA
+11CB1         ; SpacingMark # Mc       MARCHEN VOWEL SIGN I
+11CB4         ; SpacingMark # Mc       MARCHEN VOWEL SIGN O
+11D8A..11D8E  ; SpacingMark # Mc   [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU
+11D93..11D94  ; SpacingMark # Mc   [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU
+11D96         ; SpacingMark # Mc       GUNJALA GONDI SIGN VISARGA
+11EF5..11EF6  ; SpacingMark # Mc   [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O
+11F03         ; SpacingMark # Mc       KAWI SIGN VISARGA
+11F34..11F35  ; SpacingMark # Mc   [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA
+11F3E..11F3F  ; SpacingMark # Mc   [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI
+11F41         ; SpacingMark # Mc       KAWI SIGN KILLER
+16F51..16F87  ; SpacingMark # Mc  [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
+16FF0..16FF1  ; SpacingMark # Mc   [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
+1D166         ; SpacingMark # Mc       MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
+1D16D         ; SpacingMark # Mc       MUSICAL SYMBOL COMBINING AUGMENTATION DOT
+
+# Total code points: 395
+
+# ================================================
+
+1100..115F    ; L # Lo  [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER
+A960..A97C    ; L # Lo  [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH
+
+# Total code points: 125
+
+# ================================================
+
+1160..11A7    ; V # Lo  [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE
+D7B0..D7C6    ; V # Lo  [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
+
+# Total code points: 95
+
+# ================================================
+
+11A8..11FF    ; T # Lo  [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN
+D7CB..D7FB    ; T # Lo  [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH
+
+# Total code points: 137
+
+# ================================================
+
+AC00          ; LV # Lo       HANGUL SYLLABLE GA
+AC1C          ; LV # Lo       HANGUL SYLLABLE GAE
+AC38          ; LV # Lo       HANGUL SYLLABLE GYA
+AC54          ; LV # Lo       HANGUL SYLLABLE GYAE
+AC70          ; LV # Lo       HANGUL SYLLABLE GEO
+AC8C          ; LV # Lo       HANGUL SYLLABLE GE
+ACA8          ; LV # Lo       HANGUL SYLLABLE GYEO
+ACC4          ; LV # Lo       HANGUL SYLLABLE GYE
+ACE0          ; LV # Lo       HANGUL SYLLABLE GO
+ACFC          ; LV # Lo       HANGUL SYLLABLE GWA
+AD18          ; LV # Lo       HANGUL SYLLABLE GWAE
+AD34          ; LV # Lo       HANGUL SYLLABLE GOE
+AD50          ; LV # Lo       HANGUL SYLLABLE GYO
+AD6C          ; LV # Lo       HANGUL SYLLABLE GU
+AD88          ; LV # Lo       HANGUL SYLLABLE GWEO
+ADA4          ; LV # Lo       HANGUL SYLLABLE GWE
+ADC0          ; LV # Lo       HANGUL SYLLABLE GWI
+ADDC          ; LV # Lo       HANGUL SYLLABLE GYU
+ADF8          ; LV # Lo       HANGUL SYLLABLE GEU
+AE14          ; LV # Lo       HANGUL SYLLABLE GYI
+AE30          ; LV # Lo       HANGUL SYLLABLE GI
+AE4C          ; LV # Lo       HANGUL SYLLABLE GGA
+AE68          ; LV # Lo       HANGUL SYLLABLE GGAE
+AE84          ; LV # Lo       HANGUL SYLLABLE GGYA
+AEA0          ; LV # Lo       HANGUL SYLLABLE GGYAE
+AEBC          ; LV # Lo       HANGUL SYLLABLE GGEO
+AED8          ; LV # Lo       HANGUL SYLLABLE GGE
+AEF4          ; LV # Lo       HANGUL SYLLABLE GGYEO
+AF10          ; LV # Lo       HANGUL SYLLABLE GGYE
+AF2C          ; LV # Lo       HANGUL SYLLABLE GGO
+AF48          ; LV # Lo       HANGUL SYLLABLE GGWA
+AF64          ; LV # Lo       HANGUL SYLLABLE GGWAE
+AF80          ; LV # Lo       HANGUL SYLLABLE GGOE
+AF9C          ; LV # Lo       HANGUL SYLLABLE GGYO
+AFB8          ; LV # Lo       HANGUL SYLLABLE GGU
+AFD4          ; LV # Lo       HANGUL SYLLABLE GGWEO
+AFF0          ; LV # Lo       HANGUL SYLLABLE GGWE
+B00C          ; LV # Lo       HANGUL SYLLABLE GGWI
+B028          ; LV # Lo       HANGUL SYLLABLE GGYU
+B044          ; LV # Lo       HANGUL SYLLABLE GGEU
+B060          ; LV # Lo       HANGUL SYLLABLE GGYI
+B07C          ; LV # Lo       HANGUL SYLLABLE GGI
+B098          ; LV # Lo       HANGUL SYLLABLE NA
+B0B4          ; LV # Lo       HANGUL SYLLABLE NAE
+B0D0          ; LV # Lo       HANGUL SYLLABLE NYA
+B0EC          ; LV # Lo       HANGUL SYLLABLE NYAE
+B108          ; LV # Lo       HANGUL SYLLABLE NEO
+B124          ; LV # Lo       HANGUL SYLLABLE NE
+B140          ; LV # Lo       HANGUL SYLLABLE NYEO
+B15C          ; LV # Lo       HANGUL SYLLABLE NYE
+B178          ; LV # Lo       HANGUL SYLLABLE NO
+B194          ; LV # Lo       HANGUL SYLLABLE NWA
+B1B0          ; LV # Lo       HANGUL SYLLABLE NWAE
+B1CC          ; LV # Lo       HANGUL SYLLABLE NOE
+B1E8          ; LV # Lo       HANGUL SYLLABLE NYO
+B204          ; LV # Lo       HANGUL SYLLABLE NU
+B220          ; LV # Lo       HANGUL SYLLABLE NWEO
+B23C          ; LV # Lo       HANGUL SYLLABLE NWE
+B258          ; LV # Lo       HANGUL SYLLABLE NWI
+B274          ; LV # Lo       HANGUL SYLLABLE NYU
+B290          ; LV # Lo       HANGUL SYLLABLE NEU
+B2AC          ; LV # Lo       HANGUL SYLLABLE NYI
+B2C8          ; LV # Lo       HANGUL SYLLABLE NI
+B2E4          ; LV # Lo       HANGUL SYLLABLE DA
+B300          ; LV # Lo       HANGUL SYLLABLE DAE
+B31C          ; LV # Lo       HANGUL SYLLABLE DYA
+B338          ; LV # Lo       HANGUL SYLLABLE DYAE
+B354          ; LV # Lo       HANGUL SYLLABLE DEO
+B370          ; LV # Lo       HANGUL SYLLABLE DE
+B38C          ; LV # Lo       HANGUL SYLLABLE DYEO
+B3A8          ; LV # Lo       HANGUL SYLLABLE DYE
+B3C4          ; LV # Lo       HANGUL SYLLABLE DO
+B3E0          ; LV # Lo       HANGUL SYLLABLE DWA
+B3FC          ; LV # Lo       HANGUL SYLLABLE DWAE
+B418          ; LV # Lo       HANGUL SYLLABLE DOE
+B434          ; LV # Lo       HANGUL SYLLABLE DYO
+B450          ; LV # Lo       HANGUL SYLLABLE DU
+B46C          ; LV # Lo       HANGUL SYLLABLE DWEO
+B488          ; LV # Lo       HANGUL SYLLABLE DWE
+B4A4          ; LV # Lo       HANGUL SYLLABLE DWI
+B4C0          ; LV # Lo       HANGUL SYLLABLE DYU
+B4DC          ; LV # Lo       HANGUL SYLLABLE DEU
+B4F8          ; LV # Lo       HANGUL SYLLABLE DYI
+B514          ; LV # Lo       HANGUL SYLLABLE DI
+B530          ; LV # Lo       HANGUL SYLLABLE DDA
+B54C          ; LV # Lo       HANGUL SYLLABLE DDAE
+B568          ; LV # Lo       HANGUL SYLLABLE DDYA
+B584          ; LV # Lo       HANGUL SYLLABLE DDYAE
+B5A0          ; LV # Lo       HANGUL SYLLABLE DDEO
+B5BC          ; LV # Lo       HANGUL SYLLABLE DDE
+B5D8          ; LV # Lo       HANGUL SYLLABLE DDYEO
+B5F4          ; LV # Lo       HANGUL SYLLABLE DDYE
+B610          ; LV # Lo       HANGUL SYLLABLE DDO
+B62C          ; LV # Lo       HANGUL SYLLABLE DDWA
+B648          ; LV # Lo       HANGUL SYLLABLE DDWAE
+B664          ; LV # Lo       HANGUL SYLLABLE DDOE
+B680          ; LV # Lo       HANGUL SYLLABLE DDYO
+B69C          ; LV # Lo       HANGUL SYLLABLE DDU
+B6B8          ; LV # Lo       HANGUL SYLLABLE DDWEO
+B6D4          ; LV # Lo       HANGUL SYLLABLE DDWE
+B6F0          ; LV # Lo       HANGUL SYLLABLE DDWI
+B70C          ; LV # Lo       HANGUL SYLLABLE DDYU
+B728          ; LV # Lo       HANGUL SYLLABLE DDEU
+B744          ; LV # Lo       HANGUL SYLLABLE DDYI
+B760          ; LV # Lo       HANGUL SYLLABLE DDI
+B77C          ; LV # Lo       HANGUL SYLLABLE RA
+B798          ; LV # Lo       HANGUL SYLLABLE RAE
+B7B4          ; LV # Lo       HANGUL SYLLABLE RYA
+B7D0          ; LV # Lo       HANGUL SYLLABLE RYAE
+B7EC          ; LV # Lo       HANGUL SYLLABLE REO
+B808          ; LV # Lo       HANGUL SYLLABLE RE
+B824          ; LV # Lo       HANGUL SYLLABLE RYEO
+B840          ; LV # Lo       HANGUL SYLLABLE RYE
+B85C          ; LV # Lo       HANGUL SYLLABLE RO
+B878          ; LV # Lo       HANGUL SYLLABLE RWA
+B894          ; LV # Lo       HANGUL SYLLABLE RWAE
+B8B0          ; LV # Lo       HANGUL SYLLABLE ROE
+B8CC          ; LV # Lo       HANGUL SYLLABLE RYO
+B8E8          ; LV # Lo       HANGUL SYLLABLE RU
+B904          ; LV # Lo       HANGUL SYLLABLE RWEO
+B920          ; LV # Lo       HANGUL SYLLABLE RWE
+B93C          ; LV # Lo       HANGUL SYLLABLE RWI
+B958          ; LV # Lo       HANGUL SYLLABLE RYU
+B974          ; LV # Lo       HANGUL SYLLABLE REU
+B990          ; LV # Lo       HANGUL SYLLABLE RYI
+B9AC          ; LV # Lo       HANGUL SYLLABLE RI
+B9C8          ; LV # Lo       HANGUL SYLLABLE MA
+B9E4          ; LV # Lo       HANGUL SYLLABLE MAE
+BA00          ; LV # Lo       HANGUL SYLLABLE MYA
+BA1C          ; LV # Lo       HANGUL SYLLABLE MYAE
+BA38          ; LV # Lo       HANGUL SYLLABLE MEO
+BA54          ; LV # Lo       HANGUL SYLLABLE ME
+BA70          ; LV # Lo       HANGUL SYLLABLE MYEO
+BA8C          ; LV # Lo       HANGUL SYLLABLE MYE
+BAA8          ; LV # Lo       HANGUL SYLLABLE MO
+BAC4          ; LV # Lo       HANGUL SYLLABLE MWA
+BAE0          ; LV # Lo       HANGUL SYLLABLE MWAE
+BAFC          ; LV # Lo       HANGUL SYLLABLE MOE
+BB18          ; LV # Lo       HANGUL SYLLABLE MYO
+BB34          ; LV # Lo       HANGUL SYLLABLE MU
+BB50          ; LV # Lo       HANGUL SYLLABLE MWEO
+BB6C          ; LV # Lo       HANGUL SYLLABLE MWE
+BB88          ; LV # Lo       HANGUL SYLLABLE MWI
+BBA4          ; LV # Lo       HANGUL SYLLABLE MYU
+BBC0          ; LV # Lo       HANGUL SYLLABLE MEU
+BBDC          ; LV # Lo       HANGUL SYLLABLE MYI
+BBF8          ; LV # Lo       HANGUL SYLLABLE MI
+BC14          ; LV # Lo       HANGUL SYLLABLE BA
+BC30          ; LV # Lo       HANGUL SYLLABLE BAE
+BC4C          ; LV # Lo       HANGUL SYLLABLE BYA
+BC68          ; LV # Lo       HANGUL SYLLABLE BYAE
+BC84          ; LV # Lo       HANGUL SYLLABLE BEO
+BCA0          ; LV # Lo       HANGUL SYLLABLE BE
+BCBC          ; LV # Lo       HANGUL SYLLABLE BYEO
+BCD8          ; LV # Lo       HANGUL SYLLABLE BYE
+BCF4          ; LV # Lo       HANGUL SYLLABLE BO
+BD10          ; LV # Lo       HANGUL SYLLABLE BWA
+BD2C          ; LV # Lo       HANGUL SYLLABLE BWAE
+BD48          ; LV # Lo       HANGUL SYLLABLE BOE
+BD64          ; LV # Lo       HANGUL SYLLABLE BYO
+BD80          ; LV # Lo       HANGUL SYLLABLE BU
+BD9C          ; LV # Lo       HANGUL SYLLABLE BWEO
+BDB8          ; LV # Lo       HANGUL SYLLABLE BWE
+BDD4          ; LV # Lo       HANGUL SYLLABLE BWI
+BDF0          ; LV # Lo       HANGUL SYLLABLE BYU
+BE0C          ; LV # Lo       HANGUL SYLLABLE BEU
+BE28          ; LV # Lo       HANGUL SYLLABLE BYI
+BE44          ; LV # Lo       HANGUL SYLLABLE BI
+BE60          ; LV # Lo       HANGUL SYLLABLE BBA
+BE7C          ; LV # Lo       HANGUL SYLLABLE BBAE
+BE98          ; LV # Lo       HANGUL SYLLABLE BBYA
+BEB4          ; LV # Lo       HANGUL SYLLABLE BBYAE
+BED0          ; LV # Lo       HANGUL SYLLABLE BBEO
+BEEC          ; LV # Lo       HANGUL SYLLABLE BBE
+BF08          ; LV # Lo       HANGUL SYLLABLE BBYEO
+BF24          ; LV # Lo       HANGUL SYLLABLE BBYE
+BF40          ; LV # Lo       HANGUL SYLLABLE BBO
+BF5C          ; LV # Lo       HANGUL SYLLABLE BBWA
+BF78          ; LV # Lo       HANGUL SYLLABLE BBWAE
+BF94          ; LV # Lo       HANGUL SYLLABLE BBOE
+BFB0          ; LV # Lo       HANGUL SYLLABLE BBYO
+BFCC          ; LV # Lo       HANGUL SYLLABLE BBU
+BFE8          ; LV # Lo       HANGUL SYLLABLE BBWEO
+C004          ; LV # Lo       HANGUL SYLLABLE BBWE
+C020          ; LV # Lo       HANGUL SYLLABLE BBWI
+C03C          ; LV # Lo       HANGUL SYLLABLE BBYU
+C058          ; LV # Lo       HANGUL SYLLABLE BBEU
+C074          ; LV # Lo       HANGUL SYLLABLE BBYI
+C090          ; LV # Lo       HANGUL SYLLABLE BBI
+C0AC          ; LV # Lo       HANGUL SYLLABLE SA
+C0C8          ; LV # Lo       HANGUL SYLLABLE SAE
+C0E4          ; LV # Lo       HANGUL SYLLABLE SYA
+C100          ; LV # Lo       HANGUL SYLLABLE SYAE
+C11C          ; LV # Lo       HANGUL SYLLABLE SEO
+C138          ; LV # Lo       HANGUL SYLLABLE SE
+C154          ; LV # Lo       HANGUL SYLLABLE SYEO
+C170          ; LV # Lo       HANGUL SYLLABLE SYE
+C18C          ; LV # Lo       HANGUL SYLLABLE SO
+C1A8          ; LV # Lo       HANGUL SYLLABLE SWA
+C1C4          ; LV # Lo       HANGUL SYLLABLE SWAE
+C1E0          ; LV # Lo       HANGUL SYLLABLE SOE
+C1FC          ; LV # Lo       HANGUL SYLLABLE SYO
+C218          ; LV # Lo       HANGUL SYLLABLE SU
+C234          ; LV # Lo       HANGUL SYLLABLE SWEO
+C250          ; LV # Lo       HANGUL SYLLABLE SWE
+C26C          ; LV # Lo       HANGUL SYLLABLE SWI
+C288          ; LV # Lo       HANGUL SYLLABLE SYU
+C2A4          ; LV # Lo       HANGUL SYLLABLE SEU
+C2C0          ; LV # Lo       HANGUL SYLLABLE SYI
+C2DC          ; LV # Lo       HANGUL SYLLABLE SI
+C2F8          ; LV # Lo       HANGUL SYLLABLE SSA
+C314          ; LV # Lo       HANGUL SYLLABLE SSAE
+C330          ; LV # Lo       HANGUL SYLLABLE SSYA
+C34C          ; LV # Lo       HANGUL SYLLABLE SSYAE
+C368          ; LV # Lo       HANGUL SYLLABLE SSEO
+C384          ; LV # Lo       HANGUL SYLLABLE SSE
+C3A0          ; LV # Lo       HANGUL SYLLABLE SSYEO
+C3BC          ; LV # Lo       HANGUL SYLLABLE SSYE
+C3D8          ; LV # Lo       HANGUL SYLLABLE SSO
+C3F4          ; LV # Lo       HANGUL SYLLABLE SSWA
+C410          ; LV # Lo       HANGUL SYLLABLE SSWAE
+C42C          ; LV # Lo       HANGUL SYLLABLE SSOE
+C448          ; LV # Lo       HANGUL SYLLABLE SSYO
+C464          ; LV # Lo       HANGUL SYLLABLE SSU
+C480          ; LV # Lo       HANGUL SYLLABLE SSWEO
+C49C          ; LV # Lo       HANGUL SYLLABLE SSWE
+C4B8          ; LV # Lo       HANGUL SYLLABLE SSWI
+C4D4          ; LV # Lo       HANGUL SYLLABLE SSYU
+C4F0          ; LV # Lo       HANGUL SYLLABLE SSEU
+C50C          ; LV # Lo       HANGUL SYLLABLE SSYI
+C528          ; LV # Lo       HANGUL SYLLABLE SSI
+C544          ; LV # Lo       HANGUL SYLLABLE A
+C560          ; LV # Lo       HANGUL SYLLABLE AE
+C57C          ; LV # Lo       HANGUL SYLLABLE YA
+C598          ; LV # Lo       HANGUL SYLLABLE YAE
+C5B4          ; LV # Lo       HANGUL SYLLABLE EO
+C5D0          ; LV # Lo       HANGUL SYLLABLE E
+C5EC          ; LV # Lo       HANGUL SYLLABLE YEO
+C608          ; LV # Lo       HANGUL SYLLABLE YE
+C624          ; LV # Lo       HANGUL SYLLABLE O
+C640          ; LV # Lo       HANGUL SYLLABLE WA
+C65C          ; LV # Lo       HANGUL SYLLABLE WAE
+C678          ; LV # Lo       HANGUL SYLLABLE OE
+C694          ; LV # Lo       HANGUL SYLLABLE YO
+C6B0          ; LV # Lo       HANGUL SYLLABLE U
+C6CC          ; LV # Lo       HANGUL SYLLABLE WEO
+C6E8          ; LV # Lo       HANGUL SYLLABLE WE
+C704          ; LV # Lo       HANGUL SYLLABLE WI
+C720          ; LV # Lo       HANGUL SYLLABLE YU
+C73C          ; LV # Lo       HANGUL SYLLABLE EU
+C758          ; LV # Lo       HANGUL SYLLABLE YI
+C774          ; LV # Lo       HANGUL SYLLABLE I
+C790          ; LV # Lo       HANGUL SYLLABLE JA
+C7AC          ; LV # Lo       HANGUL SYLLABLE JAE
+C7C8          ; LV # Lo       HANGUL SYLLABLE JYA
+C7E4          ; LV # Lo       HANGUL SYLLABLE JYAE
+C800          ; LV # Lo       HANGUL SYLLABLE JEO
+C81C          ; LV # Lo       HANGUL SYLLABLE JE
+C838          ; LV # Lo       HANGUL SYLLABLE JYEO
+C854          ; LV # Lo       HANGUL SYLLABLE JYE
+C870          ; LV # Lo       HANGUL SYLLABLE JO
+C88C          ; LV # Lo       HANGUL SYLLABLE JWA
+C8A8          ; LV # Lo       HANGUL SYLLABLE JWAE
+C8C4          ; LV # Lo       HANGUL SYLLABLE JOE
+C8E0          ; LV # Lo       HANGUL SYLLABLE JYO
+C8FC          ; LV # Lo       HANGUL SYLLABLE JU
+C918          ; LV # Lo       HANGUL SYLLABLE JWEO
+C934          ; LV # Lo       HANGUL SYLLABLE JWE
+C950          ; LV # Lo       HANGUL SYLLABLE JWI
+C96C          ; LV # Lo       HANGUL SYLLABLE JYU
+C988          ; LV # Lo       HANGUL SYLLABLE JEU
+C9A4          ; LV # Lo       HANGUL SYLLABLE JYI
+C9C0          ; LV # Lo       HANGUL SYLLABLE JI
+C9DC          ; LV # Lo       HANGUL SYLLABLE JJA
+C9F8          ; LV # Lo       HANGUL SYLLABLE JJAE
+CA14          ; LV # Lo       HANGUL SYLLABLE JJYA
+CA30          ; LV # Lo       HANGUL SYLLABLE JJYAE
+CA4C          ; LV # Lo       HANGUL SYLLABLE JJEO
+CA68          ; LV # Lo       HANGUL SYLLABLE JJE
+CA84          ; LV # Lo       HANGUL SYLLABLE JJYEO
+CAA0          ; LV # Lo       HANGUL SYLLABLE JJYE
+CABC          ; LV # Lo       HANGUL SYLLABLE JJO
+CAD8          ; LV # Lo       HANGUL SYLLABLE JJWA
+CAF4          ; LV # Lo       HANGUL SYLLABLE JJWAE
+CB10          ; LV # Lo       HANGUL SYLLABLE JJOE
+CB2C          ; LV # Lo       HANGUL SYLLABLE JJYO
+CB48          ; LV # Lo       HANGUL SYLLABLE JJU
+CB64          ; LV # Lo       HANGUL SYLLABLE JJWEO
+CB80          ; LV # Lo       HANGUL SYLLABLE JJWE
+CB9C          ; LV # Lo       HANGUL SYLLABLE JJWI
+CBB8          ; LV # Lo       HANGUL SYLLABLE JJYU
+CBD4          ; LV # Lo       HANGUL SYLLABLE JJEU
+CBF0          ; LV # Lo       HANGUL SYLLABLE JJYI
+CC0C          ; LV # Lo       HANGUL SYLLABLE JJI
+CC28          ; LV # Lo       HANGUL SYLLABLE CA
+CC44          ; LV # Lo       HANGUL SYLLABLE CAE
+CC60          ; LV # Lo       HANGUL SYLLABLE CYA
+CC7C          ; LV # Lo       HANGUL SYLLABLE CYAE
+CC98          ; LV # Lo       HANGUL SYLLABLE CEO
+CCB4          ; LV # Lo       HANGUL SYLLABLE CE
+CCD0          ; LV # Lo       HANGUL SYLLABLE CYEO
+CCEC          ; LV # Lo       HANGUL SYLLABLE CYE
+CD08          ; LV # Lo       HANGUL SYLLABLE CO
+CD24          ; LV # Lo       HANGUL SYLLABLE CWA
+CD40          ; LV # Lo       HANGUL SYLLABLE CWAE
+CD5C          ; LV # Lo       HANGUL SYLLABLE COE
+CD78          ; LV # Lo       HANGUL SYLLABLE CYO
+CD94          ; LV # Lo       HANGUL SYLLABLE CU
+CDB0          ; LV # Lo       HANGUL SYLLABLE CWEO
+CDCC          ; LV # Lo       HANGUL SYLLABLE CWE
+CDE8          ; LV # Lo       HANGUL SYLLABLE CWI
+CE04          ; LV # Lo       HANGUL SYLLABLE CYU
+CE20          ; LV # Lo       HANGUL SYLLABLE CEU
+CE3C          ; LV # Lo       HANGUL SYLLABLE CYI
+CE58          ; LV # Lo       HANGUL SYLLABLE CI
+CE74          ; LV # Lo       HANGUL SYLLABLE KA
+CE90          ; LV # Lo       HANGUL SYLLABLE KAE
+CEAC          ; LV # Lo       HANGUL SYLLABLE KYA
+CEC8          ; LV # Lo       HANGUL SYLLABLE KYAE
+CEE4          ; LV # Lo       HANGUL SYLLABLE KEO
+CF00          ; LV # Lo       HANGUL SYLLABLE KE
+CF1C          ; LV # Lo       HANGUL SYLLABLE KYEO
+CF38          ; LV # Lo       HANGUL SYLLABLE KYE
+CF54          ; LV # Lo       HANGUL SYLLABLE KO
+CF70          ; LV # Lo       HANGUL SYLLABLE KWA
+CF8C          ; LV # Lo       HANGUL SYLLABLE KWAE
+CFA8          ; LV # Lo       HANGUL SYLLABLE KOE
+CFC4          ; LV # Lo       HANGUL SYLLABLE KYO
+CFE0          ; LV # Lo       HANGUL SYLLABLE KU
+CFFC          ; LV # Lo       HANGUL SYLLABLE KWEO
+D018          ; LV # Lo       HANGUL SYLLABLE KWE
+D034          ; LV # Lo       HANGUL SYLLABLE KWI
+D050          ; LV # Lo       HANGUL SYLLABLE KYU
+D06C          ; LV # Lo       HANGUL SYLLABLE KEU
+D088          ; LV # Lo       HANGUL SYLLABLE KYI
+D0A4          ; LV # Lo       HANGUL SYLLABLE KI
+D0C0          ; LV # Lo       HANGUL SYLLABLE TA
+D0DC          ; LV # Lo       HANGUL SYLLABLE TAE
+D0F8          ; LV # Lo       HANGUL SYLLABLE TYA
+D114          ; LV # Lo       HANGUL SYLLABLE TYAE
+D130          ; LV # Lo       HANGUL SYLLABLE TEO
+D14C          ; LV # Lo       HANGUL SYLLABLE TE
+D168          ; LV # Lo       HANGUL SYLLABLE TYEO
+D184          ; LV # Lo       HANGUL SYLLABLE TYE
+D1A0          ; LV # Lo       HANGUL SYLLABLE TO
+D1BC          ; LV # Lo       HANGUL SYLLABLE TWA
+D1D8          ; LV # Lo       HANGUL SYLLABLE TWAE
+D1F4          ; LV # Lo       HANGUL SYLLABLE TOE
+D210          ; LV # Lo       HANGUL SYLLABLE TYO
+D22C          ; LV # Lo       HANGUL SYLLABLE TU
+D248          ; LV # Lo       HANGUL SYLLABLE TWEO
+D264          ; LV # Lo       HANGUL SYLLABLE TWE
+D280          ; LV # Lo       HANGUL SYLLABLE TWI
+D29C          ; LV # Lo       HANGUL SYLLABLE TYU
+D2B8          ; LV # Lo       HANGUL SYLLABLE TEU
+D2D4          ; LV # Lo       HANGUL SYLLABLE TYI
+D2F0          ; LV # Lo       HANGUL SYLLABLE TI
+D30C          ; LV # Lo       HANGUL SYLLABLE PA
+D328          ; LV # Lo       HANGUL SYLLABLE PAE
+D344          ; LV # Lo       HANGUL SYLLABLE PYA
+D360          ; LV # Lo       HANGUL SYLLABLE PYAE
+D37C          ; LV # Lo       HANGUL SYLLABLE PEO
+D398          ; LV # Lo       HANGUL SYLLABLE PE
+D3B4          ; LV # Lo       HANGUL SYLLABLE PYEO
+D3D0          ; LV # Lo       HANGUL SYLLABLE PYE
+D3EC          ; LV # Lo       HANGUL SYLLABLE PO
+D408          ; LV # Lo       HANGUL SYLLABLE PWA
+D424          ; LV # Lo       HANGUL SYLLABLE PWAE
+D440          ; LV # Lo       HANGUL SYLLABLE POE
+D45C          ; LV # Lo       HANGUL SYLLABLE PYO
+D478          ; LV # Lo       HANGUL SYLLABLE PU
+D494          ; LV # Lo       HANGUL SYLLABLE PWEO
+D4B0          ; LV # Lo       HANGUL SYLLABLE PWE
+D4CC          ; LV # Lo       HANGUL SYLLABLE PWI
+D4E8          ; LV # Lo       HANGUL SYLLABLE PYU
+D504          ; LV # Lo       HANGUL SYLLABLE PEU
+D520          ; LV # Lo       HANGUL SYLLABLE PYI
+D53C          ; LV # Lo       HANGUL SYLLABLE PI
+D558          ; LV # Lo       HANGUL SYLLABLE HA
+D574          ; LV # Lo       HANGUL SYLLABLE HAE
+D590          ; LV # Lo       HANGUL SYLLABLE HYA
+D5AC          ; LV # Lo       HANGUL SYLLABLE HYAE
+D5C8          ; LV # Lo       HANGUL SYLLABLE HEO
+D5E4          ; LV # Lo       HANGUL SYLLABLE HE
+D600          ; LV # Lo       HANGUL SYLLABLE HYEO
+D61C          ; LV # Lo       HANGUL SYLLABLE HYE
+D638          ; LV # Lo       HANGUL SYLLABLE HO
+D654          ; LV # Lo       HANGUL SYLLABLE HWA
+D670          ; LV # Lo       HANGUL SYLLABLE HWAE
+D68C          ; LV # Lo       HANGUL SYLLABLE HOE
+D6A8          ; LV # Lo       HANGUL SYLLABLE HYO
+D6C4          ; LV # Lo       HANGUL SYLLABLE HU
+D6E0          ; LV # Lo       HANGUL SYLLABLE HWEO
+D6FC          ; LV # Lo       HANGUL SYLLABLE HWE
+D718          ; LV # Lo       HANGUL SYLLABLE HWI
+D734          ; LV # Lo       HANGUL SYLLABLE HYU
+D750          ; LV # Lo       HANGUL SYLLABLE HEU
+D76C          ; LV # Lo       HANGUL SYLLABLE HYI
+D788          ; LV # Lo       HANGUL SYLLABLE HI
+
+# Total code points: 399
+
+# ================================================
+
+AC01..AC1B    ; LVT # Lo  [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH
+AC1D..AC37    ; LVT # Lo  [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH
+AC39..AC53    ; LVT # Lo  [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH
+AC55..AC6F    ; LVT # Lo  [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH
+AC71..AC8B    ; LVT # Lo  [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH
+AC8D..ACA7    ; LVT # Lo  [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH
+ACA9..ACC3    ; LVT # Lo  [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH
+ACC5..ACDF    ; LVT # Lo  [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH
+ACE1..ACFB    ; LVT # Lo  [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH
+ACFD..AD17    ; LVT # Lo  [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH
+AD19..AD33    ; LVT # Lo  [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH
+AD35..AD4F    ; LVT # Lo  [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH
+AD51..AD6B    ; LVT # Lo  [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH
+AD6D..AD87    ; LVT # Lo  [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH
+AD89..ADA3    ; LVT # Lo  [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH
+ADA5..ADBF    ; LVT # Lo  [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH
+ADC1..ADDB    ; LVT # Lo  [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH
+ADDD..ADF7    ; LVT # Lo  [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH
+ADF9..AE13    ; LVT # Lo  [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH
+AE15..AE2F    ; LVT # Lo  [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH
+AE31..AE4B    ; LVT # Lo  [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH
+AE4D..AE67    ; LVT # Lo  [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH
+AE69..AE83    ; LVT # Lo  [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH
+AE85..AE9F    ; LVT # Lo  [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH
+AEA1..AEBB    ; LVT # Lo  [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH
+AEBD..AED7    ; LVT # Lo  [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH
+AED9..AEF3    ; LVT # Lo  [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH
+AEF5..AF0F    ; LVT # Lo  [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH
+AF11..AF2B    ; LVT # Lo  [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH
+AF2D..AF47    ; LVT # Lo  [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH
+AF49..AF63    ; LVT # Lo  [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH
+AF65..AF7F    ; LVT # Lo  [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH
+AF81..AF9B    ; LVT # Lo  [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH
+AF9D..AFB7    ; LVT # Lo  [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH
+AFB9..AFD3    ; LVT # Lo  [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH
+AFD5..AFEF    ; LVT # Lo  [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH
+AFF1..B00B    ; LVT # Lo  [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH
+B00D..B027    ; LVT # Lo  [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH
+B029..B043    ; LVT # Lo  [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH
+B045..B05F    ; LVT # Lo  [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH
+B061..B07B    ; LVT # Lo  [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH
+B07D..B097    ; LVT # Lo  [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH
+B099..B0B3    ; LVT # Lo  [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH
+B0B5..B0CF    ; LVT # Lo  [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH
+B0D1..B0EB    ; LVT # Lo  [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH
+B0ED..B107    ; LVT # Lo  [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH
+B109..B123    ; LVT # Lo  [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH
+B125..B13F    ; LVT # Lo  [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH
+B141..B15B    ; LVT # Lo  [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH
+B15D..B177    ; LVT # Lo  [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH
+B179..B193    ; LVT # Lo  [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH
+B195..B1AF    ; LVT # Lo  [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH
+B1B1..B1CB    ; LVT # Lo  [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH
+B1CD..B1E7    ; LVT # Lo  [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH
+B1E9..B203    ; LVT # Lo  [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH
+B205..B21F    ; LVT # Lo  [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH
+B221..B23B    ; LVT # Lo  [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH
+B23D..B257    ; LVT # Lo  [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH
+B259..B273    ; LVT # Lo  [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH
+B275..B28F    ; LVT # Lo  [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH
+B291..B2AB    ; LVT # Lo  [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH
+B2AD..B2C7    ; LVT # Lo  [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH
+B2C9..B2E3    ; LVT # Lo  [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH
+B2E5..B2FF    ; LVT # Lo  [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH
+B301..B31B    ; LVT # Lo  [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH
+B31D..B337    ; LVT # Lo  [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH
+B339..B353    ; LVT # Lo  [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH
+B355..B36F    ; LVT # Lo  [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH
+B371..B38B    ; LVT # Lo  [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH
+B38D..B3A7    ; LVT # Lo  [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH
+B3A9..B3C3    ; LVT # Lo  [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH
+B3C5..B3DF    ; LVT # Lo  [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH
+B3E1..B3FB    ; LVT # Lo  [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH
+B3FD..B417    ; LVT # Lo  [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH
+B419..B433    ; LVT # Lo  [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH
+B435..B44F    ; LVT # Lo  [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH
+B451..B46B    ; LVT # Lo  [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH
+B46D..B487    ; LVT # Lo  [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH
+B489..B4A3    ; LVT # Lo  [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH
+B4A5..B4BF    ; LVT # Lo  [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH
+B4C1..B4DB    ; LVT # Lo  [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH
+B4DD..B4F7    ; LVT # Lo  [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH
+B4F9..B513    ; LVT # Lo  [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH
+B515..B52F    ; LVT # Lo  [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH
+B531..B54B    ; LVT # Lo  [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH
+B54D..B567    ; LVT # Lo  [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH
+B569..B583    ; LVT # Lo  [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH
+B585..B59F    ; LVT # Lo  [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH
+B5A1..B5BB    ; LVT # Lo  [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH
+B5BD..B5D7    ; LVT # Lo  [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH
+B5D9..B5F3    ; LVT # Lo  [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH
+B5F5..B60F    ; LVT # Lo  [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH
+B611..B62B    ; LVT # Lo  [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH
+B62D..B647    ; LVT # Lo  [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH
+B649..B663    ; LVT # Lo  [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH
+B665..B67F    ; LVT # Lo  [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH
+B681..B69B    ; LVT # Lo  [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH
+B69D..B6B7    ; LVT # Lo  [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH
+B6B9..B6D3    ; LVT # Lo  [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH
+B6D5..B6EF    ; LVT # Lo  [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH
+B6F1..B70B    ; LVT # Lo  [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH
+B70D..B727    ; LVT # Lo  [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH
+B729..B743    ; LVT # Lo  [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH
+B745..B75F    ; LVT # Lo  [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH
+B761..B77B    ; LVT # Lo  [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH
+B77D..B797    ; LVT # Lo  [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH
+B799..B7B3    ; LVT # Lo  [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH
+B7B5..B7CF    ; LVT # Lo  [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH
+B7D1..B7EB    ; LVT # Lo  [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH
+B7ED..B807    ; LVT # Lo  [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH
+B809..B823    ; LVT # Lo  [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH
+B825..B83F    ; LVT # Lo  [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH
+B841..B85B    ; LVT # Lo  [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH
+B85D..B877    ; LVT # Lo  [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH
+B879..B893    ; LVT # Lo  [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH
+B895..B8AF    ; LVT # Lo  [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH
+B8B1..B8CB    ; LVT # Lo  [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH
+B8CD..B8E7    ; LVT # Lo  [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH
+B8E9..B903    ; LVT # Lo  [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH
+B905..B91F    ; LVT # Lo  [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH
+B921..B93B    ; LVT # Lo  [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH
+B93D..B957    ; LVT # Lo  [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH
+B959..B973    ; LVT # Lo  [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH
+B975..B98F    ; LVT # Lo  [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH
+B991..B9AB    ; LVT # Lo  [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH
+B9AD..B9C7    ; LVT # Lo  [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH
+B9C9..B9E3    ; LVT # Lo  [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH
+B9E5..B9FF    ; LVT # Lo  [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH
+BA01..BA1B    ; LVT # Lo  [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH
+BA1D..BA37    ; LVT # Lo  [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH
+BA39..BA53    ; LVT # Lo  [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH
+BA55..BA6F    ; LVT # Lo  [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH
+BA71..BA8B    ; LVT # Lo  [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH
+BA8D..BAA7    ; LVT # Lo  [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH
+BAA9..BAC3    ; LVT # Lo  [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH
+BAC5..BADF    ; LVT # Lo  [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH
+BAE1..BAFB    ; LVT # Lo  [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH
+BAFD..BB17    ; LVT # Lo  [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH
+BB19..BB33    ; LVT # Lo  [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH
+BB35..BB4F    ; LVT # Lo  [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH
+BB51..BB6B    ; LVT # Lo  [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH
+BB6D..BB87    ; LVT # Lo  [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH
+BB89..BBA3    ; LVT # Lo  [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH
+BBA5..BBBF    ; LVT # Lo  [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH
+BBC1..BBDB    ; LVT # Lo  [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH
+BBDD..BBF7    ; LVT # Lo  [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH
+BBF9..BC13    ; LVT # Lo  [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH
+BC15..BC2F    ; LVT # Lo  [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH
+BC31..BC4B    ; LVT # Lo  [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH
+BC4D..BC67    ; LVT # Lo  [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH
+BC69..BC83    ; LVT # Lo  [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH
+BC85..BC9F    ; LVT # Lo  [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH
+BCA1..BCBB    ; LVT # Lo  [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH
+BCBD..BCD7    ; LVT # Lo  [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH
+BCD9..BCF3    ; LVT # Lo  [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH
+BCF5..BD0F    ; LVT # Lo  [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH
+BD11..BD2B    ; LVT # Lo  [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH
+BD2D..BD47    ; LVT # Lo  [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH
+BD49..BD63    ; LVT # Lo  [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH
+BD65..BD7F    ; LVT # Lo  [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH
+BD81..BD9B    ; LVT # Lo  [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH
+BD9D..BDB7    ; LVT # Lo  [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH
+BDB9..BDD3    ; LVT # Lo  [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH
+BDD5..BDEF    ; LVT # Lo  [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH
+BDF1..BE0B    ; LVT # Lo  [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH
+BE0D..BE27    ; LVT # Lo  [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH
+BE29..BE43    ; LVT # Lo  [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH
+BE45..BE5F    ; LVT # Lo  [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH
+BE61..BE7B    ; LVT # Lo  [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH
+BE7D..BE97    ; LVT # Lo  [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH
+BE99..BEB3    ; LVT # Lo  [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH
+BEB5..BECF    ; LVT # Lo  [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH
+BED1..BEEB    ; LVT # Lo  [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH
+BEED..BF07    ; LVT # Lo  [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH
+BF09..BF23    ; LVT # Lo  [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH
+BF25..BF3F    ; LVT # Lo  [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH
+BF41..BF5B    ; LVT # Lo  [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH
+BF5D..BF77    ; LVT # Lo  [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH
+BF79..BF93    ; LVT # Lo  [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH
+BF95..BFAF    ; LVT # Lo  [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH
+BFB1..BFCB    ; LVT # Lo  [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH
+BFCD..BFE7    ; LVT # Lo  [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH
+BFE9..C003    ; LVT # Lo  [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH
+C005..C01F    ; LVT # Lo  [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH
+C021..C03B    ; LVT # Lo  [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH
+C03D..C057    ; LVT # Lo  [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH
+C059..C073    ; LVT # Lo  [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH
+C075..C08F    ; LVT # Lo  [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH
+C091..C0AB    ; LVT # Lo  [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH
+C0AD..C0C7    ; LVT # Lo  [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH
+C0C9..C0E3    ; LVT # Lo  [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH
+C0E5..C0FF    ; LVT # Lo  [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH
+C101..C11B    ; LVT # Lo  [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH
+C11D..C137    ; LVT # Lo  [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH
+C139..C153    ; LVT # Lo  [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH
+C155..C16F    ; LVT # Lo  [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH
+C171..C18B    ; LVT # Lo  [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH
+C18D..C1A7    ; LVT # Lo  [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH
+C1A9..C1C3    ; LVT # Lo  [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH
+C1C5..C1DF    ; LVT # Lo  [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH
+C1E1..C1FB    ; LVT # Lo  [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH
+C1FD..C217    ; LVT # Lo  [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH
+C219..C233    ; LVT # Lo  [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH
+C235..C24F    ; LVT # Lo  [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH
+C251..C26B    ; LVT # Lo  [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH
+C26D..C287    ; LVT # Lo  [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH
+C289..C2A3    ; LVT # Lo  [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH
+C2A5..C2BF    ; LVT # Lo  [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH
+C2C1..C2DB    ; LVT # Lo  [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH
+C2DD..C2F7    ; LVT # Lo  [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH
+C2F9..C313    ; LVT # Lo  [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH
+C315..C32F    ; LVT # Lo  [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH
+C331..C34B    ; LVT # Lo  [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH
+C34D..C367    ; LVT # Lo  [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH
+C369..C383    ; LVT # Lo  [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH
+C385..C39F    ; LVT # Lo  [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH
+C3A1..C3BB    ; LVT # Lo  [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH
+C3BD..C3D7    ; LVT # Lo  [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH
+C3D9..C3F3    ; LVT # Lo  [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH
+C3F5..C40F    ; LVT # Lo  [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH
+C411..C42B    ; LVT # Lo  [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH
+C42D..C447    ; LVT # Lo  [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH
+C449..C463    ; LVT # Lo  [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH
+C465..C47F    ; LVT # Lo  [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH
+C481..C49B    ; LVT # Lo  [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH
+C49D..C4B7    ; LVT # Lo  [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH
+C4B9..C4D3    ; LVT # Lo  [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH
+C4D5..C4EF    ; LVT # Lo  [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH
+C4F1..C50B    ; LVT # Lo  [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH
+C50D..C527    ; LVT # Lo  [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH
+C529..C543    ; LVT # Lo  [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH
+C545..C55F    ; LVT # Lo  [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH
+C561..C57B    ; LVT # Lo  [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH
+C57D..C597    ; LVT # Lo  [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH
+C599..C5B3    ; LVT # Lo  [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH
+C5B5..C5CF    ; LVT # Lo  [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH
+C5D1..C5EB    ; LVT # Lo  [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH
+C5ED..C607    ; LVT # Lo  [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH
+C609..C623    ; LVT # Lo  [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH
+C625..C63F    ; LVT # Lo  [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH
+C641..C65B    ; LVT # Lo  [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH
+C65D..C677    ; LVT # Lo  [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH
+C679..C693    ; LVT # Lo  [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH
+C695..C6AF    ; LVT # Lo  [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH
+C6B1..C6CB    ; LVT # Lo  [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH
+C6CD..C6E7    ; LVT # Lo  [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH
+C6E9..C703    ; LVT # Lo  [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH
+C705..C71F    ; LVT # Lo  [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH
+C721..C73B    ; LVT # Lo  [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH
+C73D..C757    ; LVT # Lo  [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH
+C759..C773    ; LVT # Lo  [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH
+C775..C78F    ; LVT # Lo  [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH
+C791..C7AB    ; LVT # Lo  [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH
+C7AD..C7C7    ; LVT # Lo  [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH
+C7C9..C7E3    ; LVT # Lo  [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH
+C7E5..C7FF    ; LVT # Lo  [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH
+C801..C81B    ; LVT # Lo  [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH
+C81D..C837    ; LVT # Lo  [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH
+C839..C853    ; LVT # Lo  [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH
+C855..C86F    ; LVT # Lo  [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH
+C871..C88B    ; LVT # Lo  [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH
+C88D..C8A7    ; LVT # Lo  [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH
+C8A9..C8C3    ; LVT # Lo  [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH
+C8C5..C8DF    ; LVT # Lo  [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH
+C8E1..C8FB    ; LVT # Lo  [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH
+C8FD..C917    ; LVT # Lo  [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH
+C919..C933    ; LVT # Lo  [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH
+C935..C94F    ; LVT # Lo  [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH
+C951..C96B    ; LVT # Lo  [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH
+C96D..C987    ; LVT # Lo  [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH
+C989..C9A3    ; LVT # Lo  [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH
+C9A5..C9BF    ; LVT # Lo  [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH
+C9C1..C9DB    ; LVT # Lo  [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH
+C9DD..C9F7    ; LVT # Lo  [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH
+C9F9..CA13    ; LVT # Lo  [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH
+CA15..CA2F    ; LVT # Lo  [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH
+CA31..CA4B    ; LVT # Lo  [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH
+CA4D..CA67    ; LVT # Lo  [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH
+CA69..CA83    ; LVT # Lo  [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH
+CA85..CA9F    ; LVT # Lo  [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH
+CAA1..CABB    ; LVT # Lo  [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH
+CABD..CAD7    ; LVT # Lo  [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH
+CAD9..CAF3    ; LVT # Lo  [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH
+CAF5..CB0F    ; LVT # Lo  [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH
+CB11..CB2B    ; LVT # Lo  [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH
+CB2D..CB47    ; LVT # Lo  [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH
+CB49..CB63    ; LVT # Lo  [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH
+CB65..CB7F    ; LVT # Lo  [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH
+CB81..CB9B    ; LVT # Lo  [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH
+CB9D..CBB7    ; LVT # Lo  [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH
+CBB9..CBD3    ; LVT # Lo  [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH
+CBD5..CBEF    ; LVT # Lo  [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH
+CBF1..CC0B    ; LVT # Lo  [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH
+CC0D..CC27    ; LVT # Lo  [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH
+CC29..CC43    ; LVT # Lo  [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH
+CC45..CC5F    ; LVT # Lo  [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH
+CC61..CC7B    ; LVT # Lo  [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH
+CC7D..CC97    ; LVT # Lo  [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH
+CC99..CCB3    ; LVT # Lo  [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH
+CCB5..CCCF    ; LVT # Lo  [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH
+CCD1..CCEB    ; LVT # Lo  [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH
+CCED..CD07    ; LVT # Lo  [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH
+CD09..CD23    ; LVT # Lo  [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH
+CD25..CD3F    ; LVT # Lo  [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH
+CD41..CD5B    ; LVT # Lo  [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH
+CD5D..CD77    ; LVT # Lo  [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH
+CD79..CD93    ; LVT # Lo  [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH
+CD95..CDAF    ; LVT # Lo  [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH
+CDB1..CDCB    ; LVT # Lo  [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH
+CDCD..CDE7    ; LVT # Lo  [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH
+CDE9..CE03    ; LVT # Lo  [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH
+CE05..CE1F    ; LVT # Lo  [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH
+CE21..CE3B    ; LVT # Lo  [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH
+CE3D..CE57    ; LVT # Lo  [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH
+CE59..CE73    ; LVT # Lo  [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH
+CE75..CE8F    ; LVT # Lo  [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH
+CE91..CEAB    ; LVT # Lo  [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH
+CEAD..CEC7    ; LVT # Lo  [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH
+CEC9..CEE3    ; LVT # Lo  [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH
+CEE5..CEFF    ; LVT # Lo  [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH
+CF01..CF1B    ; LVT # Lo  [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH
+CF1D..CF37    ; LVT # Lo  [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH
+CF39..CF53    ; LVT # Lo  [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH
+CF55..CF6F    ; LVT # Lo  [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH
+CF71..CF8B    ; LVT # Lo  [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH
+CF8D..CFA7    ; LVT # Lo  [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH
+CFA9..CFC3    ; LVT # Lo  [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH
+CFC5..CFDF    ; LVT # Lo  [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH
+CFE1..CFFB    ; LVT # Lo  [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH
+CFFD..D017    ; LVT # Lo  [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH
+D019..D033    ; LVT # Lo  [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH
+D035..D04F    ; LVT # Lo  [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH
+D051..D06B    ; LVT # Lo  [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH
+D06D..D087    ; LVT # Lo  [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH
+D089..D0A3    ; LVT # Lo  [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH
+D0A5..D0BF    ; LVT # Lo  [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH
+D0C1..D0DB    ; LVT # Lo  [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH
+D0DD..D0F7    ; LVT # Lo  [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH
+D0F9..D113    ; LVT # Lo  [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH
+D115..D12F    ; LVT # Lo  [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH
+D131..D14B    ; LVT # Lo  [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH
+D14D..D167    ; LVT # Lo  [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH
+D169..D183    ; LVT # Lo  [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH
+D185..D19F    ; LVT # Lo  [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH
+D1A1..D1BB    ; LVT # Lo  [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH
+D1BD..D1D7    ; LVT # Lo  [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH
+D1D9..D1F3    ; LVT # Lo  [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH
+D1F5..D20F    ; LVT # Lo  [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH
+D211..D22B    ; LVT # Lo  [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH
+D22D..D247    ; LVT # Lo  [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH
+D249..D263    ; LVT # Lo  [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH
+D265..D27F    ; LVT # Lo  [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH
+D281..D29B    ; LVT # Lo  [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH
+D29D..D2B7    ; LVT # Lo  [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH
+D2B9..D2D3    ; LVT # Lo  [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH
+D2D5..D2EF    ; LVT # Lo  [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH
+D2F1..D30B    ; LVT # Lo  [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH
+D30D..D327    ; LVT # Lo  [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH
+D329..D343    ; LVT # Lo  [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH
+D345..D35F    ; LVT # Lo  [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH
+D361..D37B    ; LVT # Lo  [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH
+D37D..D397    ; LVT # Lo  [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH
+D399..D3B3    ; LVT # Lo  [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH
+D3B5..D3CF    ; LVT # Lo  [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH
+D3D1..D3EB    ; LVT # Lo  [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH
+D3ED..D407    ; LVT # Lo  [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH
+D409..D423    ; LVT # Lo  [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH
+D425..D43F    ; LVT # Lo  [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH
+D441..D45B    ; LVT # Lo  [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH
+D45D..D477    ; LVT # Lo  [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH
+D479..D493    ; LVT # Lo  [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH
+D495..D4AF    ; LVT # Lo  [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH
+D4B1..D4CB    ; LVT # Lo  [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH
+D4CD..D4E7    ; LVT # Lo  [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH
+D4E9..D503    ; LVT # Lo  [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH
+D505..D51F    ; LVT # Lo  [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH
+D521..D53B    ; LVT # Lo  [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH
+D53D..D557    ; LVT # Lo  [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH
+D559..D573    ; LVT # Lo  [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH
+D575..D58F    ; LVT # Lo  [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH
+D591..D5AB    ; LVT # Lo  [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH
+D5AD..D5C7    ; LVT # Lo  [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH
+D5C9..D5E3    ; LVT # Lo  [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH
+D5E5..D5FF    ; LVT # Lo  [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH
+D601..D61B    ; LVT # Lo  [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH
+D61D..D637    ; LVT # Lo  [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH
+D639..D653    ; LVT # Lo  [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH
+D655..D66F    ; LVT # Lo  [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH
+D671..D68B    ; LVT # Lo  [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH
+D68D..D6A7    ; LVT # Lo  [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH
+D6A9..D6C3    ; LVT # Lo  [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH
+D6C5..D6DF    ; LVT # Lo  [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH
+D6E1..D6FB    ; LVT # Lo  [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH
+D6FD..D717    ; LVT # Lo  [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH
+D719..D733    ; LVT # Lo  [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH
+D735..D74F    ; LVT # Lo  [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH
+D751..D76B    ; LVT # Lo  [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH
+D76D..D787    ; LVT # Lo  [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH
+D789..D7A3    ; LVT # Lo  [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH
+
+# Total code points: 10773
+
+# ================================================
+
+200D          ; ZWJ # Cf       ZERO WIDTH JOINER
+
+# Total code points: 1
+
+# EOF
diff --git a/contrib/unicode/README b/contrib/unicode/README
index 1f5fee6dc35056601b311bcb8fce4153a6b67b6c..1448a8d9f30191956825dcd4cf4bd657169d05c7 100644
--- a/contrib/unicode/README
+++ b/contrib/unicode/README
@@ -16,7 +16,12 @@ ftp://ftp.unicode.org/Public/UNIDATA/DerivedNormalizationProps.txt
 ftp://ftp.unicode.org/Public/UNIDATA/DerivedCoreProperties.txt
 ftp://ftp.unicode.org/Public/UNIDATA/NameAliases.txt
 
-These files have been added to source control in this directory;
+Two additional files are needed for lookup tables in libstdc++:
+
+ftp://ftp.unicode.org/Public/UNIDATA/auxiliary/GraphemeBreakProperty.txt
+ftp://ftp.unicode.org/Public/UNIDATA/emoji/emoji-data.txt
+
+All these files have been added to source control in this directory;
 please see unicode-license.txt for the relevant copyright information.
 
 In order to keep in sync with glibc's wcwidth as much as possible, it is
@@ -24,7 +29,7 @@ desirable for the logic that processes the Unicode data to be the same as
 glibc's.  To that end, we also put in this directory, in the from_glibc/
 directory, the glibc python code that implements their logic.  This code was
 copied verbatim from glibc, and it can be updated at any time from the glibc
-source code repository.  The files copied from that respository are:
+source code repository.  The files copied from that repository are:
 
 localedata/unicode-gen/unicode_utils.py
 localedata/unicode-gen/utf8_gen.py
@@ -71,3 +76,6 @@ The procedure to update GCC's Unicode support is the following:
 9:  Generate uname2c.h as follows:
       ../../libcpp/makeuname2c UnicodeData.txt NameAliases.txt \
 	> ../../libcpp/uname2c.h
+
+See gen_libstdcxx_unicode_data.py for instructions on updating the lookup
+tables in libstdc++.
diff --git a/contrib/unicode/emoji-data.txt b/contrib/unicode/emoji-data.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0ba10e9ce4c9ac4c0abc9116aa527f4ade2fbe68
--- /dev/null
+++ b/contrib/unicode/emoji-data.txt
@@ -0,0 +1,1320 @@
+# emoji-data.txt
+# Date: 2023-02-01, 02:22:54 GMT
+# © 2023 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see https://www.unicode.org/terms_of_use.html
+#
+# Emoji Data for UTS #51
+# Used with Emoji Version 15.1 and subsequent minor revisions (if any)
+#
+# For documentation and usage, see https://www.unicode.org/reports/tr51
+#
+# Format: 
+# <codepoint(s)> ; <property> # <comments> 
+# Note: there is no guarantee as to the structure of whitespace or comments
+#
+# Characters and sequences are listed in code point order. Users should be shown a more natural order.
+# See the CLDR collation order for Emoji.
+
+
+# ================================================
+
+# All omitted code points have Emoji=No
+
+0023          ; Emoji                # E0.0   [1] (#️)       hash sign
+002A          ; Emoji                # E0.0   [1] (*️)       asterisk
+0030..0039    ; Emoji                # E0.0  [10] (0️..9️)    digit zero..digit nine
+00A9          ; Emoji                # E0.6   [1] (©️)       copyright
+00AE          ; Emoji                # E0.6   [1] (®️)       registered
+203C          ; Emoji                # E0.6   [1] (‼️)       double exclamation mark
+2049          ; Emoji                # E0.6   [1] (⁉️)       exclamation question mark
+2122          ; Emoji                # E0.6   [1] (™️)       trade mark
+2139          ; Emoji                # E0.6   [1] (ℹ️)       information
+2194..2199    ; Emoji                # E0.6   [6] (↔️..↙️)    left-right arrow..down-left arrow
+21A9..21AA    ; Emoji                # E0.6   [2] (↩️..↪️)    right arrow curving left..left arrow curving right
+231A..231B    ; Emoji                # E0.6   [2] (⌚..⌛)    watch..hourglass done
+2328          ; Emoji                # E1.0   [1] (⌨️)       keyboard
+23CF          ; Emoji                # E1.0   [1] (⏏️)       eject button
+23E9..23EC    ; Emoji                # E0.6   [4] (⏩..⏬)    fast-forward button..fast down button
+23ED..23EE    ; Emoji                # E0.7   [2] (⏭️..⏮️)    next track button..last track button
+23EF          ; Emoji                # E1.0   [1] (⏯️)       play or pause button
+23F0          ; Emoji                # E0.6   [1] (⏰)       alarm clock
+23F1..23F2    ; Emoji                # E1.0   [2] (⏱️..⏲️)    stopwatch..timer clock
+23F3          ; Emoji                # E0.6   [1] (⏳)       hourglass not done
+23F8..23FA    ; Emoji                # E0.7   [3] (⏸️..⏺️)    pause button..record button
+24C2          ; Emoji                # E0.6   [1] (Ⓜ️)       circled M
+25AA..25AB    ; Emoji                # E0.6   [2] (▪️..▫️)    black small square..white small square
+25B6          ; Emoji                # E0.6   [1] (▶️)       play button
+25C0          ; Emoji                # E0.6   [1] (◀️)       reverse button
+25FB..25FE    ; Emoji                # E0.6   [4] (◻️..◾)    white medium square..black medium-small square
+2600..2601    ; Emoji                # E0.6   [2] (☀️..☁️)    sun..cloud
+2602..2603    ; Emoji                # E0.7   [2] (☂️..☃️)    umbrella..snowman
+2604          ; Emoji                # E1.0   [1] (☄️)       comet
+260E          ; Emoji                # E0.6   [1] (☎️)       telephone
+2611          ; Emoji                # E0.6   [1] (☑️)       check box with check
+2614..2615    ; Emoji                # E0.6   [2] (☔..☕)    umbrella with rain drops..hot beverage
+2618          ; Emoji                # E1.0   [1] (☘️)       shamrock
+261D          ; Emoji                # E0.6   [1] (☝️)       index pointing up
+2620          ; Emoji                # E1.0   [1] (☠️)       skull and crossbones
+2622..2623    ; Emoji                # E1.0   [2] (☢️..☣️)    radioactive..biohazard
+2626          ; Emoji                # E1.0   [1] (☦️)       orthodox cross
+262A          ; Emoji                # E0.7   [1] (☪️)       star and crescent
+262E          ; Emoji                # E1.0   [1] (☮️)       peace symbol
+262F          ; Emoji                # E0.7   [1] (☯️)       yin yang
+2638..2639    ; Emoji                # E0.7   [2] (☸️..☹️)    wheel of dharma..frowning face
+263A          ; Emoji                # E0.6   [1] (☺️)       smiling face
+2640          ; Emoji                # E4.0   [1] (♀️)       female sign
+2642          ; Emoji                # E4.0   [1] (♂️)       male sign
+2648..2653    ; Emoji                # E0.6  [12] (♈..♓)    Aries..Pisces
+265F          ; Emoji                # E11.0  [1] (♟️)       chess pawn
+2660          ; Emoji                # E0.6   [1] (♠️)       spade suit
+2663          ; Emoji                # E0.6   [1] (♣️)       club suit
+2665..2666    ; Emoji                # E0.6   [2] (♥️..♦️)    heart suit..diamond suit
+2668          ; Emoji                # E0.6   [1] (♨️)       hot springs
+267B          ; Emoji                # E0.6   [1] (♻️)       recycling symbol
+267E          ; Emoji                # E11.0  [1] (♾️)       infinity
+267F          ; Emoji                # E0.6   [1] (♿)       wheelchair symbol
+2692          ; Emoji                # E1.0   [1] (⚒️)       hammer and pick
+2693          ; Emoji                # E0.6   [1] (âš“)       anchor
+2694          ; Emoji                # E1.0   [1] (⚔️)       crossed swords
+2695          ; Emoji                # E4.0   [1] (⚕️)       medical symbol
+2696..2697    ; Emoji                # E1.0   [2] (⚖️..⚗️)    balance scale..alembic
+2699          ; Emoji                # E1.0   [1] (⚙️)       gear
+269B..269C    ; Emoji                # E1.0   [2] (⚛️..⚜️)    atom symbol..fleur-de-lis
+26A0..26A1    ; Emoji                # E0.6   [2] (⚠️..⚡)    warning..high voltage
+26A7          ; Emoji                # E13.0  [1] (⚧️)       transgender symbol
+26AA..26AB    ; Emoji                # E0.6   [2] (⚪..⚫)    white circle..black circle
+26B0..26B1    ; Emoji                # E1.0   [2] (⚰️..⚱️)    coffin..funeral urn
+26BD..26BE    ; Emoji                # E0.6   [2] (âš½..âš¾)    soccer ball..baseball
+26C4..26C5    ; Emoji                # E0.6   [2] (⛄..⛅)    snowman without snow..sun behind cloud
+26C8          ; Emoji                # E0.7   [1] (⛈️)       cloud with lightning and rain
+26CE          ; Emoji                # E0.6   [1] (⛎)       Ophiuchus
+26CF          ; Emoji                # E0.7   [1] (⛏️)       pick
+26D1          ; Emoji                # E0.7   [1] (⛑️)       rescue worker’s helmet
+26D3          ; Emoji                # E0.7   [1] (⛓️)       chains
+26D4          ; Emoji                # E0.6   [1] (â›”)       no entry
+26E9          ; Emoji                # E0.7   [1] (⛩️)       shinto shrine
+26EA          ; Emoji                # E0.6   [1] (⛪)       church
+26F0..26F1    ; Emoji                # E0.7   [2] (⛰️..⛱️)    mountain..umbrella on ground
+26F2..26F3    ; Emoji                # E0.6   [2] (⛲..⛳)    fountain..flag in hole
+26F4          ; Emoji                # E0.7   [1] (⛴️)       ferry
+26F5          ; Emoji                # E0.6   [1] (⛵)       sailboat
+26F7..26F9    ; Emoji                # E0.7   [3] (⛷️..⛹️)    skier..person bouncing ball
+26FA          ; Emoji                # E0.6   [1] (⛺)       tent
+26FD          ; Emoji                # E0.6   [1] (⛽)       fuel pump
+2702          ; Emoji                # E0.6   [1] (✂️)       scissors
+2705          ; Emoji                # E0.6   [1] (✅)       check mark button
+2708..270C    ; Emoji                # E0.6   [5] (✈️..✌️)    airplane..victory hand
+270D          ; Emoji                # E0.7   [1] (✍️)       writing hand
+270F          ; Emoji                # E0.6   [1] (✏️)       pencil
+2712          ; Emoji                # E0.6   [1] (✒️)       black nib
+2714          ; Emoji                # E0.6   [1] (✔️)       check mark
+2716          ; Emoji                # E0.6   [1] (✖️)       multiply
+271D          ; Emoji                # E0.7   [1] (✝️)       latin cross
+2721          ; Emoji                # E0.7   [1] (✡️)       star of David
+2728          ; Emoji                # E0.6   [1] (✨)       sparkles
+2733..2734    ; Emoji                # E0.6   [2] (✳️..✴️)    eight-spoked asterisk..eight-pointed star
+2744          ; Emoji                # E0.6   [1] (❄️)       snowflake
+2747          ; Emoji                # E0.6   [1] (❇️)       sparkle
+274C          ; Emoji                # E0.6   [1] (❌)       cross mark
+274E          ; Emoji                # E0.6   [1] (❎)       cross mark button
+2753..2755    ; Emoji                # E0.6   [3] (❓..❕)    red question mark..white exclamation mark
+2757          ; Emoji                # E0.6   [1] (❗)       red exclamation mark
+2763          ; Emoji                # E1.0   [1] (❣️)       heart exclamation
+2764          ; Emoji                # E0.6   [1] (❤️)       red heart
+2795..2797    ; Emoji                # E0.6   [3] (âž•..âž—)    plus..divide
+27A1          ; Emoji                # E0.6   [1] (➡️)       right arrow
+27B0          ; Emoji                # E0.6   [1] (âž°)       curly loop
+27BF          ; Emoji                # E1.0   [1] (âž¿)       double curly loop
+2934..2935    ; Emoji                # E0.6   [2] (⤴️..⤵️)    right arrow curving up..right arrow curving down
+2B05..2B07    ; Emoji                # E0.6   [3] (⬅️..⬇️)    left arrow..down arrow
+2B1B..2B1C    ; Emoji                # E0.6   [2] (⬛..⬜)    black large square..white large square
+2B50          ; Emoji                # E0.6   [1] (⭐)       star
+2B55          ; Emoji                # E0.6   [1] (â­•)       hollow red circle
+3030          ; Emoji                # E0.6   [1] (〰️)       wavy dash
+303D          ; Emoji                # E0.6   [1] (〽️)       part alternation mark
+3297          ; Emoji                # E0.6   [1] (㊗️)       Japanese “congratulations” button
+3299          ; Emoji                # E0.6   [1] (㊙️)       Japanese “secret” button
+1F004         ; Emoji                # E0.6   [1] (🀄)       mahjong red dragon
+1F0CF         ; Emoji                # E0.6   [1] (🃏)       joker
+1F170..1F171  ; Emoji                # E0.6   [2] (🅰️..🅱️)    A button (blood type)..B button (blood type)
+1F17E..1F17F  ; Emoji                # E0.6   [2] (🅾️..🅿️)    O button (blood type)..P button
+1F18E         ; Emoji                # E0.6   [1] (🆎)       AB button (blood type)
+1F191..1F19A  ; Emoji                # E0.6  [10] (🆑..🆚)    CL button..VS button
+1F1E6..1F1FF  ; Emoji                # E0.0  [26] (🇦..🇿)    regional indicator symbol letter a..regional indicator symbol letter z
+1F201..1F202  ; Emoji                # E0.6   [2] (🈁..🈂️)    Japanese “here” button..Japanese “service charge” button
+1F21A         ; Emoji                # E0.6   [1] (🈚)       Japanese “free of charge” button
+1F22F         ; Emoji                # E0.6   [1] (🈯)       Japanese “reserved” button
+1F232..1F23A  ; Emoji                # E0.6   [9] (🈲..🈺)    Japanese “prohibited” button..Japanese “open for business” button
+1F250..1F251  ; Emoji                # E0.6   [2] (🉐..🉑)    Japanese “bargain” button..Japanese “acceptable” button
+1F300..1F30C  ; Emoji                # E0.6  [13] (🌀..🌌)    cyclone..milky way
+1F30D..1F30E  ; Emoji                # E0.7   [2] (🌍..🌎)    globe showing Europe-Africa..globe showing Americas
+1F30F         ; Emoji                # E0.6   [1] (🌏)       globe showing Asia-Australia
+1F310         ; Emoji                # E1.0   [1] (🌐)       globe with meridians
+1F311         ; Emoji                # E0.6   [1] (🌑)       new moon
+1F312         ; Emoji                # E1.0   [1] (🌒)       waxing crescent moon
+1F313..1F315  ; Emoji                # E0.6   [3] (🌓..🌕)    first quarter moon..full moon
+1F316..1F318  ; Emoji                # E1.0   [3] (🌖..🌘)    waning gibbous moon..waning crescent moon
+1F319         ; Emoji                # E0.6   [1] (🌙)       crescent moon
+1F31A         ; Emoji                # E1.0   [1] (🌚)       new moon face
+1F31B         ; Emoji                # E0.6   [1] (🌛)       first quarter moon face
+1F31C         ; Emoji                # E0.7   [1] (🌜)       last quarter moon face
+1F31D..1F31E  ; Emoji                # E1.0   [2] (🌝..🌞)    full moon face..sun with face
+1F31F..1F320  ; Emoji                # E0.6   [2] (🌟..🌠)    glowing star..shooting star
+1F321         ; Emoji                # E0.7   [1] (🌡️)       thermometer
+1F324..1F32C  ; Emoji                # E0.7   [9] (🌤️..🌬️)    sun behind small cloud..wind face
+1F32D..1F32F  ; Emoji                # E1.0   [3] (🌭..🌯)    hot dog..burrito
+1F330..1F331  ; Emoji                # E0.6   [2] (🌰..🌱)    chestnut..seedling
+1F332..1F333  ; Emoji                # E1.0   [2] (🌲..🌳)    evergreen tree..deciduous tree
+1F334..1F335  ; Emoji                # E0.6   [2] (🌴..🌵)    palm tree..cactus
+1F336         ; Emoji                # E0.7   [1] (🌶️)       hot pepper
+1F337..1F34A  ; Emoji                # E0.6  [20] (🌷..🍊)    tulip..tangerine
+1F34B         ; Emoji                # E1.0   [1] (🍋)       lemon
+1F34C..1F34F  ; Emoji                # E0.6   [4] (🍌..🍏)    banana..green apple
+1F350         ; Emoji                # E1.0   [1] (🍐)       pear
+1F351..1F37B  ; Emoji                # E0.6  [43] (🍑..🍻)    peach..clinking beer mugs
+1F37C         ; Emoji                # E1.0   [1] (🍼)       baby bottle
+1F37D         ; Emoji                # E0.7   [1] (🍽️)       fork and knife with plate
+1F37E..1F37F  ; Emoji                # E1.0   [2] (🍾..🍿)    bottle with popping cork..popcorn
+1F380..1F393  ; Emoji                # E0.6  [20] (🎀..🎓)    ribbon..graduation cap
+1F396..1F397  ; Emoji                # E0.7   [2] (🎖️..🎗️)    military medal..reminder ribbon
+1F399..1F39B  ; Emoji                # E0.7   [3] (🎙️..🎛️)    studio microphone..control knobs
+1F39E..1F39F  ; Emoji                # E0.7   [2] (🎞️..🎟️)    film frames..admission tickets
+1F3A0..1F3C4  ; Emoji                # E0.6  [37] (🎠..🏄)    carousel horse..person surfing
+1F3C5         ; Emoji                # E1.0   [1] (🏅)       sports medal
+1F3C6         ; Emoji                # E0.6   [1] (🏆)       trophy
+1F3C7         ; Emoji                # E1.0   [1] (🏇)       horse racing
+1F3C8         ; Emoji                # E0.6   [1] (🏈)       american football
+1F3C9         ; Emoji                # E1.0   [1] (🏉)       rugby football
+1F3CA         ; Emoji                # E0.6   [1] (🏊)       person swimming
+1F3CB..1F3CE  ; Emoji                # E0.7   [4] (🏋️..🏎️)    person lifting weights..racing car
+1F3CF..1F3D3  ; Emoji                # E1.0   [5] (🏏..🏓)    cricket game..ping pong
+1F3D4..1F3DF  ; Emoji                # E0.7  [12] (🏔️..🏟️)    snow-capped mountain..stadium
+1F3E0..1F3E3  ; Emoji                # E0.6   [4] (🏠..🏣)    house..Japanese post office
+1F3E4         ; Emoji                # E1.0   [1] (🏤)       post office
+1F3E5..1F3F0  ; Emoji                # E0.6  [12] (🏥..🏰)    hospital..castle
+1F3F3         ; Emoji                # E0.7   [1] (🏳️)       white flag
+1F3F4         ; Emoji                # E1.0   [1] (🏴)       black flag
+1F3F5         ; Emoji                # E0.7   [1] (🏵️)       rosette
+1F3F7         ; Emoji                # E0.7   [1] (🏷️)       label
+1F3F8..1F407  ; Emoji                # E1.0  [16] (🏸..🐇)    badminton..rabbit
+1F408         ; Emoji                # E0.7   [1] (🐈)       cat
+1F409..1F40B  ; Emoji                # E1.0   [3] (🐉..🐋)    dragon..whale
+1F40C..1F40E  ; Emoji                # E0.6   [3] (🐌..🐎)    snail..horse
+1F40F..1F410  ; Emoji                # E1.0   [2] (🐏..🐐)    ram..goat
+1F411..1F412  ; Emoji                # E0.6   [2] (🐑..🐒)    ewe..monkey
+1F413         ; Emoji                # E1.0   [1] (🐓)       rooster
+1F414         ; Emoji                # E0.6   [1] (🐔)       chicken
+1F415         ; Emoji                # E0.7   [1] (🐕)       dog
+1F416         ; Emoji                # E1.0   [1] (🐖)       pig
+1F417..1F429  ; Emoji                # E0.6  [19] (🐗..🐩)    boar..poodle
+1F42A         ; Emoji                # E1.0   [1] (🐪)       camel
+1F42B..1F43E  ; Emoji                # E0.6  [20] (🐫..🐾)    two-hump camel..paw prints
+1F43F         ; Emoji                # E0.7   [1] (🐿️)       chipmunk
+1F440         ; Emoji                # E0.6   [1] (👀)       eyes
+1F441         ; Emoji                # E0.7   [1] (👁️)       eye
+1F442..1F464  ; Emoji                # E0.6  [35] (👂..👤)    ear..bust in silhouette
+1F465         ; Emoji                # E1.0   [1] (👥)       busts in silhouette
+1F466..1F46B  ; Emoji                # E0.6   [6] (👦..👫)    boy..woman and man holding hands
+1F46C..1F46D  ; Emoji                # E1.0   [2] (👬..👭)    men holding hands..women holding hands
+1F46E..1F4AC  ; Emoji                # E0.6  [63] (👮..💬)    police officer..speech balloon
+1F4AD         ; Emoji                # E1.0   [1] (💭)       thought balloon
+1F4AE..1F4B5  ; Emoji                # E0.6   [8] (💮..💵)    white flower..dollar banknote
+1F4B6..1F4B7  ; Emoji                # E1.0   [2] (💶..💷)    euro banknote..pound banknote
+1F4B8..1F4EB  ; Emoji                # E0.6  [52] (💸..📫)    money with wings..closed mailbox with raised flag
+1F4EC..1F4ED  ; Emoji                # E0.7   [2] (📬..📭)    open mailbox with raised flag..open mailbox with lowered flag
+1F4EE         ; Emoji                # E0.6   [1] (📮)       postbox
+1F4EF         ; Emoji                # E1.0   [1] (📯)       postal horn
+1F4F0..1F4F4  ; Emoji                # E0.6   [5] (📰..📴)    newspaper..mobile phone off
+1F4F5         ; Emoji                # E1.0   [1] (📵)       no mobile phones
+1F4F6..1F4F7  ; Emoji                # E0.6   [2] (📶..📷)    antenna bars..camera
+1F4F8         ; Emoji                # E1.0   [1] (📸)       camera with flash
+1F4F9..1F4FC  ; Emoji                # E0.6   [4] (📹..📼)    video camera..videocassette
+1F4FD         ; Emoji                # E0.7   [1] (📽️)       film projector
+1F4FF..1F502  ; Emoji                # E1.0   [4] (📿..🔂)    prayer beads..repeat single button
+1F503         ; Emoji                # E0.6   [1] (🔃)       clockwise vertical arrows
+1F504..1F507  ; Emoji                # E1.0   [4] (🔄..🔇)    counterclockwise arrows button..muted speaker
+1F508         ; Emoji                # E0.7   [1] (🔈)       speaker low volume
+1F509         ; Emoji                # E1.0   [1] (🔉)       speaker medium volume
+1F50A..1F514  ; Emoji                # E0.6  [11] (🔊..🔔)    speaker high volume..bell
+1F515         ; Emoji                # E1.0   [1] (🔕)       bell with slash
+1F516..1F52B  ; Emoji                # E0.6  [22] (🔖..🔫)    bookmark..water pistol
+1F52C..1F52D  ; Emoji                # E1.0   [2] (🔬..🔭)    microscope..telescope
+1F52E..1F53D  ; Emoji                # E0.6  [16] (🔮..🔽)    crystal ball..downwards button
+1F549..1F54A  ; Emoji                # E0.7   [2] (🕉️..🕊️)    om..dove
+1F54B..1F54E  ; Emoji                # E1.0   [4] (🕋..🕎)    kaaba..menorah
+1F550..1F55B  ; Emoji                # E0.6  [12] (🕐..🕛)    one o’clock..twelve o’clock
+1F55C..1F567  ; Emoji                # E0.7  [12] (🕜..🕧)    one-thirty..twelve-thirty
+1F56F..1F570  ; Emoji                # E0.7   [2] (🕯️..🕰️)    candle..mantelpiece clock
+1F573..1F579  ; Emoji                # E0.7   [7] (🕳️..🕹️)    hole..joystick
+1F57A         ; Emoji                # E3.0   [1] (🕺)       man dancing
+1F587         ; Emoji                # E0.7   [1] (🖇️)       linked paperclips
+1F58A..1F58D  ; Emoji                # E0.7   [4] (🖊️..🖍️)    pen..crayon
+1F590         ; Emoji                # E0.7   [1] (🖐️)       hand with fingers splayed
+1F595..1F596  ; Emoji                # E1.0   [2] (🖕..🖖)    middle finger..vulcan salute
+1F5A4         ; Emoji                # E3.0   [1] (🖤)       black heart
+1F5A5         ; Emoji                # E0.7   [1] (🖥️)       desktop computer
+1F5A8         ; Emoji                # E0.7   [1] (🖨️)       printer
+1F5B1..1F5B2  ; Emoji                # E0.7   [2] (🖱️..🖲️)    computer mouse..trackball
+1F5BC         ; Emoji                # E0.7   [1] (🖼️)       framed picture
+1F5C2..1F5C4  ; Emoji                # E0.7   [3] (🗂️..🗄️)    card index dividers..file cabinet
+1F5D1..1F5D3  ; Emoji                # E0.7   [3] (🗑️..🗓️)    wastebasket..spiral calendar
+1F5DC..1F5DE  ; Emoji                # E0.7   [3] (🗜️..🗞️)    clamp..rolled-up newspaper
+1F5E1         ; Emoji                # E0.7   [1] (🗡️)       dagger
+1F5E3         ; Emoji                # E0.7   [1] (🗣️)       speaking head
+1F5E8         ; Emoji                # E2.0   [1] (🗨️)       left speech bubble
+1F5EF         ; Emoji                # E0.7   [1] (🗯️)       right anger bubble
+1F5F3         ; Emoji                # E0.7   [1] (🗳️)       ballot box with ballot
+1F5FA         ; Emoji                # E0.7   [1] (🗺️)       world map
+1F5FB..1F5FF  ; Emoji                # E0.6   [5] (🗻..🗿)    mount fuji..moai
+1F600         ; Emoji                # E1.0   [1] (😀)       grinning face
+1F601..1F606  ; Emoji                # E0.6   [6] (😁..😆)    beaming face with smiling eyes..grinning squinting face
+1F607..1F608  ; Emoji                # E1.0   [2] (😇..😈)    smiling face with halo..smiling face with horns
+1F609..1F60D  ; Emoji                # E0.6   [5] (😉..😍)    winking face..smiling face with heart-eyes
+1F60E         ; Emoji                # E1.0   [1] (😎)       smiling face with sunglasses
+1F60F         ; Emoji                # E0.6   [1] (😏)       smirking face
+1F610         ; Emoji                # E0.7   [1] (😐)       neutral face
+1F611         ; Emoji                # E1.0   [1] (😑)       expressionless face
+1F612..1F614  ; Emoji                # E0.6   [3] (😒..😔)    unamused face..pensive face
+1F615         ; Emoji                # E1.0   [1] (😕)       confused face
+1F616         ; Emoji                # E0.6   [1] (😖)       confounded face
+1F617         ; Emoji                # E1.0   [1] (😗)       kissing face
+1F618         ; Emoji                # E0.6   [1] (😘)       face blowing a kiss
+1F619         ; Emoji                # E1.0   [1] (😙)       kissing face with smiling eyes
+1F61A         ; Emoji                # E0.6   [1] (😚)       kissing face with closed eyes
+1F61B         ; Emoji                # E1.0   [1] (😛)       face with tongue
+1F61C..1F61E  ; Emoji                # E0.6   [3] (😜..😞)    winking face with tongue..disappointed face
+1F61F         ; Emoji                # E1.0   [1] (😟)       worried face
+1F620..1F625  ; Emoji                # E0.6   [6] (😠..😥)    angry face..sad but relieved face
+1F626..1F627  ; Emoji                # E1.0   [2] (😦..😧)    frowning face with open mouth..anguished face
+1F628..1F62B  ; Emoji                # E0.6   [4] (😨..😫)    fearful face..tired face
+1F62C         ; Emoji                # E1.0   [1] (😬)       grimacing face
+1F62D         ; Emoji                # E0.6   [1] (😭)       loudly crying face
+1F62E..1F62F  ; Emoji                # E1.0   [2] (😮..😯)    face with open mouth..hushed face
+1F630..1F633  ; Emoji                # E0.6   [4] (😰..😳)    anxious face with sweat..flushed face
+1F634         ; Emoji                # E1.0   [1] (😴)       sleeping face
+1F635         ; Emoji                # E0.6   [1] (😵)       face with crossed-out eyes
+1F636         ; Emoji                # E1.0   [1] (😶)       face without mouth
+1F637..1F640  ; Emoji                # E0.6  [10] (😷..🙀)    face with medical mask..weary cat
+1F641..1F644  ; Emoji                # E1.0   [4] (🙁..🙄)    slightly frowning face..face with rolling eyes
+1F645..1F64F  ; Emoji                # E0.6  [11] (🙅..🙏)    person gesturing NO..folded hands
+1F680         ; Emoji                # E0.6   [1] (🚀)       rocket
+1F681..1F682  ; Emoji                # E1.0   [2] (🚁..🚂)    helicopter..locomotive
+1F683..1F685  ; Emoji                # E0.6   [3] (🚃..🚅)    railway car..bullet train
+1F686         ; Emoji                # E1.0   [1] (🚆)       train
+1F687         ; Emoji                # E0.6   [1] (🚇)       metro
+1F688         ; Emoji                # E1.0   [1] (🚈)       light rail
+1F689         ; Emoji                # E0.6   [1] (🚉)       station
+1F68A..1F68B  ; Emoji                # E1.0   [2] (🚊..🚋)    tram..tram car
+1F68C         ; Emoji                # E0.6   [1] (🚌)       bus
+1F68D         ; Emoji                # E0.7   [1] (🚍)       oncoming bus
+1F68E         ; Emoji                # E1.0   [1] (🚎)       trolleybus
+1F68F         ; Emoji                # E0.6   [1] (🚏)       bus stop
+1F690         ; Emoji                # E1.0   [1] (🚐)       minibus
+1F691..1F693  ; Emoji                # E0.6   [3] (🚑..🚓)    ambulance..police car
+1F694         ; Emoji                # E0.7   [1] (🚔)       oncoming police car
+1F695         ; Emoji                # E0.6   [1] (🚕)       taxi
+1F696         ; Emoji                # E1.0   [1] (🚖)       oncoming taxi
+1F697         ; Emoji                # E0.6   [1] (🚗)       automobile
+1F698         ; Emoji                # E0.7   [1] (🚘)       oncoming automobile
+1F699..1F69A  ; Emoji                # E0.6   [2] (🚙..🚚)    sport utility vehicle..delivery truck
+1F69B..1F6A1  ; Emoji                # E1.0   [7] (🚛..🚡)    articulated lorry..aerial tramway
+1F6A2         ; Emoji                # E0.6   [1] (🚢)       ship
+1F6A3         ; Emoji                # E1.0   [1] (🚣)       person rowing boat
+1F6A4..1F6A5  ; Emoji                # E0.6   [2] (🚤..🚥)    speedboat..horizontal traffic light
+1F6A6         ; Emoji                # E1.0   [1] (🚦)       vertical traffic light
+1F6A7..1F6AD  ; Emoji                # E0.6   [7] (🚧..🚭)    construction..no smoking
+1F6AE..1F6B1  ; Emoji                # E1.0   [4] (🚮..🚱)    litter in bin sign..non-potable water
+1F6B2         ; Emoji                # E0.6   [1] (🚲)       bicycle
+1F6B3..1F6B5  ; Emoji                # E1.0   [3] (🚳..🚵)    no bicycles..person mountain biking
+1F6B6         ; Emoji                # E0.6   [1] (🚶)       person walking
+1F6B7..1F6B8  ; Emoji                # E1.0   [2] (🚷..🚸)    no pedestrians..children crossing
+1F6B9..1F6BE  ; Emoji                # E0.6   [6] (🚹..🚾)    men’s room..water closet
+1F6BF         ; Emoji                # E1.0   [1] (🚿)       shower
+1F6C0         ; Emoji                # E0.6   [1] (🛀)       person taking bath
+1F6C1..1F6C5  ; Emoji                # E1.0   [5] (🛁..🛅)    bathtub..left luggage
+1F6CB         ; Emoji                # E0.7   [1] (🛋️)       couch and lamp
+1F6CC         ; Emoji                # E1.0   [1] (🛌)       person in bed
+1F6CD..1F6CF  ; Emoji                # E0.7   [3] (🛍️..🛏️)    shopping bags..bed
+1F6D0         ; Emoji                # E1.0   [1] (🛐)       place of worship
+1F6D1..1F6D2  ; Emoji                # E3.0   [2] (🛑..🛒)    stop sign..shopping cart
+1F6D5         ; Emoji                # E12.0  [1] (🛕)       hindu temple
+1F6D6..1F6D7  ; Emoji                # E13.0  [2] (🛖..🛗)    hut..elevator
+1F6DC         ; Emoji                # E15.0  [1] (🛜)       wireless
+1F6DD..1F6DF  ; Emoji                # E14.0  [3] (🛝..🛟)    playground slide..ring buoy
+1F6E0..1F6E5  ; Emoji                # E0.7   [6] (🛠️..🛥️)    hammer and wrench..motor boat
+1F6E9         ; Emoji                # E0.7   [1] (🛩️)       small airplane
+1F6EB..1F6EC  ; Emoji                # E1.0   [2] (🛫..🛬)    airplane departure..airplane arrival
+1F6F0         ; Emoji                # E0.7   [1] (🛰️)       satellite
+1F6F3         ; Emoji                # E0.7   [1] (🛳️)       passenger ship
+1F6F4..1F6F6  ; Emoji                # E3.0   [3] (🛴..🛶)    kick scooter..canoe
+1F6F7..1F6F8  ; Emoji                # E5.0   [2] (🛷..🛸)    sled..flying saucer
+1F6F9         ; Emoji                # E11.0  [1] (🛹)       skateboard
+1F6FA         ; Emoji                # E12.0  [1] (🛺)       auto rickshaw
+1F6FB..1F6FC  ; Emoji                # E13.0  [2] (🛻..🛼)    pickup truck..roller skate
+1F7E0..1F7EB  ; Emoji                # E12.0 [12] (🟠..🟫)    orange circle..brown square
+1F7F0         ; Emoji                # E14.0  [1] (🟰)       heavy equals sign
+1F90C         ; Emoji                # E13.0  [1] (🤌)       pinched fingers
+1F90D..1F90F  ; Emoji                # E12.0  [3] (🤍..🤏)    white heart..pinching hand
+1F910..1F918  ; Emoji                # E1.0   [9] (🤐..🤘)    zipper-mouth face..sign of the horns
+1F919..1F91E  ; Emoji                # E3.0   [6] (🤙..🤞)    call me hand..crossed fingers
+1F91F         ; Emoji                # E5.0   [1] (🤟)       love-you gesture
+1F920..1F927  ; Emoji                # E3.0   [8] (🤠..🤧)    cowboy hat face..sneezing face
+1F928..1F92F  ; Emoji                # E5.0   [8] (🤨..🤯)    face with raised eyebrow..exploding head
+1F930         ; Emoji                # E3.0   [1] (🤰)       pregnant woman
+1F931..1F932  ; Emoji                # E5.0   [2] (🤱..🤲)    breast-feeding..palms up together
+1F933..1F93A  ; Emoji                # E3.0   [8] (🤳..🤺)    selfie..person fencing
+1F93C..1F93E  ; Emoji                # E3.0   [3] (🤼..🤾)    people wrestling..person playing handball
+1F93F         ; Emoji                # E12.0  [1] (🤿)       diving mask
+1F940..1F945  ; Emoji                # E3.0   [6] (🥀..🥅)    wilted flower..goal net
+1F947..1F94B  ; Emoji                # E3.0   [5] (🥇..🥋)    1st place medal..martial arts uniform
+1F94C         ; Emoji                # E5.0   [1] (🥌)       curling stone
+1F94D..1F94F  ; Emoji                # E11.0  [3] (🥍..🥏)    lacrosse..flying disc
+1F950..1F95E  ; Emoji                # E3.0  [15] (🥐..🥞)    croissant..pancakes
+1F95F..1F96B  ; Emoji                # E5.0  [13] (🥟..🥫)    dumpling..canned food
+1F96C..1F970  ; Emoji                # E11.0  [5] (🥬..🥰)    leafy green..smiling face with hearts
+1F971         ; Emoji                # E12.0  [1] (🥱)       yawning face
+1F972         ; Emoji                # E13.0  [1] (🥲)       smiling face with tear
+1F973..1F976  ; Emoji                # E11.0  [4] (🥳..🥶)    partying face..cold face
+1F977..1F978  ; Emoji                # E13.0  [2] (🥷..🥸)    ninja..disguised face
+1F979         ; Emoji                # E14.0  [1] (🥹)       face holding back tears
+1F97A         ; Emoji                # E11.0  [1] (🥺)       pleading face
+1F97B         ; Emoji                # E12.0  [1] (🥻)       sari
+1F97C..1F97F  ; Emoji                # E11.0  [4] (🥼..🥿)    lab coat..flat shoe
+1F980..1F984  ; Emoji                # E1.0   [5] (🦀..🦄)    crab..unicorn
+1F985..1F991  ; Emoji                # E3.0  [13] (🦅..🦑)    eagle..squid
+1F992..1F997  ; Emoji                # E5.0   [6] (🦒..🦗)    giraffe..cricket
+1F998..1F9A2  ; Emoji                # E11.0 [11] (🦘..🦢)    kangaroo..swan
+1F9A3..1F9A4  ; Emoji                # E13.0  [2] (🦣..🦤)    mammoth..dodo
+1F9A5..1F9AA  ; Emoji                # E12.0  [6] (🦥..🦪)    sloth..oyster
+1F9AB..1F9AD  ; Emoji                # E13.0  [3] (🦫..🦭)    beaver..seal
+1F9AE..1F9AF  ; Emoji                # E12.0  [2] (🦮..🦯)    guide dog..white cane
+1F9B0..1F9B9  ; Emoji                # E11.0 [10] (🦰..🦹)    red hair..supervillain
+1F9BA..1F9BF  ; Emoji                # E12.0  [6] (🦺..🦿)    safety vest..mechanical leg
+1F9C0         ; Emoji                # E1.0   [1] (🧀)       cheese wedge
+1F9C1..1F9C2  ; Emoji                # E11.0  [2] (🧁..🧂)    cupcake..salt
+1F9C3..1F9CA  ; Emoji                # E12.0  [8] (🧃..🧊)    beverage box..ice
+1F9CB         ; Emoji                # E13.0  [1] (🧋)       bubble tea
+1F9CC         ; Emoji                # E14.0  [1] (🧌)       troll
+1F9CD..1F9CF  ; Emoji                # E12.0  [3] (🧍..🧏)    person standing..deaf person
+1F9D0..1F9E6  ; Emoji                # E5.0  [23] (🧐..🧦)    face with monocle..socks
+1F9E7..1F9FF  ; Emoji                # E11.0 [25] (🧧..🧿)    red envelope..nazar amulet
+1FA70..1FA73  ; Emoji                # E12.0  [4] (🩰..🩳)    ballet shoes..shorts
+1FA74         ; Emoji                # E13.0  [1] (🩴)       thong sandal
+1FA75..1FA77  ; Emoji                # E15.0  [3] (🩵..🩷)    light blue heart..pink heart
+1FA78..1FA7A  ; Emoji                # E12.0  [3] (🩸..🩺)    drop of blood..stethoscope
+1FA7B..1FA7C  ; Emoji                # E14.0  [2] (🩻..🩼)    x-ray..crutch
+1FA80..1FA82  ; Emoji                # E12.0  [3] (🪀..🪂)    yo-yo..parachute
+1FA83..1FA86  ; Emoji                # E13.0  [4] (🪃..🪆)    boomerang..nesting dolls
+1FA87..1FA88  ; Emoji                # E15.0  [2] (🪇..🪈)    maracas..flute
+1FA90..1FA95  ; Emoji                # E12.0  [6] (🪐..🪕)    ringed planet..banjo
+1FA96..1FAA8  ; Emoji                # E13.0 [19] (🪖..🪨)    military helmet..rock
+1FAA9..1FAAC  ; Emoji                # E14.0  [4] (🪩..🪬)    mirror ball..hamsa
+1FAAD..1FAAF  ; Emoji                # E15.0  [3] (🪭..🪯)    folding hand fan..khanda
+1FAB0..1FAB6  ; Emoji                # E13.0  [7] (🪰..🪶)    fly..feather
+1FAB7..1FABA  ; Emoji                # E14.0  [4] (🪷..🪺)    lotus..nest with eggs
+1FABB..1FABD  ; Emoji                # E15.0  [3] (🪻..🪽)    hyacinth..wing
+1FABF         ; Emoji                # E15.0  [1] (🪿)       goose
+1FAC0..1FAC2  ; Emoji                # E13.0  [3] (🫀..🫂)    anatomical heart..people hugging
+1FAC3..1FAC5  ; Emoji                # E14.0  [3] (🫃..🫅)    pregnant man..person with crown
+1FACE..1FACF  ; Emoji                # E15.0  [2] (🫎..🫏)    moose..donkey
+1FAD0..1FAD6  ; Emoji                # E13.0  [7] (🫐..🫖)    blueberries..teapot
+1FAD7..1FAD9  ; Emoji                # E14.0  [3] (🫗..🫙)    pouring liquid..jar
+1FADA..1FADB  ; Emoji                # E15.0  [2] (🫚..🫛)    ginger root..pea pod
+1FAE0..1FAE7  ; Emoji                # E14.0  [8] (🫠..🫧)    melting face..bubbles
+1FAE8         ; Emoji                # E15.0  [1] (🫨)       shaking face
+1FAF0..1FAF6  ; Emoji                # E14.0  [7] (🫰..🫶)    hand with index finger and thumb crossed..heart hands
+1FAF7..1FAF8  ; Emoji                # E15.0  [2] (🫷..🫸)    leftwards pushing hand..rightwards pushing hand
+
+# Total elements: 1424
+
+# ================================================
+
+# All omitted code points have Emoji_Presentation=No
+
+231A..231B    ; Emoji_Presentation   # E0.6   [2] (⌚..⌛)    watch..hourglass done
+23E9..23EC    ; Emoji_Presentation   # E0.6   [4] (⏩..⏬)    fast-forward button..fast down button
+23F0          ; Emoji_Presentation   # E0.6   [1] (⏰)       alarm clock
+23F3          ; Emoji_Presentation   # E0.6   [1] (⏳)       hourglass not done
+25FD..25FE    ; Emoji_Presentation   # E0.6   [2] (â—½..â—¾)    white medium-small square..black medium-small square
+2614..2615    ; Emoji_Presentation   # E0.6   [2] (☔..☕)    umbrella with rain drops..hot beverage
+2648..2653    ; Emoji_Presentation   # E0.6  [12] (♈..♓)    Aries..Pisces
+267F          ; Emoji_Presentation   # E0.6   [1] (♿)       wheelchair symbol
+2693          ; Emoji_Presentation   # E0.6   [1] (âš“)       anchor
+26A1          ; Emoji_Presentation   # E0.6   [1] (âš¡)       high voltage
+26AA..26AB    ; Emoji_Presentation   # E0.6   [2] (⚪..⚫)    white circle..black circle
+26BD..26BE    ; Emoji_Presentation   # E0.6   [2] (âš½..âš¾)    soccer ball..baseball
+26C4..26C5    ; Emoji_Presentation   # E0.6   [2] (⛄..⛅)    snowman without snow..sun behind cloud
+26CE          ; Emoji_Presentation   # E0.6   [1] (⛎)       Ophiuchus
+26D4          ; Emoji_Presentation   # E0.6   [1] (â›”)       no entry
+26EA          ; Emoji_Presentation   # E0.6   [1] (⛪)       church
+26F2..26F3    ; Emoji_Presentation   # E0.6   [2] (⛲..⛳)    fountain..flag in hole
+26F5          ; Emoji_Presentation   # E0.6   [1] (⛵)       sailboat
+26FA          ; Emoji_Presentation   # E0.6   [1] (⛺)       tent
+26FD          ; Emoji_Presentation   # E0.6   [1] (⛽)       fuel pump
+2705          ; Emoji_Presentation   # E0.6   [1] (✅)       check mark button
+270A..270B    ; Emoji_Presentation   # E0.6   [2] (✊..✋)    raised fist..raised hand
+2728          ; Emoji_Presentation   # E0.6   [1] (✨)       sparkles
+274C          ; Emoji_Presentation   # E0.6   [1] (❌)       cross mark
+274E          ; Emoji_Presentation   # E0.6   [1] (❎)       cross mark button
+2753..2755    ; Emoji_Presentation   # E0.6   [3] (❓..❕)    red question mark..white exclamation mark
+2757          ; Emoji_Presentation   # E0.6   [1] (❗)       red exclamation mark
+2795..2797    ; Emoji_Presentation   # E0.6   [3] (âž•..âž—)    plus..divide
+27B0          ; Emoji_Presentation   # E0.6   [1] (âž°)       curly loop
+27BF          ; Emoji_Presentation   # E1.0   [1] (âž¿)       double curly loop
+2B1B..2B1C    ; Emoji_Presentation   # E0.6   [2] (⬛..⬜)    black large square..white large square
+2B50          ; Emoji_Presentation   # E0.6   [1] (⭐)       star
+2B55          ; Emoji_Presentation   # E0.6   [1] (â­•)       hollow red circle
+1F004         ; Emoji_Presentation   # E0.6   [1] (🀄)       mahjong red dragon
+1F0CF         ; Emoji_Presentation   # E0.6   [1] (🃏)       joker
+1F18E         ; Emoji_Presentation   # E0.6   [1] (🆎)       AB button (blood type)
+1F191..1F19A  ; Emoji_Presentation   # E0.6  [10] (🆑..🆚)    CL button..VS button
+1F1E6..1F1FF  ; Emoji_Presentation   # E0.0  [26] (🇦..🇿)    regional indicator symbol letter a..regional indicator symbol letter z
+1F201         ; Emoji_Presentation   # E0.6   [1] (🈁)       Japanese “here” button
+1F21A         ; Emoji_Presentation   # E0.6   [1] (🈚)       Japanese “free of charge” button
+1F22F         ; Emoji_Presentation   # E0.6   [1] (🈯)       Japanese “reserved” button
+1F232..1F236  ; Emoji_Presentation   # E0.6   [5] (🈲..🈶)    Japanese “prohibited” button..Japanese “not free of charge” button
+1F238..1F23A  ; Emoji_Presentation   # E0.6   [3] (🈸..🈺)    Japanese “application” button..Japanese “open for business” button
+1F250..1F251  ; Emoji_Presentation   # E0.6   [2] (🉐..🉑)    Japanese “bargain” button..Japanese “acceptable” button
+1F300..1F30C  ; Emoji_Presentation   # E0.6  [13] (🌀..🌌)    cyclone..milky way
+1F30D..1F30E  ; Emoji_Presentation   # E0.7   [2] (🌍..🌎)    globe showing Europe-Africa..globe showing Americas
+1F30F         ; Emoji_Presentation   # E0.6   [1] (🌏)       globe showing Asia-Australia
+1F310         ; Emoji_Presentation   # E1.0   [1] (🌐)       globe with meridians
+1F311         ; Emoji_Presentation   # E0.6   [1] (🌑)       new moon
+1F312         ; Emoji_Presentation   # E1.0   [1] (🌒)       waxing crescent moon
+1F313..1F315  ; Emoji_Presentation   # E0.6   [3] (🌓..🌕)    first quarter moon..full moon
+1F316..1F318  ; Emoji_Presentation   # E1.0   [3] (🌖..🌘)    waning gibbous moon..waning crescent moon
+1F319         ; Emoji_Presentation   # E0.6   [1] (🌙)       crescent moon
+1F31A         ; Emoji_Presentation   # E1.0   [1] (🌚)       new moon face
+1F31B         ; Emoji_Presentation   # E0.6   [1] (🌛)       first quarter moon face
+1F31C         ; Emoji_Presentation   # E0.7   [1] (🌜)       last quarter moon face
+1F31D..1F31E  ; Emoji_Presentation   # E1.0   [2] (🌝..🌞)    full moon face..sun with face
+1F31F..1F320  ; Emoji_Presentation   # E0.6   [2] (🌟..🌠)    glowing star..shooting star
+1F32D..1F32F  ; Emoji_Presentation   # E1.0   [3] (🌭..🌯)    hot dog..burrito
+1F330..1F331  ; Emoji_Presentation   # E0.6   [2] (🌰..🌱)    chestnut..seedling
+1F332..1F333  ; Emoji_Presentation   # E1.0   [2] (🌲..🌳)    evergreen tree..deciduous tree
+1F334..1F335  ; Emoji_Presentation   # E0.6   [2] (🌴..🌵)    palm tree..cactus
+1F337..1F34A  ; Emoji_Presentation   # E0.6  [20] (🌷..🍊)    tulip..tangerine
+1F34B         ; Emoji_Presentation   # E1.0   [1] (🍋)       lemon
+1F34C..1F34F  ; Emoji_Presentation   # E0.6   [4] (🍌..🍏)    banana..green apple
+1F350         ; Emoji_Presentation   # E1.0   [1] (🍐)       pear
+1F351..1F37B  ; Emoji_Presentation   # E0.6  [43] (🍑..🍻)    peach..clinking beer mugs
+1F37C         ; Emoji_Presentation   # E1.0   [1] (🍼)       baby bottle
+1F37E..1F37F  ; Emoji_Presentation   # E1.0   [2] (🍾..🍿)    bottle with popping cork..popcorn
+1F380..1F393  ; Emoji_Presentation   # E0.6  [20] (🎀..🎓)    ribbon..graduation cap
+1F3A0..1F3C4  ; Emoji_Presentation   # E0.6  [37] (🎠..🏄)    carousel horse..person surfing
+1F3C5         ; Emoji_Presentation   # E1.0   [1] (🏅)       sports medal
+1F3C6         ; Emoji_Presentation   # E0.6   [1] (🏆)       trophy
+1F3C7         ; Emoji_Presentation   # E1.0   [1] (🏇)       horse racing
+1F3C8         ; Emoji_Presentation   # E0.6   [1] (🏈)       american football
+1F3C9         ; Emoji_Presentation   # E1.0   [1] (🏉)       rugby football
+1F3CA         ; Emoji_Presentation   # E0.6   [1] (🏊)       person swimming
+1F3CF..1F3D3  ; Emoji_Presentation   # E1.0   [5] (🏏..🏓)    cricket game..ping pong
+1F3E0..1F3E3  ; Emoji_Presentation   # E0.6   [4] (🏠..🏣)    house..Japanese post office
+1F3E4         ; Emoji_Presentation   # E1.0   [1] (🏤)       post office
+1F3E5..1F3F0  ; Emoji_Presentation   # E0.6  [12] (🏥..🏰)    hospital..castle
+1F3F4         ; Emoji_Presentation   # E1.0   [1] (🏴)       black flag
+1F3F8..1F407  ; Emoji_Presentation   # E1.0  [16] (🏸..🐇)    badminton..rabbit
+1F408         ; Emoji_Presentation   # E0.7   [1] (🐈)       cat
+1F409..1F40B  ; Emoji_Presentation   # E1.0   [3] (🐉..🐋)    dragon..whale
+1F40C..1F40E  ; Emoji_Presentation   # E0.6   [3] (🐌..🐎)    snail..horse
+1F40F..1F410  ; Emoji_Presentation   # E1.0   [2] (🐏..🐐)    ram..goat
+1F411..1F412  ; Emoji_Presentation   # E0.6   [2] (🐑..🐒)    ewe..monkey
+1F413         ; Emoji_Presentation   # E1.0   [1] (🐓)       rooster
+1F414         ; Emoji_Presentation   # E0.6   [1] (🐔)       chicken
+1F415         ; Emoji_Presentation   # E0.7   [1] (🐕)       dog
+1F416         ; Emoji_Presentation   # E1.0   [1] (🐖)       pig
+1F417..1F429  ; Emoji_Presentation   # E0.6  [19] (🐗..🐩)    boar..poodle
+1F42A         ; Emoji_Presentation   # E1.0   [1] (🐪)       camel
+1F42B..1F43E  ; Emoji_Presentation   # E0.6  [20] (🐫..🐾)    two-hump camel..paw prints
+1F440         ; Emoji_Presentation   # E0.6   [1] (👀)       eyes
+1F442..1F464  ; Emoji_Presentation   # E0.6  [35] (👂..👤)    ear..bust in silhouette
+1F465         ; Emoji_Presentation   # E1.0   [1] (👥)       busts in silhouette
+1F466..1F46B  ; Emoji_Presentation   # E0.6   [6] (👦..👫)    boy..woman and man holding hands
+1F46C..1F46D  ; Emoji_Presentation   # E1.0   [2] (👬..👭)    men holding hands..women holding hands
+1F46E..1F4AC  ; Emoji_Presentation   # E0.6  [63] (👮..💬)    police officer..speech balloon
+1F4AD         ; Emoji_Presentation   # E1.0   [1] (💭)       thought balloon
+1F4AE..1F4B5  ; Emoji_Presentation   # E0.6   [8] (💮..💵)    white flower..dollar banknote
+1F4B6..1F4B7  ; Emoji_Presentation   # E1.0   [2] (💶..💷)    euro banknote..pound banknote
+1F4B8..1F4EB  ; Emoji_Presentation   # E0.6  [52] (💸..📫)    money with wings..closed mailbox with raised flag
+1F4EC..1F4ED  ; Emoji_Presentation   # E0.7   [2] (📬..📭)    open mailbox with raised flag..open mailbox with lowered flag
+1F4EE         ; Emoji_Presentation   # E0.6   [1] (📮)       postbox
+1F4EF         ; Emoji_Presentation   # E1.0   [1] (📯)       postal horn
+1F4F0..1F4F4  ; Emoji_Presentation   # E0.6   [5] (📰..📴)    newspaper..mobile phone off
+1F4F5         ; Emoji_Presentation   # E1.0   [1] (📵)       no mobile phones
+1F4F6..1F4F7  ; Emoji_Presentation   # E0.6   [2] (📶..📷)    antenna bars..camera
+1F4F8         ; Emoji_Presentation   # E1.0   [1] (📸)       camera with flash
+1F4F9..1F4FC  ; Emoji_Presentation   # E0.6   [4] (📹..📼)    video camera..videocassette
+1F4FF..1F502  ; Emoji_Presentation   # E1.0   [4] (📿..🔂)    prayer beads..repeat single button
+1F503         ; Emoji_Presentation   # E0.6   [1] (🔃)       clockwise vertical arrows
+1F504..1F507  ; Emoji_Presentation   # E1.0   [4] (🔄..🔇)    counterclockwise arrows button..muted speaker
+1F508         ; Emoji_Presentation   # E0.7   [1] (🔈)       speaker low volume
+1F509         ; Emoji_Presentation   # E1.0   [1] (🔉)       speaker medium volume
+1F50A..1F514  ; Emoji_Presentation   # E0.6  [11] (🔊..🔔)    speaker high volume..bell
+1F515         ; Emoji_Presentation   # E1.0   [1] (🔕)       bell with slash
+1F516..1F52B  ; Emoji_Presentation   # E0.6  [22] (🔖..🔫)    bookmark..water pistol
+1F52C..1F52D  ; Emoji_Presentation   # E1.0   [2] (🔬..🔭)    microscope..telescope
+1F52E..1F53D  ; Emoji_Presentation   # E0.6  [16] (🔮..🔽)    crystal ball..downwards button
+1F54B..1F54E  ; Emoji_Presentation   # E1.0   [4] (🕋..🕎)    kaaba..menorah
+1F550..1F55B  ; Emoji_Presentation   # E0.6  [12] (🕐..🕛)    one o’clock..twelve o’clock
+1F55C..1F567  ; Emoji_Presentation   # E0.7  [12] (🕜..🕧)    one-thirty..twelve-thirty
+1F57A         ; Emoji_Presentation   # E3.0   [1] (🕺)       man dancing
+1F595..1F596  ; Emoji_Presentation   # E1.0   [2] (🖕..🖖)    middle finger..vulcan salute
+1F5A4         ; Emoji_Presentation   # E3.0   [1] (🖤)       black heart
+1F5FB..1F5FF  ; Emoji_Presentation   # E0.6   [5] (🗻..🗿)    mount fuji..moai
+1F600         ; Emoji_Presentation   # E1.0   [1] (😀)       grinning face
+1F601..1F606  ; Emoji_Presentation   # E0.6   [6] (😁..😆)    beaming face with smiling eyes..grinning squinting face
+1F607..1F608  ; Emoji_Presentation   # E1.0   [2] (😇..😈)    smiling face with halo..smiling face with horns
+1F609..1F60D  ; Emoji_Presentation   # E0.6   [5] (😉..😍)    winking face..smiling face with heart-eyes
+1F60E         ; Emoji_Presentation   # E1.0   [1] (😎)       smiling face with sunglasses
+1F60F         ; Emoji_Presentation   # E0.6   [1] (😏)       smirking face
+1F610         ; Emoji_Presentation   # E0.7   [1] (😐)       neutral face
+1F611         ; Emoji_Presentation   # E1.0   [1] (😑)       expressionless face
+1F612..1F614  ; Emoji_Presentation   # E0.6   [3] (😒..😔)    unamused face..pensive face
+1F615         ; Emoji_Presentation   # E1.0   [1] (😕)       confused face
+1F616         ; Emoji_Presentation   # E0.6   [1] (😖)       confounded face
+1F617         ; Emoji_Presentation   # E1.0   [1] (😗)       kissing face
+1F618         ; Emoji_Presentation   # E0.6   [1] (😘)       face blowing a kiss
+1F619         ; Emoji_Presentation   # E1.0   [1] (😙)       kissing face with smiling eyes
+1F61A         ; Emoji_Presentation   # E0.6   [1] (😚)       kissing face with closed eyes
+1F61B         ; Emoji_Presentation   # E1.0   [1] (😛)       face with tongue
+1F61C..1F61E  ; Emoji_Presentation   # E0.6   [3] (😜..😞)    winking face with tongue..disappointed face
+1F61F         ; Emoji_Presentation   # E1.0   [1] (😟)       worried face
+1F620..1F625  ; Emoji_Presentation   # E0.6   [6] (😠..😥)    angry face..sad but relieved face
+1F626..1F627  ; Emoji_Presentation   # E1.0   [2] (😦..😧)    frowning face with open mouth..anguished face
+1F628..1F62B  ; Emoji_Presentation   # E0.6   [4] (😨..😫)    fearful face..tired face
+1F62C         ; Emoji_Presentation   # E1.0   [1] (😬)       grimacing face
+1F62D         ; Emoji_Presentation   # E0.6   [1] (😭)       loudly crying face
+1F62E..1F62F  ; Emoji_Presentation   # E1.0   [2] (😮..😯)    face with open mouth..hushed face
+1F630..1F633  ; Emoji_Presentation   # E0.6   [4] (😰..😳)    anxious face with sweat..flushed face
+1F634         ; Emoji_Presentation   # E1.0   [1] (😴)       sleeping face
+1F635         ; Emoji_Presentation   # E0.6   [1] (😵)       face with crossed-out eyes
+1F636         ; Emoji_Presentation   # E1.0   [1] (😶)       face without mouth
+1F637..1F640  ; Emoji_Presentation   # E0.6  [10] (😷..🙀)    face with medical mask..weary cat
+1F641..1F644  ; Emoji_Presentation   # E1.0   [4] (🙁..🙄)    slightly frowning face..face with rolling eyes
+1F645..1F64F  ; Emoji_Presentation   # E0.6  [11] (🙅..🙏)    person gesturing NO..folded hands
+1F680         ; Emoji_Presentation   # E0.6   [1] (🚀)       rocket
+1F681..1F682  ; Emoji_Presentation   # E1.0   [2] (🚁..🚂)    helicopter..locomotive
+1F683..1F685  ; Emoji_Presentation   # E0.6   [3] (🚃..🚅)    railway car..bullet train
+1F686         ; Emoji_Presentation   # E1.0   [1] (🚆)       train
+1F687         ; Emoji_Presentation   # E0.6   [1] (🚇)       metro
+1F688         ; Emoji_Presentation   # E1.0   [1] (🚈)       light rail
+1F689         ; Emoji_Presentation   # E0.6   [1] (🚉)       station
+1F68A..1F68B  ; Emoji_Presentation   # E1.0   [2] (🚊..🚋)    tram..tram car
+1F68C         ; Emoji_Presentation   # E0.6   [1] (🚌)       bus
+1F68D         ; Emoji_Presentation   # E0.7   [1] (🚍)       oncoming bus
+1F68E         ; Emoji_Presentation   # E1.0   [1] (🚎)       trolleybus
+1F68F         ; Emoji_Presentation   # E0.6   [1] (🚏)       bus stop
+1F690         ; Emoji_Presentation   # E1.0   [1] (🚐)       minibus
+1F691..1F693  ; Emoji_Presentation   # E0.6   [3] (🚑..🚓)    ambulance..police car
+1F694         ; Emoji_Presentation   # E0.7   [1] (🚔)       oncoming police car
+1F695         ; Emoji_Presentation   # E0.6   [1] (🚕)       taxi
+1F696         ; Emoji_Presentation   # E1.0   [1] (🚖)       oncoming taxi
+1F697         ; Emoji_Presentation   # E0.6   [1] (🚗)       automobile
+1F698         ; Emoji_Presentation   # E0.7   [1] (🚘)       oncoming automobile
+1F699..1F69A  ; Emoji_Presentation   # E0.6   [2] (🚙..🚚)    sport utility vehicle..delivery truck
+1F69B..1F6A1  ; Emoji_Presentation   # E1.0   [7] (🚛..🚡)    articulated lorry..aerial tramway
+1F6A2         ; Emoji_Presentation   # E0.6   [1] (🚢)       ship
+1F6A3         ; Emoji_Presentation   # E1.0   [1] (🚣)       person rowing boat
+1F6A4..1F6A5  ; Emoji_Presentation   # E0.6   [2] (🚤..🚥)    speedboat..horizontal traffic light
+1F6A6         ; Emoji_Presentation   # E1.0   [1] (🚦)       vertical traffic light
+1F6A7..1F6AD  ; Emoji_Presentation   # E0.6   [7] (🚧..🚭)    construction..no smoking
+1F6AE..1F6B1  ; Emoji_Presentation   # E1.0   [4] (🚮..🚱)    litter in bin sign..non-potable water
+1F6B2         ; Emoji_Presentation   # E0.6   [1] (🚲)       bicycle
+1F6B3..1F6B5  ; Emoji_Presentation   # E1.0   [3] (🚳..🚵)    no bicycles..person mountain biking
+1F6B6         ; Emoji_Presentation   # E0.6   [1] (🚶)       person walking
+1F6B7..1F6B8  ; Emoji_Presentation   # E1.0   [2] (🚷..🚸)    no pedestrians..children crossing
+1F6B9..1F6BE  ; Emoji_Presentation   # E0.6   [6] (🚹..🚾)    men’s room..water closet
+1F6BF         ; Emoji_Presentation   # E1.0   [1] (🚿)       shower
+1F6C0         ; Emoji_Presentation   # E0.6   [1] (🛀)       person taking bath
+1F6C1..1F6C5  ; Emoji_Presentation   # E1.0   [5] (🛁..🛅)    bathtub..left luggage
+1F6CC         ; Emoji_Presentation   # E1.0   [1] (🛌)       person in bed
+1F6D0         ; Emoji_Presentation   # E1.0   [1] (🛐)       place of worship
+1F6D1..1F6D2  ; Emoji_Presentation   # E3.0   [2] (🛑..🛒)    stop sign..shopping cart
+1F6D5         ; Emoji_Presentation   # E12.0  [1] (🛕)       hindu temple
+1F6D6..1F6D7  ; Emoji_Presentation   # E13.0  [2] (🛖..🛗)    hut..elevator
+1F6DC         ; Emoji_Presentation   # E15.0  [1] (🛜)       wireless
+1F6DD..1F6DF  ; Emoji_Presentation   # E14.0  [3] (🛝..🛟)    playground slide..ring buoy
+1F6EB..1F6EC  ; Emoji_Presentation   # E1.0   [2] (🛫..🛬)    airplane departure..airplane arrival
+1F6F4..1F6F6  ; Emoji_Presentation   # E3.0   [3] (🛴..🛶)    kick scooter..canoe
+1F6F7..1F6F8  ; Emoji_Presentation   # E5.0   [2] (🛷..🛸)    sled..flying saucer
+1F6F9         ; Emoji_Presentation   # E11.0  [1] (🛹)       skateboard
+1F6FA         ; Emoji_Presentation   # E12.0  [1] (🛺)       auto rickshaw
+1F6FB..1F6FC  ; Emoji_Presentation   # E13.0  [2] (🛻..🛼)    pickup truck..roller skate
+1F7E0..1F7EB  ; Emoji_Presentation   # E12.0 [12] (🟠..🟫)    orange circle..brown square
+1F7F0         ; Emoji_Presentation   # E14.0  [1] (🟰)       heavy equals sign
+1F90C         ; Emoji_Presentation   # E13.0  [1] (🤌)       pinched fingers
+1F90D..1F90F  ; Emoji_Presentation   # E12.0  [3] (🤍..🤏)    white heart..pinching hand
+1F910..1F918  ; Emoji_Presentation   # E1.0   [9] (🤐..🤘)    zipper-mouth face..sign of the horns
+1F919..1F91E  ; Emoji_Presentation   # E3.0   [6] (🤙..🤞)    call me hand..crossed fingers
+1F91F         ; Emoji_Presentation   # E5.0   [1] (🤟)       love-you gesture
+1F920..1F927  ; Emoji_Presentation   # E3.0   [8] (🤠..🤧)    cowboy hat face..sneezing face
+1F928..1F92F  ; Emoji_Presentation   # E5.0   [8] (🤨..🤯)    face with raised eyebrow..exploding head
+1F930         ; Emoji_Presentation   # E3.0   [1] (🤰)       pregnant woman
+1F931..1F932  ; Emoji_Presentation   # E5.0   [2] (🤱..🤲)    breast-feeding..palms up together
+1F933..1F93A  ; Emoji_Presentation   # E3.0   [8] (🤳..🤺)    selfie..person fencing
+1F93C..1F93E  ; Emoji_Presentation   # E3.0   [3] (🤼..🤾)    people wrestling..person playing handball
+1F93F         ; Emoji_Presentation   # E12.0  [1] (🤿)       diving mask
+1F940..1F945  ; Emoji_Presentation   # E3.0   [6] (🥀..🥅)    wilted flower..goal net
+1F947..1F94B  ; Emoji_Presentation   # E3.0   [5] (🥇..🥋)    1st place medal..martial arts uniform
+1F94C         ; Emoji_Presentation   # E5.0   [1] (🥌)       curling stone
+1F94D..1F94F  ; Emoji_Presentation   # E11.0  [3] (🥍..🥏)    lacrosse..flying disc
+1F950..1F95E  ; Emoji_Presentation   # E3.0  [15] (🥐..🥞)    croissant..pancakes
+1F95F..1F96B  ; Emoji_Presentation   # E5.0  [13] (🥟..🥫)    dumpling..canned food
+1F96C..1F970  ; Emoji_Presentation   # E11.0  [5] (🥬..🥰)    leafy green..smiling face with hearts
+1F971         ; Emoji_Presentation   # E12.0  [1] (🥱)       yawning face
+1F972         ; Emoji_Presentation   # E13.0  [1] (🥲)       smiling face with tear
+1F973..1F976  ; Emoji_Presentation   # E11.0  [4] (🥳..🥶)    partying face..cold face
+1F977..1F978  ; Emoji_Presentation   # E13.0  [2] (🥷..🥸)    ninja..disguised face
+1F979         ; Emoji_Presentation   # E14.0  [1] (🥹)       face holding back tears
+1F97A         ; Emoji_Presentation   # E11.0  [1] (🥺)       pleading face
+1F97B         ; Emoji_Presentation   # E12.0  [1] (🥻)       sari
+1F97C..1F97F  ; Emoji_Presentation   # E11.0  [4] (🥼..🥿)    lab coat..flat shoe
+1F980..1F984  ; Emoji_Presentation   # E1.0   [5] (🦀..🦄)    crab..unicorn
+1F985..1F991  ; Emoji_Presentation   # E3.0  [13] (🦅..🦑)    eagle..squid
+1F992..1F997  ; Emoji_Presentation   # E5.0   [6] (🦒..🦗)    giraffe..cricket
+1F998..1F9A2  ; Emoji_Presentation   # E11.0 [11] (🦘..🦢)    kangaroo..swan
+1F9A3..1F9A4  ; Emoji_Presentation   # E13.0  [2] (🦣..🦤)    mammoth..dodo
+1F9A5..1F9AA  ; Emoji_Presentation   # E12.0  [6] (🦥..🦪)    sloth..oyster
+1F9AB..1F9AD  ; Emoji_Presentation   # E13.0  [3] (🦫..🦭)    beaver..seal
+1F9AE..1F9AF  ; Emoji_Presentation   # E12.0  [2] (🦮..🦯)    guide dog..white cane
+1F9B0..1F9B9  ; Emoji_Presentation   # E11.0 [10] (🦰..🦹)    red hair..supervillain
+1F9BA..1F9BF  ; Emoji_Presentation   # E12.0  [6] (🦺..🦿)    safety vest..mechanical leg
+1F9C0         ; Emoji_Presentation   # E1.0   [1] (🧀)       cheese wedge
+1F9C1..1F9C2  ; Emoji_Presentation   # E11.0  [2] (🧁..🧂)    cupcake..salt
+1F9C3..1F9CA  ; Emoji_Presentation   # E12.0  [8] (🧃..🧊)    beverage box..ice
+1F9CB         ; Emoji_Presentation   # E13.0  [1] (🧋)       bubble tea
+1F9CC         ; Emoji_Presentation   # E14.0  [1] (🧌)       troll
+1F9CD..1F9CF  ; Emoji_Presentation   # E12.0  [3] (🧍..🧏)    person standing..deaf person
+1F9D0..1F9E6  ; Emoji_Presentation   # E5.0  [23] (🧐..🧦)    face with monocle..socks
+1F9E7..1F9FF  ; Emoji_Presentation   # E11.0 [25] (🧧..🧿)    red envelope..nazar amulet
+1FA70..1FA73  ; Emoji_Presentation   # E12.0  [4] (🩰..🩳)    ballet shoes..shorts
+1FA74         ; Emoji_Presentation   # E13.0  [1] (🩴)       thong sandal
+1FA75..1FA77  ; Emoji_Presentation   # E15.0  [3] (🩵..🩷)    light blue heart..pink heart
+1FA78..1FA7A  ; Emoji_Presentation   # E12.0  [3] (🩸..🩺)    drop of blood..stethoscope
+1FA7B..1FA7C  ; Emoji_Presentation   # E14.0  [2] (🩻..🩼)    x-ray..crutch
+1FA80..1FA82  ; Emoji_Presentation   # E12.0  [3] (🪀..🪂)    yo-yo..parachute
+1FA83..1FA86  ; Emoji_Presentation   # E13.0  [4] (🪃..🪆)    boomerang..nesting dolls
+1FA87..1FA88  ; Emoji_Presentation   # E15.0  [2] (🪇..🪈)    maracas..flute
+1FA90..1FA95  ; Emoji_Presentation   # E12.0  [6] (🪐..🪕)    ringed planet..banjo
+1FA96..1FAA8  ; Emoji_Presentation   # E13.0 [19] (🪖..🪨)    military helmet..rock
+1FAA9..1FAAC  ; Emoji_Presentation   # E14.0  [4] (🪩..🪬)    mirror ball..hamsa
+1FAAD..1FAAF  ; Emoji_Presentation   # E15.0  [3] (🪭..🪯)    folding hand fan..khanda
+1FAB0..1FAB6  ; Emoji_Presentation   # E13.0  [7] (🪰..🪶)    fly..feather
+1FAB7..1FABA  ; Emoji_Presentation   # E14.0  [4] (🪷..🪺)    lotus..nest with eggs
+1FABB..1FABD  ; Emoji_Presentation   # E15.0  [3] (🪻..🪽)    hyacinth..wing
+1FABF         ; Emoji_Presentation   # E15.0  [1] (🪿)       goose
+1FAC0..1FAC2  ; Emoji_Presentation   # E13.0  [3] (🫀..🫂)    anatomical heart..people hugging
+1FAC3..1FAC5  ; Emoji_Presentation   # E14.0  [3] (🫃..🫅)    pregnant man..person with crown
+1FACE..1FACF  ; Emoji_Presentation   # E15.0  [2] (🫎..🫏)    moose..donkey
+1FAD0..1FAD6  ; Emoji_Presentation   # E13.0  [7] (🫐..🫖)    blueberries..teapot
+1FAD7..1FAD9  ; Emoji_Presentation   # E14.0  [3] (🫗..🫙)    pouring liquid..jar
+1FADA..1FADB  ; Emoji_Presentation   # E15.0  [2] (🫚..🫛)    ginger root..pea pod
+1FAE0..1FAE7  ; Emoji_Presentation   # E14.0  [8] (🫠..🫧)    melting face..bubbles
+1FAE8         ; Emoji_Presentation   # E15.0  [1] (🫨)       shaking face
+1FAF0..1FAF6  ; Emoji_Presentation   # E14.0  [7] (🫰..🫶)    hand with index finger and thumb crossed..heart hands
+1FAF7..1FAF8  ; Emoji_Presentation   # E15.0  [2] (🫷..🫸)    leftwards pushing hand..rightwards pushing hand
+
+# Total elements: 1205
+
+# ================================================
+
+# All omitted code points have Emoji_Modifier=No
+
+1F3FB..1F3FF  ; Emoji_Modifier       # E1.0   [5] (🏻..🏿)    light skin tone..dark skin tone
+
+# Total elements: 5
+
+# ================================================
+
+# All omitted code points have Emoji_Modifier_Base=No
+
+261D          ; Emoji_Modifier_Base  # E0.6   [1] (☝️)       index pointing up
+26F9          ; Emoji_Modifier_Base  # E0.7   [1] (⛹️)       person bouncing ball
+270A..270C    ; Emoji_Modifier_Base  # E0.6   [3] (✊..✌️)    raised fist..victory hand
+270D          ; Emoji_Modifier_Base  # E0.7   [1] (✍️)       writing hand
+1F385         ; Emoji_Modifier_Base  # E0.6   [1] (🎅)       Santa Claus
+1F3C2..1F3C4  ; Emoji_Modifier_Base  # E0.6   [3] (🏂..🏄)    snowboarder..person surfing
+1F3C7         ; Emoji_Modifier_Base  # E1.0   [1] (🏇)       horse racing
+1F3CA         ; Emoji_Modifier_Base  # E0.6   [1] (🏊)       person swimming
+1F3CB..1F3CC  ; Emoji_Modifier_Base  # E0.7   [2] (🏋️..🏌️)    person lifting weights..person golfing
+1F442..1F443  ; Emoji_Modifier_Base  # E0.6   [2] (👂..👃)    ear..nose
+1F446..1F450  ; Emoji_Modifier_Base  # E0.6  [11] (👆..👐)    backhand index pointing up..open hands
+1F466..1F46B  ; Emoji_Modifier_Base  # E0.6   [6] (👦..👫)    boy..woman and man holding hands
+1F46C..1F46D  ; Emoji_Modifier_Base  # E1.0   [2] (👬..👭)    men holding hands..women holding hands
+1F46E..1F478  ; Emoji_Modifier_Base  # E0.6  [11] (👮..👸)    police officer..princess
+1F47C         ; Emoji_Modifier_Base  # E0.6   [1] (👼)       baby angel
+1F481..1F483  ; Emoji_Modifier_Base  # E0.6   [3] (💁..💃)    person tipping hand..woman dancing
+1F485..1F487  ; Emoji_Modifier_Base  # E0.6   [3] (💅..💇)    nail polish..person getting haircut
+1F48F         ; Emoji_Modifier_Base  # E0.6   [1] (💏)       kiss
+1F491         ; Emoji_Modifier_Base  # E0.6   [1] (💑)       couple with heart
+1F4AA         ; Emoji_Modifier_Base  # E0.6   [1] (💪)       flexed biceps
+1F574..1F575  ; Emoji_Modifier_Base  # E0.7   [2] (🕴️..🕵️)    person in suit levitating..detective
+1F57A         ; Emoji_Modifier_Base  # E3.0   [1] (🕺)       man dancing
+1F590         ; Emoji_Modifier_Base  # E0.7   [1] (🖐️)       hand with fingers splayed
+1F595..1F596  ; Emoji_Modifier_Base  # E1.0   [2] (🖕..🖖)    middle finger..vulcan salute
+1F645..1F647  ; Emoji_Modifier_Base  # E0.6   [3] (🙅..🙇)    person gesturing NO..person bowing
+1F64B..1F64F  ; Emoji_Modifier_Base  # E0.6   [5] (🙋..🙏)    person raising hand..folded hands
+1F6A3         ; Emoji_Modifier_Base  # E1.0   [1] (🚣)       person rowing boat
+1F6B4..1F6B5  ; Emoji_Modifier_Base  # E1.0   [2] (🚴..🚵)    person biking..person mountain biking
+1F6B6         ; Emoji_Modifier_Base  # E0.6   [1] (🚶)       person walking
+1F6C0         ; Emoji_Modifier_Base  # E0.6   [1] (🛀)       person taking bath
+1F6CC         ; Emoji_Modifier_Base  # E1.0   [1] (🛌)       person in bed
+1F90C         ; Emoji_Modifier_Base  # E13.0  [1] (🤌)       pinched fingers
+1F90F         ; Emoji_Modifier_Base  # E12.0  [1] (🤏)       pinching hand
+1F918         ; Emoji_Modifier_Base  # E1.0   [1] (🤘)       sign of the horns
+1F919..1F91E  ; Emoji_Modifier_Base  # E3.0   [6] (🤙..🤞)    call me hand..crossed fingers
+1F91F         ; Emoji_Modifier_Base  # E5.0   [1] (🤟)       love-you gesture
+1F926         ; Emoji_Modifier_Base  # E3.0   [1] (🤦)       person facepalming
+1F930         ; Emoji_Modifier_Base  # E3.0   [1] (🤰)       pregnant woman
+1F931..1F932  ; Emoji_Modifier_Base  # E5.0   [2] (🤱..🤲)    breast-feeding..palms up together
+1F933..1F939  ; Emoji_Modifier_Base  # E3.0   [7] (🤳..🤹)    selfie..person juggling
+1F93C..1F93E  ; Emoji_Modifier_Base  # E3.0   [3] (🤼..🤾)    people wrestling..person playing handball
+1F977         ; Emoji_Modifier_Base  # E13.0  [1] (🥷)       ninja
+1F9B5..1F9B6  ; Emoji_Modifier_Base  # E11.0  [2] (🦵..🦶)    leg..foot
+1F9B8..1F9B9  ; Emoji_Modifier_Base  # E11.0  [2] (🦸..🦹)    superhero..supervillain
+1F9BB         ; Emoji_Modifier_Base  # E12.0  [1] (🦻)       ear with hearing aid
+1F9CD..1F9CF  ; Emoji_Modifier_Base  # E12.0  [3] (🧍..🧏)    person standing..deaf person
+1F9D1..1F9DD  ; Emoji_Modifier_Base  # E5.0  [13] (🧑..🧝)    person..elf
+1FAC3..1FAC5  ; Emoji_Modifier_Base  # E14.0  [3] (🫃..🫅)    pregnant man..person with crown
+1FAF0..1FAF6  ; Emoji_Modifier_Base  # E14.0  [7] (🫰..🫶)    hand with index finger and thumb crossed..heart hands
+1FAF7..1FAF8  ; Emoji_Modifier_Base  # E15.0  [2] (🫷..🫸)    leftwards pushing hand..rightwards pushing hand
+
+# Total elements: 134
+
+# ================================================
+
+# All omitted code points have Emoji_Component=No
+
+0023          ; Emoji_Component      # E0.0   [1] (#️)       hash sign
+002A          ; Emoji_Component      # E0.0   [1] (*️)       asterisk
+0030..0039    ; Emoji_Component      # E0.0  [10] (0️..9️)    digit zero..digit nine
+200D          ; Emoji_Component      # E0.0   [1] (‍)        zero width joiner
+20E3          ; Emoji_Component      # E0.0   [1] (⃣)       combining enclosing keycap
+FE0F          ; Emoji_Component      # E0.0   [1] ()        VARIATION SELECTOR-16
+1F1E6..1F1FF  ; Emoji_Component      # E0.0  [26] (🇦..🇿)    regional indicator symbol letter a..regional indicator symbol letter z
+1F3FB..1F3FF  ; Emoji_Component      # E1.0   [5] (🏻..🏿)    light skin tone..dark skin tone
+1F9B0..1F9B3  ; Emoji_Component      # E11.0  [4] (🦰..🦳)    red hair..white hair
+E0020..E007F  ; Emoji_Component      # E0.0  [96] (󠀠..󠁿)      tag space..cancel tag
+
+# Total elements: 146
+
+# ================================================
+
+# All omitted code points have Extended_Pictographic=No
+
+00A9          ; Extended_Pictographic# E0.6   [1] (©️)       copyright
+00AE          ; Extended_Pictographic# E0.6   [1] (®️)       registered
+203C          ; Extended_Pictographic# E0.6   [1] (‼️)       double exclamation mark
+2049          ; Extended_Pictographic# E0.6   [1] (⁉️)       exclamation question mark
+2122          ; Extended_Pictographic# E0.6   [1] (™️)       trade mark
+2139          ; Extended_Pictographic# E0.6   [1] (ℹ️)       information
+2194..2199    ; Extended_Pictographic# E0.6   [6] (↔️..↙️)    left-right arrow..down-left arrow
+21A9..21AA    ; Extended_Pictographic# E0.6   [2] (↩️..↪️)    right arrow curving left..left arrow curving right
+231A..231B    ; Extended_Pictographic# E0.6   [2] (⌚..⌛)    watch..hourglass done
+2328          ; Extended_Pictographic# E1.0   [1] (⌨️)       keyboard
+2388          ; Extended_Pictographic# E0.0   [1] (⎈)       HELM SYMBOL
+23CF          ; Extended_Pictographic# E1.0   [1] (⏏️)       eject button
+23E9..23EC    ; Extended_Pictographic# E0.6   [4] (⏩..⏬)    fast-forward button..fast down button
+23ED..23EE    ; Extended_Pictographic# E0.7   [2] (⏭️..⏮️)    next track button..last track button
+23EF          ; Extended_Pictographic# E1.0   [1] (⏯️)       play or pause button
+23F0          ; Extended_Pictographic# E0.6   [1] (⏰)       alarm clock
+23F1..23F2    ; Extended_Pictographic# E1.0   [2] (⏱️..⏲️)    stopwatch..timer clock
+23F3          ; Extended_Pictographic# E0.6   [1] (⏳)       hourglass not done
+23F8..23FA    ; Extended_Pictographic# E0.7   [3] (⏸️..⏺️)    pause button..record button
+24C2          ; Extended_Pictographic# E0.6   [1] (Ⓜ️)       circled M
+25AA..25AB    ; Extended_Pictographic# E0.6   [2] (▪️..▫️)    black small square..white small square
+25B6          ; Extended_Pictographic# E0.6   [1] (▶️)       play button
+25C0          ; Extended_Pictographic# E0.6   [1] (◀️)       reverse button
+25FB..25FE    ; Extended_Pictographic# E0.6   [4] (◻️..◾)    white medium square..black medium-small square
+2600..2601    ; Extended_Pictographic# E0.6   [2] (☀️..☁️)    sun..cloud
+2602..2603    ; Extended_Pictographic# E0.7   [2] (☂️..☃️)    umbrella..snowman
+2604          ; Extended_Pictographic# E1.0   [1] (☄️)       comet
+2605          ; Extended_Pictographic# E0.0   [1] (★)       BLACK STAR
+2607..260D    ; Extended_Pictographic# E0.0   [7] (☇..☍)    LIGHTNING..OPPOSITION
+260E          ; Extended_Pictographic# E0.6   [1] (☎️)       telephone
+260F..2610    ; Extended_Pictographic# E0.0   [2] (☏..☐)    WHITE TELEPHONE..BALLOT BOX
+2611          ; Extended_Pictographic# E0.6   [1] (☑️)       check box with check
+2612          ; Extended_Pictographic# E0.0   [1] (☒)       BALLOT BOX WITH X
+2614..2615    ; Extended_Pictographic# E0.6   [2] (☔..☕)    umbrella with rain drops..hot beverage
+2616..2617    ; Extended_Pictographic# E0.0   [2] (☖..☗)    WHITE SHOGI PIECE..BLACK SHOGI PIECE
+2618          ; Extended_Pictographic# E1.0   [1] (☘️)       shamrock
+2619..261C    ; Extended_Pictographic# E0.0   [4] (☙..☜)    REVERSED ROTATED FLORAL HEART BULLET..WHITE LEFT POINTING INDEX
+261D          ; Extended_Pictographic# E0.6   [1] (☝️)       index pointing up
+261E..261F    ; Extended_Pictographic# E0.0   [2] (☞..☟)    WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX
+2620          ; Extended_Pictographic# E1.0   [1] (☠️)       skull and crossbones
+2621          ; Extended_Pictographic# E0.0   [1] (☡)       CAUTION SIGN
+2622..2623    ; Extended_Pictographic# E1.0   [2] (☢️..☣️)    radioactive..biohazard
+2624..2625    ; Extended_Pictographic# E0.0   [2] (☤..☥)    CADUCEUS..ANKH
+2626          ; Extended_Pictographic# E1.0   [1] (☦️)       orthodox cross
+2627..2629    ; Extended_Pictographic# E0.0   [3] (☧..☩)    CHI RHO..CROSS OF JERUSALEM
+262A          ; Extended_Pictographic# E0.7   [1] (☪️)       star and crescent
+262B..262D    ; Extended_Pictographic# E0.0   [3] (☫..☭)    FARSI SYMBOL..HAMMER AND SICKLE
+262E          ; Extended_Pictographic# E1.0   [1] (☮️)       peace symbol
+262F          ; Extended_Pictographic# E0.7   [1] (☯️)       yin yang
+2630..2637    ; Extended_Pictographic# E0.0   [8] (☰..☷)    TRIGRAM FOR HEAVEN..TRIGRAM FOR EARTH
+2638..2639    ; Extended_Pictographic# E0.7   [2] (☸️..☹️)    wheel of dharma..frowning face
+263A          ; Extended_Pictographic# E0.6   [1] (☺️)       smiling face
+263B..263F    ; Extended_Pictographic# E0.0   [5] (☻..☿)    BLACK SMILING FACE..MERCURY
+2640          ; Extended_Pictographic# E4.0   [1] (♀️)       female sign
+2641          ; Extended_Pictographic# E0.0   [1] (♁)       EARTH
+2642          ; Extended_Pictographic# E4.0   [1] (♂️)       male sign
+2643..2647    ; Extended_Pictographic# E0.0   [5] (♃..♇)    JUPITER..PLUTO
+2648..2653    ; Extended_Pictographic# E0.6  [12] (♈..♓)    Aries..Pisces
+2654..265E    ; Extended_Pictographic# E0.0  [11] (♔..♞)    WHITE CHESS KING..BLACK CHESS KNIGHT
+265F          ; Extended_Pictographic# E11.0  [1] (♟️)       chess pawn
+2660          ; Extended_Pictographic# E0.6   [1] (♠️)       spade suit
+2661..2662    ; Extended_Pictographic# E0.0   [2] (♡..♢)    WHITE HEART SUIT..WHITE DIAMOND SUIT
+2663          ; Extended_Pictographic# E0.6   [1] (♣️)       club suit
+2664          ; Extended_Pictographic# E0.0   [1] (♤)       WHITE SPADE SUIT
+2665..2666    ; Extended_Pictographic# E0.6   [2] (♥️..♦️)    heart suit..diamond suit
+2667          ; Extended_Pictographic# E0.0   [1] (â™§)       WHITE CLUB SUIT
+2668          ; Extended_Pictographic# E0.6   [1] (♨️)       hot springs
+2669..267A    ; Extended_Pictographic# E0.0  [18] (♩..♺)    QUARTER NOTE..RECYCLING SYMBOL FOR GENERIC MATERIALS
+267B          ; Extended_Pictographic# E0.6   [1] (♻️)       recycling symbol
+267C..267D    ; Extended_Pictographic# E0.0   [2] (♼..♽)    RECYCLED PAPER SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL
+267E          ; Extended_Pictographic# E11.0  [1] (♾️)       infinity
+267F          ; Extended_Pictographic# E0.6   [1] (♿)       wheelchair symbol
+2680..2685    ; Extended_Pictographic# E0.0   [6] (⚀..⚅)    DIE FACE-1..DIE FACE-6
+2690..2691    ; Extended_Pictographic# E0.0   [2] (⚐..⚑)    WHITE FLAG..BLACK FLAG
+2692          ; Extended_Pictographic# E1.0   [1] (⚒️)       hammer and pick
+2693          ; Extended_Pictographic# E0.6   [1] (âš“)       anchor
+2694          ; Extended_Pictographic# E1.0   [1] (⚔️)       crossed swords
+2695          ; Extended_Pictographic# E4.0   [1] (⚕️)       medical symbol
+2696..2697    ; Extended_Pictographic# E1.0   [2] (⚖️..⚗️)    balance scale..alembic
+2698          ; Extended_Pictographic# E0.0   [1] (⚘)       FLOWER
+2699          ; Extended_Pictographic# E1.0   [1] (⚙️)       gear
+269A          ; Extended_Pictographic# E0.0   [1] (âšš)       STAFF OF HERMES
+269B..269C    ; Extended_Pictographic# E1.0   [2] (⚛️..⚜️)    atom symbol..fleur-de-lis
+269D..269F    ; Extended_Pictographic# E0.0   [3] (⚝..⚟)    OUTLINED WHITE STAR..THREE LINES CONVERGING LEFT
+26A0..26A1    ; Extended_Pictographic# E0.6   [2] (⚠️..⚡)    warning..high voltage
+26A2..26A6    ; Extended_Pictographic# E0.0   [5] (⚢..⚦)    DOUBLED FEMALE SIGN..MALE WITH STROKE SIGN
+26A7          ; Extended_Pictographic# E13.0  [1] (⚧️)       transgender symbol
+26A8..26A9    ; Extended_Pictographic# E0.0   [2] (⚨..⚩)    VERTICAL MALE WITH STROKE SIGN..HORIZONTAL MALE WITH STROKE SIGN
+26AA..26AB    ; Extended_Pictographic# E0.6   [2] (⚪..⚫)    white circle..black circle
+26AC..26AF    ; Extended_Pictographic# E0.0   [4] (⚬..⚯)    MEDIUM SMALL WHITE CIRCLE..UNMARRIED PARTNERSHIP SYMBOL
+26B0..26B1    ; Extended_Pictographic# E1.0   [2] (⚰️..⚱️)    coffin..funeral urn
+26B2..26BC    ; Extended_Pictographic# E0.0  [11] (âš²..âš¼)    NEUTER..SESQUIQUADRATE
+26BD..26BE    ; Extended_Pictographic# E0.6   [2] (âš½..âš¾)    soccer ball..baseball
+26BF..26C3    ; Extended_Pictographic# E0.0   [5] (⚿..⛃)    SQUARED KEY..BLACK DRAUGHTS KING
+26C4..26C5    ; Extended_Pictographic# E0.6   [2] (⛄..⛅)    snowman without snow..sun behind cloud
+26C6..26C7    ; Extended_Pictographic# E0.0   [2] (⛆..⛇)    RAIN..BLACK SNOWMAN
+26C8          ; Extended_Pictographic# E0.7   [1] (⛈️)       cloud with lightning and rain
+26C9..26CD    ; Extended_Pictographic# E0.0   [5] (⛉..⛍)    TURNED WHITE SHOGI PIECE..DISABLED CAR
+26CE          ; Extended_Pictographic# E0.6   [1] (⛎)       Ophiuchus
+26CF          ; Extended_Pictographic# E0.7   [1] (⛏️)       pick
+26D0          ; Extended_Pictographic# E0.0   [1] (⛐)       CAR SLIDING
+26D1          ; Extended_Pictographic# E0.7   [1] (⛑️)       rescue worker’s helmet
+26D2          ; Extended_Pictographic# E0.0   [1] (â›’)       CIRCLED CROSSING LANES
+26D3          ; Extended_Pictographic# E0.7   [1] (⛓️)       chains
+26D4          ; Extended_Pictographic# E0.6   [1] (â›”)       no entry
+26D5..26E8    ; Extended_Pictographic# E0.0  [20] (⛕..⛨)    ALTERNATE ONE-WAY LEFT WAY TRAFFIC..BLACK CROSS ON SHIELD
+26E9          ; Extended_Pictographic# E0.7   [1] (⛩️)       shinto shrine
+26EA          ; Extended_Pictographic# E0.6   [1] (⛪)       church
+26EB..26EF    ; Extended_Pictographic# E0.0   [5] (⛫..⛯)    CASTLE..MAP SYMBOL FOR LIGHTHOUSE
+26F0..26F1    ; Extended_Pictographic# E0.7   [2] (⛰️..⛱️)    mountain..umbrella on ground
+26F2..26F3    ; Extended_Pictographic# E0.6   [2] (⛲..⛳)    fountain..flag in hole
+26F4          ; Extended_Pictographic# E0.7   [1] (⛴️)       ferry
+26F5          ; Extended_Pictographic# E0.6   [1] (⛵)       sailboat
+26F6          ; Extended_Pictographic# E0.0   [1] (â›¶)       SQUARE FOUR CORNERS
+26F7..26F9    ; Extended_Pictographic# E0.7   [3] (⛷️..⛹️)    skier..person bouncing ball
+26FA          ; Extended_Pictographic# E0.6   [1] (⛺)       tent
+26FB..26FC    ; Extended_Pictographic# E0.0   [2] (⛻..⛼)    JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL
+26FD          ; Extended_Pictographic# E0.6   [1] (⛽)       fuel pump
+26FE..2701    ; Extended_Pictographic# E0.0   [4] (⛾..✁)    CUP ON BLACK SQUARE..UPPER BLADE SCISSORS
+2702          ; Extended_Pictographic# E0.6   [1] (✂️)       scissors
+2703..2704    ; Extended_Pictographic# E0.0   [2] (✃..✄)    LOWER BLADE SCISSORS..WHITE SCISSORS
+2705          ; Extended_Pictographic# E0.6   [1] (✅)       check mark button
+2708..270C    ; Extended_Pictographic# E0.6   [5] (✈️..✌️)    airplane..victory hand
+270D          ; Extended_Pictographic# E0.7   [1] (✍️)       writing hand
+270E          ; Extended_Pictographic# E0.0   [1] (✎)       LOWER RIGHT PENCIL
+270F          ; Extended_Pictographic# E0.6   [1] (✏️)       pencil
+2710..2711    ; Extended_Pictographic# E0.0   [2] (✐..✑)    UPPER RIGHT PENCIL..WHITE NIB
+2712          ; Extended_Pictographic# E0.6   [1] (✒️)       black nib
+2714          ; Extended_Pictographic# E0.6   [1] (✔️)       check mark
+2716          ; Extended_Pictographic# E0.6   [1] (✖️)       multiply
+271D          ; Extended_Pictographic# E0.7   [1] (✝️)       latin cross
+2721          ; Extended_Pictographic# E0.7   [1] (✡️)       star of David
+2728          ; Extended_Pictographic# E0.6   [1] (✨)       sparkles
+2733..2734    ; Extended_Pictographic# E0.6   [2] (✳️..✴️)    eight-spoked asterisk..eight-pointed star
+2744          ; Extended_Pictographic# E0.6   [1] (❄️)       snowflake
+2747          ; Extended_Pictographic# E0.6   [1] (❇️)       sparkle
+274C          ; Extended_Pictographic# E0.6   [1] (❌)       cross mark
+274E          ; Extended_Pictographic# E0.6   [1] (❎)       cross mark button
+2753..2755    ; Extended_Pictographic# E0.6   [3] (❓..❕)    red question mark..white exclamation mark
+2757          ; Extended_Pictographic# E0.6   [1] (❗)       red exclamation mark
+2763          ; Extended_Pictographic# E1.0   [1] (❣️)       heart exclamation
+2764          ; Extended_Pictographic# E0.6   [1] (❤️)       red heart
+2765..2767    ; Extended_Pictographic# E0.0   [3] (❥..❧)    ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET
+2795..2797    ; Extended_Pictographic# E0.6   [3] (âž•..âž—)    plus..divide
+27A1          ; Extended_Pictographic# E0.6   [1] (➡️)       right arrow
+27B0          ; Extended_Pictographic# E0.6   [1] (âž°)       curly loop
+27BF          ; Extended_Pictographic# E1.0   [1] (âž¿)       double curly loop
+2934..2935    ; Extended_Pictographic# E0.6   [2] (⤴️..⤵️)    right arrow curving up..right arrow curving down
+2B05..2B07    ; Extended_Pictographic# E0.6   [3] (⬅️..⬇️)    left arrow..down arrow
+2B1B..2B1C    ; Extended_Pictographic# E0.6   [2] (⬛..⬜)    black large square..white large square
+2B50          ; Extended_Pictographic# E0.6   [1] (⭐)       star
+2B55          ; Extended_Pictographic# E0.6   [1] (â­•)       hollow red circle
+3030          ; Extended_Pictographic# E0.6   [1] (〰️)       wavy dash
+303D          ; Extended_Pictographic# E0.6   [1] (〽️)       part alternation mark
+3297          ; Extended_Pictographic# E0.6   [1] (㊗️)       Japanese “congratulations” button
+3299          ; Extended_Pictographic# E0.6   [1] (㊙️)       Japanese “secret” button
+1F000..1F003  ; Extended_Pictographic# E0.0   [4] (🀀..🀃)    MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND
+1F004         ; Extended_Pictographic# E0.6   [1] (🀄)       mahjong red dragon
+1F005..1F0CE  ; Extended_Pictographic# E0.0 [202] (🀅..🃎)    MAHJONG TILE GREEN DRAGON..PLAYING CARD KING OF DIAMONDS
+1F0CF         ; Extended_Pictographic# E0.6   [1] (🃏)       joker
+1F0D0..1F0FF  ; Extended_Pictographic# E0.0  [48] (🃐..🃿)    <reserved-1F0D0>..<reserved-1F0FF>
+1F10D..1F10F  ; Extended_Pictographic# E0.0   [3] (🄍..🄏)    CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH
+1F12F         ; Extended_Pictographic# E0.0   [1] (🄯)       COPYLEFT SYMBOL
+1F16C..1F16F  ; Extended_Pictographic# E0.0   [4] (🅬..🅯)    RAISED MR SIGN..CIRCLED HUMAN FIGURE
+1F170..1F171  ; Extended_Pictographic# E0.6   [2] (🅰️..🅱️)    A button (blood type)..B button (blood type)
+1F17E..1F17F  ; Extended_Pictographic# E0.6   [2] (🅾️..🅿️)    O button (blood type)..P button
+1F18E         ; Extended_Pictographic# E0.6   [1] (🆎)       AB button (blood type)
+1F191..1F19A  ; Extended_Pictographic# E0.6  [10] (🆑..🆚)    CL button..VS button
+1F1AD..1F1E5  ; Extended_Pictographic# E0.0  [57] (🆭..🇥)    MASK WORK SYMBOL..<reserved-1F1E5>
+1F201..1F202  ; Extended_Pictographic# E0.6   [2] (🈁..🈂️)    Japanese “here” button..Japanese “service charge” button
+1F203..1F20F  ; Extended_Pictographic# E0.0  [13] (🈃..🈏)    <reserved-1F203>..<reserved-1F20F>
+1F21A         ; Extended_Pictographic# E0.6   [1] (🈚)       Japanese “free of charge” button
+1F22F         ; Extended_Pictographic# E0.6   [1] (🈯)       Japanese “reserved” button
+1F232..1F23A  ; Extended_Pictographic# E0.6   [9] (🈲..🈺)    Japanese “prohibited” button..Japanese “open for business” button
+1F23C..1F23F  ; Extended_Pictographic# E0.0   [4] (🈼..🈿)    <reserved-1F23C>..<reserved-1F23F>
+1F249..1F24F  ; Extended_Pictographic# E0.0   [7] (🉉..🉏)    <reserved-1F249>..<reserved-1F24F>
+1F250..1F251  ; Extended_Pictographic# E0.6   [2] (🉐..🉑)    Japanese “bargain” button..Japanese “acceptable” button
+1F252..1F2FF  ; Extended_Pictographic# E0.0 [174] (🉒..🋿)    <reserved-1F252>..<reserved-1F2FF>
+1F300..1F30C  ; Extended_Pictographic# E0.6  [13] (🌀..🌌)    cyclone..milky way
+1F30D..1F30E  ; Extended_Pictographic# E0.7   [2] (🌍..🌎)    globe showing Europe-Africa..globe showing Americas
+1F30F         ; Extended_Pictographic# E0.6   [1] (🌏)       globe showing Asia-Australia
+1F310         ; Extended_Pictographic# E1.0   [1] (🌐)       globe with meridians
+1F311         ; Extended_Pictographic# E0.6   [1] (🌑)       new moon
+1F312         ; Extended_Pictographic# E1.0   [1] (🌒)       waxing crescent moon
+1F313..1F315  ; Extended_Pictographic# E0.6   [3] (🌓..🌕)    first quarter moon..full moon
+1F316..1F318  ; Extended_Pictographic# E1.0   [3] (🌖..🌘)    waning gibbous moon..waning crescent moon
+1F319         ; Extended_Pictographic# E0.6   [1] (🌙)       crescent moon
+1F31A         ; Extended_Pictographic# E1.0   [1] (🌚)       new moon face
+1F31B         ; Extended_Pictographic# E0.6   [1] (🌛)       first quarter moon face
+1F31C         ; Extended_Pictographic# E0.7   [1] (🌜)       last quarter moon face
+1F31D..1F31E  ; Extended_Pictographic# E1.0   [2] (🌝..🌞)    full moon face..sun with face
+1F31F..1F320  ; Extended_Pictographic# E0.6   [2] (🌟..🌠)    glowing star..shooting star
+1F321         ; Extended_Pictographic# E0.7   [1] (🌡️)       thermometer
+1F322..1F323  ; Extended_Pictographic# E0.0   [2] (🌢..🌣)    BLACK DROPLET..WHITE SUN
+1F324..1F32C  ; Extended_Pictographic# E0.7   [9] (🌤️..🌬️)    sun behind small cloud..wind face
+1F32D..1F32F  ; Extended_Pictographic# E1.0   [3] (🌭..🌯)    hot dog..burrito
+1F330..1F331  ; Extended_Pictographic# E0.6   [2] (🌰..🌱)    chestnut..seedling
+1F332..1F333  ; Extended_Pictographic# E1.0   [2] (🌲..🌳)    evergreen tree..deciduous tree
+1F334..1F335  ; Extended_Pictographic# E0.6   [2] (🌴..🌵)    palm tree..cactus
+1F336         ; Extended_Pictographic# E0.7   [1] (🌶️)       hot pepper
+1F337..1F34A  ; Extended_Pictographic# E0.6  [20] (🌷..🍊)    tulip..tangerine
+1F34B         ; Extended_Pictographic# E1.0   [1] (🍋)       lemon
+1F34C..1F34F  ; Extended_Pictographic# E0.6   [4] (🍌..🍏)    banana..green apple
+1F350         ; Extended_Pictographic# E1.0   [1] (🍐)       pear
+1F351..1F37B  ; Extended_Pictographic# E0.6  [43] (🍑..🍻)    peach..clinking beer mugs
+1F37C         ; Extended_Pictographic# E1.0   [1] (🍼)       baby bottle
+1F37D         ; Extended_Pictographic# E0.7   [1] (🍽️)       fork and knife with plate
+1F37E..1F37F  ; Extended_Pictographic# E1.0   [2] (🍾..🍿)    bottle with popping cork..popcorn
+1F380..1F393  ; Extended_Pictographic# E0.6  [20] (🎀..🎓)    ribbon..graduation cap
+1F394..1F395  ; Extended_Pictographic# E0.0   [2] (🎔..🎕)    HEART WITH TIP ON THE LEFT..BOUQUET OF FLOWERS
+1F396..1F397  ; Extended_Pictographic# E0.7   [2] (🎖️..🎗️)    military medal..reminder ribbon
+1F398         ; Extended_Pictographic# E0.0   [1] (🎘)       MUSICAL KEYBOARD WITH JACKS
+1F399..1F39B  ; Extended_Pictographic# E0.7   [3] (🎙️..🎛️)    studio microphone..control knobs
+1F39C..1F39D  ; Extended_Pictographic# E0.0   [2] (🎜..🎝)    BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES
+1F39E..1F39F  ; Extended_Pictographic# E0.7   [2] (🎞️..🎟️)    film frames..admission tickets
+1F3A0..1F3C4  ; Extended_Pictographic# E0.6  [37] (🎠..🏄)    carousel horse..person surfing
+1F3C5         ; Extended_Pictographic# E1.0   [1] (🏅)       sports medal
+1F3C6         ; Extended_Pictographic# E0.6   [1] (🏆)       trophy
+1F3C7         ; Extended_Pictographic# E1.0   [1] (🏇)       horse racing
+1F3C8         ; Extended_Pictographic# E0.6   [1] (🏈)       american football
+1F3C9         ; Extended_Pictographic# E1.0   [1] (🏉)       rugby football
+1F3CA         ; Extended_Pictographic# E0.6   [1] (🏊)       person swimming
+1F3CB..1F3CE  ; Extended_Pictographic# E0.7   [4] (🏋️..🏎️)    person lifting weights..racing car
+1F3CF..1F3D3  ; Extended_Pictographic# E1.0   [5] (🏏..🏓)    cricket game..ping pong
+1F3D4..1F3DF  ; Extended_Pictographic# E0.7  [12] (🏔️..🏟️)    snow-capped mountain..stadium
+1F3E0..1F3E3  ; Extended_Pictographic# E0.6   [4] (🏠..🏣)    house..Japanese post office
+1F3E4         ; Extended_Pictographic# E1.0   [1] (🏤)       post office
+1F3E5..1F3F0  ; Extended_Pictographic# E0.6  [12] (🏥..🏰)    hospital..castle
+1F3F1..1F3F2  ; Extended_Pictographic# E0.0   [2] (🏱..🏲)    WHITE PENNANT..BLACK PENNANT
+1F3F3         ; Extended_Pictographic# E0.7   [1] (🏳️)       white flag
+1F3F4         ; Extended_Pictographic# E1.0   [1] (🏴)       black flag
+1F3F5         ; Extended_Pictographic# E0.7   [1] (🏵️)       rosette
+1F3F6         ; Extended_Pictographic# E0.0   [1] (🏶)       BLACK ROSETTE
+1F3F7         ; Extended_Pictographic# E0.7   [1] (🏷️)       label
+1F3F8..1F3FA  ; Extended_Pictographic# E1.0   [3] (🏸..🏺)    badminton..amphora
+1F400..1F407  ; Extended_Pictographic# E1.0   [8] (🐀..🐇)    rat..rabbit
+1F408         ; Extended_Pictographic# E0.7   [1] (🐈)       cat
+1F409..1F40B  ; Extended_Pictographic# E1.0   [3] (🐉..🐋)    dragon..whale
+1F40C..1F40E  ; Extended_Pictographic# E0.6   [3] (🐌..🐎)    snail..horse
+1F40F..1F410  ; Extended_Pictographic# E1.0   [2] (🐏..🐐)    ram..goat
+1F411..1F412  ; Extended_Pictographic# E0.6   [2] (🐑..🐒)    ewe..monkey
+1F413         ; Extended_Pictographic# E1.0   [1] (🐓)       rooster
+1F414         ; Extended_Pictographic# E0.6   [1] (🐔)       chicken
+1F415         ; Extended_Pictographic# E0.7   [1] (🐕)       dog
+1F416         ; Extended_Pictographic# E1.0   [1] (🐖)       pig
+1F417..1F429  ; Extended_Pictographic# E0.6  [19] (🐗..🐩)    boar..poodle
+1F42A         ; Extended_Pictographic# E1.0   [1] (🐪)       camel
+1F42B..1F43E  ; Extended_Pictographic# E0.6  [20] (🐫..🐾)    two-hump camel..paw prints
+1F43F         ; Extended_Pictographic# E0.7   [1] (🐿️)       chipmunk
+1F440         ; Extended_Pictographic# E0.6   [1] (👀)       eyes
+1F441         ; Extended_Pictographic# E0.7   [1] (👁️)       eye
+1F442..1F464  ; Extended_Pictographic# E0.6  [35] (👂..👤)    ear..bust in silhouette
+1F465         ; Extended_Pictographic# E1.0   [1] (👥)       busts in silhouette
+1F466..1F46B  ; Extended_Pictographic# E0.6   [6] (👦..👫)    boy..woman and man holding hands
+1F46C..1F46D  ; Extended_Pictographic# E1.0   [2] (👬..👭)    men holding hands..women holding hands
+1F46E..1F4AC  ; Extended_Pictographic# E0.6  [63] (👮..💬)    police officer..speech balloon
+1F4AD         ; Extended_Pictographic# E1.0   [1] (💭)       thought balloon
+1F4AE..1F4B5  ; Extended_Pictographic# E0.6   [8] (💮..💵)    white flower..dollar banknote
+1F4B6..1F4B7  ; Extended_Pictographic# E1.0   [2] (💶..💷)    euro banknote..pound banknote
+1F4B8..1F4EB  ; Extended_Pictographic# E0.6  [52] (💸..📫)    money with wings..closed mailbox with raised flag
+1F4EC..1F4ED  ; Extended_Pictographic# E0.7   [2] (📬..📭)    open mailbox with raised flag..open mailbox with lowered flag
+1F4EE         ; Extended_Pictographic# E0.6   [1] (📮)       postbox
+1F4EF         ; Extended_Pictographic# E1.0   [1] (📯)       postal horn
+1F4F0..1F4F4  ; Extended_Pictographic# E0.6   [5] (📰..📴)    newspaper..mobile phone off
+1F4F5         ; Extended_Pictographic# E1.0   [1] (📵)       no mobile phones
+1F4F6..1F4F7  ; Extended_Pictographic# E0.6   [2] (📶..📷)    antenna bars..camera
+1F4F8         ; Extended_Pictographic# E1.0   [1] (📸)       camera with flash
+1F4F9..1F4FC  ; Extended_Pictographic# E0.6   [4] (📹..📼)    video camera..videocassette
+1F4FD         ; Extended_Pictographic# E0.7   [1] (📽️)       film projector
+1F4FE         ; Extended_Pictographic# E0.0   [1] (📾)       PORTABLE STEREO
+1F4FF..1F502  ; Extended_Pictographic# E1.0   [4] (📿..🔂)    prayer beads..repeat single button
+1F503         ; Extended_Pictographic# E0.6   [1] (🔃)       clockwise vertical arrows
+1F504..1F507  ; Extended_Pictographic# E1.0   [4] (🔄..🔇)    counterclockwise arrows button..muted speaker
+1F508         ; Extended_Pictographic# E0.7   [1] (🔈)       speaker low volume
+1F509         ; Extended_Pictographic# E1.0   [1] (🔉)       speaker medium volume
+1F50A..1F514  ; Extended_Pictographic# E0.6  [11] (🔊..🔔)    speaker high volume..bell
+1F515         ; Extended_Pictographic# E1.0   [1] (🔕)       bell with slash
+1F516..1F52B  ; Extended_Pictographic# E0.6  [22] (🔖..🔫)    bookmark..water pistol
+1F52C..1F52D  ; Extended_Pictographic# E1.0   [2] (🔬..🔭)    microscope..telescope
+1F52E..1F53D  ; Extended_Pictographic# E0.6  [16] (🔮..🔽)    crystal ball..downwards button
+1F546..1F548  ; Extended_Pictographic# E0.0   [3] (🕆..🕈)    WHITE LATIN CROSS..CELTIC CROSS
+1F549..1F54A  ; Extended_Pictographic# E0.7   [2] (🕉️..🕊️)    om..dove
+1F54B..1F54E  ; Extended_Pictographic# E1.0   [4] (🕋..🕎)    kaaba..menorah
+1F54F         ; Extended_Pictographic# E0.0   [1] (🕏)       BOWL OF HYGIEIA
+1F550..1F55B  ; Extended_Pictographic# E0.6  [12] (🕐..🕛)    one o’clock..twelve o’clock
+1F55C..1F567  ; Extended_Pictographic# E0.7  [12] (🕜..🕧)    one-thirty..twelve-thirty
+1F568..1F56E  ; Extended_Pictographic# E0.0   [7] (🕨..🕮)    RIGHT SPEAKER..BOOK
+1F56F..1F570  ; Extended_Pictographic# E0.7   [2] (🕯️..🕰️)    candle..mantelpiece clock
+1F571..1F572  ; Extended_Pictographic# E0.0   [2] (🕱..🕲)    BLACK SKULL AND CROSSBONES..NO PIRACY
+1F573..1F579  ; Extended_Pictographic# E0.7   [7] (🕳️..🕹️)    hole..joystick
+1F57A         ; Extended_Pictographic# E3.0   [1] (🕺)       man dancing
+1F57B..1F586  ; Extended_Pictographic# E0.0  [12] (🕻..🖆)    LEFT HAND TELEPHONE RECEIVER..PEN OVER STAMPED ENVELOPE
+1F587         ; Extended_Pictographic# E0.7   [1] (🖇️)       linked paperclips
+1F588..1F589  ; Extended_Pictographic# E0.0   [2] (🖈..🖉)    BLACK PUSHPIN..LOWER LEFT PENCIL
+1F58A..1F58D  ; Extended_Pictographic# E0.7   [4] (🖊️..🖍️)    pen..crayon
+1F58E..1F58F  ; Extended_Pictographic# E0.0   [2] (🖎..🖏)    LEFT WRITING HAND..TURNED OK HAND SIGN
+1F590         ; Extended_Pictographic# E0.7   [1] (🖐️)       hand with fingers splayed
+1F591..1F594  ; Extended_Pictographic# E0.0   [4] (🖑..🖔)    REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND
+1F595..1F596  ; Extended_Pictographic# E1.0   [2] (🖕..🖖)    middle finger..vulcan salute
+1F597..1F5A3  ; Extended_Pictographic# E0.0  [13] (🖗..🖣)    WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX
+1F5A4         ; Extended_Pictographic# E3.0   [1] (🖤)       black heart
+1F5A5         ; Extended_Pictographic# E0.7   [1] (🖥️)       desktop computer
+1F5A6..1F5A7  ; Extended_Pictographic# E0.0   [2] (🖦..🖧)    KEYBOARD AND MOUSE..THREE NETWORKED COMPUTERS
+1F5A8         ; Extended_Pictographic# E0.7   [1] (🖨️)       printer
+1F5A9..1F5B0  ; Extended_Pictographic# E0.0   [8] (🖩..🖰)    POCKET CALCULATOR..TWO BUTTON MOUSE
+1F5B1..1F5B2  ; Extended_Pictographic# E0.7   [2] (🖱️..🖲️)    computer mouse..trackball
+1F5B3..1F5BB  ; Extended_Pictographic# E0.0   [9] (🖳..🖻)    OLD PERSONAL COMPUTER..DOCUMENT WITH PICTURE
+1F5BC         ; Extended_Pictographic# E0.7   [1] (🖼️)       framed picture
+1F5BD..1F5C1  ; Extended_Pictographic# E0.0   [5] (🖽..🗁)    FRAME WITH TILES..OPEN FOLDER
+1F5C2..1F5C4  ; Extended_Pictographic# E0.7   [3] (🗂️..🗄️)    card index dividers..file cabinet
+1F5C5..1F5D0  ; Extended_Pictographic# E0.0  [12] (🗅..🗐)    EMPTY NOTE..PAGES
+1F5D1..1F5D3  ; Extended_Pictographic# E0.7   [3] (🗑️..🗓️)    wastebasket..spiral calendar
+1F5D4..1F5DB  ; Extended_Pictographic# E0.0   [8] (🗔..🗛)    DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL
+1F5DC..1F5DE  ; Extended_Pictographic# E0.7   [3] (🗜️..🗞️)    clamp..rolled-up newspaper
+1F5DF..1F5E0  ; Extended_Pictographic# E0.0   [2] (🗟..🗠)    PAGE WITH CIRCLED TEXT..STOCK CHART
+1F5E1         ; Extended_Pictographic# E0.7   [1] (🗡️)       dagger
+1F5E2         ; Extended_Pictographic# E0.0   [1] (🗢)       LIPS
+1F5E3         ; Extended_Pictographic# E0.7   [1] (🗣️)       speaking head
+1F5E4..1F5E7  ; Extended_Pictographic# E0.0   [4] (🗤..🗧)    THREE RAYS ABOVE..THREE RAYS RIGHT
+1F5E8         ; Extended_Pictographic# E2.0   [1] (🗨️)       left speech bubble
+1F5E9..1F5EE  ; Extended_Pictographic# E0.0   [6] (🗩..🗮)    RIGHT SPEECH BUBBLE..LEFT ANGER BUBBLE
+1F5EF         ; Extended_Pictographic# E0.7   [1] (🗯️)       right anger bubble
+1F5F0..1F5F2  ; Extended_Pictographic# E0.0   [3] (🗰..🗲)    MOOD BUBBLE..LIGHTNING MOOD
+1F5F3         ; Extended_Pictographic# E0.7   [1] (🗳️)       ballot box with ballot
+1F5F4..1F5F9  ; Extended_Pictographic# E0.0   [6] (🗴..🗹)    BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK
+1F5FA         ; Extended_Pictographic# E0.7   [1] (🗺️)       world map
+1F5FB..1F5FF  ; Extended_Pictographic# E0.6   [5] (🗻..🗿)    mount fuji..moai
+1F600         ; Extended_Pictographic# E1.0   [1] (😀)       grinning face
+1F601..1F606  ; Extended_Pictographic# E0.6   [6] (😁..😆)    beaming face with smiling eyes..grinning squinting face
+1F607..1F608  ; Extended_Pictographic# E1.0   [2] (😇..😈)    smiling face with halo..smiling face with horns
+1F609..1F60D  ; Extended_Pictographic# E0.6   [5] (😉..😍)    winking face..smiling face with heart-eyes
+1F60E         ; Extended_Pictographic# E1.0   [1] (😎)       smiling face with sunglasses
+1F60F         ; Extended_Pictographic# E0.6   [1] (😏)       smirking face
+1F610         ; Extended_Pictographic# E0.7   [1] (😐)       neutral face
+1F611         ; Extended_Pictographic# E1.0   [1] (😑)       expressionless face
+1F612..1F614  ; Extended_Pictographic# E0.6   [3] (😒..😔)    unamused face..pensive face
+1F615         ; Extended_Pictographic# E1.0   [1] (😕)       confused face
+1F616         ; Extended_Pictographic# E0.6   [1] (😖)       confounded face
+1F617         ; Extended_Pictographic# E1.0   [1] (😗)       kissing face
+1F618         ; Extended_Pictographic# E0.6   [1] (😘)       face blowing a kiss
+1F619         ; Extended_Pictographic# E1.0   [1] (😙)       kissing face with smiling eyes
+1F61A         ; Extended_Pictographic# E0.6   [1] (😚)       kissing face with closed eyes
+1F61B         ; Extended_Pictographic# E1.0   [1] (😛)       face with tongue
+1F61C..1F61E  ; Extended_Pictographic# E0.6   [3] (😜..😞)    winking face with tongue..disappointed face
+1F61F         ; Extended_Pictographic# E1.0   [1] (😟)       worried face
+1F620..1F625  ; Extended_Pictographic# E0.6   [6] (😠..😥)    angry face..sad but relieved face
+1F626..1F627  ; Extended_Pictographic# E1.0   [2] (😦..😧)    frowning face with open mouth..anguished face
+1F628..1F62B  ; Extended_Pictographic# E0.6   [4] (😨..😫)    fearful face..tired face
+1F62C         ; Extended_Pictographic# E1.0   [1] (😬)       grimacing face
+1F62D         ; Extended_Pictographic# E0.6   [1] (😭)       loudly crying face
+1F62E..1F62F  ; Extended_Pictographic# E1.0   [2] (😮..😯)    face with open mouth..hushed face
+1F630..1F633  ; Extended_Pictographic# E0.6   [4] (😰..😳)    anxious face with sweat..flushed face
+1F634         ; Extended_Pictographic# E1.0   [1] (😴)       sleeping face
+1F635         ; Extended_Pictographic# E0.6   [1] (😵)       face with crossed-out eyes
+1F636         ; Extended_Pictographic# E1.0   [1] (😶)       face without mouth
+1F637..1F640  ; Extended_Pictographic# E0.6  [10] (😷..🙀)    face with medical mask..weary cat
+1F641..1F644  ; Extended_Pictographic# E1.0   [4] (🙁..🙄)    slightly frowning face..face with rolling eyes
+1F645..1F64F  ; Extended_Pictographic# E0.6  [11] (🙅..🙏)    person gesturing NO..folded hands
+1F680         ; Extended_Pictographic# E0.6   [1] (🚀)       rocket
+1F681..1F682  ; Extended_Pictographic# E1.0   [2] (🚁..🚂)    helicopter..locomotive
+1F683..1F685  ; Extended_Pictographic# E0.6   [3] (🚃..🚅)    railway car..bullet train
+1F686         ; Extended_Pictographic# E1.0   [1] (🚆)       train
+1F687         ; Extended_Pictographic# E0.6   [1] (🚇)       metro
+1F688         ; Extended_Pictographic# E1.0   [1] (🚈)       light rail
+1F689         ; Extended_Pictographic# E0.6   [1] (🚉)       station
+1F68A..1F68B  ; Extended_Pictographic# E1.0   [2] (🚊..🚋)    tram..tram car
+1F68C         ; Extended_Pictographic# E0.6   [1] (🚌)       bus
+1F68D         ; Extended_Pictographic# E0.7   [1] (🚍)       oncoming bus
+1F68E         ; Extended_Pictographic# E1.0   [1] (🚎)       trolleybus
+1F68F         ; Extended_Pictographic# E0.6   [1] (🚏)       bus stop
+1F690         ; Extended_Pictographic# E1.0   [1] (🚐)       minibus
+1F691..1F693  ; Extended_Pictographic# E0.6   [3] (🚑..🚓)    ambulance..police car
+1F694         ; Extended_Pictographic# E0.7   [1] (🚔)       oncoming police car
+1F695         ; Extended_Pictographic# E0.6   [1] (🚕)       taxi
+1F696         ; Extended_Pictographic# E1.0   [1] (🚖)       oncoming taxi
+1F697         ; Extended_Pictographic# E0.6   [1] (🚗)       automobile
+1F698         ; Extended_Pictographic# E0.7   [1] (🚘)       oncoming automobile
+1F699..1F69A  ; Extended_Pictographic# E0.6   [2] (🚙..🚚)    sport utility vehicle..delivery truck
+1F69B..1F6A1  ; Extended_Pictographic# E1.0   [7] (🚛..🚡)    articulated lorry..aerial tramway
+1F6A2         ; Extended_Pictographic# E0.6   [1] (🚢)       ship
+1F6A3         ; Extended_Pictographic# E1.0   [1] (🚣)       person rowing boat
+1F6A4..1F6A5  ; Extended_Pictographic# E0.6   [2] (🚤..🚥)    speedboat..horizontal traffic light
+1F6A6         ; Extended_Pictographic# E1.0   [1] (🚦)       vertical traffic light
+1F6A7..1F6AD  ; Extended_Pictographic# E0.6   [7] (🚧..🚭)    construction..no smoking
+1F6AE..1F6B1  ; Extended_Pictographic# E1.0   [4] (🚮..🚱)    litter in bin sign..non-potable water
+1F6B2         ; Extended_Pictographic# E0.6   [1] (🚲)       bicycle
+1F6B3..1F6B5  ; Extended_Pictographic# E1.0   [3] (🚳..🚵)    no bicycles..person mountain biking
+1F6B6         ; Extended_Pictographic# E0.6   [1] (🚶)       person walking
+1F6B7..1F6B8  ; Extended_Pictographic# E1.0   [2] (🚷..🚸)    no pedestrians..children crossing
+1F6B9..1F6BE  ; Extended_Pictographic# E0.6   [6] (🚹..🚾)    men’s room..water closet
+1F6BF         ; Extended_Pictographic# E1.0   [1] (🚿)       shower
+1F6C0         ; Extended_Pictographic# E0.6   [1] (🛀)       person taking bath
+1F6C1..1F6C5  ; Extended_Pictographic# E1.0   [5] (🛁..🛅)    bathtub..left luggage
+1F6C6..1F6CA  ; Extended_Pictographic# E0.0   [5] (🛆..🛊)    TRIANGLE WITH ROUNDED CORNERS..GIRLS SYMBOL
+1F6CB         ; Extended_Pictographic# E0.7   [1] (🛋️)       couch and lamp
+1F6CC         ; Extended_Pictographic# E1.0   [1] (🛌)       person in bed
+1F6CD..1F6CF  ; Extended_Pictographic# E0.7   [3] (🛍️..🛏️)    shopping bags..bed
+1F6D0         ; Extended_Pictographic# E1.0   [1] (🛐)       place of worship
+1F6D1..1F6D2  ; Extended_Pictographic# E3.0   [2] (🛑..🛒)    stop sign..shopping cart
+1F6D3..1F6D4  ; Extended_Pictographic# E0.0   [2] (🛓..🛔)    STUPA..PAGODA
+1F6D5         ; Extended_Pictographic# E12.0  [1] (🛕)       hindu temple
+1F6D6..1F6D7  ; Extended_Pictographic# E13.0  [2] (🛖..🛗)    hut..elevator
+1F6D8..1F6DB  ; Extended_Pictographic# E0.0   [4] (🛘..🛛)    <reserved-1F6D8>..<reserved-1F6DB>
+1F6DC         ; Extended_Pictographic# E15.0  [1] (🛜)       wireless
+1F6DD..1F6DF  ; Extended_Pictographic# E14.0  [3] (🛝..🛟)    playground slide..ring buoy
+1F6E0..1F6E5  ; Extended_Pictographic# E0.7   [6] (🛠️..🛥️)    hammer and wrench..motor boat
+1F6E6..1F6E8  ; Extended_Pictographic# E0.0   [3] (🛦..🛨)    UP-POINTING MILITARY AIRPLANE..UP-POINTING SMALL AIRPLANE
+1F6E9         ; Extended_Pictographic# E0.7   [1] (🛩️)       small airplane
+1F6EA         ; Extended_Pictographic# E0.0   [1] (🛪)       NORTHEAST-POINTING AIRPLANE
+1F6EB..1F6EC  ; Extended_Pictographic# E1.0   [2] (🛫..🛬)    airplane departure..airplane arrival
+1F6ED..1F6EF  ; Extended_Pictographic# E0.0   [3] (🛭..🛯)    <reserved-1F6ED>..<reserved-1F6EF>
+1F6F0         ; Extended_Pictographic# E0.7   [1] (🛰️)       satellite
+1F6F1..1F6F2  ; Extended_Pictographic# E0.0   [2] (🛱..🛲)    ONCOMING FIRE ENGINE..DIESEL LOCOMOTIVE
+1F6F3         ; Extended_Pictographic# E0.7   [1] (🛳️)       passenger ship
+1F6F4..1F6F6  ; Extended_Pictographic# E3.0   [3] (🛴..🛶)    kick scooter..canoe
+1F6F7..1F6F8  ; Extended_Pictographic# E5.0   [2] (🛷..🛸)    sled..flying saucer
+1F6F9         ; Extended_Pictographic# E11.0  [1] (🛹)       skateboard
+1F6FA         ; Extended_Pictographic# E12.0  [1] (🛺)       auto rickshaw
+1F6FB..1F6FC  ; Extended_Pictographic# E13.0  [2] (🛻..🛼)    pickup truck..roller skate
+1F6FD..1F6FF  ; Extended_Pictographic# E0.0   [3] (🛽..🛿)    <reserved-1F6FD>..<reserved-1F6FF>
+1F774..1F77F  ; Extended_Pictographic# E0.0  [12] (🝴..🝿)    LOT OF FORTUNE..ORCUS
+1F7D5..1F7DF  ; Extended_Pictographic# E0.0  [11] (🟕..🟟)    CIRCLED TRIANGLE..<reserved-1F7DF>
+1F7E0..1F7EB  ; Extended_Pictographic# E12.0 [12] (🟠..🟫)    orange circle..brown square
+1F7EC..1F7EF  ; Extended_Pictographic# E0.0   [4] (🟬..🟯)    <reserved-1F7EC>..<reserved-1F7EF>
+1F7F0         ; Extended_Pictographic# E14.0  [1] (🟰)       heavy equals sign
+1F7F1..1F7FF  ; Extended_Pictographic# E0.0  [15] (🟱..🟿)    <reserved-1F7F1>..<reserved-1F7FF>
+1F80C..1F80F  ; Extended_Pictographic# E0.0   [4] (🠌..🠏)    <reserved-1F80C>..<reserved-1F80F>
+1F848..1F84F  ; Extended_Pictographic# E0.0   [8] (🡈..🡏)    <reserved-1F848>..<reserved-1F84F>
+1F85A..1F85F  ; Extended_Pictographic# E0.0   [6] (🡚..🡟)    <reserved-1F85A>..<reserved-1F85F>
+1F888..1F88F  ; Extended_Pictographic# E0.0   [8] (🢈..🢏)    <reserved-1F888>..<reserved-1F88F>
+1F8AE..1F8FF  ; Extended_Pictographic# E0.0  [82] (🢮..🣿)    <reserved-1F8AE>..<reserved-1F8FF>
+1F90C         ; Extended_Pictographic# E13.0  [1] (🤌)       pinched fingers
+1F90D..1F90F  ; Extended_Pictographic# E12.0  [3] (🤍..🤏)    white heart..pinching hand
+1F910..1F918  ; Extended_Pictographic# E1.0   [9] (🤐..🤘)    zipper-mouth face..sign of the horns
+1F919..1F91E  ; Extended_Pictographic# E3.0   [6] (🤙..🤞)    call me hand..crossed fingers
+1F91F         ; Extended_Pictographic# E5.0   [1] (🤟)       love-you gesture
+1F920..1F927  ; Extended_Pictographic# E3.0   [8] (🤠..🤧)    cowboy hat face..sneezing face
+1F928..1F92F  ; Extended_Pictographic# E5.0   [8] (🤨..🤯)    face with raised eyebrow..exploding head
+1F930         ; Extended_Pictographic# E3.0   [1] (🤰)       pregnant woman
+1F931..1F932  ; Extended_Pictographic# E5.0   [2] (🤱..🤲)    breast-feeding..palms up together
+1F933..1F93A  ; Extended_Pictographic# E3.0   [8] (🤳..🤺)    selfie..person fencing
+1F93C..1F93E  ; Extended_Pictographic# E3.0   [3] (🤼..🤾)    people wrestling..person playing handball
+1F93F         ; Extended_Pictographic# E12.0  [1] (🤿)       diving mask
+1F940..1F945  ; Extended_Pictographic# E3.0   [6] (🥀..🥅)    wilted flower..goal net
+1F947..1F94B  ; Extended_Pictographic# E3.0   [5] (🥇..🥋)    1st place medal..martial arts uniform
+1F94C         ; Extended_Pictographic# E5.0   [1] (🥌)       curling stone
+1F94D..1F94F  ; Extended_Pictographic# E11.0  [3] (🥍..🥏)    lacrosse..flying disc
+1F950..1F95E  ; Extended_Pictographic# E3.0  [15] (🥐..🥞)    croissant..pancakes
+1F95F..1F96B  ; Extended_Pictographic# E5.0  [13] (🥟..🥫)    dumpling..canned food
+1F96C..1F970  ; Extended_Pictographic# E11.0  [5] (🥬..🥰)    leafy green..smiling face with hearts
+1F971         ; Extended_Pictographic# E12.0  [1] (🥱)       yawning face
+1F972         ; Extended_Pictographic# E13.0  [1] (🥲)       smiling face with tear
+1F973..1F976  ; Extended_Pictographic# E11.0  [4] (🥳..🥶)    partying face..cold face
+1F977..1F978  ; Extended_Pictographic# E13.0  [2] (🥷..🥸)    ninja..disguised face
+1F979         ; Extended_Pictographic# E14.0  [1] (🥹)       face holding back tears
+1F97A         ; Extended_Pictographic# E11.0  [1] (🥺)       pleading face
+1F97B         ; Extended_Pictographic# E12.0  [1] (🥻)       sari
+1F97C..1F97F  ; Extended_Pictographic# E11.0  [4] (🥼..🥿)    lab coat..flat shoe
+1F980..1F984  ; Extended_Pictographic# E1.0   [5] (🦀..🦄)    crab..unicorn
+1F985..1F991  ; Extended_Pictographic# E3.0  [13] (🦅..🦑)    eagle..squid
+1F992..1F997  ; Extended_Pictographic# E5.0   [6] (🦒..🦗)    giraffe..cricket
+1F998..1F9A2  ; Extended_Pictographic# E11.0 [11] (🦘..🦢)    kangaroo..swan
+1F9A3..1F9A4  ; Extended_Pictographic# E13.0  [2] (🦣..🦤)    mammoth..dodo
+1F9A5..1F9AA  ; Extended_Pictographic# E12.0  [6] (🦥..🦪)    sloth..oyster
+1F9AB..1F9AD  ; Extended_Pictographic# E13.0  [3] (🦫..🦭)    beaver..seal
+1F9AE..1F9AF  ; Extended_Pictographic# E12.0  [2] (🦮..🦯)    guide dog..white cane
+1F9B0..1F9B9  ; Extended_Pictographic# E11.0 [10] (🦰..🦹)    red hair..supervillain
+1F9BA..1F9BF  ; Extended_Pictographic# E12.0  [6] (🦺..🦿)    safety vest..mechanical leg
+1F9C0         ; Extended_Pictographic# E1.0   [1] (🧀)       cheese wedge
+1F9C1..1F9C2  ; Extended_Pictographic# E11.0  [2] (🧁..🧂)    cupcake..salt
+1F9C3..1F9CA  ; Extended_Pictographic# E12.0  [8] (🧃..🧊)    beverage box..ice
+1F9CB         ; Extended_Pictographic# E13.0  [1] (🧋)       bubble tea
+1F9CC         ; Extended_Pictographic# E14.0  [1] (🧌)       troll
+1F9CD..1F9CF  ; Extended_Pictographic# E12.0  [3] (🧍..🧏)    person standing..deaf person
+1F9D0..1F9E6  ; Extended_Pictographic# E5.0  [23] (🧐..🧦)    face with monocle..socks
+1F9E7..1F9FF  ; Extended_Pictographic# E11.0 [25] (🧧..🧿)    red envelope..nazar amulet
+1FA00..1FA6F  ; Extended_Pictographic# E0.0 [112] (🨀..🩯)    NEUTRAL CHESS KING..<reserved-1FA6F>
+1FA70..1FA73  ; Extended_Pictographic# E12.0  [4] (🩰..🩳)    ballet shoes..shorts
+1FA74         ; Extended_Pictographic# E13.0  [1] (🩴)       thong sandal
+1FA75..1FA77  ; Extended_Pictographic# E15.0  [3] (🩵..🩷)    light blue heart..pink heart
+1FA78..1FA7A  ; Extended_Pictographic# E12.0  [3] (🩸..🩺)    drop of blood..stethoscope
+1FA7B..1FA7C  ; Extended_Pictographic# E14.0  [2] (🩻..🩼)    x-ray..crutch
+1FA7D..1FA7F  ; Extended_Pictographic# E0.0   [3] (🩽..🩿)    <reserved-1FA7D>..<reserved-1FA7F>
+1FA80..1FA82  ; Extended_Pictographic# E12.0  [3] (🪀..🪂)    yo-yo..parachute
+1FA83..1FA86  ; Extended_Pictographic# E13.0  [4] (🪃..🪆)    boomerang..nesting dolls
+1FA87..1FA88  ; Extended_Pictographic# E15.0  [2] (🪇..🪈)    maracas..flute
+1FA89..1FA8F  ; Extended_Pictographic# E0.0   [7] (🪉..🪏)    <reserved-1FA89>..<reserved-1FA8F>
+1FA90..1FA95  ; Extended_Pictographic# E12.0  [6] (🪐..🪕)    ringed planet..banjo
+1FA96..1FAA8  ; Extended_Pictographic# E13.0 [19] (🪖..🪨)    military helmet..rock
+1FAA9..1FAAC  ; Extended_Pictographic# E14.0  [4] (🪩..🪬)    mirror ball..hamsa
+1FAAD..1FAAF  ; Extended_Pictographic# E15.0  [3] (🪭..🪯)    folding hand fan..khanda
+1FAB0..1FAB6  ; Extended_Pictographic# E13.0  [7] (🪰..🪶)    fly..feather
+1FAB7..1FABA  ; Extended_Pictographic# E14.0  [4] (🪷..🪺)    lotus..nest with eggs
+1FABB..1FABD  ; Extended_Pictographic# E15.0  [3] (🪻..🪽)    hyacinth..wing
+1FABE         ; Extended_Pictographic# E0.0   [1] (🪾)       <reserved-1FABE>
+1FABF         ; Extended_Pictographic# E15.0  [1] (🪿)       goose
+1FAC0..1FAC2  ; Extended_Pictographic# E13.0  [3] (🫀..🫂)    anatomical heart..people hugging
+1FAC3..1FAC5  ; Extended_Pictographic# E14.0  [3] (🫃..🫅)    pregnant man..person with crown
+1FAC6..1FACD  ; Extended_Pictographic# E0.0   [8] (🫆..🫍)    <reserved-1FAC6>..<reserved-1FACD>
+1FACE..1FACF  ; Extended_Pictographic# E15.0  [2] (🫎..🫏)    moose..donkey
+1FAD0..1FAD6  ; Extended_Pictographic# E13.0  [7] (🫐..🫖)    blueberries..teapot
+1FAD7..1FAD9  ; Extended_Pictographic# E14.0  [3] (🫗..🫙)    pouring liquid..jar
+1FADA..1FADB  ; Extended_Pictographic# E15.0  [2] (🫚..🫛)    ginger root..pea pod
+1FADC..1FADF  ; Extended_Pictographic# E0.0   [4] (🫜..🫟)    <reserved-1FADC>..<reserved-1FADF>
+1FAE0..1FAE7  ; Extended_Pictographic# E14.0  [8] (🫠..🫧)    melting face..bubbles
+1FAE8         ; Extended_Pictographic# E15.0  [1] (🫨)       shaking face
+1FAE9..1FAEF  ; Extended_Pictographic# E0.0   [7] (🫩..🫯)    <reserved-1FAE9>..<reserved-1FAEF>
+1FAF0..1FAF6  ; Extended_Pictographic# E14.0  [7] (🫰..🫶)    hand with index finger and thumb crossed..heart hands
+1FAF7..1FAF8  ; Extended_Pictographic# E15.0  [2] (🫷..🫸)    leftwards pushing hand..rightwards pushing hand
+1FAF9..1FAFF  ; Extended_Pictographic# E0.0   [7] (🫹..🫿)    <reserved-1FAF9>..<reserved-1FAFF>
+1FC00..1FFFD  ; Extended_Pictographic# E0.0[1022] (🰀..🿽)    <reserved-1FC00>..<reserved-1FFFD>
+
+# Total elements: 3537
+
+#EOF
diff --git a/contrib/unicode/gen_libstdcxx_unicode_data.py b/contrib/unicode/gen_libstdcxx_unicode_data.py
new file mode 100755
index 0000000000000000000000000000000000000000..144914514357497ee1513e33d8435185e1772e19
--- /dev/null
+++ b/contrib/unicode/gen_libstdcxx_unicode_data.py
@@ -0,0 +1,222 @@
+#!/usr/bin/env python3
+#
+# Script to generate tables for libstdc++ std::format width estimation.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 3, or (at your option) any later
+# version.
+#
+# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# To update the Libstdc++ static data in <bits/unicode-data.h> download the latest:
+# ftp://ftp.unicode.org/Public/UNIDATA/EastAsianWidth.txt
+# ftp://ftp.unicode.org/Public/UNIDATA/DerivedCoreProperties.txt
+# ftp://ftp.unicode.org/Public/UNIDATA/auxiliary/GraphemeBreakProperty.txt
+# ftp://ftp.unicode.org/Public/UNIDATA/emoji/emoji-data.txt
+# Then run this script and save the output to
+# ../../libstdc++-v3/include/bits/unicode-data.h
+
+import sys
+import re
+import math
+
+print("// Generated by contrib/unicode/gen_std_format_width.py, do not edit.\n")
+print("#ifndef _GLIBCXX_GET_UNICODE_DATA")
+print('# error "This is not a public header, do not include it directly"')
+print("#elif _GLIBCXX_GET_UNICODE_DATA != 150100")
+print('# error "Version mismatch for Unicode static data"')
+print("#endif\n")
+
+# Process a list and return a list of tuples (index, val) which are the elements
+# in the list that have a different val from the previous element.
+# e.g. find_edges([a, a, b, b, c, b, b, d]) is [(0,a), (2,b), (4,c), (5,b), (7,d)]
+# and find_edges([a, a, b, b, c, b, b, d], a) is [(2,b), (4,c), (5,b), (7,d)]
+def find_edges(vals, init = None):
+    edges = []
+    prev_val = init
+    for i, v in enumerate(vals):
+        if v != prev_val:
+            edges.append((i,v))
+            prev_val = v
+    return edges
+
+all_code_points = []
+
+# Process a code point value or range of code point values with given property.
+def process_code_points(code_points, val):
+    # Example arguments:
+    # 1100..115F, x
+    # 232A, y
+
+    r = code_points.split("..")
+    if len(r) == 1:
+        c = int(r[0], base=16)
+        all_code_points[c] = val
+    elif len(r) == 2:
+        begin = int(r[0], base=16)
+        end = int(r[1], base=16) + 1
+        all_code_points[begin:end] = [val] * (end - begin)
+    else:
+        raise ValueError
+
+# By default every code point has width 1. This is what the C++ standard says,
+# even though the Unicode standard says some code points have width 0.
+all_code_points = [1] * (1 + 0x10FFFF)
+
+# Extract all code points with East_Asian_Width=W or East_Asian_Width=F
+for line in open("EastAsianWidth.txt", "r"):
+    # Example lines:
+    # 3000           ; F
+    # 3001..3003     ; W
+    line = line.split("#")[0]
+    if re.match(r'^[\dA-Fa-f][^;]+;\s*[WF]\s*$', line):
+        process_code_points(line.split(";")[0], 2)
+
+# The C++ standard also gives width 2 to the following ranges:
+# U+4DC0 – U+4DFF (Yijing Hexagram Symbols)
+process_code_points("4DC0..4DFF", 2)
+# U+1F300 – U+1F5FF (Miscellaneous Symbols and Pictographs)
+process_code_points("1F300..1F5FF", 2)
+# U+1F900 – U+1F9FF (Supplemental Symbols and Pictographs)
+process_code_points("1F900..1F9FF", 2)
+
+# Create a list that only contains the code points that have a different width
+# to the previous code point.
+edges = find_edges(all_code_points, 1)
+
+# Table for std::__unicode::__format_width(char32_t)
+
+print("  // Table generated by contrib/unicode/gen_std_format_width.py,")
+print("  // from EastAsianWidth.txt from the Unicode standard.");
+print("  inline constexpr char32_t __width_edges[] = {", end="")
+for i, e in enumerate(edges):
+    if i % 8:
+        print(" ", end="")
+    else:
+        print("\n    ", end="")
+    c,_ = e
+    print("{:#x},".format(c), end="")
+print("\n  };\n")
+
+# By default every code point has Grapheme_Cluster_Break=Other.
+all_code_points = ["Other"] * (1 + 0x10FFFF)
+
+# Extract Grapheme_Cluster_Break property for all code points.
+for line in open("GraphemeBreakProperty.txt", "r"):
+    # Example lines:
+    # "0600..0605", "Prepend"
+    # "00AD", "Control"
+    line = line.split("#")[0]
+    if re.match(r'^[\dA-Fa-f][^;]+;', line):
+        code_points, grapheme_property = line.split(";")
+        process_code_points(code_points, grapheme_property.strip())
+
+edges = find_edges(all_code_points)
+gcb_props = {p:i+1 for i,p in enumerate(sorted(set([x[1] for x in edges])))}
+shift_bits = int(math.ceil(math.log2(len(gcb_props))))
+
+# Enum definition for std::__unicode::_Gcb_property
+
+print("  enum class _Gcb_property {")
+for p in gcb_props.items():
+    print("    _Gcb_{} = {},".format(p[0],p[1]))
+print("  };\n")
+
+# Tables for std::__unicode::_Grapheme_cluster_state
+
+print("  // Values generated by contrib/unicode/gen_std_format_width.py,")
+print("  // from GraphemeBreakProperty.txt from the Unicode standard.");
+print("  // Entries are (code_point << shift_bits) + property.")
+print("  inline constexpr int __gcb_shift_bits = {:#x};".format(shift_bits))
+print("  inline constexpr uint32_t __gcb_edges[] = {", end="")
+for i, e in enumerate(edges):
+    if i % 6:
+        print(" ", end="")
+    else:
+        print("\n    ", end="")
+    c, p = e
+    x = (c << shift_bits) + gcb_props[p]
+    print("{0:#x},".format(x), end="")
+print("\n  };\n")
+
+# By default every code point has Indic_Conjunct_Break=None.
+all_code_points = [None] * (1 + 0x10FFFF)
+
+# Extract Indic_Conjunct_Break property for all code points.
+for line in open("DerivedCoreProperties.txt", "r"):
+    # Example lines:
+    # 094D       ; InCB; Linker
+    # 0B71       ; InCB; Consonant
+    # 0300..034E ; InCB; Extend
+    line = line.split("#")[0]
+    if re.match(r'^[\dA-Fa-f][^;]+; InCB;', line):
+        code_points, _, incb_property = line.split(";")
+        process_code_points(code_points, incb_property.strip())
+
+# Table for std::__unicode::__is_incb_linker
+# This table is tiny, so just contains the list of code points.
+print("  inline constexpr char32_t __incb_linkers[] = {\n   ", end="")
+for i in [i for i,p in enumerate(all_code_points) if p == "Linker"]:
+    print(" 0x{:04x},".format(i), end="")
+    all_code_points[i] = None
+print("\n  };\n")
+
+edges = find_edges(all_code_points)
+
+incb_props = {None:0, "Consonant":1, "Extend":2}
+print("  enum class _InCB { _Consonant = 1, _Extend = 2 };\n")
+# Table for std::__unicode::__incb_property
+print("  // Values generated by contrib/unicode/gen_std_format_width.py,")
+print("  // from DerivedCoreProperties.txt from the Unicode standard.");
+print("  // Entries are (code_point << 2) + property.")
+print("  inline constexpr uint32_t __incb_edges[] = {", end="")
+for i, e in enumerate(edges):
+    if i % 6:
+        print(" ", end="")
+    else:
+        print("\n    ", end="")
+    c, p = e
+    x = (c << 2) + incb_props[p]
+    print("{0:#x},".format(x), end="")
+print("\n  };\n")
+
+# By default every code point has Emoji=No.
+all_code_points = [False] * (1 + 0x10FFFF)
+
+# Extract Emoji=Extended_Pictographic for all code points.
+for line in open("emoji-data.txt", "r"):
+    # Example lines:
+    # 1100..115F ; Extended_Pictographic
+    # 232A       ; Extended_Pictographic
+    line = line.split("#")[0]
+    if re.match(r'^[\dA-Fa-f][^;]+; Extended_Pictographic', line):
+        process_code_points(line.split(";")[0], True)
+
+edges = find_edges(all_code_points, False)
+
+# Table for std::__unicode::__is_extended_pictographic
+print("  // Table generated by contrib/unicode/gen_std_format_width.py,")
+print("  // from emoji-data.txt from the Unicode standard.");
+print("  inline constexpr char32_t __xpicto_edges[] = {", end="")
+for i, e in enumerate(edges):
+    if i % 8:
+        print(" ", end="")
+    else:
+        print("\n    ", end="")
+    c,_ = e
+    print("{:#x},".format(c), end="")
+print("\n  };\n")
+
+# <bits/unicode.h> gives an error if this macro is left defined.
+# Do this last, so that the generated output is not usable unless we reach here.
+print("#undef _GLIBCXX_GET_UNICODE_DATA")
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index d44a399b9f65dbdc048dcc575be2bcd06cca2af9..c6d6a24eb9efadfb188cdf24ace325a6f6107ec3 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -161,6 +161,8 @@ bits_freestanding = \
 	${bits_srcdir}/stl_uninitialized.h \
 	${bits_srcdir}/version.h \
 	${bits_srcdir}/string_view.tcc \
+	${bits_srcdir}/unicode.h \
+	${bits_srcdir}/unicode-data.h \
 	${bits_srcdir}/uniform_int_dist.h \
 	${bits_srcdir}/unique_ptr.h \
 	${bits_srcdir}/uses_allocator.h \
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index 4fa4a259fef3729d8d1f297f1564ecc455083434..36bb9b0771e7dc7bf6ac0aeb3d7824d787ae4aca 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -516,6 +516,8 @@ bits_freestanding = \
 	${bits_srcdir}/stl_uninitialized.h \
 	${bits_srcdir}/version.h \
 	${bits_srcdir}/string_view.tcc \
+	${bits_srcdir}/unicode.h \
+	${bits_srcdir}/unicode-data.h \
 	${bits_srcdir}/uniform_int_dist.h \
 	${bits_srcdir}/unique_ptr.h \
 	${bits_srcdir}/uses_allocator.h \
diff --git a/libstdc++-v3/include/bits/unicode-data.h b/libstdc++-v3/include/bits/unicode-data.h
new file mode 100644
index 0000000000000000000000000000000000000000..c0c7e7d86ff7c80a128c9fe460eeeb3c336d4a60
--- /dev/null
+++ b/libstdc++-v3/include/bits/unicode-data.h
@@ -0,0 +1,449 @@
+// Generated by contrib/unicode/gen_std_format_width.py, do not edit.
+
+#ifndef _GLIBCXX_GET_UNICODE_DATA
+# error "This is not a public header, do not include it directly"
+#elif _GLIBCXX_GET_UNICODE_DATA != 150100
+# error "Version mismatch for Unicode static data"
+#endif
+
+  // Table generated by contrib/unicode/gen_std_format_width.py,
+  // from EastAsianWidth.txt from the Unicode standard.
+  inline constexpr char32_t __width_edges[] = {
+    0x1100, 0x1160, 0x231a, 0x231c, 0x2329, 0x232b, 0x23e9, 0x23ed,
+    0x23f0, 0x23f1, 0x23f3, 0x23f4, 0x25fd, 0x25ff, 0x2614, 0x2616,
+    0x2648, 0x2654, 0x267f, 0x2680, 0x2693, 0x2694, 0x26a1, 0x26a2,
+    0x26aa, 0x26ac, 0x26bd, 0x26bf, 0x26c4, 0x26c6, 0x26ce, 0x26cf,
+    0x26d4, 0x26d5, 0x26ea, 0x26eb, 0x26f2, 0x26f4, 0x26f5, 0x26f6,
+    0x26fa, 0x26fb, 0x26fd, 0x26fe, 0x2705, 0x2706, 0x270a, 0x270c,
+    0x2728, 0x2729, 0x274c, 0x274d, 0x274e, 0x274f, 0x2753, 0x2756,
+    0x2757, 0x2758, 0x2795, 0x2798, 0x27b0, 0x27b1, 0x27bf, 0x27c0,
+    0x2b1b, 0x2b1d, 0x2b50, 0x2b51, 0x2b55, 0x2b56, 0x2e80, 0x2e9a,
+    0x2e9b, 0x2ef4, 0x2f00, 0x2fd6, 0x2ff0, 0x303f, 0x3041, 0x3097,
+    0x3099, 0x3100, 0x3105, 0x3130, 0x3131, 0x318f, 0x3190, 0x31e4,
+    0x31ef, 0x321f, 0x3220, 0x3248, 0x3250, 0xa48d, 0xa490, 0xa4c7,
+    0xa960, 0xa97d, 0xac00, 0xd7a4, 0xf900, 0xfb00, 0xfe10, 0xfe1a,
+    0xfe30, 0xfe53, 0xfe54, 0xfe67, 0xfe68, 0xfe6c, 0xff01, 0xff61,
+    0xffe0, 0xffe7, 0x16fe0, 0x16fe5, 0x16ff0, 0x16ff2, 0x17000, 0x187f8,
+    0x18800, 0x18cd6, 0x18d00, 0x18d09, 0x1aff0, 0x1aff4, 0x1aff5, 0x1affc,
+    0x1affd, 0x1afff, 0x1b000, 0x1b123, 0x1b132, 0x1b133, 0x1b150, 0x1b153,
+    0x1b155, 0x1b156, 0x1b164, 0x1b168, 0x1b170, 0x1b2fc, 0x1f004, 0x1f005,
+    0x1f0cf, 0x1f0d0, 0x1f18e, 0x1f18f, 0x1f191, 0x1f19b, 0x1f200, 0x1f203,
+    0x1f210, 0x1f23c, 0x1f240, 0x1f249, 0x1f250, 0x1f252, 0x1f260, 0x1f266,
+    0x1f300, 0x1f650, 0x1f680, 0x1f6c6, 0x1f6cc, 0x1f6cd, 0x1f6d0, 0x1f6d3,
+    0x1f6d5, 0x1f6d8, 0x1f6dc, 0x1f6e0, 0x1f6eb, 0x1f6ed, 0x1f6f4, 0x1f6fd,
+    0x1f7e0, 0x1f7ec, 0x1f7f0, 0x1f7f1, 0x1f900, 0x1fa00, 0x1fa70, 0x1fa7d,
+    0x1fa80, 0x1fa89, 0x1fa90, 0x1fabe, 0x1fabf, 0x1fac6, 0x1face, 0x1fadc,
+    0x1fae0, 0x1fae9, 0x1faf0, 0x1faf9, 0x20000, 0x2fffe, 0x30000, 0x3fffe,
+  };
+
+  enum class _Gcb_property {
+    _Gcb_CR = 1,
+    _Gcb_Control = 2,
+    _Gcb_Extend = 3,
+    _Gcb_L = 4,
+    _Gcb_LF = 5,
+    _Gcb_LV = 6,
+    _Gcb_LVT = 7,
+    _Gcb_Other = 8,
+    _Gcb_Prepend = 9,
+    _Gcb_Regional_Indicator = 10,
+    _Gcb_SpacingMark = 11,
+    _Gcb_T = 12,
+    _Gcb_V = 13,
+    _Gcb_ZWJ = 14,
+  };
+
+  // Values generated by contrib/unicode/gen_std_format_width.py,
+  // from GraphemeBreakProperty.txt from the Unicode standard.
+  // Entries are (code_point << shift_bits) + property.
+  inline constexpr int __gcb_shift_bits = 0x4;
+  inline constexpr uint32_t __gcb_edges[] = {
+    0x2, 0xa5, 0xb2, 0xd1, 0xe2, 0x208,
+    0x7f2, 0xa08, 0xad2, 0xae8, 0x3003, 0x3708,
+    0x4833, 0x48a8, 0x5913, 0x5be8, 0x5bf3, 0x5c08,
+    0x5c13, 0x5c38, 0x5c43, 0x5c68, 0x5c73, 0x5c88,
+    0x6009, 0x6068, 0x6103, 0x61b8, 0x61c2, 0x61d8,
+    0x64b3, 0x6608, 0x6703, 0x6718, 0x6d63, 0x6dd9,
+    0x6de8, 0x6df3, 0x6e58, 0x6e73, 0x6e98, 0x6ea3,
+    0x6ee8, 0x70f9, 0x7108, 0x7113, 0x7128, 0x7303,
+    0x74b8, 0x7a63, 0x7b18, 0x7eb3, 0x7f48, 0x7fd3,
+    0x7fe8, 0x8163, 0x81a8, 0x81b3, 0x8248, 0x8253,
+    0x8288, 0x8293, 0x82e8, 0x8593, 0x85c8, 0x8909,
+    0x8928, 0x8983, 0x8a08, 0x8ca3, 0x8e29, 0x8e33,
+    0x903b, 0x9048, 0x93a3, 0x93bb, 0x93c3, 0x93d8,
+    0x93eb, 0x9413, 0x949b, 0x94d3, 0x94eb, 0x9508,
+    0x9513, 0x9588, 0x9623, 0x9648, 0x9813, 0x982b,
+    0x9848, 0x9bc3, 0x9bd8, 0x9be3, 0x9bfb, 0x9c13,
+    0x9c58, 0x9c7b, 0x9c98, 0x9cbb, 0x9cd3, 0x9ce8,
+    0x9d73, 0x9d88, 0x9e23, 0x9e48, 0x9fe3, 0x9ff8,
+    0xa013, 0xa03b, 0xa048, 0xa3c3, 0xa3d8, 0xa3eb,
+    0xa413, 0xa438, 0xa473, 0xa498, 0xa4b3, 0xa4e8,
+    0xa513, 0xa528, 0xa703, 0xa728, 0xa753, 0xa768,
+    0xa813, 0xa83b, 0xa848, 0xabc3, 0xabd8, 0xabeb,
+    0xac13, 0xac68, 0xac73, 0xac9b, 0xaca8, 0xacbb,
+    0xacd3, 0xace8, 0xae23, 0xae48, 0xafa3, 0xb008,
+    0xb013, 0xb02b, 0xb048, 0xb3c3, 0xb3d8, 0xb3e3,
+    0xb40b, 0xb413, 0xb458, 0xb47b, 0xb498, 0xb4bb,
+    0xb4d3, 0xb4e8, 0xb553, 0xb588, 0xb623, 0xb648,
+    0xb823, 0xb838, 0xbbe3, 0xbbfb, 0xbc03, 0xbc1b,
+    0xbc38, 0xbc6b, 0xbc98, 0xbcab, 0xbcd3, 0xbce8,
+    0xbd73, 0xbd88, 0xc003, 0xc01b, 0xc043, 0xc058,
+    0xc3c3, 0xc3d8, 0xc3e3, 0xc41b, 0xc458, 0xc463,
+    0xc498, 0xc4a3, 0xc4e8, 0xc553, 0xc578, 0xc623,
+    0xc648, 0xc813, 0xc82b, 0xc848, 0xcbc3, 0xcbd8,
+    0xcbeb, 0xcbf3, 0xcc0b, 0xcc23, 0xcc3b, 0xcc58,
+    0xcc63, 0xcc7b, 0xcc98, 0xccab, 0xccc3, 0xcce8,
+    0xcd53, 0xcd78, 0xce23, 0xce48, 0xcf3b, 0xcf48,
+    0xd003, 0xd02b, 0xd048, 0xd3b3, 0xd3d8, 0xd3e3,
+    0xd3fb, 0xd413, 0xd458, 0xd46b, 0xd498, 0xd4ab,
+    0xd4d3, 0xd4e9, 0xd4f8, 0xd573, 0xd588, 0xd623,
+    0xd648, 0xd813, 0xd82b, 0xd848, 0xdca3, 0xdcb8,
+    0xdcf3, 0xdd0b, 0xdd23, 0xdd58, 0xdd63, 0xdd78,
+    0xdd8b, 0xddf3, 0xde08, 0xdf2b, 0xdf48, 0xe313,
+    0xe328, 0xe33b, 0xe343, 0xe3b8, 0xe473, 0xe4f8,
+    0xeb13, 0xeb28, 0xeb3b, 0xeb43, 0xebd8, 0xec83,
+    0xecf8, 0xf183, 0xf1a8, 0xf353, 0xf368, 0xf373,
+    0xf388, 0xf393, 0xf3a8, 0xf3eb, 0xf408, 0xf713,
+    0xf7fb, 0xf803, 0xf858, 0xf863, 0xf888, 0xf8d3,
+    0xf988, 0xf993, 0xfbd8, 0xfc63, 0xfc78, 0x102d3,
+    0x1031b, 0x10323, 0x10388, 0x10393, 0x103bb, 0x103d3,
+    0x103f8, 0x1056b, 0x10583, 0x105a8, 0x105e3, 0x10618,
+    0x10713, 0x10758, 0x10823, 0x10838, 0x1084b, 0x10853,
+    0x10878, 0x108d3, 0x108e8, 0x109d3, 0x109e8, 0x11004,
+    0x1160d, 0x11a8c, 0x12008, 0x135d3, 0x13608, 0x17123,
+    0x1715b, 0x17168, 0x17323, 0x1734b, 0x17358, 0x17523,
+    0x17548, 0x17723, 0x17748, 0x17b43, 0x17b6b, 0x17b73,
+    0x17beb, 0x17c63, 0x17c7b, 0x17c93, 0x17d48, 0x17dd3,
+    0x17de8, 0x180b3, 0x180e2, 0x180f3, 0x18108, 0x18853,
+    0x18878, 0x18a93, 0x18aa8, 0x19203, 0x1923b, 0x19273,
+    0x1929b, 0x192c8, 0x1930b, 0x19323, 0x1933b, 0x19393,
+    0x193c8, 0x1a173, 0x1a19b, 0x1a1b3, 0x1a1c8, 0x1a55b,
+    0x1a563, 0x1a57b, 0x1a583, 0x1a5f8, 0x1a603, 0x1a618,
+    0x1a623, 0x1a638, 0x1a653, 0x1a6db, 0x1a733, 0x1a7d8,
+    0x1a7f3, 0x1a808, 0x1ab03, 0x1acf8, 0x1b003, 0x1b04b,
+    0x1b058, 0x1b343, 0x1b3bb, 0x1b3c3, 0x1b3db, 0x1b423,
+    0x1b43b, 0x1b458, 0x1b6b3, 0x1b748, 0x1b803, 0x1b82b,
+    0x1b838, 0x1ba1b, 0x1ba23, 0x1ba6b, 0x1ba83, 0x1baab,
+    0x1bab3, 0x1bae8, 0x1be63, 0x1be7b, 0x1be83, 0x1beab,
+    0x1bed3, 0x1beeb, 0x1bef3, 0x1bf2b, 0x1bf48, 0x1c24b,
+    0x1c2c3, 0x1c34b, 0x1c363, 0x1c388, 0x1cd03, 0x1cd38,
+    0x1cd43, 0x1ce1b, 0x1ce23, 0x1ce98, 0x1ced3, 0x1cee8,
+    0x1cf43, 0x1cf58, 0x1cf7b, 0x1cf83, 0x1cfa8, 0x1dc03,
+    0x1e008, 0x200b2, 0x200c3, 0x200de, 0x200e2, 0x20108,
+    0x20282, 0x202f8, 0x20602, 0x20708, 0x20d03, 0x20f18,
+    0x2cef3, 0x2cf28, 0x2d7f3, 0x2d808, 0x2de03, 0x2e008,
+    0x302a3, 0x30308, 0x30993, 0x309b8, 0xa66f3, 0xa6738,
+    0xa6743, 0xa67e8, 0xa69e3, 0xa6a08, 0xa6f03, 0xa6f28,
+    0xa8023, 0xa8038, 0xa8063, 0xa8078, 0xa80b3, 0xa80c8,
+    0xa823b, 0xa8253, 0xa827b, 0xa8288, 0xa82c3, 0xa82d8,
+    0xa880b, 0xa8828, 0xa8b4b, 0xa8c43, 0xa8c68, 0xa8e03,
+    0xa8f28, 0xa8ff3, 0xa9008, 0xa9263, 0xa92e8, 0xa9473,
+    0xa952b, 0xa9548, 0xa9604, 0xa97d8, 0xa9803, 0xa983b,
+    0xa9848, 0xa9b33, 0xa9b4b, 0xa9b63, 0xa9bab, 0xa9bc3,
+    0xa9beb, 0xa9c18, 0xa9e53, 0xa9e68, 0xaa293, 0xaa2fb,
+    0xaa313, 0xaa33b, 0xaa353, 0xaa378, 0xaa433, 0xaa448,
+    0xaa4c3, 0xaa4db, 0xaa4e8, 0xaa7c3, 0xaa7d8, 0xaab03,
+    0xaab18, 0xaab23, 0xaab58, 0xaab73, 0xaab98, 0xaabe3,
+    0xaac08, 0xaac13, 0xaac28, 0xaaebb, 0xaaec3, 0xaaeeb,
+    0xaaf08, 0xaaf5b, 0xaaf63, 0xaaf78, 0xabe3b, 0xabe53,
+    0xabe6b, 0xabe83, 0xabe9b, 0xabeb8, 0xabecb, 0xabed3,
+    0xabee8, 0xac006, 0xac017, 0xac1c6, 0xac1d7, 0xac386,
+    0xac397, 0xac546, 0xac557, 0xac706, 0xac717, 0xac8c6,
+    0xac8d7, 0xaca86, 0xaca97, 0xacc46, 0xacc57, 0xace06,
+    0xace17, 0xacfc6, 0xacfd7, 0xad186, 0xad197, 0xad346,
+    0xad357, 0xad506, 0xad517, 0xad6c6, 0xad6d7, 0xad886,
+    0xad897, 0xada46, 0xada57, 0xadc06, 0xadc17, 0xaddc6,
+    0xaddd7, 0xadf86, 0xadf97, 0xae146, 0xae157, 0xae306,
+    0xae317, 0xae4c6, 0xae4d7, 0xae686, 0xae697, 0xae846,
+    0xae857, 0xaea06, 0xaea17, 0xaebc6, 0xaebd7, 0xaed86,
+    0xaed97, 0xaef46, 0xaef57, 0xaf106, 0xaf117, 0xaf2c6,
+    0xaf2d7, 0xaf486, 0xaf497, 0xaf646, 0xaf657, 0xaf806,
+    0xaf817, 0xaf9c6, 0xaf9d7, 0xafb86, 0xafb97, 0xafd46,
+    0xafd57, 0xaff06, 0xaff17, 0xb00c6, 0xb00d7, 0xb0286,
+    0xb0297, 0xb0446, 0xb0457, 0xb0606, 0xb0617, 0xb07c6,
+    0xb07d7, 0xb0986, 0xb0997, 0xb0b46, 0xb0b57, 0xb0d06,
+    0xb0d17, 0xb0ec6, 0xb0ed7, 0xb1086, 0xb1097, 0xb1246,
+    0xb1257, 0xb1406, 0xb1417, 0xb15c6, 0xb15d7, 0xb1786,
+    0xb1797, 0xb1946, 0xb1957, 0xb1b06, 0xb1b17, 0xb1cc6,
+    0xb1cd7, 0xb1e86, 0xb1e97, 0xb2046, 0xb2057, 0xb2206,
+    0xb2217, 0xb23c6, 0xb23d7, 0xb2586, 0xb2597, 0xb2746,
+    0xb2757, 0xb2906, 0xb2917, 0xb2ac6, 0xb2ad7, 0xb2c86,
+    0xb2c97, 0xb2e46, 0xb2e57, 0xb3006, 0xb3017, 0xb31c6,
+    0xb31d7, 0xb3386, 0xb3397, 0xb3546, 0xb3557, 0xb3706,
+    0xb3717, 0xb38c6, 0xb38d7, 0xb3a86, 0xb3a97, 0xb3c46,
+    0xb3c57, 0xb3e06, 0xb3e17, 0xb3fc6, 0xb3fd7, 0xb4186,
+    0xb4197, 0xb4346, 0xb4357, 0xb4506, 0xb4517, 0xb46c6,
+    0xb46d7, 0xb4886, 0xb4897, 0xb4a46, 0xb4a57, 0xb4c06,
+    0xb4c17, 0xb4dc6, 0xb4dd7, 0xb4f86, 0xb4f97, 0xb5146,
+    0xb5157, 0xb5306, 0xb5317, 0xb54c6, 0xb54d7, 0xb5686,
+    0xb5697, 0xb5846, 0xb5857, 0xb5a06, 0xb5a17, 0xb5bc6,
+    0xb5bd7, 0xb5d86, 0xb5d97, 0xb5f46, 0xb5f57, 0xb6106,
+    0xb6117, 0xb62c6, 0xb62d7, 0xb6486, 0xb6497, 0xb6646,
+    0xb6657, 0xb6806, 0xb6817, 0xb69c6, 0xb69d7, 0xb6b86,
+    0xb6b97, 0xb6d46, 0xb6d57, 0xb6f06, 0xb6f17, 0xb70c6,
+    0xb70d7, 0xb7286, 0xb7297, 0xb7446, 0xb7457, 0xb7606,
+    0xb7617, 0xb77c6, 0xb77d7, 0xb7986, 0xb7997, 0xb7b46,
+    0xb7b57, 0xb7d06, 0xb7d17, 0xb7ec6, 0xb7ed7, 0xb8086,
+    0xb8097, 0xb8246, 0xb8257, 0xb8406, 0xb8417, 0xb85c6,
+    0xb85d7, 0xb8786, 0xb8797, 0xb8946, 0xb8957, 0xb8b06,
+    0xb8b17, 0xb8cc6, 0xb8cd7, 0xb8e86, 0xb8e97, 0xb9046,
+    0xb9057, 0xb9206, 0xb9217, 0xb93c6, 0xb93d7, 0xb9586,
+    0xb9597, 0xb9746, 0xb9757, 0xb9906, 0xb9917, 0xb9ac6,
+    0xb9ad7, 0xb9c86, 0xb9c97, 0xb9e46, 0xb9e57, 0xba006,
+    0xba017, 0xba1c6, 0xba1d7, 0xba386, 0xba397, 0xba546,
+    0xba557, 0xba706, 0xba717, 0xba8c6, 0xba8d7, 0xbaa86,
+    0xbaa97, 0xbac46, 0xbac57, 0xbae06, 0xbae17, 0xbafc6,
+    0xbafd7, 0xbb186, 0xbb197, 0xbb346, 0xbb357, 0xbb506,
+    0xbb517, 0xbb6c6, 0xbb6d7, 0xbb886, 0xbb897, 0xbba46,
+    0xbba57, 0xbbc06, 0xbbc17, 0xbbdc6, 0xbbdd7, 0xbbf86,
+    0xbbf97, 0xbc146, 0xbc157, 0xbc306, 0xbc317, 0xbc4c6,
+    0xbc4d7, 0xbc686, 0xbc697, 0xbc846, 0xbc857, 0xbca06,
+    0xbca17, 0xbcbc6, 0xbcbd7, 0xbcd86, 0xbcd97, 0xbcf46,
+    0xbcf57, 0xbd106, 0xbd117, 0xbd2c6, 0xbd2d7, 0xbd486,
+    0xbd497, 0xbd646, 0xbd657, 0xbd806, 0xbd817, 0xbd9c6,
+    0xbd9d7, 0xbdb86, 0xbdb97, 0xbdd46, 0xbdd57, 0xbdf06,
+    0xbdf17, 0xbe0c6, 0xbe0d7, 0xbe286, 0xbe297, 0xbe446,
+    0xbe457, 0xbe606, 0xbe617, 0xbe7c6, 0xbe7d7, 0xbe986,
+    0xbe997, 0xbeb46, 0xbeb57, 0xbed06, 0xbed17, 0xbeec6,
+    0xbeed7, 0xbf086, 0xbf097, 0xbf246, 0xbf257, 0xbf406,
+    0xbf417, 0xbf5c6, 0xbf5d7, 0xbf786, 0xbf797, 0xbf946,
+    0xbf957, 0xbfb06, 0xbfb17, 0xbfcc6, 0xbfcd7, 0xbfe86,
+    0xbfe97, 0xc0046, 0xc0057, 0xc0206, 0xc0217, 0xc03c6,
+    0xc03d7, 0xc0586, 0xc0597, 0xc0746, 0xc0757, 0xc0906,
+    0xc0917, 0xc0ac6, 0xc0ad7, 0xc0c86, 0xc0c97, 0xc0e46,
+    0xc0e57, 0xc1006, 0xc1017, 0xc11c6, 0xc11d7, 0xc1386,
+    0xc1397, 0xc1546, 0xc1557, 0xc1706, 0xc1717, 0xc18c6,
+    0xc18d7, 0xc1a86, 0xc1a97, 0xc1c46, 0xc1c57, 0xc1e06,
+    0xc1e17, 0xc1fc6, 0xc1fd7, 0xc2186, 0xc2197, 0xc2346,
+    0xc2357, 0xc2506, 0xc2517, 0xc26c6, 0xc26d7, 0xc2886,
+    0xc2897, 0xc2a46, 0xc2a57, 0xc2c06, 0xc2c17, 0xc2dc6,
+    0xc2dd7, 0xc2f86, 0xc2f97, 0xc3146, 0xc3157, 0xc3306,
+    0xc3317, 0xc34c6, 0xc34d7, 0xc3686, 0xc3697, 0xc3846,
+    0xc3857, 0xc3a06, 0xc3a17, 0xc3bc6, 0xc3bd7, 0xc3d86,
+    0xc3d97, 0xc3f46, 0xc3f57, 0xc4106, 0xc4117, 0xc42c6,
+    0xc42d7, 0xc4486, 0xc4497, 0xc4646, 0xc4657, 0xc4806,
+    0xc4817, 0xc49c6, 0xc49d7, 0xc4b86, 0xc4b97, 0xc4d46,
+    0xc4d57, 0xc4f06, 0xc4f17, 0xc50c6, 0xc50d7, 0xc5286,
+    0xc5297, 0xc5446, 0xc5457, 0xc5606, 0xc5617, 0xc57c6,
+    0xc57d7, 0xc5986, 0xc5997, 0xc5b46, 0xc5b57, 0xc5d06,
+    0xc5d17, 0xc5ec6, 0xc5ed7, 0xc6086, 0xc6097, 0xc6246,
+    0xc6257, 0xc6406, 0xc6417, 0xc65c6, 0xc65d7, 0xc6786,
+    0xc6797, 0xc6946, 0xc6957, 0xc6b06, 0xc6b17, 0xc6cc6,
+    0xc6cd7, 0xc6e86, 0xc6e97, 0xc7046, 0xc7057, 0xc7206,
+    0xc7217, 0xc73c6, 0xc73d7, 0xc7586, 0xc7597, 0xc7746,
+    0xc7757, 0xc7906, 0xc7917, 0xc7ac6, 0xc7ad7, 0xc7c86,
+    0xc7c97, 0xc7e46, 0xc7e57, 0xc8006, 0xc8017, 0xc81c6,
+    0xc81d7, 0xc8386, 0xc8397, 0xc8546, 0xc8557, 0xc8706,
+    0xc8717, 0xc88c6, 0xc88d7, 0xc8a86, 0xc8a97, 0xc8c46,
+    0xc8c57, 0xc8e06, 0xc8e17, 0xc8fc6, 0xc8fd7, 0xc9186,
+    0xc9197, 0xc9346, 0xc9357, 0xc9506, 0xc9517, 0xc96c6,
+    0xc96d7, 0xc9886, 0xc9897, 0xc9a46, 0xc9a57, 0xc9c06,
+    0xc9c17, 0xc9dc6, 0xc9dd7, 0xc9f86, 0xc9f97, 0xca146,
+    0xca157, 0xca306, 0xca317, 0xca4c6, 0xca4d7, 0xca686,
+    0xca697, 0xca846, 0xca857, 0xcaa06, 0xcaa17, 0xcabc6,
+    0xcabd7, 0xcad86, 0xcad97, 0xcaf46, 0xcaf57, 0xcb106,
+    0xcb117, 0xcb2c6, 0xcb2d7, 0xcb486, 0xcb497, 0xcb646,
+    0xcb657, 0xcb806, 0xcb817, 0xcb9c6, 0xcb9d7, 0xcbb86,
+    0xcbb97, 0xcbd46, 0xcbd57, 0xcbf06, 0xcbf17, 0xcc0c6,
+    0xcc0d7, 0xcc286, 0xcc297, 0xcc446, 0xcc457, 0xcc606,
+    0xcc617, 0xcc7c6, 0xcc7d7, 0xcc986, 0xcc997, 0xccb46,
+    0xccb57, 0xccd06, 0xccd17, 0xccec6, 0xcced7, 0xcd086,
+    0xcd097, 0xcd246, 0xcd257, 0xcd406, 0xcd417, 0xcd5c6,
+    0xcd5d7, 0xcd786, 0xcd797, 0xcd946, 0xcd957, 0xcdb06,
+    0xcdb17, 0xcdcc6, 0xcdcd7, 0xcde86, 0xcde97, 0xce046,
+    0xce057, 0xce206, 0xce217, 0xce3c6, 0xce3d7, 0xce586,
+    0xce597, 0xce746, 0xce757, 0xce906, 0xce917, 0xceac6,
+    0xcead7, 0xcec86, 0xcec97, 0xcee46, 0xcee57, 0xcf006,
+    0xcf017, 0xcf1c6, 0xcf1d7, 0xcf386, 0xcf397, 0xcf546,
+    0xcf557, 0xcf706, 0xcf717, 0xcf8c6, 0xcf8d7, 0xcfa86,
+    0xcfa97, 0xcfc46, 0xcfc57, 0xcfe06, 0xcfe17, 0xcffc6,
+    0xcffd7, 0xd0186, 0xd0197, 0xd0346, 0xd0357, 0xd0506,
+    0xd0517, 0xd06c6, 0xd06d7, 0xd0886, 0xd0897, 0xd0a46,
+    0xd0a57, 0xd0c06, 0xd0c17, 0xd0dc6, 0xd0dd7, 0xd0f86,
+    0xd0f97, 0xd1146, 0xd1157, 0xd1306, 0xd1317, 0xd14c6,
+    0xd14d7, 0xd1686, 0xd1697, 0xd1846, 0xd1857, 0xd1a06,
+    0xd1a17, 0xd1bc6, 0xd1bd7, 0xd1d86, 0xd1d97, 0xd1f46,
+    0xd1f57, 0xd2106, 0xd2117, 0xd22c6, 0xd22d7, 0xd2486,
+    0xd2497, 0xd2646, 0xd2657, 0xd2806, 0xd2817, 0xd29c6,
+    0xd29d7, 0xd2b86, 0xd2b97, 0xd2d46, 0xd2d57, 0xd2f06,
+    0xd2f17, 0xd30c6, 0xd30d7, 0xd3286, 0xd3297, 0xd3446,
+    0xd3457, 0xd3606, 0xd3617, 0xd37c6, 0xd37d7, 0xd3986,
+    0xd3997, 0xd3b46, 0xd3b57, 0xd3d06, 0xd3d17, 0xd3ec6,
+    0xd3ed7, 0xd4086, 0xd4097, 0xd4246, 0xd4257, 0xd4406,
+    0xd4417, 0xd45c6, 0xd45d7, 0xd4786, 0xd4797, 0xd4946,
+    0xd4957, 0xd4b06, 0xd4b17, 0xd4cc6, 0xd4cd7, 0xd4e86,
+    0xd4e97, 0xd5046, 0xd5057, 0xd5206, 0xd5217, 0xd53c6,
+    0xd53d7, 0xd5586, 0xd5597, 0xd5746, 0xd5757, 0xd5906,
+    0xd5917, 0xd5ac6, 0xd5ad7, 0xd5c86, 0xd5c97, 0xd5e46,
+    0xd5e57, 0xd6006, 0xd6017, 0xd61c6, 0xd61d7, 0xd6386,
+    0xd6397, 0xd6546, 0xd6557, 0xd6706, 0xd6717, 0xd68c6,
+    0xd68d7, 0xd6a86, 0xd6a97, 0xd6c46, 0xd6c57, 0xd6e06,
+    0xd6e17, 0xd6fc6, 0xd6fd7, 0xd7186, 0xd7197, 0xd7346,
+    0xd7357, 0xd7506, 0xd7517, 0xd76c6, 0xd76d7, 0xd7886,
+    0xd7897, 0xd7a48, 0xd7b0d, 0xd7c78, 0xd7cbc, 0xd7fc8,
+    0xfb1e3, 0xfb1f8, 0xfe003, 0xfe108, 0xfe203, 0xfe308,
+    0xfeff2, 0xff008, 0xff9e3, 0xffa08, 0xfff02, 0xfffc8,
+    0x101fd3, 0x101fe8, 0x102e03, 0x102e18, 0x103763, 0x1037b8,
+    0x10a013, 0x10a048, 0x10a053, 0x10a078, 0x10a0c3, 0x10a108,
+    0x10a383, 0x10a3b8, 0x10a3f3, 0x10a408, 0x10ae53, 0x10ae78,
+    0x10d243, 0x10d288, 0x10eab3, 0x10ead8, 0x10efd3, 0x10f008,
+    0x10f463, 0x10f518, 0x10f823, 0x10f868, 0x11000b, 0x110013,
+    0x11002b, 0x110038, 0x110383, 0x110478, 0x110703, 0x110718,
+    0x110733, 0x110758, 0x1107f3, 0x11082b, 0x110838, 0x110b0b,
+    0x110b33, 0x110b7b, 0x110b93, 0x110bb8, 0x110bd9, 0x110be8,
+    0x110c23, 0x110c38, 0x110cd9, 0x110ce8, 0x111003, 0x111038,
+    0x111273, 0x1112cb, 0x1112d3, 0x111358, 0x11145b, 0x111478,
+    0x111733, 0x111748, 0x111803, 0x11182b, 0x111838, 0x111b3b,
+    0x111b63, 0x111bfb, 0x111c18, 0x111c29, 0x111c48, 0x111c93,
+    0x111cd8, 0x111ceb, 0x111cf3, 0x111d08, 0x1122cb, 0x1122f3,
+    0x11232b, 0x112343, 0x11235b, 0x112363, 0x112388, 0x1123e3,
+    0x1123f8, 0x112413, 0x112428, 0x112df3, 0x112e0b, 0x112e33,
+    0x112eb8, 0x113003, 0x11302b, 0x113048, 0x1133b3, 0x1133d8,
+    0x1133e3, 0x1133fb, 0x113403, 0x11341b, 0x113458, 0x11347b,
+    0x113498, 0x1134bb, 0x1134e8, 0x113573, 0x113588, 0x11362b,
+    0x113648, 0x113663, 0x1136d8, 0x113703, 0x113758, 0x11435b,
+    0x114383, 0x11440b, 0x114423, 0x11445b, 0x114463, 0x114478,
+    0x1145e3, 0x1145f8, 0x114b03, 0x114b1b, 0x114b33, 0x114b9b,
+    0x114ba3, 0x114bbb, 0x114bd3, 0x114beb, 0x114bf3, 0x114c1b,
+    0x114c23, 0x114c48, 0x115af3, 0x115b0b, 0x115b23, 0x115b68,
+    0x115b8b, 0x115bc3, 0x115beb, 0x115bf3, 0x115c18, 0x115dc3,
+    0x115de8, 0x11630b, 0x116333, 0x1163bb, 0x1163d3, 0x1163eb,
+    0x1163f3, 0x116418, 0x116ab3, 0x116acb, 0x116ad3, 0x116aeb,
+    0x116b03, 0x116b6b, 0x116b73, 0x116b88, 0x1171d3, 0x117208,
+    0x117223, 0x11726b, 0x117273, 0x1172c8, 0x1182cb, 0x1182f3,
+    0x11838b, 0x118393, 0x1183b8, 0x119303, 0x11931b, 0x119368,
+    0x11937b, 0x119398, 0x1193b3, 0x1193db, 0x1193e3, 0x1193f9,
+    0x11940b, 0x119419, 0x11942b, 0x119433, 0x119448, 0x119d1b,
+    0x119d43, 0x119d88, 0x119da3, 0x119dcb, 0x119e03, 0x119e18,
+    0x119e4b, 0x119e58, 0x11a013, 0x11a0b8, 0x11a333, 0x11a39b,
+    0x11a3a9, 0x11a3b3, 0x11a3f8, 0x11a473, 0x11a488, 0x11a513,
+    0x11a57b, 0x11a593, 0x11a5c8, 0x11a849, 0x11a8a3, 0x11a97b,
+    0x11a983, 0x11a9a8, 0x11c2fb, 0x11c303, 0x11c378, 0x11c383,
+    0x11c3eb, 0x11c3f3, 0x11c408, 0x11c923, 0x11ca88, 0x11ca9b,
+    0x11caa3, 0x11cb1b, 0x11cb23, 0x11cb4b, 0x11cb53, 0x11cb78,
+    0x11d313, 0x11d378, 0x11d3a3, 0x11d3b8, 0x11d3c3, 0x11d3e8,
+    0x11d3f3, 0x11d469, 0x11d473, 0x11d488, 0x11d8ab, 0x11d8f8,
+    0x11d903, 0x11d928, 0x11d93b, 0x11d953, 0x11d96b, 0x11d973,
+    0x11d988, 0x11ef33, 0x11ef5b, 0x11ef78, 0x11f003, 0x11f029,
+    0x11f03b, 0x11f048, 0x11f34b, 0x11f363, 0x11f3b8, 0x11f3eb,
+    0x11f403, 0x11f41b, 0x11f423, 0x11f438, 0x134302, 0x134403,
+    0x134418, 0x134473, 0x134568, 0x16af03, 0x16af58, 0x16b303,
+    0x16b378, 0x16f4f3, 0x16f508, 0x16f51b, 0x16f888, 0x16f8f3,
+    0x16f938, 0x16fe43, 0x16fe58, 0x16ff0b, 0x16ff28, 0x1bc9d3,
+    0x1bc9f8, 0x1bca02, 0x1bca48, 0x1cf003, 0x1cf2e8, 0x1cf303,
+    0x1cf478, 0x1d1653, 0x1d166b, 0x1d1673, 0x1d16a8, 0x1d16db,
+    0x1d16e3, 0x1d1732, 0x1d17b3, 0x1d1838, 0x1d1853, 0x1d18c8,
+    0x1d1aa3, 0x1d1ae8, 0x1d2423, 0x1d2458, 0x1da003, 0x1da378,
+    0x1da3b3, 0x1da6d8, 0x1da753, 0x1da768, 0x1da843, 0x1da858,
+    0x1da9b3, 0x1daa08, 0x1daa13, 0x1dab08, 0x1e0003, 0x1e0078,
+    0x1e0083, 0x1e0198, 0x1e01b3, 0x1e0228, 0x1e0233, 0x1e0258,
+    0x1e0263, 0x1e02b8, 0x1e08f3, 0x1e0908, 0x1e1303, 0x1e1378,
+    0x1e2ae3, 0x1e2af8, 0x1e2ec3, 0x1e2f08, 0x1e4ec3, 0x1e4f08,
+    0x1e8d03, 0x1e8d78, 0x1e9443, 0x1e94b8, 0x1f1e6a, 0x1f2008,
+    0x1f3fb3, 0x1f4008, 0xe00002, 0xe00203, 0xe00802, 0xe01003,
+    0xe01f02, 0xe10008,
+  };
+
+  inline constexpr char32_t __incb_linkers[] = {
+    0x094d, 0x09cd, 0x0acd, 0x0b4d, 0x0c4d, 0x0d4d,
+  };
+
+  enum class _InCB { _Consonant = 1, _Extend = 2 };
+
+  // Values generated by contrib/unicode/gen_std_format_width.py,
+  // from DerivedCoreProperties.txt from the Unicode standard.
+  // Entries are (code_point << 2) + property.
+  inline constexpr uint32_t __incb_edges[] = {
+    0xc02, 0xd3c, 0xd42, 0xdc0, 0x120e, 0x1220,
+    0x1646, 0x16f8, 0x16fe, 0x1700, 0x1706, 0x170c,
+    0x1712, 0x1718, 0x171e, 0x1720, 0x1842, 0x186c,
+    0x192e, 0x1980, 0x19c2, 0x19c4, 0x1b5a, 0x1b74,
+    0x1b7e, 0x1b94, 0x1b9e, 0x1ba4, 0x1baa, 0x1bb8,
+    0x1c46, 0x1c48, 0x1cc2, 0x1d2c, 0x1fae, 0x1fd0,
+    0x1ff6, 0x1ff8, 0x205a, 0x2068, 0x206e, 0x2090,
+    0x2096, 0x20a0, 0x20a6, 0x20b8, 0x2166, 0x2170,
+    0x2262, 0x2280, 0x232a, 0x2388, 0x238e, 0x2400,
+    0x2455, 0x24e8, 0x24f2, 0x24f4, 0x2546, 0x2554,
+    0x2561, 0x2580, 0x25e1, 0x2600, 0x2655, 0x26a4,
+    0x26a9, 0x26c4, 0x26c9, 0x26cc, 0x26d9, 0x26e8,
+    0x26f2, 0x26f4, 0x2771, 0x2778, 0x277d, 0x2780,
+    0x27c1, 0x27c8, 0x27fa, 0x27fc, 0x28f2, 0x28f4,
+    0x2a55, 0x2aa4, 0x2aa9, 0x2ac4, 0x2ac9, 0x2ad0,
+    0x2ad5, 0x2ae8, 0x2af2, 0x2af4, 0x2be5, 0x2be8,
+    0x2c55, 0x2ca4, 0x2ca9, 0x2cc4, 0x2cc9, 0x2cd0,
+    0x2cd5, 0x2ce8, 0x2cf2, 0x2cf4, 0x2d71, 0x2d78,
+    0x2d7d, 0x2d80, 0x2dc5, 0x2dc8, 0x3055, 0x30a4,
+    0x30a9, 0x30e8, 0x30f2, 0x30f4, 0x3156, 0x315c,
+    0x3161, 0x316c, 0x32f2, 0x32f4, 0x3455, 0x34ee,
+    0x34f4, 0x38e2, 0x38ec, 0x3922, 0x3930, 0x3ae2,
+    0x3aec, 0x3b22, 0x3b30, 0x3c62, 0x3c68, 0x3cd6,
+    0x3cd8, 0x3cde, 0x3ce0, 0x3ce6, 0x3ce8, 0x3dc6,
+    0x3dcc, 0x3dd2, 0x3dd4, 0x3dea, 0x3df8, 0x3e02,
+    0x3e04, 0x3e0a, 0x3e14, 0x3e1a, 0x3e20, 0x3f1a,
+    0x3f1c, 0x40de, 0x40e0, 0x40e6, 0x40ec, 0x4236,
+    0x4238, 0x4d76, 0x4d80, 0x5c52, 0x5c54, 0x5f4a,
+    0x5f4c, 0x5f76, 0x5f78, 0x62a6, 0x62a8, 0x64e6,
+    0x64f0, 0x685e, 0x6864, 0x6982, 0x6984, 0x69d6,
+    0x69f4, 0x69fe, 0x6a00, 0x6ac2, 0x6af8, 0x6afe,
+    0x6b3c, 0x6cd2, 0x6cd4, 0x6dae, 0x6dd0, 0x6eae,
+    0x6eb0, 0x6f9a, 0x6f9c, 0x70de, 0x70e0, 0x7342,
+    0x734c, 0x7352, 0x7384, 0x738a, 0x73a4, 0x73b6,
+    0x73b8, 0x73d2, 0x73d4, 0x73e2, 0x73e8, 0x7702,
+    0x7800, 0x8036, 0x8038, 0x8342, 0x8374, 0x8386,
+    0x8388, 0x8396, 0x83c4, 0xb3be, 0xb3c8, 0xb5fe,
+    0xb600, 0xb782, 0xb800, 0xc0aa, 0xc0c0, 0xc266,
+    0xc26c, 0x299be, 0x299c0, 0x299d2, 0x299f8, 0x29a7a,
+    0x29a80, 0x29bc2, 0x29bc8, 0x2a0b2, 0x2a0b4, 0x2a382,
+    0x2a3c8, 0x2a4ae, 0x2a4b8, 0x2a6ce, 0x2a6d0, 0x2aac2,
+    0x2aac4, 0x2aaca, 0x2aad4, 0x2aade, 0x2aae4, 0x2aafa,
+    0x2ab00, 0x2ab06, 0x2ab08, 0x2abda, 0x2abdc, 0x2afb6,
+    0x2afb8, 0x3ec7a, 0x3ec7c, 0x3f882, 0x3f8c0, 0x407f6,
+    0x407f8, 0x40b82, 0x40b84, 0x40dda, 0x40dec, 0x42836,
+    0x42838, 0x4283e, 0x42840, 0x428e2, 0x428ec, 0x428fe,
+    0x42900, 0x42b96, 0x42b9c, 0x43492, 0x434a0, 0x43aae,
+    0x43ab4, 0x43bf6, 0x43c00, 0x43d1a, 0x43d44, 0x43e0a,
+    0x43e18, 0x441c2, 0x441c4, 0x441fe, 0x44200, 0x442ea,
+    0x442ec, 0x44402, 0x4440c, 0x444ce, 0x444d4, 0x445ce,
+    0x445d0, 0x4472a, 0x4472c, 0x448da, 0x448dc, 0x44ba6,
+    0x44bac, 0x44cee, 0x44cf4, 0x44d9a, 0x44db4, 0x44dc2,
+    0x44dd4, 0x4511a, 0x4511c, 0x4517a, 0x4517c, 0x4530e,
+    0x45310, 0x45702, 0x45704, 0x45ade, 0x45ae0, 0x45cae,
+    0x45cb0, 0x460ea, 0x460ec, 0x464fa, 0x464fc, 0x4650e,
+    0x46510, 0x468d2, 0x468d4, 0x4691e, 0x46920, 0x46a66,
+    0x46a68, 0x4750a, 0x4750c, 0x47512, 0x47518, 0x4765e,
+    0x47660, 0x47d0a, 0x47d0c, 0x5abc2, 0x5abd4, 0x5acc2,
+    0x5acdc, 0x6f27a, 0x6f27c, 0x74596, 0x74598, 0x7459e,
+    0x745a8, 0x745ba, 0x745cc, 0x745ee, 0x7460c, 0x74616,
+    0x74630, 0x746aa, 0x746b8, 0x7490a, 0x74914, 0x78002,
+    0x7801c, 0x78022, 0x78064, 0x7806e, 0x78088, 0x7808e,
+    0x78094, 0x7809a, 0x780ac, 0x7823e, 0x78240, 0x784c2,
+    0x784dc, 0x78aba, 0x78abc, 0x78bb2, 0x78bc0, 0x793b2,
+    0x793c0, 0x7a342, 0x7a35c, 0x7a512, 0x7a52c,
+  };
+
+  // Table generated by contrib/unicode/gen_std_format_width.py,
+  // from emoji-data.txt from the Unicode standard.
+  inline constexpr char32_t __xpicto_edges[] = {
+    0xa9, 0xaa, 0xae, 0xaf, 0x203c, 0x203d, 0x2049, 0x204a,
+    0x2122, 0x2123, 0x2139, 0x213a, 0x2194, 0x219a, 0x21a9, 0x21ab,
+    0x231a, 0x231c, 0x2328, 0x2329, 0x2388, 0x2389, 0x23cf, 0x23d0,
+    0x23e9, 0x23f4, 0x23f8, 0x23fb, 0x24c2, 0x24c3, 0x25aa, 0x25ac,
+    0x25b6, 0x25b7, 0x25c0, 0x25c1, 0x25fb, 0x25ff, 0x2600, 0x2606,
+    0x2607, 0x2613, 0x2614, 0x2686, 0x2690, 0x2706, 0x2708, 0x2713,
+    0x2714, 0x2715, 0x2716, 0x2717, 0x271d, 0x271e, 0x2721, 0x2722,
+    0x2728, 0x2729, 0x2733, 0x2735, 0x2744, 0x2745, 0x2747, 0x2748,
+    0x274c, 0x274d, 0x274e, 0x274f, 0x2753, 0x2756, 0x2757, 0x2758,
+    0x2763, 0x2768, 0x2795, 0x2798, 0x27a1, 0x27a2, 0x27b0, 0x27b1,
+    0x27bf, 0x27c0, 0x2934, 0x2936, 0x2b05, 0x2b08, 0x2b1b, 0x2b1d,
+    0x2b50, 0x2b51, 0x2b55, 0x2b56, 0x3030, 0x3031, 0x303d, 0x303e,
+    0x3297, 0x3298, 0x3299, 0x329a, 0x1f000, 0x1f100, 0x1f10d, 0x1f110,
+    0x1f12f, 0x1f130, 0x1f16c, 0x1f172, 0x1f17e, 0x1f180, 0x1f18e, 0x1f18f,
+    0x1f191, 0x1f19b, 0x1f1ad, 0x1f1e6, 0x1f201, 0x1f210, 0x1f21a, 0x1f21b,
+    0x1f22f, 0x1f230, 0x1f232, 0x1f23b, 0x1f23c, 0x1f240, 0x1f249, 0x1f3fb,
+    0x1f400, 0x1f53e, 0x1f546, 0x1f650, 0x1f680, 0x1f700, 0x1f774, 0x1f780,
+    0x1f7d5, 0x1f800, 0x1f80c, 0x1f810, 0x1f848, 0x1f850, 0x1f85a, 0x1f860,
+    0x1f888, 0x1f890, 0x1f8ae, 0x1f900, 0x1f90c, 0x1f93b, 0x1f93c, 0x1f946,
+    0x1f947, 0x1fb00, 0x1fc00, 0x1fffe,
+  };
+
+#undef _GLIBCXX_GET_UNICODE_DATA
diff --git a/libstdc++-v3/include/bits/unicode.h b/libstdc++-v3/include/bits/unicode.h
new file mode 100644
index 0000000000000000000000000000000000000000..66f8399fdfb05d85fcdb37fa9ec7c4089feb7a7d
--- /dev/null
+++ b/libstdc++-v3/include/bits/unicode.h
@@ -0,0 +1,1065 @@
+// Unicode utilities -*- C++ -*-
+
+// Copyright The GNU Toolchain Authors.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/bits/unicode.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{format}
+ */
+
+#ifndef _GLIBCXX_UNICODE_H
+#define _GLIBCXX_UNICODE_H 1
+
+#if __cplusplus >= 202002L
+#include <array>
+#include <bit>
+#include <cstdint>
+#include <bits/stl_algo.h>
+#include <bits/stl_iterator.h>
+#include <bits/ranges_base.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+namespace __unicode
+{
+  // A Unicode code point that is not a high or low surrogate.
+  constexpr bool
+  __is_scalar_value(char32_t __c)
+  {
+    if (__c < 0xD800) [[likely]]
+      return true;
+    return 0xDFFF < __c && __c <= 0x10FFFF;
+  }
+
+  // A code point that can be encoded in a single code unit of type _CharT.
+  template<typename _CharT>
+    constexpr bool
+    __is_single_code_unit(char32_t __c)
+    {
+      if constexpr (__gnu_cxx::__int_traits<_CharT>::__max <= 0xFF)
+	return __c < 0x7F; // ASCII character
+      else
+	return __c < __gnu_cxx::__int_traits<_CharT>::__max
+		       && __is_scalar_value(__c);
+    }
+
+  // Based on https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2728r6.html#add-the-transcoding-iterator-template
+
+  struct _Repl
+  {
+    constexpr char32_t
+    operator()() const noexcept
+    { return 0xFFFD; }
+  };
+
+  struct _Null_sentinel_t
+  {
+    template<input_iterator _It>
+      requires default_initializable<iter_value_t<_It>>
+	&& equality_comparable_with<iter_reference_t<_It>, iter_value_t<_It>>
+      friend constexpr auto
+      operator==(_It __it, _Null_sentinel_t)
+      { return *__it == iter_value_t<_It>{}; }
+  };
+
+  inline constexpr _Null_sentinel_t __null_sentinel;
+
+  template<typename _FromFmt, typename _ToFmt,
+	   input_iterator _Iter, sentinel_for<_Iter> _Sent = _Iter,
+	   typename _ErrorHandler = _Repl>
+    requires convertible_to<iter_value_t<_Iter>, _FromFmt>
+    class _Utf_iterator
+    {
+      static_assert(forward_iterator<_Iter> || noexcept(_ErrorHandler()()));
+
+    public:
+      using value_type = _ToFmt;
+      using difference_type = iter_difference_t<_Iter>;
+      using reference = value_type;
+      using iterator_concept
+	= std::__detail::__clamp_iter_cat<__iter_category_t<_Iter>,
+					  bidirectional_iterator_tag>;
+
+      constexpr _Utf_iterator() = default;
+
+      constexpr
+      _Utf_iterator(_Iter __first, _Iter __it, _Sent __last)
+      requires bidirectional_iterator<_Iter>
+      : _M_first_and_curr{__first, __it}, _M_last(__last)
+      {
+	if (_M_curr() != _M_last)
+	  _M_read();
+	else
+	  _M_buf = {};
+      }
+
+      constexpr
+      _Utf_iterator(_Iter __it, _Sent __last)
+      requires (!bidirectional_iterator<_Iter>)
+      : _M_first_and_curr{__it}, _M_last(__last)
+      {
+	if (_M_curr() != _M_last)
+	  _M_read();
+	else
+	  _M_buf = {};
+      }
+
+      template<class _Iter2, class _Sent2>
+	requires convertible_to<_Iter2, _Iter> && convertible_to<_Sent2, _Sent>
+	constexpr
+	_Utf_iterator(const _Utf_iterator<_FromFmt, _ToFmt, _Iter2, _Sent2,
+					  _ErrorHandler>& __other)
+	: _M_buf(__other._M_buf), _M_first_and_curr(__other._M_first_and_curr),
+	  _M_buf_index(__other._M_buf_index), _M_buf_last(__other._M_buf_last),
+	  _M_last(__other._M_last)
+	{ }
+
+      [[nodiscard]]
+      constexpr _Iter
+      begin() const requires bidirectional_iterator<_Iter>
+      { return _M_first(); }
+
+      [[nodiscard]]
+      constexpr _Sent
+      end() const { return _M_last; }
+
+      [[nodiscard]]
+      constexpr _Iter
+      base() const requires forward_iterator<_Iter>
+      { return _M_curr(); }
+
+      [[nodiscard]]
+      constexpr value_type
+      operator*() const { return _M_buf[_M_buf_index]; }
+
+      constexpr _Utf_iterator&
+      operator++()
+      {
+	if (_M_buf_index + 1 == _M_buf_last && _M_curr() != _M_last)
+	  {
+	    if constexpr (forward_iterator<_Iter>)
+	      std::advance(_M_curr(), _M_to_increment);
+	    if (_M_curr() == _M_last)
+	      _M_buf_index = 0;
+	    else
+	      _M_read();
+	  }
+	else if (_M_buf_index + 1 <= _M_buf_last)
+	  ++_M_buf_index;
+	return *this;
+      }
+
+      constexpr _Utf_iterator
+      operator++(int)
+      {
+	auto __tmp = *this;
+	++*this;
+	return __tmp;
+      }
+
+      constexpr _Utf_iterator&
+      operator--() requires bidirectional_iterator<_Iter>
+      {
+	if (!_M_buf_index && _M_curr() != _M_first())
+	  _M_read_reverse();
+	else if (_M_buf_index)
+	  --_M_buf_index;
+	return *this;
+      }
+
+      constexpr _Utf_iterator
+      operator--(int)
+      {
+	auto __tmp = *this;
+	--*this;
+	return __tmp;
+      }
+
+      [[nodiscard]]
+      friend constexpr bool
+      operator==(_Utf_iterator __lhs, _Utf_iterator __rhs)
+      requires forward_iterator<_Iter> || requires (_Iter __i) { __i != __i; }
+      {
+	if constexpr (forward_iterator<_Iter>)
+	  return __lhs._M_curr() == __rhs._M_curr()
+		   && __lhs._M_buf_index == __rhs._M_buf_index;
+	else if (__lhs._M_curr() != __rhs._M_curr())
+	  return false;
+	else if (__lhs._M_buf_index == __rhs._M_buf_index
+		   && __lhs._M_buf_last == __rhs._M_buf_last)
+	  return true;
+	else
+	  return __lhs._M_buf_index == __lhs._M_buf_last
+		   && __rhs._M_buf_index == __rhs._M_buf_last;
+      }
+
+      [[nodiscard]]
+      friend constexpr bool
+      operator==(_Utf_iterator __lhs, _Sent __rhs)
+      {
+	if constexpr (forward_iterator<_Iter>)
+	  return __lhs._M_curr() == __rhs;
+	else
+	  return __lhs._M_curr() == __rhs
+		   && __lhs._M_buf_index == __lhs._M_buf_last;
+      }
+
+    private:
+      constexpr void
+      _M_read()
+      {
+	if constexpr (sizeof(_FromFmt) == sizeof(uint8_t))
+	  _M_read_utf8();
+	else if constexpr (sizeof(_FromFmt) == sizeof(uint16_t))
+	  _M_read_utf16();
+	else
+	  {
+	    static_assert(sizeof(_FromFmt) == sizeof(uint32_t));
+	    _M_read_utf32();
+	  }
+      }
+
+      constexpr void
+      _M_read_reverse(); // TODO
+
+      template<typename>
+	struct _Guard
+	{
+	  _Guard(void*, _Iter&) { }
+	};
+
+      template<typename _It> requires forward_iterator<_It>
+	struct _Guard<_It>
+	{
+	  constexpr ~_Guard() { _M_this->_M_curr() = std::move(_M_orig); }
+	  _Utf_iterator* _M_this;
+	  _It _M_orig;
+	};
+
+      constexpr void
+      _M_read_utf8()
+      {
+	_Guard<_Iter> __g{this, _M_curr()};
+	char32_t __c{};
+	uint8_t __u = *_M_curr()++;
+	const uint8_t __lo_bound = 0x80, __hi_bound = 0xBF;
+	uint8_t __to_incr = 1;
+
+	if (__u <= 0x7F) [[likely]]      // 0x00 to 0x7F
+	  __c = __u;
+	else if (__u < 0xC2) [[unlikely]]
+	  __c = _S_error();
+	else if (_M_curr() == _M_last) [[unlikely]]
+	  __c = _S_error();
+	else if (__u <= 0xDF) // 0xC2 to 0xDF
+	  {
+	    __c = __u & 0x1F;
+	    __u = *_M_curr();
+
+	    if (__u < __lo_bound || __u > __hi_bound) [[unlikely]]
+	      __c = _S_error();
+	    else
+	      {
+		__c = (__c << 6) | (__u & 0x3F);
+		++_M_curr();
+		++__to_incr;
+	      }
+	  }
+	else if (__u <= 0xEF) // 0xE0 to 0xEF
+	  {
+	    const uint8_t __lo_bound_2 = __u == 0xE0 ? 0xA0 : __lo_bound;
+	    const uint8_t __hi_bound_2 = __u == 0xED ? 0x9F : __hi_bound;
+
+	    __c = __u & 0x0F;
+	    __u = *_M_curr();
+
+	    if (__u < __lo_bound_2 || __u > __hi_bound_2) [[unlikely]]
+	      __c = _S_error();
+	    else if (++_M_curr() == _M_last) [[unlikely]]
+	      __c = _S_error();
+	    else
+	      {
+		++__to_incr;
+		__c = (__c << 6) | (__u & 0x3F);
+		__u = *_M_curr();
+
+		if (__u < __lo_bound || __u > __hi_bound) [[unlikely]]
+		  __c = _S_error();
+		else
+		  {
+		    __c = (__c << 6) | (__u & 0x3F);
+		    ++_M_curr();
+		    ++__to_incr;
+		  }
+	      }
+	  }
+	else if (__u <= 0xF4) // 0xF0 to 0xF4
+	  {
+	    const uint8_t __lo_bound_2 = __u == 0xF0 ? 0x90 : __lo_bound;
+	    const uint8_t __hi_bound_2 = __u == 0xF4 ? 0x8F : __hi_bound;
+
+	    __c = __u & 0x07;
+	    __u = *_M_curr();
+
+	    if (__u < __lo_bound_2 || __u > __hi_bound_2) [[unlikely]]
+	      __c = _S_error();
+	    else if (++_M_curr() == _M_last) [[unlikely]]
+	      __c = _S_error();
+	    else
+	      {
+		++__to_incr;
+		__c = (__c << 6) | (__u & 0x3F);
+		__u = *_M_curr();
+
+		if (__u < __lo_bound || __u > __hi_bound) [[unlikely]]
+		  __c = _S_error();
+		else if (++_M_curr() == _M_last) [[unlikely]]
+		  __c = _S_error();
+		else
+		  {
+		    ++__to_incr;
+		    __c = (__c << 6) | (__u & 0x3F);
+		    __u = *_M_curr();
+
+		    if (__u < __lo_bound || __u > __hi_bound) [[unlikely]]
+		      __c = _S_error();
+		    else
+		      {
+			__c = (__c << 6) | (__u & 0x3F);
+			++_M_curr();
+			++__to_incr;
+		      }
+		  }
+	      }
+	  }
+	else [[unlikely]]
+	  __c = _S_error();
+
+	_M_update(__c, __to_incr);
+      }
+
+      constexpr void
+      _M_read_utf16()
+      {
+	_Guard<_Iter> __g{this, _M_curr()};
+	char32_t __c{};
+	uint16_t __u = *_M_curr()++;
+	uint8_t __to_incr = 1;
+
+	if (__u < 0xD800 || __u > 0xDFFF) [[likely]]
+	  __c = __u;
+	else if (__u < 0xDC00 && _M_curr() != _M_last)
+	  {
+	    uint16_t __u2 = *_M_curr();
+	    if (__u2 < 0xDC00 || __u2 > 0xDFFF) [[unlikely]]
+	      __c = _S_error();
+	    else
+	      {
+		++_M_curr();
+		__to_incr = 2;
+		uint32_t __x = (__u & 0x3F) << 10 | __u2 & 0x3FF;
+		uint32_t __w = (__u >> 6) & 0x1F;
+		__c = (__w + 1) << 16 | __x;
+	      }
+	  }
+	else
+	  __c = _S_error();
+
+	_M_update(__c, __to_incr);
+      }
+
+      constexpr void
+      _M_read_utf32()
+      {
+	_Guard<_Iter> __g{this, _M_curr()};
+	char32_t __c = *_M_curr()++;
+	if (!__is_scalar_value(__c)) [[unlikely]]
+	  __c = _S_error();
+	_M_update(__c, 1);
+      }
+
+      // Encode the code point __c as one or more code units in _M_buf.
+      constexpr void
+      _M_update(char32_t __c, uint8_t __to_incr)
+      {
+	_M_to_increment = __to_incr;
+	_M_buf_index = 0;
+	if constexpr (sizeof(_ToFmt) == sizeof(uint32_t))
+	  {
+	    _M_buf[0] = __c;
+	    _M_buf_last = 1;
+	  }
+	else if constexpr (sizeof(_ToFmt) == sizeof(uint16_t))
+	  {
+	    if (__is_single_code_unit<_ToFmt>(__c))
+	      {
+		_M_buf[0] = __c;
+		_M_buf[1] = 0;
+		_M_buf_last = 1;
+	      }
+	    else
+	      {
+		// From http://www.unicode.org/faq/utf_bom.html#utf16-4
+		const char32_t __lead_offset = 0xD800 - (0x10000 >> 10);
+		char16_t __lead = __lead_offset + (__c >> 10);
+		char16_t __trail = 0xDC00 + (__c & 0x3FF);
+		_M_buf[0] = __lead;
+		_M_buf[1] = __trail;
+		_M_buf_last = 2;
+	      }
+	  }
+	else
+	  {
+	    static_assert(sizeof(_ToFmt) == 1);
+	    int __bits = std::bit_width((uint32_t)__c);
+	    if (__bits <= 7) [[likely]]
+	      {
+		_M_buf[0] = __c;
+		_M_buf[1] = _M_buf[2] = _M_buf[3] = 0;
+		_M_buf_last = 1;
+	      }
+	    else if (__bits <= 11)
+	      {
+		_M_buf[0] = 0xC0 | (__c >> 6);
+		_M_buf[1] = 0x80 | (__c & 0x3F);
+		_M_buf[2] = _M_buf[3] = 0;
+		_M_buf_last = 2;
+	      }
+	    else if (__bits <= 16)
+	      {
+		_M_buf[0] = 0xE0 | (__c >> 12);
+		_M_buf[1] = 0x80 | ((__c >> 6) & 0x3F);
+		_M_buf[2] = 0x80 | (__c & 0x3F);
+		_M_buf[3] = 0;
+		_M_buf_last = 3;
+	      }
+	    else
+	      {
+		_M_buf[0] = 0xF0 | ((__c >> 18) & 0x07);
+		_M_buf[1] = 0x80 | ((__c >> 12) & 0x3F);
+		_M_buf[2] = 0x80 | ((__c >> 6) & 0x3F);
+		_M_buf[3] = 0x80 | (__c & 0x3F);
+		_M_buf_last = 4;
+	      }
+	  }
+      }
+
+      constexpr char32_t
+      _S_error()
+      {
+	char32_t __c = _ErrorHandler()();
+	__glibcxx_assert(__is_scalar_value(__c));
+	return __c;
+      }
+
+      constexpr _Iter
+      _M_first() const requires bidirectional_iterator<_Iter>
+      { return _M_first_and_curr._M_first; }
+
+      constexpr _Iter&
+      _M_curr() { return _M_first_and_curr._M_curr; }
+
+      constexpr _Iter
+      _M_curr() const { return _M_first_and_curr._M_curr; }
+
+      array<value_type, 4 / sizeof(_ToFmt)> _M_buf;
+
+      template<typename _It>
+	struct _First_and_curr
+	{
+	  _First_and_curr() = default;
+
+	  constexpr
+	  _First_and_curr(_It __curr) : _M_curr(__curr) { }
+
+	  template<convertible_to<_It> _It2>
+	    constexpr
+	    _First_and_curr(const _First_and_curr<_It2>& __other)
+	    : _M_curr(__other._M_curr) { }
+
+	  _It _M_curr;
+	};
+
+      template<typename _It> requires bidirectional_iterator<_It>
+	struct _First_and_curr<_It>
+	{
+	  _First_and_curr() = default;
+
+	  constexpr
+	  _First_and_curr(_It __first, _It __curr)
+	  : _M_first(__first), _M_curr(__curr) { }
+
+	  template<convertible_to<_It> _It2>
+	    constexpr
+	    _First_and_curr(const _First_and_curr<_It2>& __other)
+	    : _M_first(__other._M_first), _M_curr(__other._M_curr) { }
+
+	  _It _M_first;
+	  _It _M_curr;
+	};
+
+      _First_and_curr<_Iter> _M_first_and_curr;
+
+      uint8_t _M_buf_index = 0;
+      uint8_t _M_buf_last = 0;
+      uint8_t _M_to_increment = 0;
+
+      [[no_unique_address]] _Sent _M_last;
+
+      template<typename _FromFmt2, typename _ToFmt2,
+	       input_iterator _Iter2, sentinel_for<_Iter2> _Sent2,
+	       typename _ErrHandler>
+	requires convertible_to<iter_value_t<_Iter2>, _FromFmt2>
+	friend class _Utf_iterator;
+    };
+
+  template<typename _ToFormat, ranges::input_range _Range>
+    class _Utf_view
+    : public ranges::view_interface<_Utf_view<_ToFormat, _Range>>
+    {
+      using _Iterator = _Utf_iterator<ranges::range_value_t<_Range>,
+				      _ToFormat, ranges::iterator_t<_Range>,
+				      ranges::sentinel_t<_Range>>;
+
+      template<typename _Iter, typename _Sent>
+	constexpr auto
+	_M_begin(_Iter __first, _Sent __last)
+	{
+	  if constexpr (bidirectional_iterator<_Iter>)
+	    return _Iterator(__first, __first, __last);
+	  else
+	    return _Iterator(__first, __last);
+	}
+
+      template<typename _Iter, typename _Sent>
+	constexpr auto
+	_M_end(_Iter __first, _Sent __last)
+	{
+	  if constexpr (!is_same_v<_Iter, _Sent>)
+	    return __last;
+	  else if constexpr (bidirectional_iterator<_Iter>)
+	    return _Iterator(__first, __last, __last);
+	  else
+	    return _Iterator(__last, __last);
+	}
+
+      _Range _M_base;
+
+    public:
+      constexpr explicit
+      _Utf_view(_Range&& __r) : _M_base(std::forward<_Range>(__r)) { }
+
+      constexpr auto begin()
+      { return _M_begin(ranges::begin(_M_base), ranges::end(_M_base)); }
+
+      constexpr auto end()
+      { return _M_end(ranges::begin(_M_base), ranges::end(_M_base)); }
+
+      constexpr bool empty() const { return ranges::empty(_M_base); }
+    };
+
+  template<typename _View>
+    using _Utf8_view = _Utf_view<char8_t, _View>;
+  template<typename _View>
+    using _Utf16_view = _Utf_view<char16_t, _View>;
+  template<typename _View>
+    using _Utf32_view = _Utf_view<char32_t, _View>;
+
+inline namespace __v15_1_0
+{
+#define _GLIBCXX_GET_UNICODE_DATA 150100
+#include "unicode-data.h"
+#ifdef _GLIBCXX_GET_UNICODE_DATA
+# error "Invalid unicode data"
+#endif
+
+  // The field width of a code point.
+  constexpr int
+  __field_width(char32_t __c) noexcept
+  {
+    if (__c < __width_edges[0]) [[likely]]
+      return 1;
+
+    auto* __p = std::upper_bound(__width_edges, std::end(__width_edges), __c);
+    return (__p - __width_edges) % 2 + 1;
+  }
+
+  constexpr _Gcb_property
+  __grapheme_cluster_break_property(char32_t __c) noexcept
+  {
+    constexpr uint32_t __mask = (1 << __gcb_shift_bits) - 1;
+    auto* __end = std::end(__gcb_edges);
+    auto* __p = std::lower_bound(__gcb_edges, __end,
+				 (__c << __gcb_shift_bits) | __mask);
+    return _Gcb_property(__p[-1] & __mask);
+  }
+
+  constexpr bool
+  __is_incb_linker(char32_t __c) noexcept
+  {
+    const auto __end = std::end(__incb_linkers);
+    // Array is small enough that linear search is faster than binary search.
+    return std::find(__incb_linkers, __end, __c) != __end;
+  }
+
+  constexpr _InCB
+  __incb_property(char32_t __c) noexcept
+  {
+    constexpr uint32_t __mask = 0x3;
+    auto* __end = std::end(__incb_edges);
+    auto* __p = std::lower_bound(__incb_edges, __end, (__c << 2) | __mask);
+    return _InCB(__p[-1] & __mask);
+  }
+
+  constexpr bool
+  __is_extended_pictographic(char32_t __c)
+  {
+    if (__c < __xpicto_edges[0]) [[likely]]
+      return 1;
+
+    auto* __p = std::upper_bound(__xpicto_edges, std::end(__xpicto_edges), __c);
+    return (__p - __xpicto_edges) % 2 + 1;
+  }
+
+  struct _Grapheme_cluster_iterator_base
+  {
+    char32_t _M_c; // First code point in the cluster.
+    _Gcb_property _M_prop; // GCB property of _M_c.
+    enum class _XPicto : unsigned char { _Init, _Zwj, _Matched, _Failed };
+    _XPicto _M_xpicto_seq_state = _XPicto::_Init;
+    unsigned char _M_RI_count = 0;
+    bool _M_incb_linker_seen = false;
+
+    constexpr void
+    _M_reset(char32_t __c, _Gcb_property __p)
+    {
+      _M_c = __c;
+      _M_prop = __p;
+      _M_xpicto_seq_state = _XPicto::_Init;
+      _M_RI_count = 0;
+      _M_incb_linker_seen = false;
+    }
+
+    constexpr void
+    _M_update_xpicto_seq_state(char32_t __c, _Gcb_property __p)
+    {
+      if (_M_xpicto_seq_state == _XPicto::_Failed)
+	return;
+
+      auto __next_state = _XPicto::_Failed;
+      if (_M_xpicto_seq_state != _XPicto::_Zwj) // i.e. Init or Matched
+	{
+	  if (__p == _Gcb_property::_Gcb_ZWJ)
+	    {
+	      if (_M_xpicto_seq_state == _XPicto::_Matched)
+		__next_state = _XPicto::_Zwj;
+	      // We check _M_c here so that we do the lookup at most once,
+	      // and only for clusters containing at least one ZWJ.
+	      else if (__is_extended_pictographic(_M_c))
+		__next_state = _XPicto::_Zwj;
+	    }
+	  else if (__p == _Gcb_property::_Gcb_Extend)
+	    __next_state = _M_xpicto_seq_state; // no change
+	}
+      else // Zwj
+	{
+	  // This assumes that all \p{Extended_Pictographic} emoji have
+	  // Grapheme_Cluster_Break=Other.
+	  if (__p == _Gcb_property::_Gcb_Other
+		&& __is_extended_pictographic(__c))
+	    __next_state = _XPicto::_Matched;
+	}
+      _M_xpicto_seq_state = __next_state;
+    }
+
+    constexpr void
+    _M_update_ri_count(_Gcb_property __p)
+    {
+      if (__p == _Gcb_property::_Gcb_Regional_Indicator)
+	++_M_RI_count;
+      else
+	_M_RI_count = 0;
+    }
+
+    constexpr void
+    _M_update_incb_state(char32_t __c, _Gcb_property)
+    {
+      if (__is_incb_linker(__c))
+	_M_incb_linker_seen = true;
+    }
+  };
+
+  // Split a range into extended grapheme clusters.
+  template<ranges::forward_range _View>
+    class _Grapheme_cluster_view
+    : public ranges::view_interface<_Grapheme_cluster_view<_View>>
+    {
+    public:
+
+      constexpr
+      _Grapheme_cluster_view(const _View& __v)
+      : _M_begin(_Utf32_view(__v).begin())
+      { }
+
+      constexpr auto begin() const { return _M_begin; }
+      constexpr auto end() const { return _M_begin.end(); }
+
+    private:
+      struct _Iterator : private _Grapheme_cluster_iterator_base
+      {
+      private:
+	// Iterator over the underlying code points.
+	using _U32_iterator = ranges::iterator_t<_Utf32_view<_View>>;
+
+      public:
+	// TODO: Change value_type to be subrange<_U32_iterator> instead?
+	// That would be the whole cluster, not just the first code point.
+	// Would need to change type of _M_start to _U32_iterator, so that
+	// operator* just does return value_type{_M_start, _M_next}.
+	// Alternatively, value_type could be _Utf32_view<iterator_t<_View>>.
+	using value_type = char32_t;
+	using iterator_concept = forward_iterator_tag;
+
+	constexpr
+	_Iterator(_U32_iterator __i)
+	: _M_start(__i.base()), _M_next(__i)
+	{
+	  if (_M_start != __i.end())
+	    {
+	      _M_c = *__i;
+	      _M_prop = __grapheme_cluster_break_property(_M_c);
+	      operator++(); // Finds the end of the first cluster.
+	    }
+	}
+
+	// The first code point of the current extended grapheme cluster.
+	constexpr value_type
+	operator*() const
+	{ return _M_c; }
+
+	constexpr auto
+	operator->() const
+	{ return &_M_c; }
+
+	// Move to the next extended grapheme cluster.
+	constexpr _Iterator&
+	operator++()
+	{
+	  const auto __end = _M_next.end();
+	  if (_M_next != __end)
+	    {
+	      auto __p_prev = _M_prop;
+	      auto __it = _M_next;
+	      while (++__it != __end)
+		{
+		  char32_t __c = *__it;
+		  auto __p = __grapheme_cluster_break_property(*__it);
+		  _M_update_xpicto_seq_state(__c, __p);
+		  _M_update_ri_count(__p);
+		  _M_update_incb_state(__c, __p);
+		  if (_M_is_break(__p_prev, __p, __it))
+		    {
+		      // Found a grapheme cluster break
+		      _M_reset(__c, __p);
+		      break;
+		    }
+		  __p_prev = __p;
+		}
+	      _M_start = _M_next.base();
+	      _M_next = __it;
+	    }
+	  else
+	    _M_start = __end;
+	  return *this;
+	}
+
+	constexpr _Iterator
+	operator++(int)
+	{
+	  auto __tmp = *this;
+	  ++this;
+	  return __tmp;
+	}
+
+	constexpr bool
+	operator==(const _Iterator& __i) const
+	{ return _M_start == __i._M_start; }
+
+	// This supports iter != iter.end()
+	constexpr bool
+	operator==(const ranges::sentinel_t<_View>& __i) const
+	{ return _M_start == __i; }
+
+	// Iterator to the start of the current cluster.
+	constexpr auto base() const { return _M_start; }
+
+	// The end of the underlying view (not the end of the current cluster!)
+	constexpr auto end() const { return _M_next.end(); }
+
+	// Field width of the first code point in the cluster.
+	constexpr int
+	width() const noexcept
+	{ return __field_width(_M_c); }
+
+      private:
+	ranges::iterator_t<_View> _M_start;
+	_U32_iterator _M_next;
+
+	// Implement the Grapheme Cluster Boundary Rules from Unicode Annex #29
+	// http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundary_Rules
+	// This implements the rules from TR29 revision 43 in Unicode 15.1.0.
+	// Return true if there is a break between code point with property p1
+	// and code point with property p2.
+	constexpr bool
+	_M_is_break(_Gcb_property __p1, _Gcb_property __p2,
+		    _U32_iterator __curr) const
+	{
+	  using enum _Gcb_property;
+
+	  if (__p1 == _Gcb_Control || __p1 == _Gcb_LF)
+	    return true; // Break after Control or LF.
+
+	  if (__p1 == _Gcb_CR)
+	    return __p2 != _Gcb_LF; // Do not break between a CR and LF.
+
+	  // Rule GB5
+	  if (__p2 == _Gcb_Control || __p2 == _Gcb_CR || __p2 == _Gcb_LF)
+	    return true; // Break before Control, CR or LF.
+
+	  // Rule GB6
+	  if (__p1 == _Gcb_L)
+	    switch (__p2)
+	    {
+	      case _Gcb_L:
+	      case _Gcb_V:
+	      case _Gcb_LV:
+	      case _Gcb_LVT:
+		return false; // Do not break Hangul syllable sequences.
+	      default:
+		return true;
+	      }
+
+	  // Rule GB7
+	  if (__p1 == _Gcb_LV || __p1 == _Gcb_V)
+	    switch (__p2)
+	    {
+	      case _Gcb_V:
+	      case _Gcb_T:
+		return false; // Do not break Hangul syllable sequences.
+	      default:
+		return true;
+	      }
+
+	  // Rule GB8
+	  if (__p1 == _Gcb_LVT || __p1 == _Gcb_T)
+	    return __p2 != _Gcb_T; // Do not break Hangul syllable sequences.
+
+	  // Rule GB9
+	  if (__p2 == _Gcb_Extend || __p2 == _Gcb_ZWJ)
+	    return false; // Do not break before extending characters or ZWJ.
+
+	  // The following GB9x rules only apply to extended grapheme clusters,
+	  // which is what the C++ standard uses (not legacy grapheme clusters).
+
+	  // Rule GB9a
+	  if (__p2 == _Gcb_SpacingMark)
+	    return false; // Do not break before SpacingMarks,
+	  // Rule GB9b
+	  if (__p1 == _Gcb_Prepend)
+	    return false; // or after Prepend characters.
+
+	  // Rule GB9c (Unicode 15.1.0)
+	  // Do not break within certain combinations with
+	  // Indic_Conjunct_Break (InCB)=Linker.
+	  if (_M_incb_linker_seen
+		&& __incb_property(*_M_start) == _InCB::_Consonant
+		&& __incb_property(*__curr) == _InCB::_Consonant)
+	    {
+	      // Match [_M_start, __curr] against regular expression
+	      // Consonant ([Extend Linker]* Linker [Extend Linker]* Consonant)+
+	      bool __have_linker = false;
+	      auto __it = _M_start;
+	      while (++__it != __curr)
+		{
+		  if (__is_incb_linker(*__it))
+		    __have_linker = true;
+		  else
+		    {
+		      auto __incb = __incb_property(*__it);
+		      if (__incb == _InCB::_Consonant)
+			__have_linker = false;
+		      else if (__incb != _InCB::_Extend)
+			break;
+		    }
+		}
+	      if (__it == __curr && __have_linker)
+		return false;
+	    }
+
+	  // Rule GB11
+	  // Do not break within emoji modifier sequences
+	  // or emoji zwj sequences.
+	  if (__p1 == _Gcb_ZWJ && _M_xpicto_seq_state == _XPicto::_Matched)
+	    return false;
+
+	  // Rules GB12 and GB13
+	  // Do not break within emoji flag sequences. That is, do not break
+	  // between regional indicator (RI) symbols if there is an odd number
+	  // of RI characters before the break point.
+	  if (__p1 == _Gcb_property::_Gcb_Regional_Indicator && __p1 == __p2)
+	    return (_M_RI_count & 1) == 0;
+
+	  // Rule GB999
+	  return true; // Otherwise, break everywhere.
+	}
+      };
+
+      _Iterator _M_begin;
+    };
+
+} // namespace __v15_1_0
+
+  // Return the field width of a string.
+  template<typename _CharT>
+    constexpr size_t
+    __field_width(basic_string_view<_CharT> __s)
+    {
+      if (__s.empty()) [[unlikely]]
+	return 0;
+      _Grapheme_cluster_view __gc(__s);
+      auto __it = __gc.begin();
+      const auto __end = __gc.end();
+      size_t __n = __it.width();
+      while (++__it != __end)
+	__n += __it.width();
+      return __n;
+    }
+
+  // Truncate a string to at most `__max` field width units, and return the
+  // resulting field width.
+  template<typename _CharT>
+    constexpr size_t
+    __truncate(basic_string_view<_CharT>& __s, size_t __max)
+    {
+      if (__s.empty()) [[unlikely]]
+	return 0;
+
+      _Grapheme_cluster_view __gc(__s);
+      auto __it = __gc.begin();
+      const auto __end = __gc.end();
+      size_t __n = __it.width();
+      if (__n > __max)
+	{
+	  __s = {};
+	  return 0;
+	}
+      while (++__it != __end)
+	{
+	  size_t __n2 = __n + __it.width();
+	  if (__n2 > __max)
+	    {
+	      __s = basic_string_view<_CharT>(__s.begin(), __it.base());
+	      return __n;
+	    }
+	  __n = __n2;
+	}
+      return __n;
+    }
+
+    template<typename _CharT>
+    consteval bool
+    __literal_encoding_is_unicode()
+    {
+      if constexpr (is_same_v<_CharT, char8_t>)
+	return true;
+      else if constexpr (is_same_v<_CharT, char16_t>)
+	return true;
+      else if constexpr (is_same_v<_CharT, char32_t>)
+	  return true;
+
+      const char* __enc = "";
+
+#ifdef __GNUC_EXECUTION_CHARSET_NAME
+      auto __remove_iso10646_prefix = [](const char* __s) {
+	// GNU iconv allows "ISO-10646/" prefix (case-insensitive).
+	if (__s[0] == 'I' || __s[0] == 'i')
+	  if (__s[1] == 'S' || __s[1] == 's')
+	    if (__s[2] == 'O' || __s[2] == 'o')
+	      if (string_view(__s + 3).starts_with("-10646/"))
+		return __s + 10;
+	return __s;
+      };
+
+      if constexpr (is_same_v<_CharT, char>)
+	__enc = __remove_iso10646_prefix(__GNUC_EXECUTION_CHARSET_NAME);
+# if defined _GLIBCXX_USE_WCHAR_T && defined __GNUC_WIDE_EXECUTION_CHARSET_NAME
+      else
+	__enc = __remove_iso10646_prefix(__GNUC_WIDE_EXECUTION_CHARSET_NAME);
+# endif
+
+      if ((__enc[0] == 'U' || __enc[0] == 'u')
+	    && (__enc[1] == 'T' || __enc[1] == 't')
+	    && (__enc[2] == 'F' || __enc[2] == 'f'))
+	{
+	  __enc += 3;
+	  if (__enc[0] == '-')
+	    ++__enc;
+	  if (__enc[0] == '8')
+	    return __enc[1] == '\0' || string_view(__enc + 1) == "//";
+	  else if constexpr (!is_same_v<_CharT, char>)
+	    {
+	      string_view __s(__enc);
+	      if (__s.ends_with("//"))
+		__s.remove_suffix(2);
+	      return __s == "16" || __s == "32";
+	    }
+	}
+#elif defined __clang_literal_encoding__
+      if constexpr (is_same_v<_CharT, char>)
+	__enc = __clang_literal_encoding__;
+# if defined _GLIBCXX_USE_WCHAR_T && defined __clang_wide_literal_encoding__
+      else
+	__enc = __clang_wide_literal_encoding__;
+# endif
+      // Clang accepts "-fexec-charset=utf-8" but the macro is still uppercase.
+      string_view __s(__enc);
+      if (__s == "UTF-8")
+	return true;
+      else if constexpr (!is_same_v<_CharT, char>)
+	return __s == "UTF-16" || __s == "UTF-32";
+#endif
+
+      return false;
+    }
+
+  consteval bool
+  __literal_encoding_is_utf8()
+  { return __literal_encoding_is_unicode<char>(); }
+
+} // namespace __unicode
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+#endif // C++20
+#endif // _GLIBCXX_UNICODE_H
diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format
index 886c7c64c14067a0fdda719bed1869519825e1dc..0d9f70ee555cff16f6dc530f02aada597e7a53a2 100644
--- a/libstdc++-v3/include/std/format
+++ b/libstdc++-v3/include/std/format
@@ -51,9 +51,11 @@
 #include <string>
 #include <variant>	       // monostate (TODO: move to bits/utility.h?)
 #include <bits/ranges_base.h>  // input_range, range_reference_t
+#include <bits/ranges_util.h>  // subrange
 #include <bits/ranges_algobase.h> // ranges::copy
 #include <bits/stl_iterator.h> // back_insert_iterator
 #include <bits/stl_pair.h>     // __is_pair
+#include <bits/unicode.h>      // __is_scalar_value, _Utf_view, etc.
 #include <bits/utility.h>      // tuple_size_v
 #include <ext/numeric_traits.h> // __int_traits
 
@@ -347,44 +349,6 @@ namespace __format
     _WP_from_arg // Use a formatting argument for width/prec.
   };
 
-  consteval bool
-  __literal_encoding_is_utf8()
-  {
-#ifdef __GNUC_EXECUTION_CHARSET_NAME
-    const char* __enc = __GNUC_EXECUTION_CHARSET_NAME;
-    // GNU iconv allows "ISO-10646/" prefix (case-insensitive).
-    if (__enc[0] == 'I' || __enc[0] == 'i')
-      {
-	if ((__enc[1] == 'S' || __enc[1] == 's')
-	      && (__enc[2] == 'O' || __enc[2] == 'o'))
-	  {
-	    __enc += 3;
-	    if (string_view(__enc).starts_with("-10646/"))
-	      __enc += 7;
-	    else
-	      return false;
-	  }
-	else
-	  return false;
-      }
-
-    if ((__enc[0] == 'U' || __enc[0] == 'u')
-	  && (__enc[1] == 'T' || __enc[1] == 't')
-	  && (__enc[2] == 'F' || __enc[2] == 'f'))
-      {
-	__enc += 3;
-	if (__enc[0] == '-')
-	  ++__enc;
-	if (__enc[0] == '8')
-	  return __enc[1] == '\0' || string_view(__enc + 1) == "//";
-      }
-#elif defined __clang_literal_encoding__
-    // Clang accepts "-fexec-charset=utf-8" but the macro is still uppercase.
-    return string_view(__clang_literal_encoding__) == "UTF-8";
-#endif
-    return false;
-  }
-
   template<typename _Context>
     size_t
     __int_from_arg(const basic_format_arg<_Context>& __arg);
@@ -408,7 +372,7 @@ namespace __format
       _Pres_type _M_type : 4;
       unsigned short _M_width;
       unsigned short _M_prec;
-      _CharT _M_fill = ' ';
+      char32_t _M_fill = ' ';
 
       using iterator = typename basic_string_view<_CharT>::iterator;
 
@@ -430,17 +394,32 @@ namespace __format
       {
 	if (*__first != '{')
 	  {
-	    // TODO: accept any UCS scalar value as fill character.
-	    // If narrow source encoding is UTF-8 then accept multibyte char.
-	    if (__last - __first >= 2)
+	    using namespace __unicode;
+	    if constexpr (__literal_encoding_is_unicode<_CharT>())
 	      {
-		if (_Align __align = _S_align(__first[1]))
+		// Accept any UCS scalar value as fill character.
+		_Utf32_view __uv(ranges::subrange(__first, __last));
+		if (!__uv.empty())
 		  {
-		    _M_fill = *__first;
-		    _M_align = __align;
-		    return __first + 2;
+		    auto __beg = __uv.begin();
+		    char32_t __c = *__beg++;
+		    if (__is_scalar_value(__c))
+		      if (auto __next = __beg.base(); __next != __last)
+			if (_Align __align = _S_align(*__next))
+			  {
+			    _M_fill = __c;
+			    _M_align = __align;
+			    return ++__next;
+			  }
 		  }
 	      }
+	    else if (__last - __first >= 2)
+	      if (_Align __align = _S_align(__first[1]))
+		{
+		  _M_fill = *__first;
+		  _M_align = __align;
+		  return __first + 2;
+		}
 
 	    if (_Align __align = _S_align(__first[0]))
 	      {
@@ -647,7 +626,7 @@ namespace __format
   template<typename _Out, typename _CharT>
     _Out
     __write_padded(_Out __out, basic_string_view<_CharT> __str,
-		   _Align __align, size_t __nfill, _CharT __fill_char)
+		   _Align __align, size_t __nfill, char32_t __fill_char)
     {
       const size_t __buflen = 0x20;
       _CharT __padding_chars[__buflen];
@@ -685,12 +664,30 @@ namespace __format
 	  __r = __nfill;
 	  __max = __r;
 	}
+
+      using namespace __unicode;
+      if constexpr (__literal_encoding_is_unicode<_CharT>())
+	if (!__is_single_code_unit<_CharT>(__fill_char)) [[unlikely]]
+	  {
+	    // Encode fill char as multiple code units of type _CharT.
+	    const char32_t __arr[1]{ __fill_char };
+	    _Utf_view<_CharT, const char32_t(&)[1]> __v(__arr);
+	    basic_string<_CharT> __padstr(__v.begin(), __v.end());
+	    __padding = __padstr;
+	    while (__l-- > 0)
+	      __out = __format::__write(std::move(__out), __padding);
+	    __out = __format::__write(std::move(__out), __str);
+	    while (__r-- > 0)
+	      __out = __format::__write(std::move(__out), __padding);
+	    return __out;
+	  }
+
       if (__max < __buflen)
 	__padding.remove_suffix(__buflen - __max);
       else
 	__max = __buflen;
-      char_traits<_CharT>::assign(__padding_chars, __max, __fill_char);
 
+      char_traits<_CharT>::assign(__padding_chars, __max, __fill_char);
       __pad(__l, __out);
       __out = __format::__write(std::move(__out), __str);
       __pad(__r, __out);
@@ -871,16 +868,21 @@ namespace __format
 		&& _M_spec._M_prec_kind == _WP_none)
 	    return __format::__write(__fc.out(), __s);
 
-	  size_t __estimated_width = __s.size(); // TODO: Unicode-aware estim.
-
-	  if (_M_spec._M_prec_kind != _WP_none)
+	  size_t __estimated_width;
+	  if constexpr (__unicode::__literal_encoding_is_unicode<_CharT>())
 	    {
-	      size_t __prec = _M_spec._M_get_precision(__fc);
-	      if (__estimated_width > __prec)
+	      if (_M_spec._M_prec_kind != _WP_none)
 		{
-		  __s = __s.substr(0, __prec); // TODO: do not split code points
-		  __estimated_width = __prec;
+		  size_t __prec = _M_spec._M_get_precision(__fc);
+		  __estimated_width = __unicode::__truncate(__s, __prec);
 		}
+	      else
+		__estimated_width = __unicode::__field_width(__s);
+	    }
+	  else
+	    {
+	      __s = __s.substr(0, _M_spec._M_get_precision(__fc));
+	      __estimated_width = __s.size();
 	    }
 
 	  return __format::__write_padded_as_spec(__s, __estimated_width,
@@ -1222,7 +1224,7 @@ namespace __format
 	  if (__width <= __str.size())
 	    return __format::__write(__fc.out(), __str);
 
-	  _CharT __fill_char = _M_spec._M_fill;
+	  char32_t __fill_char = _M_spec._M_fill;
 	  _Align __align = _M_spec._M_align;
 
 	  size_t __nfill = __width - __str.size();
@@ -1687,7 +1689,7 @@ namespace __format
 	  if (__width <= __str.size())
 	    return __format::__write(__fc.out(), __str);
 
-	  _CharT __fill_char = _M_spec._M_fill;
+	  char32_t __fill_char = _M_spec._M_fill;
 	  _Align __align = _M_spec._M_align;
 
 	  size_t __nfill = __width - __str.size();
diff --git a/libstdc++-v3/include/std/ostream b/libstdc++-v3/include/std/ostream
index a4ef92c04b235e9422b4b44291d5c242355d2b15..4dff0cf645dded4721c14995eba2a08cc46d0078 100644
--- a/libstdc++-v3/include/std/ostream
+++ b/libstdc++-v3/include/std/ostream
@@ -982,7 +982,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     print(ostream& __os, format_string<_Args...> __fmt, _Args&&... __args)
     {
       auto __fmtargs = std::make_format_args(std::forward<_Args>(__args)...);
-      if constexpr (__format::__literal_encoding_is_utf8())
+      if constexpr (__unicode::__literal_encoding_is_utf8())
 	std::vprint_unicode(__os, __fmt.get(), __fmtargs);
       else
 	std::vprint_nonunicode(__os, __fmt.get(), __fmtargs);
diff --git a/libstdc++-v3/include/std/print b/libstdc++-v3/include/std/print
index bb029610d700bfe825f9be45675933b42b07f5a4..f44256c5dcacce769472a1d26aaaec1a2a21f2d3 100644
--- a/libstdc++-v3/include/std/print
+++ b/libstdc++-v3/include/std/print
@@ -104,7 +104,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     print(FILE* __stream, format_string<_Args...> __fmt, _Args&&... __args)
     {
       auto __fmtargs = std::make_format_args(std::forward<_Args>(__args)...);
-      if constexpr (__format::__literal_encoding_is_utf8())
+      if constexpr (__unicode::__literal_encoding_is_utf8())
 	std::vprint_unicode(__stream, __fmt.get(), __fmtargs);
       else
 	std::vprint_nonunicode(__stream, __fmt.get(), __fmtargs);
diff --git a/libstdc++-v3/src/c++23/print.cc b/libstdc++-v3/src/c++23/print.cc
index be9762bbfdcc2ba30d3dad988b4a6c62bd02b3c7..aceca6f9139bb35d660c71e187368e1e7afe9908 100644
--- a/libstdc++-v3/src/c++23/print.cc
+++ b/libstdc++-v3/src/c++23/print.cc
@@ -162,7 +162,7 @@ namespace
 		    }
 		  continue;
 		}
-	      else if (byte < 0xC2)
+	      else if (byte < 0xC2) [[unlikely]]
 		{
 		  if constexpr (transcode)
 		    out.push_back(0xFFFD);
diff --git a/libstdc++-v3/testsuite/ext/unicode/view.cc b/libstdc++-v3/testsuite/ext/unicode/view.cc
new file mode 100644
index 0000000000000000000000000000000000000000..eaab5c79edcfbd4d2ba603d3d2df6cd459dc6485
--- /dev/null
+++ b/libstdc++-v3/testsuite/ext/unicode/view.cc
@@ -0,0 +1,102 @@
+// { dg-do run { target c++20 } }
+#include <format>
+#include <string_view>
+#include <ranges>
+#include <testsuite_hooks.h>
+
+namespace uc = std::__unicode;
+using namespace std::string_view_literals;
+
+constexpr void
+test_utf8_to_utf8()
+{
+  const std::u8string_view s8 = u8"£🇬🇧 €🇪🇺 æбçδé ♠♥♦♣ 🤡";
+  uc::_Utf8_view v(s8);
+  VERIFY( std::ranges::distance(v) == s8.size() );
+  VERIFY( std::ranges::equal(v,  s8) );
+}
+
+constexpr void
+test_utf8_to_utf16()
+{
+  const std::u8string_view s8  = u8"£🇬🇧 €🇪🇺 æбçδé ♠♥♦♣ 🤡";
+  const std::u16string_view s16 = u"£🇬🇧 €🇪🇺 æбçδé ♠♥♦♣ 🤡";
+  uc::_Utf16_view v(s8);
+  VERIFY( std::ranges::distance(v) == s16.size() );
+  VERIFY( std::ranges::equal(v,  s16) );
+}
+
+constexpr void
+test_utf8_to_utf32()
+{
+  const auto s8 = u8"£🇬🇧 €🇪🇺 æбçδé ♠♥♦♣ 🤡"sv;
+  const auto s32 = U"£🇬🇧 €🇪🇺 æбçδé ♠♥♦♣ 🤡"sv;
+  uc::_Utf32_view v(s8);
+  VERIFY( std::ranges::distance(v) == s32.size() );
+  VERIFY( std::ranges::equal(v,  s32) );
+}
+
+constexpr void
+test_illformed_utf8()
+{
+  uc::_Utf32_view v("\xa3 10.99 \xee \xdd"sv);
+  VERIFY( std::ranges::equal(v, U"\uFFFD 10.99 \uFFFD \uFFFD"sv) );
+
+  uc::_Utf16_view v2(" \xf8\x80\x80\x80 "sv);
+  VERIFY( std::ranges::distance(v2) == 6 );
+  VERIFY( std::ranges::equal(v2, U" \uFFFD\uFFFD\uFFFD\uFFFD "sv) );
+
+  // Examples of U+FFFD substitution from Unicode standard.
+  uc::_Utf8_view v3("\xc0\xaf\xe0\x80\xbf\xf0\x81\x82\x41"sv); // Table 3-8
+  VERIFY( std::ranges::equal(v3, u8"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\x41"sv) );
+  uc::_Utf8_view v4("\xed\xa0\x80\xed\xbf\xbf\xed\xaf\x41"sv); // Table 3-9
+  VERIFY( std::ranges::equal(v4, u8"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\x41"sv) );
+  uc::_Utf8_view v5("\xf4\x91\x92\x93\xff\x41\x80\xbf\x42"sv); // Table 3-10
+  VERIFY( std::ranges::equal(v5, u8"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\x41\uFFFD\uFFFD\x42"sv) );
+  uc::_Utf8_view v6("\xe1\x80\xe2\xf0\x91\x92\xf1\xbf\x41"sv); // Table 3-11
+  VERIFY( std::ranges::equal(v6, u8"\uFFFD\uFFFD\uFFFD\uFFFD\x41"sv) );
+}
+
+constexpr void
+test_illformed_utf16()
+{
+  std::u16string_view s = u"\N{CLOWN FACE}";
+  std::u16string_view r = u"\uFFFD";
+  VERIFY( std::ranges::equal(uc::_Utf16_view(s.substr(0, 1)), r) );
+  VERIFY( std::ranges::equal(uc::_Utf16_view(s.substr(1, 1)), r) );
+  std::array s2{ s[0], s[0] };
+  VERIFY( std::ranges::equal(uc::_Utf16_view(s2), u"\uFFFD\uFFFD"sv) );
+  std::array s3{ s[0], s[0], s[1] };
+  VERIFY( std::ranges::equal(uc::_Utf16_view(s3), u"\uFFFD\N{CLOWN FACE}"sv) );
+  std::array s4{ s[1], s[0] };
+  VERIFY( std::ranges::equal(uc::_Utf16_view(s4), u"\uFFFD\uFFFD"sv) );
+  std::array s5{ s[1], s[0], s[1] };
+  VERIFY( std::ranges::equal(uc::_Utf16_view(s5), u"\uFFFD\N{CLOWN FACE}"sv) );
+}
+
+constexpr void
+test_illformed_utf32()
+{
+  std::u32string_view s = U"\x110000";
+  VERIFY( std::ranges::equal(uc::_Utf32_view(s), U"\uFFFD"sv) );
+  s = U"\xFFFFFF";
+  VERIFY( std::ranges::equal(uc::_Utf32_view(s), U"\uFFFD"sv) );
+  s = U"\xFFFFFFF0";
+  VERIFY( std::ranges::equal(uc::_Utf32_view(s), U"\uFFFD"sv) );
+}
+
+int main()
+{
+  auto run_tests = []{
+    test_utf8_to_utf8();
+    test_utf8_to_utf16();
+    test_utf8_to_utf32();
+    test_illformed_utf8();
+    test_illformed_utf16();
+    test_illformed_utf32();
+    return true;
+  };
+
+  VERIFY( run_tests() );
+  static_assert( run_tests() );
+}
diff --git a/libstdc++-v3/testsuite/std/format/functions/format.cc b/libstdc++-v3/testsuite/std/format/functions/format.cc
index 6bf7a126ed1375a47333b61aceafe5e3f0157b74..6320e20170cbdd434fadf65205a17ca939ef3ca8 100644
--- a/libstdc++-v3/testsuite/std/format/functions/format.cc
+++ b/libstdc++-v3/testsuite/std/format/functions/format.cc
@@ -1,3 +1,4 @@
+// { dg-options "-fexec-charset=UTF-8" }
 // { dg-do run { target c++20 } }
 // { dg-add-options no_pch }
 
@@ -97,6 +98,18 @@ test_std_examples()
     VERIFY(s5 == "   120");
     string s6 = format("{:6}", true);
     VERIFY(s6 == "true  ");
+    string s7 = format("{:*<6.3}", "123456");
+    VERIFY( s7 == "123***" );
+    string s8 = format("{:02}", 1234);
+    VERIFY( s8 == "1234" );
+    string s9 = format("{:*<}", "12");
+    VERIFY( s9 == "12" );
+    string sA = format("{:*<6}", "12345678");
+    VERIFY( sA == "12345678" );
+    string sB = format("{:🤡^6}", "x");
+    VERIFY( sB == "🤡🤡x🤡🤡🤡" );
+    string sC = format("{:*^6}", "🤡🤡🤡");
+    VERIFY( sC == "🤡🤡🤡" );
   }
 
   // sign
@@ -458,6 +471,59 @@ test_bool()
   VERIFY( s == "0 0x1 0X0" );
 }
 
+void
+test_unicode()
+{
+  // Similar to sC example in test_std_examples, but not from the standard.
+  // Verify that the character "🤡" has estimated field width 2,
+  // rather than estimated field width equal to strlen("🤡"), which would be 4.
+  std::string sC = std::format("{:*<3}", "🤡");
+  VERIFY( sC == "🤡*" );
+
+  // Verify that "£" has estimated field width 1, not strlen("£") == 2.
+  std::string sL = std::format("{:*<3}", "£");
+  VERIFY( sL == "£**" );
+
+  // Verify that precision is measured in field width units (column positions)
+  // not bytes. The result should contain complete Unicode characters, not be
+  // truncated in the middle of a multibyte UTF-8 sequence. The string "£" has
+  // field width 1 despite being 2 bytes, and the string "🤡" has field width 2
+  // and so cannot be formatted into a replacement field using .1 precision.
+  std::string sP = std::format("{:1.1} {:*<1.1}", "£", "🤡");
+  VERIFY( sP == "£ *" );
+  sP = std::format("{:*<2.1} {:*<2.1}", "£", "🤡");
+  VERIFY( sP == "£* **" );
+
+  // Verify field width handling for extended grapheme clusters,
+  // and that a cluster gets output as a single item, not truncated.
+  std::string sG = std::format("{:*>2.1}", "\u006f\u0302\u0323!");
+  VERIFY( sG == "*\u006f\u0302\u0323" );
+
+  // Examples from P1868R2
+  // https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1868r2.html
+  const char* inputs[][2] = {
+    {"\x41",         "    \u0041"},
+    {"\xC3\x81",     "    \u00c1"},
+    {"\x41\xCC\x81", "    \u0041\u0301"},
+    {"\xc4\xb2", "    \u0132"},
+    {"\xce\x94", "    \u0394"},
+    {"\xd0\xa9", "    \u0429"},
+    {"\xd7\x90", "    \u05D0"},
+    {"\xd8\xb4", "    \u0634"},
+    {"\xe3\x80\x89", "   \u3009"},
+    {"\xe7\x95\x8c", "   \u754C"},
+    {"\xf0\x9f\xa6\x84", "   \U0001F984"},
+    {"\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d"
+     "\xf0\x9f\x91\xa7\xe2\x80\x8d\xf0\x9f\x91\xa6",
+     "   \U0001F468\u200D\U0001F469\u200D\U0001F467\u200D\U0001F466" }
+  };
+  for (auto& input : inputs)
+  {
+    std::string sA = std::format("{:>5}", input[0]);
+    VERIFY( sA == input[1] );
+  }
+}
+
 int main()
 {
   test_no_args();
@@ -472,4 +538,5 @@ int main()
   test_p1652r1();
   test_pointer();
   test_bool();
+  test_unicode();
 }