module Text.StringPrep ( StringPrepProfile(..), Range, Map, range, single, runStringPrep, a1, b1,b2, c11,c12,c21,c22,c3,c4,c5,c6,c7,c8,c9 ) where import Data.Text (Text) import qualified Data.Text as Text import Data.Text.ICU.Normalize (NormalizationMode(NFKC),normalize) import qualified Data.Set as Set import qualified Data.Map as Map import Text.CharRanges data StringPrepProfile = Profile { StringPrepProfile -> [Map] maps :: [Map], StringPrepProfile -> Bool shouldNormalize :: Bool, StringPrepProfile -> [Prohibited] prohibited :: [Prohibited], StringPrepProfile -> Bool shouldCheckBidi :: Bool } runStringPrep :: StringPrepProfile -> Text -> Maybe Text runStringPrep :: StringPrepProfile -> Text -> Maybe Text runStringPrep (Profile maps :: [Map] maps norm :: Bool norm prohibs :: [Prohibited] prohibs bidi :: Bool bidi) s :: Text s = Maybe Text result where prohibited :: CharSet prohibited = Prohibited -> CharSet toSet (Prohibited -> CharSet) -> Prohibited -> CharSet forall a b. (a -> b) -> a -> b $ [Prohibited] -> Prohibited forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [Prohibited] prohibs mapped :: Text mapped = (Map -> Text -> Text) -> Text -> [Map] -> Text forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b foldr Map -> Text -> Text Text.concatMap Text s [Map] maps normed :: Text normed = if Bool norm then NormalizationMode -> Text -> Text normalize NormalizationMode NFKC Text mapped else Text mapped bidid :: Maybe Text bidid = if Bool bidi then if Text -> Bool checkBidi Text normed then Text -> Maybe Text forall a. a -> Maybe a Just Text normed else Maybe Text forall a. Maybe a Nothing else Text -> Maybe Text forall a. a -> Maybe a Just Text normed result :: Maybe Text result = case Maybe Text bidid of Nothing -> Maybe Text forall a. Maybe a Nothing Just t :: Text t -> if (Char -> Bool) -> Text -> Bool Text.any (\x :: Char x -> Char -> CharSet -> Bool member Char x CharSet prohibited) Text t then Maybe Text forall a. Maybe a Nothing else Text -> Maybe Text forall a. a -> Maybe a Just Text t checkBidi :: Text -> Bool checkBidi :: Text -> Bool checkBidi t :: Text t = Bool -> Bool not Bool containsRandL Bool -> Bool -> Bool || Bool -> Bool not Bool containsAL Bool -> Bool -> Bool && Bool firstRandL Bool -> Bool -> Bool && Bool lastRandL where containsRandL :: Bool containsRandL = (Char -> Bool) -> Text -> Bool Text.any (\x :: Char x -> Char -> CharSet -> Bool member Char x CharSet randl) Text t containsAL :: Bool containsAL = (Char -> Bool) -> Text -> Bool Text.any (\x :: Char x -> Char -> CharSet -> Bool member Char x CharSet l) Text t firstRandL :: Bool firstRandL = Char -> CharSet -> Bool member (Text -> Char Text.head Text t) CharSet randl lastRandL :: Bool lastRandL = Char -> CharSet -> Bool member (Text -> Char Text.last Text t) CharSet randl type Map = Char -> Text type Prohibited = [Range] b1 :: Map b1 :: Map b1 c :: Char c = if Char c Char -> Set Char -> Bool forall a. Ord a => a -> Set a -> Bool `Set.member` Set Char mapToNothings then Text Text.empty else Map Text.singleton Char c mapToNothings :: Set.Set Char mapToNothings :: Set Char mapToNothings = [Char] -> Set Char forall a. Eq a => [a] -> Set a Set.fromAscList ['\x00AD', '\x034F', '\x1806', '\x180B', '\x180C','\x180D', '\x200B', '\x200C', '\x200D', '\x2060', '\xFE00', '\xFE01', '\xFE02','\xFE03', '\xFE04', '\xFE05', '\xFE06', '\xFE07', '\xFE08', '\xFE09', '\xFE0A', '\xFE0B', '\xFE0C', '\xFE0D', '\xFE0E', '\xFE0F', '\xFEFF'] b2 :: Map b2 :: Map b2 c :: Char c = case Char -> Map Char Text -> Maybe Text forall k a. Ord k => k -> Map k a -> Maybe a Map.lookup Char c Map Char Text b2map of Nothing -> Map Text.singleton Char c Just t :: Text t -> Text t c11 :: [Range] c11 :: Prohibited c11 = [Char -> Range single ' '] c12 :: [Range] c12 :: Prohibited c12 = (Char -> Range) -> [Char] -> Prohibited forall a b. (a -> b) -> [a] -> [b] map Char -> Range single ['\x00A0','\x1680','\x2000','\x2001','\x2002','\x2003','\x2004','\x2005','\x2006','\x2007','\x2008','\x2009','\x200A','\x200B','\x202F','\x205F','\x3000'] c21 :: [Range] c21 :: Prohibited c21 = [Char -> Char -> Range range '\x0' '\x1f', Char -> Range single '\x7f'] c22 :: [Range] c22 :: Prohibited c22 = [ Char -> Char -> Range range '\x80' '\x9f', Char -> Range single '\x6dd', Char -> Range single '\x070F', Char -> Range single '\x180E', Char -> Range single '\x200C', Char -> Range single '\x200D', Char -> Range single '\x2028', Char -> Range single '\x2029', Char -> Range single '\x2060', Char -> Range single '\x2061', Char -> Range single '\x2062', Char -> Range single '\x2063', Char -> Char -> Range range '\x206a' '\x206f', Char -> Range single '\xfeff', Char -> Char -> Range range '\xfff9' '\xfffc', Char -> Char -> Range range '\x1d173' '\x1d17a'] c3 :: [Range] c3 :: Prohibited c3 = [ Char -> Char -> Range range '\xe000' '\xf8ff', Char -> Char -> Range range '\xf0000' '\xffffd', Char -> Char -> Range range '\x100000' '\x10fffd'] c4 :: [Range] c4 :: Prohibited c4 = [ Char -> Char -> Range range '\xFDD0' '\xFDEF', Char -> Char -> Range range '\xFFFE' '\xFFFF', Char -> Char -> Range range '\x1FFFE' '\x1FFFF', Char -> Char -> Range range '\x2FFFE' '\x2FFFF', Char -> Char -> Range range '\x3FFFE' '\x3FFFF', Char -> Char -> Range range '\x4FFFE' '\x4FFFF', Char -> Char -> Range range '\x5FFFE' '\x5FFFF', Char -> Char -> Range range '\x6FFFE' '\x6FFFF', Char -> Char -> Range range '\x7FFFE' '\x7FFFF', Char -> Char -> Range range '\x8FFFE' '\x8FFFF', Char -> Char -> Range range '\x9FFFE' '\x9FFFF', Char -> Char -> Range range '\xAFFFE' '\xAFFFF', Char -> Char -> Range range '\xBFFFE' '\xBFFFF', Char -> Char -> Range range '\xCFFFE' '\xCFFFF', Char -> Char -> Range range '\xDFFFE' '\xDFFFF', Char -> Char -> Range range '\xEFFFE' '\xEFFFF', Char -> Char -> Range range '\xFFFFE' '\xFFFFF', Char -> Char -> Range range '\x10FFFE' '\x10FFFF'] c5 :: [Range] c5 :: Prohibited c5 = [Char -> Char -> Range range '\xd800' '\xdfff'] c6 :: [Range] c6 :: Prohibited c6 = [Char -> Char -> Range range '\xfff9' '\xfffd'] c7 :: [Range] c7 :: Prohibited c7 = [Char -> Char -> Range range '\x2ff0' '\x2ffb'] c8 :: [Range] c8 :: Prohibited c8 = [ Char -> Range single '\x340', Char -> Range single '\x341', Char -> Range single '\x200e', Char -> Range single '\x200f', Char -> Char -> Range range '\x202a' '\x202e', Char -> Char -> Range range '\x206a' '\x206f'] c9 :: [Range] c9 :: Prohibited c9 = [Char -> Range single '\xe0001', Char -> Char -> Range range '\xe0020' '\xe007f'] randl :: CharSet randl :: CharSet randl = Prohibited -> CharSet toSet [ Char -> Range single '\x05BE', Char -> Range single '\x05C0', Char -> Range single '\x05C3', Char -> Char -> Range range '\x05D0' '\x05EA', Char -> Char -> Range range '\x05F0' '\x05F4', Char -> Range single '\x061B', Char -> Range single '\x061F', Char -> Char -> Range range '\x0621' '\x063A', Char -> Char -> Range range '\x0640' '\x064A', Char -> Char -> Range range '\x066D' '\x066F', Char -> Char -> Range range '\x0671' '\x06D5', Char -> Range single '\x06DD', Char -> Char -> Range range '\x06E5' '\x06E6', Char -> Char -> Range range '\x06FA' '\x06FE', Char -> Char -> Range range '\x0700' '\x070D', Char -> Range single '\x0710', Char -> Char -> Range range '\x0712' '\x072C', Char -> Char -> Range range '\x0780' '\x07A5', Char -> Range single '\x07B1', Char -> Range single '\x200F', Char -> Range single '\xFB1D', Char -> Char -> Range range '\xFB1F' '\xFB28', Char -> Char -> Range range '\xFB2A' '\xFB36', Char -> Char -> Range range '\xFB38' '\xFB3C', Char -> Range single '\xFB3E', Char -> Char -> Range range '\xFB40' '\xFB41', Char -> Char -> Range range '\xFB43' '\xFB44', Char -> Char -> Range range '\xFB46' '\xFBB1', Char -> Char -> Range range '\xFBD3' '\xFD3D', Char -> Char -> Range range '\xFD50' '\xFD8F', Char -> Char -> Range range '\xFD92' '\xFDC7', Char -> Char -> Range range '\xFDF0' '\xFDFC', Char -> Char -> Range range '\xFE70' '\xFE74', Char -> Char -> Range range '\xFE76' '\xFEFC'] l :: CharSet l :: CharSet l = Prohibited -> CharSet toSet [ Char -> Char -> Range range '\x0041' '\x005A', Char -> Char -> Range range '\x0061' '\x007A', Char -> Range single '\x00AA', Char -> Range single '\x00B5', Char -> Range single '\x00BA', Char -> Char -> Range range '\x00C0' '\x00D6', Char -> Char -> Range range '\x00D8' '\x00F6', Char -> Char -> Range range '\x00F8' '\x0220', Char -> Char -> Range range '\x0222' '\x0233', Char -> Char -> Range range '\x0250' '\x02AD', Char -> Char -> Range range '\x02B0' '\x02B8', Char -> Char -> Range range '\x02BB' '\x02C1', Char -> Char -> Range range '\x02D0' '\x02D1', Char -> Char -> Range range '\x02E0' '\x02E4', Char -> Range single '\x02EE', Char -> Range single '\x037A', Char -> Range single '\x0386', Char -> Char -> Range range '\x0388' '\x038A', Char -> Range single '\x038C', Char -> Char -> Range range '\x038E' '\x03A1', Char -> Char -> Range range '\x03A3' '\x03CE', Char -> Char -> Range range '\x03D0' '\x03F5', Char -> Char -> Range range '\x0400' '\x0482', Char -> Char -> Range range '\x048A' '\x04CE', Char -> Char -> Range range '\x04D0' '\x04F5', Char -> Char -> Range range '\x04F8' '\x04F9', Char -> Char -> Range range '\x0500' '\x050F', Char -> Char -> Range range '\x0531' '\x0556', Char -> Char -> Range range '\x0559' '\x055F', Char -> Char -> Range range '\x0561' '\x0587', Char -> Range single '\x0589', Char -> Range single '\x0903', Char -> Char -> Range range '\x0905' '\x0939', Char -> Char -> Range range '\x093D' '\x0940', Char -> Char -> Range range '\x0949' '\x094C', Char -> Range single '\x0950', Char -> Char -> Range range '\x0958' '\x0961', Char -> Char -> Range range '\x0964' '\x0970', Char -> Char -> Range range '\x0982' '\x0983', Char -> Char -> Range range '\x0985' '\x098C', Char -> Char -> Range range '\x098F' '\x0990', Char -> Char -> Range range '\x0993' '\x09A8', Char -> Char -> Range range '\x09AA' '\x09B0', Char -> Range single '\x09B2', Char -> Char -> Range range '\x09B6' '\x09B9', Char -> Char -> Range range '\x09BE' '\x09C0', Char -> Char -> Range range '\x09C7' '\x09C8', Char -> Char -> Range range '\x09CB' '\x09CC', Char -> Range single '\x09D7', Char -> Char -> Range range '\x09DC' '\x09DD', Char -> Char -> Range range '\x09DF' '\x09E1', Char -> Char -> Range range '\x09E6' '\x09F1', Char -> Char -> Range range '\x09F4' '\x09FA', Char -> Char -> Range range '\x0A05' '\x0A0A', Char -> Char -> Range range '\x0A0F' '\x0A10', Char -> Char -> Range range '\x0A13' '\x0A28', Char -> Char -> Range range '\x0A2A' '\x0A30', Char -> Char -> Range range '\x0A32' '\x0A33', Char -> Char -> Range range '\x0A35' '\x0A36', Char -> Char -> Range range '\x0A38' '\x0A39', Char -> Char -> Range range '\x0A3E' '\x0A40', Char -> Char -> Range range '\x0A59' '\x0A5C', Char -> Range single '\x0A5E', Char -> Char -> Range range '\x0A66' '\x0A6F', Char -> Char -> Range range '\x0A72' '\x0A74', Char -> Range single '\x0A83', Char -> Char -> Range range '\x0A85' '\x0A8B', Char -> Range single '\x0A8D', Char -> Char -> Range range '\x0A8F' '\x0A91', Char -> Char -> Range range '\x0A93' '\x0AA8', Char -> Char -> Range range '\x0AAA' '\x0AB0', Char -> Char -> Range range '\x0AB2' '\x0AB3', Char -> Char -> Range range '\x0AB5' '\x0AB9', Char -> Char -> Range range '\x0ABD' '\x0AC0', Char -> Range single '\x0AC9', Char -> Char -> Range range '\x0ACB' '\x0ACC', Char -> Range single '\x0AD0', Char -> Range single '\x0AE0', Char -> Char -> Range range '\x0AE6' '\x0AEF', Char -> Char -> Range range '\x0B02' '\x0B03', Char -> Char -> Range range '\x0B05' '\x0B0C', Char -> Char -> Range range '\x0B0F' '\x0B10', Char -> Char -> Range range '\x0B13' '\x0B28', Char -> Char -> Range range '\x0B2A' '\x0B30', Char -> Char -> Range range '\x0B32' '\x0B33', Char -> Char -> Range range '\x0B36' '\x0B39', Char -> Char -> Range range '\x0B3D' '\x0B3E', Char -> Range single '\x0B40', Char -> Char -> Range range '\x0B47' '\x0B48', Char -> Char -> Range range '\x0B4B' '\x0B4C', Char -> Range single '\x0B57', Char -> Char -> Range range '\x0B5C' '\x0B5D', Char -> Char -> Range range '\x0B5F' '\x0B61', Char -> Char -> Range range '\x0B66' '\x0B70', Char -> Range single '\x0B83', Char -> Char -> Range range '\x0B85' '\x0B8A', Char -> Char -> Range range '\x0B8E' '\x0B90', Char -> Char -> Range range '\x0B92' '\x0B95', Char -> Char -> Range range '\x0B99' '\x0B9A', Char -> Range single '\x0B9C', Char -> Char -> Range range '\x0B9E' '\x0B9F', Char -> Char -> Range range '\x0BA3' '\x0BA4', Char -> Char -> Range range '\x0BA8' '\x0BAA', Char -> Char -> Range range '\x0BAE' '\x0BB5', Char -> Char -> Range range '\x0BB7' '\x0BB9', Char -> Char -> Range range '\x0BBE' '\x0BBF', Char -> Char -> Range range '\x0BC1' '\x0BC2', Char -> Char -> Range range '\x0BC6' '\x0BC8', Char -> Char -> Range range '\x0BCA' '\x0BCC', Char -> Range single '\x0BD7', Char -> Char -> Range range '\x0BE7' '\x0BF2', Char -> Char -> Range range '\x0C01' '\x0C03', Char -> Char -> Range range '\x0C05' '\x0C0C', Char -> Char -> Range range '\x0C0E' '\x0C10', Char -> Char -> Range range '\x0C12' '\x0C28', Char -> Char -> Range range '\x0C2A' '\x0C33', Char -> Char -> Range range '\x0C35' '\x0C39', Char -> Char -> Range range '\x0C41' '\x0C44', Char -> Char -> Range range '\x0C60' '\x0C61', Char -> Char -> Range range '\x0C66' '\x0C6F', Char -> Char -> Range range '\x0C82' '\x0C83', Char -> Char -> Range range '\x0C85' '\x0C8C', Char -> Char -> Range range '\x0C8E' '\x0C90', Char -> Char -> Range range '\x0C92' '\x0CA8', Char -> Char -> Range range '\x0CAA' '\x0CB3', Char -> Char -> Range range '\x0CB5' '\x0CB9', Char -> Range single '\x0CBE', Char -> Char -> Range range '\x0CC0' '\x0CC4', Char -> Char -> Range range '\x0CC7' '\x0CC8', Char -> Char -> Range range '\x0CCA' '\x0CCB', Char -> Char -> Range range '\x0CD5' '\x0CD6', Char -> Range single '\x0CDE', Char -> Char -> Range range '\x0CE0' '\x0CE1', Char -> Char -> Range range '\x0CE6' '\x0CEF', Char -> Char -> Range range '\x0D02' '\x0D03', Char -> Char -> Range range '\x0D05' '\x0D0C', Char -> Char -> Range range '\x0D0E' '\x0D10', Char -> Char -> Range range '\x0D12' '\x0D28', Char -> Char -> Range range '\x0D2A' '\x0D39', Char -> Char -> Range range '\x0D3E' '\x0D40', Char -> Char -> Range range '\x0D46' '\x0D48', Char -> Char -> Range range '\x0D4A' '\x0D4C', Char -> Range single '\x0D57', Char -> Char -> Range range '\x0D60' '\x0D61', Char -> Char -> Range range '\x0D66' '\x0D6F', Char -> Char -> Range range '\x0D82' '\x0D83', Char -> Char -> Range range '\x0D85' '\x0D96', Char -> Char -> Range range '\x0D9A' '\x0DB1', Char -> Char -> Range range '\x0DB3' '\x0DBB', Char -> Range single '\x0DBD', Char -> Char -> Range range '\x0DC0' '\x0DC6', Char -> Char -> Range range '\x0DCF' '\x0DD1', Char -> Char -> Range range '\x0DD8' '\x0DDF', Char -> Char -> Range range '\x0DF2' '\x0DF4', Char -> Char -> Range range '\x0E01' '\x0E30', Char -> Char -> Range range '\x0E32' '\x0E33', Char -> Char -> Range range '\x0E40' '\x0E46', Char -> Char -> Range range '\x0E4F' '\x0E5B', Char -> Char -> Range range '\x0E81' '\x0E82', Char -> Range single '\x0E84', Char -> Char -> Range range '\x0E87' '\x0E88', Char -> Range single '\x0E8A', Char -> Range single '\x0E8D', Char -> Char -> Range range '\x0E94' '\x0E97', Char -> Char -> Range range '\x0E99' '\x0E9F', Char -> Char -> Range range '\x0EA1' '\x0EA3', Char -> Range single '\x0EA5', Char -> Range single '\x0EA7', Char -> Char -> Range range '\x0EAA' '\x0EAB', Char -> Char -> Range range '\x0EAD' '\x0EB0', Char -> Char -> Range range '\x0EB2' '\x0EB3', Char -> Range single '\x0EBD', Char -> Char -> Range range '\x0EC0' '\x0EC4', Char -> Range single '\x0EC6', Char -> Char -> Range range '\x0ED0' '\x0ED9', Char -> Char -> Range range '\x0EDC' '\x0EDD', Char -> Char -> Range range '\x0F00' '\x0F17', Char -> Char -> Range range '\x0F1A' '\x0F34', Char -> Range single '\x0F36', Char -> Range single '\x0F38', Char -> Char -> Range range '\x0F3E' '\x0F47', Char -> Char -> Range range '\x0F49' '\x0F6A', Char -> Range single '\x0F7F', Char -> Range single '\x0F85', Char -> Char -> Range range '\x0F88' '\x0F8B', Char -> Char -> Range range '\x0FBE' '\x0FC5', Char -> Char -> Range range '\x0FC7' '\x0FCC', Char -> Range single '\x0FCF', Char -> Char -> Range range '\x1000' '\x1021', Char -> Char -> Range range '\x1023' '\x1027', Char -> Char -> Range range '\x1029' '\x102A', Char -> Range single '\x102C', Char -> Range single '\x1031', Char -> Range single '\x1038', Char -> Char -> Range range '\x1040' '\x1057', Char -> Char -> Range range '\x10A0' '\x10C5', Char -> Char -> Range range '\x10D0' '\x10F8', Char -> Range single '\x10FB', Char -> Char -> Range range '\x1100' '\x1159', Char -> Char -> Range range '\x115F' '\x11A2', Char -> Char -> Range range '\x11A8' '\x11F9', Char -> Char -> Range range '\x1200' '\x1206', Char -> Char -> Range range '\x1208' '\x1246', Char -> Range single '\x1248', Char -> Char -> Range range '\x124A' '\x124D', Char -> Char -> Range range '\x1250' '\x1256', Char -> Range single '\x1258', Char -> Char -> Range range '\x125A' '\x125D', Char -> Char -> Range range '\x1260' '\x1286', Char -> Range single '\x1288', Char -> Char -> Range range '\x128A' '\x128D', Char -> Char -> Range range '\x1290' '\x12AE', Char -> Range single '\x12B0', Char -> Char -> Range range '\x12B2' '\x12B5', Char -> Char -> Range range '\x12B8' '\x12BE', Char -> Range single '\x12C0', Char -> Char -> Range range '\x12C2' '\x12C5', Char -> Char -> Range range '\x12C8' '\x12CE', Char -> Char -> Range range '\x12D0' '\x12D6', Char -> Char -> Range range '\x12D8' '\x12EE', Char -> Char -> Range range '\x12F0' '\x130E', Char -> Range single '\x1310', Char -> Char -> Range range '\x1312' '\x1315', Char -> Char -> Range range '\x1318' '\x131E', Char -> Char -> Range range '\x1320' '\x1346', Char -> Char -> Range range '\x1348' '\x135A', Char -> Char -> Range range '\x1361' '\x137C', Char -> Char -> Range range '\x13A0' '\x13F4', Char -> Char -> Range range '\x1401' '\x1676', Char -> Char -> Range range '\x1681' '\x169A', Char -> Char -> Range range '\x16A0' '\x16F0', Char -> Char -> Range range '\x1700' '\x170C', Char -> Char -> Range range '\x170E' '\x1711', Char -> Char -> Range range '\x1720' '\x1731', Char -> Char -> Range range '\x1735' '\x1736', Char -> Char -> Range range '\x1740' '\x1751', Char -> Char -> Range range '\x1760' '\x176C', Char -> Char -> Range range '\x176E' '\x1770', Char -> Char -> Range range '\x1780' '\x17B6', Char -> Char -> Range range '\x17BE' '\x17C5', Char -> Char -> Range range '\x17C7' '\x17C8', Char -> Char -> Range range '\x17D4' '\x17DA', Char -> Range single '\x17DC', Char -> Char -> Range range '\x17E0' '\x17E9', Char -> Char -> Range range '\x1810' '\x1819', Char -> Char -> Range range '\x1820' '\x1877', Char -> Char -> Range range '\x1880' '\x18A8', Char -> Char -> Range range '\x1E00' '\x1E9B', Char -> Char -> Range range '\x1EA0' '\x1EF9', Char -> Char -> Range range '\x1F00' '\x1F15', Char -> Char -> Range range '\x1F18' '\x1F1D', Char -> Char -> Range range '\x1F20' '\x1F45', Char -> Char -> Range range '\x1F48' '\x1F4D', Char -> Char -> Range range '\x1F50' '\x1F57', Char -> Range single '\x1F59', Char -> Range single '\x1F5B', Char -> Range single '\x1F5D', Char -> Char -> Range range '\x1F5F' '\x1F7D', Char -> Char -> Range range '\x1F80' '\x1FB4', Char -> Char -> Range range '\x1FB6' '\x1FBC', Char -> Range single '\x1FBE', Char -> Char -> Range range '\x1FC2' '\x1FC4', Char -> Char -> Range range '\x1FC6' '\x1FCC', Char -> Char -> Range range '\x1FD0' '\x1FD3', Char -> Char -> Range range '\x1FD6' '\x1FDB', Char -> Char -> Range range '\x1FE0' '\x1FEC', Char -> Char -> Range range '\x1FF2' '\x1FF4', Char -> Char -> Range range '\x1FF6' '\x1FFC', Char -> Range single '\x200E', Char -> Range single '\x2071', Char -> Range single '\x207F', Char -> Range single '\x2102', Char -> Range single '\x2107', Char -> Char -> Range range '\x210A' '\x2113', Char -> Range single '\x2115', Char -> Char -> Range range '\x2119' '\x211D', Char -> Range single '\x2124', Char -> Range single '\x2126', Char -> Range single '\x2128', Char -> Char -> Range range '\x212A' '\x212D', Char -> Char -> Range range '\x212F' '\x2131', Char -> Char -> Range range '\x2133' '\x2139', Char -> Char -> Range range '\x213D' '\x213F', Char -> Char -> Range range '\x2145' '\x2149', Char -> Char -> Range range '\x2160' '\x2183', Char -> Char -> Range range '\x2336' '\x237A', Char -> Range single '\x2395', Char -> Char -> Range range '\x249C' '\x24E9', Char -> Char -> Range range '\x3005' '\x3007', Char -> Char -> Range range '\x3021' '\x3029', Char -> Char -> Range range '\x3031' '\x3035', Char -> Char -> Range range '\x3038' '\x303C', Char -> Char -> Range range '\x3041' '\x3096', Char -> Char -> Range range '\x309D' '\x309F', Char -> Char -> Range range '\x30A1' '\x30FA', Char -> Char -> Range range '\x30FC' '\x30FF', Char -> Char -> Range range '\x3105' '\x312C', Char -> Char -> Range range '\x3131' '\x318E', Char -> Char -> Range range '\x3190' '\x31B7', Char -> Char -> Range range '\x31F0' '\x321C', Char -> Char -> Range range '\x3220' '\x3243', Char -> Char -> Range range '\x3260' '\x327B', Char -> Char -> Range range '\x327F' '\x32B0', Char -> Char -> Range range '\x32C0' '\x32CB', Char -> Char -> Range range '\x32D0' '\x32FE', Char -> Char -> Range range '\x3300' '\x3376', Char -> Char -> Range range '\x337B' '\x33DD', Char -> Char -> Range range '\x33E0' '\x33FE', Char -> Char -> Range range '\x3400' '\x4DB5', Char -> Char -> Range range '\x4E00' '\x9FA5', Char -> Char -> Range range '\xA000' '\xA48C', Char -> Char -> Range range '\xAC00' '\xD7A3', Char -> Char -> Range range '\xD800' '\xFA2D', Char -> Char -> Range range '\xFA30' '\xFA6A', Char -> Char -> Range range '\xFB00' '\xFB06', Char -> Char -> Range range '\xFB13' '\xFB17', Char -> Char -> Range range '\xFF21' '\xFF3A', Char -> Char -> Range range '\xFF41' '\xFF5A', Char -> Char -> Range range '\xFF66' '\xFFBE', Char -> Char -> Range range '\xFFC2' '\xFFC7', Char -> Char -> Range range '\xFFCA' '\xFFCF', Char -> Char -> Range range '\xFFD2' '\xFFD7', Char -> Char -> Range range '\xFFDA' '\xFFDC', Char -> Char -> Range range '\x10300' '\x1031E', Char -> Char -> Range range '\x10320' '\x10323', Char -> Char -> Range range '\x10330' '\x1034A', Char -> Char -> Range range '\x10400' '\x10425', Char -> Char -> Range range '\x10428' '\x1044D', Char -> Char -> Range range '\x1D000' '\x1D0F5', Char -> Char -> Range range '\x1D100' '\x1D126', Char -> Char -> Range range '\x1D12A' '\x1D166', Char -> Char -> Range range '\x1D16A' '\x1D172', Char -> Char -> Range range '\x1D183' '\x1D184', Char -> Char -> Range range '\x1D18C' '\x1D1A9', Char -> Char -> Range range '\x1D1AE' '\x1D1DD', Char -> Char -> Range range '\x1D400' '\x1D454', Char -> Char -> Range range '\x1D456' '\x1D49C', Char -> Char -> Range range '\x1D49E' '\x1D49F', Char -> Range single '\x1D4A2', Char -> Char -> Range range '\x1D4A5' '\x1D4A6', Char -> Char -> Range range '\x1D4A9' '\x1D4AC', Char -> Char -> Range range '\x1D4AE' '\x1D4B9', Char -> Range single '\x1D4BB', Char -> Char -> Range range '\x1D4BD' '\x1D4C0', Char -> Char -> Range range '\x1D4C2' '\x1D4C3', Char -> Char -> Range range '\x1D4C5' '\x1D505', Char -> Char -> Range range '\x1D507' '\x1D50A', Char -> Char -> Range range '\x1D50D' '\x1D514', Char -> Char -> Range range '\x1D516' '\x1D51C', Char -> Char -> Range range '\x1D51E' '\x1D539', Char -> Char -> Range range '\x1D53B' '\x1D53E', Char -> Char -> Range range '\x1D540' '\x1D544', Char -> Range single '\x1D546', Char -> Char -> Range range '\x1D54A' '\x1D550', Char -> Char -> Range range '\x1D552' '\x1D6A3', Char -> Char -> Range range '\x1D6A8' '\x1D7C9', Char -> Char -> Range range '\x20000' '\x2A6D6', Char -> Char -> Range range '\x2F800' '\x2FA1D', Char -> Char -> Range range '\xF0000' '\xFFFFD', Char -> Char -> Range range '\x100000' '\x10FFFD'] b2map :: Map.Map Char Text b2map :: Map Char Text b2map = [(Char, Text)] -> Map Char Text forall k a. Eq k => [(k, a)] -> Map k a Map.fromAscList ([(Char, Text)] -> Map Char Text) -> ([(Char, [Char])] -> [(Char, Text)]) -> [(Char, [Char])] -> Map Char Text forall b c a. (b -> c) -> (a -> b) -> a -> c . ((Char, [Char]) -> (Char, Text)) -> [(Char, [Char])] -> [(Char, Text)] forall a b. (a -> b) -> [a] -> [b] map (\(x :: Char x,y :: [Char] y) -> (Char x, [Char] -> Text Text.pack [Char] y)) ([(Char, [Char])] -> Map Char Text) -> [(Char, [Char])] -> Map Char Text forall a b. (a -> b) -> a -> b $ [ ('\x0041', "\x0061"), ('\x0042', "\x0062"), ('\x0043', "\x0063"), ('\x0044', "\x0064"), ('\x0045', "\x0065"), ('\x0046', "\x0066"), ('\x0047', "\x0067"), ('\x0048', "\x0068"), ('\x0049', "\x0069"), ('\x004A', "\x006A"), ('\x004B', "\x006B"), ('\x004C', "\x006C"), ('\x004D', "\x006D"), ('\x004E', "\x006E"), ('\x004F', "\x006F"), ('\x0050', "\x0070"), ('\x0051', "\x0071"), ('\x0052', "\x0072"), ('\x0053', "\x0073"), ('\x0054', "\x0074"), ('\x0055', "\x0075"), ('\x0056', "\x0076"), ('\x0057', "\x0077"), ('\x0058', "\x0078"), ('\x0059', "\x0079"), ('\x005A', "\x007A"), ('\x00B5', "\x03BC"), ('\x00C0', "\x00E0"), ('\x00C1', "\x00E1"), ('\x00C2', "\x00E2"), ('\x00C3', "\x00E3"), ('\x00C4', "\x00E4"), ('\x00C5', "\x00E5"), ('\x00C6', "\x00E6"), ('\x00C7', "\x00E7"), ('\x00C8', "\x00E8"), ('\x00C9', "\x00E9"), ('\x00CA', "\x00EA"), ('\x00CB', "\x00EB"), ('\x00CC', "\x00EC"), ('\x00CD', "\x00ED"), ('\x00CE', "\x00EE"), ('\x00CF', "\x00EF"), ('\x00D0', "\x00F0"), ('\x00D1', "\x00F1"), ('\x00D2', "\x00F2"), ('\x00D3', "\x00F3"), ('\x00D4', "\x00F4"), ('\x00D5', "\x00F5"), ('\x00D6', "\x00F6"), ('\x00D8', "\x00F8"), ('\x00D9', "\x00F9"), ('\x00DA', "\x00FA"), ('\x00DB', "\x00FB"), ('\x00DC', "\x00FC"), ('\x00DD', "\x00FD"), ('\x00DE', "\x00FE"), ('\x00DF', "\x0073\x0073"), ('\x0100', "\x0101"), ('\x0102', "\x0103"), ('\x0104', "\x0105"), ('\x0106', "\x0107"), ('\x0108', "\x0109"), ('\x010A', "\x010B"), ('\x010C', "\x010D"), ('\x010E', "\x010F"), ('\x0110', "\x0111"), ('\x0112', "\x0113"), ('\x0114', "\x0115"), ('\x0116', "\x0117"), ('\x0118', "\x0119"), ('\x011A', "\x011B"), ('\x011C', "\x011D"), ('\x011E', "\x011F"), ('\x0120', "\x0121"), ('\x0122', "\x0123"), ('\x0124', "\x0125"), ('\x0126', "\x0127"), ('\x0128', "\x0129"), ('\x012A', "\x012B"), ('\x012C', "\x012D"), ('\x012E', "\x012F"), ('\x0130', "\x0069\x0307"), ('\x0132', "\x0133"), ('\x0134', "\x0135"), ('\x0136', "\x0137"), ('\x0139', "\x013A"), ('\x013B', "\x013C"), ('\x013D', "\x013E"), ('\x013F', "\x0140"), ('\x0141', "\x0142"), ('\x0143', "\x0144"), ('\x0145', "\x0146"), ('\x0147', "\x0148"), ('\x0149', "\x02BC\x006E"), ('\x014A', "\x014B"), ('\x014C', "\x014D"), ('\x014E', "\x014F"), ('\x0150', "\x0151"), ('\x0152', "\x0153"), ('\x0154', "\x0155"), ('\x0156', "\x0157"), ('\x0158', "\x0159"), ('\x015A', "\x015B"), ('\x015C', "\x015D"), ('\x015E', "\x015F"), ('\x0160', "\x0161"), ('\x0162', "\x0163"), ('\x0164', "\x0165"), ('\x0166', "\x0167"), ('\x0168', "\x0169"), ('\x016A', "\x016B"), ('\x016C', "\x016D"), ('\x016E', "\x016F"), ('\x0170', "\x0171"), ('\x0172', "\x0173"), ('\x0174', "\x0175"), ('\x0176', "\x0177"), ('\x0178', "\x00FF"), ('\x0179', "\x017A"), ('\x017B', "\x017C"), ('\x017D', "\x017E"), ('\x017F', "\x0073"), ('\x0181', "\x0253"), ('\x0182', "\x0183"), ('\x0184', "\x0185"), ('\x0186', "\x0254"), ('\x0187', "\x0188"), ('\x0189', "\x0256"), ('\x018A', "\x0257"), ('\x018B', "\x018C"), ('\x018E', "\x01DD"), ('\x018F', "\x0259"), ('\x0190', "\x025B"), ('\x0191', "\x0192"), ('\x0193', "\x0260"), ('\x0194', "\x0263"), ('\x0196', "\x0269"), ('\x0197', "\x0268"), ('\x0198', "\x0199"), ('\x019C', "\x026F"), ('\x019D', "\x0272"), ('\x019F', "\x0275"), ('\x01A0', "\x01A1"), ('\x01A2', "\x01A3"), ('\x01A4', "\x01A5"), ('\x01A6', "\x0280"), ('\x01A7', "\x01A8"), ('\x01A9', "\x0283"), ('\x01AC', "\x01AD"), ('\x01AE', "\x0288"), ('\x01AF', "\x01B0"), ('\x01B1', "\x028A"), ('\x01B2', "\x028B"), ('\x01B3', "\x01B4"), ('\x01B5', "\x01B6"), ('\x01B7', "\x0292"), ('\x01B8', "\x01B9"), ('\x01BC', "\x01BD"), ('\x01C4', "\x01C6"), ('\x01C5', "\x01C6"), ('\x01C7', "\x01C9"), ('\x01C8', "\x01C9"), ('\x01CA', "\x01CC"), ('\x01CB', "\x01CC"), ('\x01CD', "\x01CE"), ('\x01CF', "\x01D0"), ('\x01D1', "\x01D2"), ('\x01D3', "\x01D4"), ('\x01D5', "\x01D6"), ('\x01D7', "\x01D8"), ('\x01D9', "\x01DA"), ('\x01DB', "\x01DC"), ('\x01DE', "\x01DF"), ('\x01E0', "\x01E1"), ('\x01E2', "\x01E3"), ('\x01E4', "\x01E5"), ('\x01E6', "\x01E7"), ('\x01E8', "\x01E9"), ('\x01EA', "\x01EB"), ('\x01EC', "\x01ED"), ('\x01EE', "\x01EF"), ('\x01F0', "\x006A\x030C"), ('\x01F1', "\x01F3"), ('\x01F2', "\x01F3"), ('\x01F4', "\x01F5"), ('\x01F6', "\x0195"), ('\x01F7', "\x01BF"), ('\x01F8', "\x01F9"), ('\x01FA', "\x01FB"), ('\x01FC', "\x01FD"), ('\x01FE', "\x01FF"), ('\x0200', "\x0201"), ('\x0202', "\x0203"), ('\x0204', "\x0205"), ('\x0206', "\x0207"), ('\x0208', "\x0209"), ('\x020A', "\x020B"), ('\x020C', "\x020D"), ('\x020E', "\x020F"), ('\x0210', "\x0211"), ('\x0212', "\x0213"), ('\x0214', "\x0215"), ('\x0216', "\x0217"), ('\x0218', "\x0219"), ('\x021A', "\x021B"), ('\x021C', "\x021D"), ('\x021E', "\x021F"), ('\x0220', "\x019E"), ('\x0222', "\x0223"), ('\x0224', "\x0225"), ('\x0226', "\x0227"), ('\x0228', "\x0229"), ('\x022A', "\x022B"), ('\x022C', "\x022D"), ('\x022E', "\x022F"), ('\x0230', "\x0231"), ('\x0232', "\x0233"), ('\x0345', "\x03B9"), ('\x037A', "\x0020\x03B9"), ('\x0386', "\x03AC"), ('\x0388', "\x03AD"), ('\x0389', "\x03AE"), ('\x038A', "\x03AF"), ('\x038C', "\x03CC"), ('\x038E', "\x03CD"), ('\x038F', "\x03CE"), ('\x0390', "\x03B9\x0308\x0301"), ('\x0391', "\x03B1"), ('\x0392', "\x03B2"), ('\x0393', "\x03B3"), ('\x0394', "\x03B4"), ('\x0395', "\x03B5"), ('\x0396', "\x03B6"), ('\x0397', "\x03B7"), ('\x0398', "\x03B8"), ('\x0399', "\x03B9"), ('\x039A', "\x03BA"), ('\x039B', "\x03BB"), ('\x039C', "\x03BC"), ('\x039D', "\x03BD"), ('\x039E', "\x03BE"), ('\x039F', "\x03BF"), ('\x03A0', "\x03C0"), ('\x03A1', "\x03C1"), ('\x03A3', "\x03C3"), ('\x03A4', "\x03C4"), ('\x03A5', "\x03C5"), ('\x03A6', "\x03C6"), ('\x03A7', "\x03C7"), ('\x03A8', "\x03C8"), ('\x03A9', "\x03C9"), ('\x03AA', "\x03CA"), ('\x03AB', "\x03CB"), ('\x03B0', "\x03C5\x0308\x0301"), ('\x03C2', "\x03C3"), ('\x03D0', "\x03B2"), ('\x03D1', "\x03B8"), ('\x03D2', "\x03C5"), ('\x03D3', "\x03CD"), ('\x03D4', "\x03CB"), ('\x03D5', "\x03C6"), ('\x03D6', "\x03C0"), ('\x03D8', "\x03D9"), ('\x03DA', "\x03DB"), ('\x03DC', "\x03DD"), ('\x03DE', "\x03DF"), ('\x03E0', "\x03E1"), ('\x03E2', "\x03E3"), ('\x03E4', "\x03E5"), ('\x03E6', "\x03E7"), ('\x03E8', "\x03E9"), ('\x03EA', "\x03EB"), ('\x03EC', "\x03ED"), ('\x03EE', "\x03EF"), ('\x03F0', "\x03BA"), ('\x03F1', "\x03C1"), ('\x03F2', "\x03C3"), ('\x03F4', "\x03B8"), ('\x03F5', "\x03B5"), ('\x0400', "\x0450"), ('\x0401', "\x0451"), ('\x0402', "\x0452"), ('\x0403', "\x0453"), ('\x0404', "\x0454"), ('\x0405', "\x0455"), ('\x0406', "\x0456"), ('\x0407', "\x0457"), ('\x0408', "\x0458"), ('\x0409', "\x0459"), ('\x040A', "\x045A"), ('\x040B', "\x045B"), ('\x040C', "\x045C"), ('\x040D', "\x045D"), ('\x040E', "\x045E"), ('\x040F', "\x045F"), ('\x0410', "\x0430"), ('\x0411', "\x0431"), ('\x0412', "\x0432"), ('\x0413', "\x0433"), ('\x0414', "\x0434"), ('\x0415', "\x0435"), ('\x0416', "\x0436"), ('\x0417', "\x0437"), ('\x0418', "\x0438"), ('\x0419', "\x0439"), ('\x041A', "\x043A"), ('\x041B', "\x043B"), ('\x041C', "\x043C"), ('\x041D', "\x043D"), ('\x041E', "\x043E"), ('\x041F', "\x043F"), ('\x0420', "\x0440"), ('\x0421', "\x0441"), ('\x0422', "\x0442"), ('\x0423', "\x0443"), ('\x0424', "\x0444"), ('\x0425', "\x0445"), ('\x0426', "\x0446"), ('\x0427', "\x0447"), ('\x0428', "\x0448"), ('\x0429', "\x0449"), ('\x042A', "\x044A"), ('\x042B', "\x044B"), ('\x042C', "\x044C"), ('\x042D', "\x044D"), ('\x042E', "\x044E"), ('\x042F', "\x044F"), ('\x0460', "\x0461"), ('\x0462', "\x0463"), ('\x0464', "\x0465"), ('\x0466', "\x0467"), ('\x0468', "\x0469"), ('\x046A', "\x046B"), ('\x046C', "\x046D"), ('\x046E', "\x046F"), ('\x0470', "\x0471"), ('\x0472', "\x0473"), ('\x0474', "\x0475"), ('\x0476', "\x0477"), ('\x0478', "\x0479"), ('\x047A', "\x047B"), ('\x047C', "\x047D"), ('\x047E', "\x047F"), ('\x0480', "\x0481"), ('\x048A', "\x048B"), ('\x048C', "\x048D"), ('\x048E', "\x048F"), ('\x0490', "\x0491"), ('\x0492', "\x0493"), ('\x0494', "\x0495"), ('\x0496', "\x0497"), ('\x0498', "\x0499"), ('\x049A', "\x049B"), ('\x049C', "\x049D"), ('\x049E', "\x049F"), ('\x04A0', "\x04A1"), ('\x04A2', "\x04A3"), ('\x04A4', "\x04A5"), ('\x04A6', "\x04A7"), ('\x04A8', "\x04A9"), ('\x04AA', "\x04AB"), ('\x04AC', "\x04AD"), ('\x04AE', "\x04AF"), ('\x04B0', "\x04B1"), ('\x04B2', "\x04B3"), ('\x04B4', "\x04B5"), ('\x04B6', "\x04B7"), ('\x04B8', "\x04B9"), ('\x04BA', "\x04BB"), ('\x04BC', "\x04BD"), ('\x04BE', "\x04BF"), ('\x04C1', "\x04C2"), ('\x04C3', "\x04C4"), ('\x04C5', "\x04C6"), ('\x04C7', "\x04C8"), ('\x04C9', "\x04CA"), ('\x04CB', "\x04CC"), ('\x04CD', "\x04CE"), ('\x04D0', "\x04D1"), ('\x04D2', "\x04D3"), ('\x04D4', "\x04D5"), ('\x04D6', "\x04D7"), ('\x04D8', "\x04D9"), ('\x04DA', "\x04DB"), ('\x04DC', "\x04DD"), ('\x04DE', "\x04DF"), ('\x04E0', "\x04E1"), ('\x04E2', "\x04E3"), ('\x04E4', "\x04E5"), ('\x04E6', "\x04E7"), ('\x04E8', "\x04E9"), ('\x04EA', "\x04EB"), ('\x04EC', "\x04ED"), ('\x04EE', "\x04EF"), ('\x04F0', "\x04F1"), ('\x04F2', "\x04F3"), ('\x04F4', "\x04F5"), ('\x04F8', "\x04F9"), ('\x0500', "\x0501"), ('\x0502', "\x0503"), ('\x0504', "\x0505"), ('\x0506', "\x0507"), ('\x0508', "\x0509"), ('\x050A', "\x050B"), ('\x050C', "\x050D"), ('\x050E', "\x050F"), ('\x0531', "\x0561"), ('\x0532', "\x0562"), ('\x0533', "\x0563"), ('\x0534', "\x0564"), ('\x0535', "\x0565"), ('\x0536', "\x0566"), ('\x0537', "\x0567"), ('\x0538', "\x0568"), ('\x0539', "\x0569"), ('\x053A', "\x056A"), ('\x053B', "\x056B"), ('\x053C', "\x056C"), ('\x053D', "\x056D"), ('\x053E', "\x056E"), ('\x053F', "\x056F"), ('\x0540', "\x0570"), ('\x0541', "\x0571"), ('\x0542', "\x0572"), ('\x0543', "\x0573"), ('\x0544', "\x0574"), ('\x0545', "\x0575"), ('\x0546', "\x0576"), ('\x0547', "\x0577"), ('\x0548', "\x0578"), ('\x0549', "\x0579"), ('\x054A', "\x057A"), ('\x054B', "\x057B"), ('\x054C', "\x057C"), ('\x054D', "\x057D"), ('\x054E', "\x057E"), ('\x054F', "\x057F"), ('\x0550', "\x0580"), ('\x0551', "\x0581"), ('\x0552', "\x0582"), ('\x0553', "\x0583"), ('\x0554', "\x0584"), ('\x0555', "\x0585"), ('\x0556', "\x0586"), ('\x0587', "\x0565\x0582"), ('\x1E00', "\x1E01"), ('\x1E02', "\x1E03"), ('\x1E04', "\x1E05"), ('\x1E06', "\x1E07"), ('\x1E08', "\x1E09"), ('\x1E0A', "\x1E0B"), ('\x1E0C', "\x1E0D"), ('\x1E0E', "\x1E0F"), ('\x1E10', "\x1E11"), ('\x1E12', "\x1E13"), ('\x1E14', "\x1E15"), ('\x1E16', "\x1E17"), ('\x1E18', "\x1E19"), ('\x1E1A', "\x1E1B"), ('\x1E1C', "\x1E1D"), ('\x1E1E', "\x1E1F"), ('\x1E20', "\x1E21"), ('\x1E22', "\x1E23"), ('\x1E24', "\x1E25"), ('\x1E26', "\x1E27"), ('\x1E28', "\x1E29"), ('\x1E2A', "\x1E2B"), ('\x1E2C', "\x1E2D"), ('\x1E2E', "\x1E2F"), ('\x1E30', "\x1E31"), ('\x1E32', "\x1E33"), ('\x1E34', "\x1E35"), ('\x1E36', "\x1E37"), ('\x1E38', "\x1E39"), ('\x1E3A', "\x1E3B"), ('\x1E3C', "\x1E3D"), ('\x1E3E', "\x1E3F"), ('\x1E40', "\x1E41"), ('\x1E42', "\x1E43"), ('\x1E44', "\x1E45"), ('\x1E46', "\x1E47"), ('\x1E48', "\x1E49"), ('\x1E4A', "\x1E4B"), ('\x1E4C', "\x1E4D"), ('\x1E4E', "\x1E4F"), ('\x1E50', "\x1E51"), ('\x1E52', "\x1E53"), ('\x1E54', "\x1E55"), ('\x1E56', "\x1E57"), ('\x1E58', "\x1E59"), ('\x1E5A', "\x1E5B"), ('\x1E5C', "\x1E5D"), ('\x1E5E', "\x1E5F"), ('\x1E60', "\x1E61"), ('\x1E62', "\x1E63"), ('\x1E64', "\x1E65"), ('\x1E66', "\x1E67"), ('\x1E68', "\x1E69"), ('\x1E6A', "\x1E6B"), ('\x1E6C', "\x1E6D"), ('\x1E6E', "\x1E6F"), ('\x1E70', "\x1E71"), ('\x1E72', "\x1E73"), ('\x1E74', "\x1E75"), ('\x1E76', "\x1E77"), ('\x1E78', "\x1E79"), ('\x1E7A', "\x1E7B"), ('\x1E7C', "\x1E7D"), ('\x1E7E', "\x1E7F"), ('\x1E80', "\x1E81"), ('\x1E82', "\x1E83"), ('\x1E84', "\x1E85"), ('\x1E86', "\x1E87"), ('\x1E88', "\x1E89"), ('\x1E8A', "\x1E8B"), ('\x1E8C', "\x1E8D"), ('\x1E8E', "\x1E8F"), ('\x1E90', "\x1E91"), ('\x1E92', "\x1E93"), ('\x1E94', "\x1E95"), ('\x1E96', "\x0068\x0331"), ('\x1E97', "\x0074\x0308"), ('\x1E98', "\x0077\x030A"), ('\x1E99', "\x0079\x030A"), ('\x1E9A', "\x0061\x02BE"), ('\x1E9B', "\x1E61"), ('\x1EA0', "\x1EA1"), ('\x1EA2', "\x1EA3"), ('\x1EA4', "\x1EA5"), ('\x1EA6', "\x1EA7"), ('\x1EA8', "\x1EA9"), ('\x1EAA', "\x1EAB"), ('\x1EAC', "\x1EAD"), ('\x1EAE', "\x1EAF"), ('\x1EB0', "\x1EB1"), ('\x1EB2', "\x1EB3"), ('\x1EB4', "\x1EB5"), ('\x1EB6', "\x1EB7"), ('\x1EB8', "\x1EB9"), ('\x1EBA', "\x1EBB"), ('\x1EBC', "\x1EBD"), ('\x1EBE', "\x1EBF"), ('\x1EC0', "\x1EC1"), ('\x1EC2', "\x1EC3"), ('\x1EC4', "\x1EC5"), ('\x1EC6', "\x1EC7"), ('\x1EC8', "\x1EC9"), ('\x1ECA', "\x1ECB"), ('\x1ECC', "\x1ECD"), ('\x1ECE', "\x1ECF"), ('\x1ED0', "\x1ED1"), ('\x1ED2', "\x1ED3"), ('\x1ED4', "\x1ED5"), ('\x1ED6', "\x1ED7"), ('\x1ED8', "\x1ED9"), ('\x1EDA', "\x1EDB"), ('\x1EDC', "\x1EDD"), ('\x1EDE', "\x1EDF"), ('\x1EE0', "\x1EE1"), ('\x1EE2', "\x1EE3"), ('\x1EE4', "\x1EE5"), ('\x1EE6', "\x1EE7"), ('\x1EE8', "\x1EE9"), ('\x1EEA', "\x1EEB"), ('\x1EEC', "\x1EED"), ('\x1EEE', "\x1EEF"), ('\x1EF0', "\x1EF1"), ('\x1EF2', "\x1EF3"), ('\x1EF4', "\x1EF5"), ('\x1EF6', "\x1EF7"), ('\x1EF8', "\x1EF9"), ('\x1F08', "\x1F00"), ('\x1F09', "\x1F01"), ('\x1F0A', "\x1F02"), ('\x1F0B', "\x1F03"), ('\x1F0C', "\x1F04"), ('\x1F0D', "\x1F05"), ('\x1F0E', "\x1F06"), ('\x1F0F', "\x1F07"), ('\x1F18', "\x1F10"), ('\x1F19', "\x1F11"), ('\x1F1A', "\x1F12"), ('\x1F1B', "\x1F13"), ('\x1F1C', "\x1F14"), ('\x1F1D', "\x1F15"), ('\x1F28', "\x1F20"), ('\x1F29', "\x1F21"), ('\x1F2A', "\x1F22"), ('\x1F2B', "\x1F23"), ('\x1F2C', "\x1F24"), ('\x1F2D', "\x1F25"), ('\x1F2E', "\x1F26"), ('\x1F2F', "\x1F27"), ('\x1F38', "\x1F30"), ('\x1F39', "\x1F31"), ('\x1F3A', "\x1F32"), ('\x1F3B', "\x1F33"), ('\x1F3C', "\x1F34"), ('\x1F3D', "\x1F35"), ('\x1F3E', "\x1F36"), ('\x1F3F', "\x1F37"), ('\x1F48', "\x1F40"), ('\x1F49', "\x1F41"), ('\x1F4A', "\x1F42"), ('\x1F4B', "\x1F43"), ('\x1F4C', "\x1F44"), ('\x1F4D', "\x1F45"), ('\x1F50', "\x03C5\x0313"), ('\x1F52', "\x03C5\x0313\x0300"), ('\x1F54', "\x03C5\x0313\x0301"), ('\x1F56', "\x03C5\x0313\x0342"), ('\x1F59', "\x1F51"), ('\x1F5B', "\x1F53"), ('\x1F5D', "\x1F55"), ('\x1F5F', "\x1F57"), ('\x1F68', "\x1F60"), ('\x1F69', "\x1F61"), ('\x1F6A', "\x1F62"), ('\x1F6B', "\x1F63"), ('\x1F6C', "\x1F64"), ('\x1F6D', "\x1F65"), ('\x1F6E', "\x1F66"), ('\x1F6F', "\x1F67"), ('\x1F80', "\x1F00\x03B9"), ('\x1F81', "\x1F01\x03B9"), ('\x1F82', "\x1F02\x03B9"), ('\x1F83', "\x1F03\x03B9"), ('\x1F84', "\x1F04\x03B9"), ('\x1F85', "\x1F05\x03B9"), ('\x1F86', "\x1F06\x03B9"), ('\x1F87', "\x1F07\x03B9"), ('\x1F88', "\x1F00\x03B9"), ('\x1F89', "\x1F01\x03B9"), ('\x1F8A', "\x1F02\x03B9"), ('\x1F8B', "\x1F03\x03B9"), ('\x1F8C', "\x1F04\x03B9"), ('\x1F8D', "\x1F05\x03B9"), ('\x1F8E', "\x1F06\x03B9"), ('\x1F8F', "\x1F07\x03B9"), ('\x1F90', "\x1F20\x03B9"), ('\x1F91', "\x1F21\x03B9"), ('\x1F92', "\x1F22\x03B9"), ('\x1F93', "\x1F23\x03B9"), ('\x1F94', "\x1F24\x03B9"), ('\x1F95', "\x1F25\x03B9"), ('\x1F96', "\x1F26\x03B9"), ('\x1F97', "\x1F27\x03B9"), ('\x1F98', "\x1F20\x03B9"), ('\x1F99', "\x1F21\x03B9"), ('\x1F9A', "\x1F22\x03B9"), ('\x1F9B', "\x1F23\x03B9"), ('\x1F9C', "\x1F24\x03B9"), ('\x1F9D', "\x1F25\x03B9"), ('\x1F9E', "\x1F26\x03B9"), ('\x1F9F', "\x1F27\x03B9"), ('\x1FA0', "\x1F60\x03B9"), ('\x1FA1', "\x1F61\x03B9"), ('\x1FA2', "\x1F62\x03B9"), ('\x1FA3', "\x1F63\x03B9"), ('\x1FA4', "\x1F64\x03B9"), ('\x1FA5', "\x1F65\x03B9"), ('\x1FA6', "\x1F66\x03B9"), ('\x1FA7', "\x1F67\x03B9"), ('\x1FA8', "\x1F60\x03B9"), ('\x1FA9', "\x1F61\x03B9"), ('\x1FAA', "\x1F62\x03B9"), ('\x1FAB', "\x1F63\x03B9"), ('\x1FAC', "\x1F64\x03B9"), ('\x1FAD', "\x1F65\x03B9"), ('\x1FAE', "\x1F66\x03B9"), ('\x1FAF', "\x1F67\x03B9"), ('\x1FB2', "\x1F70\x03B9"), ('\x1FB3', "\x03B1\x03B9"), ('\x1FB4', "\x03AC\x03B9"), ('\x1FB6', "\x03B1\x0342"), ('\x1FB7', "\x03B1\x0342\x03B9"), ('\x1FB8', "\x1FB0"), ('\x1FB9', "\x1FB1"), ('\x1FBA', "\x1F70"), ('\x1FBB', "\x1F71"), ('\x1FBC', "\x03B1\x03B9"), ('\x1FBE', "\x03B9"), ('\x1FC2', "\x1F74\x03B9"), ('\x1FC3', "\x03B7\x03B9"), ('\x1FC4', "\x03AE\x03B9"), ('\x1FC6', "\x03B7\x0342"), ('\x1FC7', "\x03B7\x0342\x03B9"), ('\x1FC8', "\x1F72"), ('\x1FC9', "\x1F73"), ('\x1FCA', "\x1F74"), ('\x1FCB', "\x1F75"), ('\x1FCC', "\x03B7\x03B9"), ('\x1FD2', "\x03B9\x0308\x0300"), ('\x1FD3', "\x03B9\x0308\x0301"), ('\x1FD6', "\x03B9\x0342"), ('\x1FD7', "\x03B9\x0308\x0342"), ('\x1FD8', "\x1FD0"), ('\x1FD9', "\x1FD1"), ('\x1FDA', "\x1F76"), ('\x1FDB', "\x1F77"), ('\x1FE2', "\x03C5\x0308\x0300"), ('\x1FE3', "\x03C5\x0308\x0301"), ('\x1FE4', "\x03C1\x0313"), ('\x1FE6', "\x03C5\x0342"), ('\x1FE7', "\x03C5\x0308\x0342"), ('\x1FE8', "\x1FE0"), ('\x1FE9', "\x1FE1"), ('\x1FEA', "\x1F7A"), ('\x1FEB', "\x1F7B"), ('\x1FEC', "\x1FE5"), ('\x1FF2', "\x1F7C\x03B9"), ('\x1FF3', "\x03C9\x03B9"), ('\x1FF4', "\x03CE\x03B9"), ('\x1FF6', "\x03C9\x0342"), ('\x1FF7', "\x03C9\x0342\x03B9"), ('\x1FF8', "\x1F78"), ('\x1FF9', "\x1F79"), ('\x1FFA', "\x1F7C"), ('\x1FFB', "\x1F7D"), ('\x1FFC', "\x03C9\x03B9"), ('\x20A8', "\x0072\x0073"), ('\x2102', "\x0063"), ('\x2103', "\x00B0\x0063"), ('\x2107', "\x025B"), ('\x2109', "\x00B0\x0066"), ('\x210B', "\x0068"), ('\x210C', "\x0068"), ('\x210D', "\x0068"), ('\x2110', "\x0069"), ('\x2111', "\x0069"), ('\x2112', "\x006C"), ('\x2115', "\x006E"), ('\x2116', "\x006E\x006F"), ('\x2119', "\x0070"), ('\x211A', "\x0071"), ('\x211B', "\x0072"), ('\x211C', "\x0072"), ('\x211D', "\x0072"), ('\x2120', "\x0073\x006D"), ('\x2121', "\x0074\x0065\x006C"), ('\x2122', "\x0074\x006D"), ('\x2124', "\x007A"), ('\x2126', "\x03C9"), ('\x2128', "\x007A"), ('\x212A', "\x006B"), ('\x212B', "\x00E5"), ('\x212C', "\x0062"), ('\x212D', "\x0063"), ('\x2130', "\x0065"), ('\x2131', "\x0066"), ('\x2133', "\x006D"), ('\x213E', "\x03B3"), ('\x213F', "\x03C0"), ('\x2145', "\x0064"), ('\x2160', "\x2170"), ('\x2161', "\x2171"), ('\x2162', "\x2172"), ('\x2163', "\x2173"), ('\x2164', "\x2174"), ('\x2165', "\x2175"), ('\x2166', "\x2176"), ('\x2167', "\x2177"), ('\x2168', "\x2178"), ('\x2169', "\x2179"), ('\x216A', "\x217A"), ('\x216B', "\x217B"), ('\x216C', "\x217C"), ('\x216D', "\x217D"), ('\x216E', "\x217E"), ('\x216F', "\x217F"), ('\x24B6', "\x24D0"), ('\x24B7', "\x24D1"), ('\x24B8', "\x24D2"), ('\x24B9', "\x24D3"), ('\x24BA', "\x24D4"), ('\x24BB', "\x24D5"), ('\x24BC', "\x24D6"), ('\x24BD', "\x24D7"), ('\x24BE', "\x24D8"), ('\x24BF', "\x24D9"), ('\x24C0', "\x24DA"), ('\x24C1', "\x24DB"), ('\x24C2', "\x24DC"), ('\x24C3', "\x24DD"), ('\x24C4', "\x24DE"), ('\x24C5', "\x24DF"), ('\x24C6', "\x24E0"), ('\x24C7', "\x24E1"), ('\x24C8', "\x24E2"), ('\x24C9', "\x24E3"), ('\x24CA', "\x24E4"), ('\x24CB', "\x24E5"), ('\x24CC', "\x24E6"), ('\x24CD', "\x24E7"), ('\x24CE', "\x24E8"), ('\x24CF', "\x24E9"), ('\x3371', "\x0068\x0070\x0061"), ('\x3373', "\x0061\x0075"), ('\x3375', "\x006F\x0076"), ('\x3380', "\x0070\x0061"), ('\x3381', "\x006E\x0061"), ('\x3382', "\x03BC\x0061"), ('\x3383', "\x006D\x0061"), ('\x3384', "\x006B\x0061"), ('\x3385', "\x006B\x0062"), ('\x3386', "\x006D\x0062"), ('\x3387', "\x0067\x0062"), ('\x338A', "\x0070\x0066"), ('\x338B', "\x006E\x0066"), ('\x338C', "\x03BC\x0066"), ('\x3390', "\x0068\x007A"), ('\x3391', "\x006B\x0068\x007A"), ('\x3392', "\x006D\x0068\x007A"), ('\x3393', "\x0067\x0068\x007A"), ('\x3394', "\x0074\x0068\x007A"), ('\x33A9', "\x0070\x0061"), ('\x33AA', "\x006B\x0070\x0061"), ('\x33AB', "\x006D\x0070\x0061"), ('\x33AC', "\x0067\x0070\x0061"), ('\x33B4', "\x0070\x0076"), ('\x33B5', "\x006E\x0076"), ('\x33B6', "\x03BC\x0076"), ('\x33B7', "\x006D\x0076"), ('\x33B8', "\x006B\x0076"), ('\x33B9', "\x006D\x0076"), ('\x33BA', "\x0070\x0077"), ('\x33BB', "\x006E\x0077"), ('\x33BC', "\x03BC\x0077"), ('\x33BD', "\x006D\x0077"), ('\x33BE', "\x006B\x0077"), ('\x33BF', "\x006D\x0077"), ('\x33C0', "\x006B\x03C9"), ('\x33C1', "\x006D\x03C9"), ('\x33C3', "\x0062\x0071"), ('\x33C6', "\x0063\x2215\x006B\x0067"), ('\x33C7', "\x0063\x006F\x002E"), ('\x33C8', "\x0064\x0062"), ('\x33C9', "\x0067\x0079"), ('\x33CB', "\x0068\x0070"), ('\x33CD', "\x006B\x006B"), ('\x33CE', "\x006B\x006D"), ('\x33D7', "\x0070\x0068"), ('\x33D9', "\x0070\x0070\x006D"), ('\x33DA', "\x0070\x0072"), ('\x33DC', "\x0073\x0076"), ('\x33DD', "\x0077\x0062"), ('\xFB00', "\x0066\x0066"), ('\xFB01', "\x0066\x0069"), ('\xFB02', "\x0066\x006C"), ('\xFB03', "\x0066\x0066\x0069"), ('\xFB04', "\x0066\x0066\x006C"), ('\xFB05', "\x0073\x0074"), ('\xFB06', "\x0073\x0074"), ('\xFB13', "\x0574\x0576"), ('\xFB14', "\x0574\x0565"), ('\xFB15', "\x0574\x056B"), ('\xFB16', "\x057E\x0576"), ('\xFB17', "\x0574\x056D"), ('\xFF21', "\xFF41"), ('\xFF22', "\xFF42"), ('\xFF23', "\xFF43"), ('\xFF24', "\xFF44"), ('\xFF25', "\xFF45"), ('\xFF26', "\xFF46"), ('\xFF27', "\xFF47"), ('\xFF28', "\xFF48"), ('\xFF29', "\xFF49"), ('\xFF2A', "\xFF4A"), ('\xFF2B', "\xFF4B"), ('\xFF2C', "\xFF4C"), ('\xFF2D', "\xFF4D"), ('\xFF2E', "\xFF4E"), ('\xFF2F', "\xFF4F"), ('\xFF30', "\xFF50"), ('\xFF31', "\xFF51"), ('\xFF32', "\xFF52"), ('\xFF33', "\xFF53"), ('\xFF34', "\xFF54"), ('\xFF35', "\xFF55"), ('\xFF36', "\xFF56"), ('\xFF37', "\xFF57"), ('\xFF38', "\xFF58"), ('\xFF39', "\xFF59"), ('\xFF3A', "\xFF5A"), ('\x10400', "\x10428"), ('\x10401', "\x10429"), ('\x10402', "\x1042A"), ('\x10403', "\x1042B"), ('\x10404', "\x1042C"), ('\x10405', "\x1042D"), ('\x10406', "\x1042E"), ('\x10407', "\x1042F"), ('\x10408', "\x10430"), ('\x10409', "\x10431"), ('\x1040A', "\x10432"), ('\x1040B', "\x10433"), ('\x1040C', "\x10434"), ('\x1040D', "\x10435"), ('\x1040E', "\x10436"), ('\x1040F', "\x10437"), ('\x10410', "\x10438"), ('\x10411', "\x10439"), ('\x10412', "\x1043A"), ('\x10413', "\x1043B"), ('\x10414', "\x1043C"), ('\x10415', "\x1043D"), ('\x10416', "\x1043E"), ('\x10417', "\x1043F"), ('\x10418', "\x10440"), ('\x10419', "\x10441"), ('\x1041A', "\x10442"), ('\x1041B', "\x10443"), ('\x1041C', "\x10444"), ('\x1041D', "\x10445"), ('\x1041E', "\x10446"), ('\x1041F', "\x10447"), ('\x10420', "\x10448"), ('\x10421', "\x10449"), ('\x10422', "\x1044A"), ('\x10423', "\x1044B"), ('\x10424', "\x1044C"), ('\x10425', "\x1044D"), ('\x1D400', "\x0061"), ('\x1D401', "\x0062"), ('\x1D402', "\x0063"), ('\x1D403', "\x0064"), ('\x1D404', "\x0065"), ('\x1D405', "\x0066"), ('\x1D406', "\x0067"), ('\x1D407', "\x0068"), ('\x1D408', "\x0069"), ('\x1D409', "\x006A"), ('\x1D40A', "\x006B"), ('\x1D40B', "\x006C"), ('\x1D40C', "\x006D"), ('\x1D40D', "\x006E"), ('\x1D40E', "\x006F"), ('\x1D40F', "\x0070"), ('\x1D410', "\x0071"), ('\x1D411', "\x0072"), ('\x1D412', "\x0073"), ('\x1D413', "\x0074"), ('\x1D414', "\x0075"), ('\x1D415', "\x0076"), ('\x1D416', "\x0077"), ('\x1D417', "\x0078"), ('\x1D418', "\x0079"), ('\x1D419', "\x007A"), ('\x1D434', "\x0061"), ('\x1D435', "\x0062"), ('\x1D436', "\x0063"), ('\x1D437', "\x0064"), ('\x1D438', "\x0065"), ('\x1D439', "\x0066"), ('\x1D43A', "\x0067"), ('\x1D43B', "\x0068"), ('\x1D43C', "\x0069"), ('\x1D43D', "\x006A"), ('\x1D43E', "\x006B"), ('\x1D43F', "\x006C"), ('\x1D440', "\x006D"), ('\x1D441', "\x006E"), ('\x1D442', "\x006F"), ('\x1D443', "\x0070"), ('\x1D444', "\x0071"), ('\x1D445', "\x0072"), ('\x1D446', "\x0073"), ('\x1D447', "\x0074"), ('\x1D448', "\x0075"), ('\x1D449', "\x0076"), ('\x1D44A', "\x0077"), ('\x1D44B', "\x0078"), ('\x1D44C', "\x0079"), ('\x1D44D', "\x007A"), ('\x1D468', "\x0061"), ('\x1D469', "\x0062"), ('\x1D46A', "\x0063"), ('\x1D46B', "\x0064"), ('\x1D46C', "\x0065"), ('\x1D46D', "\x0066"), ('\x1D46E', "\x0067"), ('\x1D46F', "\x0068"), ('\x1D470', "\x0069"), ('\x1D471', "\x006A"), ('\x1D472', "\x006B"), ('\x1D473', "\x006C"), ('\x1D474', "\x006D"), ('\x1D475', "\x006E"), ('\x1D476', "\x006F"), ('\x1D477', "\x0070"), ('\x1D478', "\x0071"), ('\x1D479', "\x0072"), ('\x1D47A', "\x0073"), ('\x1D47B', "\x0074"), ('\x1D47C', "\x0075"), ('\x1D47D', "\x0076"), ('\x1D47E', "\x0077"), ('\x1D47F', "\x0078"), ('\x1D480', "\x0079"), ('\x1D481', "\x007A"), ('\x1D49C', "\x0061"), ('\x1D49E', "\x0063"), ('\x1D49F', "\x0064"), ('\x1D4A2', "\x0067"), ('\x1D4A5', "\x006A"), ('\x1D4A6', "\x006B"), ('\x1D4A9', "\x006E"), ('\x1D4AA', "\x006F"), ('\x1D4AB', "\x0070"), ('\x1D4AC', "\x0071"), ('\x1D4AE', "\x0073"), ('\x1D4AF', "\x0074"), ('\x1D4B0', "\x0075"), ('\x1D4B1', "\x0076"), ('\x1D4B2', "\x0077"), ('\x1D4B3', "\x0078"), ('\x1D4B4', "\x0079"), ('\x1D4B5', "\x007A"), ('\x1D4D0', "\x0061"), ('\x1D4D1', "\x0062"), ('\x1D4D2', "\x0063"), ('\x1D4D3', "\x0064"), ('\x1D4D4', "\x0065"), ('\x1D4D5', "\x0066"), ('\x1D4D6', "\x0067"), ('\x1D4D7', "\x0068"), ('\x1D4D8', "\x0069"), ('\x1D4D9', "\x006A"), ('\x1D4DA', "\x006B"), ('\x1D4DB', "\x006C"), ('\x1D4DC', "\x006D"), ('\x1D4DD', "\x006E"), ('\x1D4DE', "\x006F"), ('\x1D4DF', "\x0070"), ('\x1D4E0', "\x0071"), ('\x1D4E1', "\x0072"), ('\x1D4E2', "\x0073"), ('\x1D4E3', "\x0074"), ('\x1D4E4', "\x0075"), ('\x1D4E5', "\x0076"), ('\x1D4E6', "\x0077"), ('\x1D4E7', "\x0078"), ('\x1D4E8', "\x0079"), ('\x1D4E9', "\x007A"), ('\x1D504', "\x0061"), ('\x1D505', "\x0062"), ('\x1D507', "\x0064"), ('\x1D508', "\x0065"), ('\x1D509', "\x0066"), ('\x1D50A', "\x0067"), ('\x1D50D', "\x006A"), ('\x1D50E', "\x006B"), ('\x1D50F', "\x006C"), ('\x1D510', "\x006D"), ('\x1D511', "\x006E"), ('\x1D512', "\x006F"), ('\x1D513', "\x0070"), ('\x1D514', "\x0071"), ('\x1D516', "\x0073"), ('\x1D517', "\x0074"), ('\x1D518', "\x0075"), ('\x1D519', "\x0076"), ('\x1D51A', "\x0077"), ('\x1D51B', "\x0078"), ('\x1D51C', "\x0079"), ('\x1D538', "\x0061"), ('\x1D539', "\x0062"), ('\x1D53B', "\x0064"), ('\x1D53C', "\x0065"), ('\x1D53D', "\x0066"), ('\x1D53E', "\x0067"), ('\x1D540', "\x0069"), ('\x1D541', "\x006A"), ('\x1D542', "\x006B"), ('\x1D543', "\x006C"), ('\x1D544', "\x006D"), ('\x1D546', "\x006F"), ('\x1D54A', "\x0073"), ('\x1D54B', "\x0074"), ('\x1D54C', "\x0075"), ('\x1D54D', "\x0076"), ('\x1D54E', "\x0077"), ('\x1D54F', "\x0078"), ('\x1D550', "\x0079"), ('\x1D56C', "\x0061"), ('\x1D56D', "\x0062"), ('\x1D56E', "\x0063"), ('\x1D56F', "\x0064"), ('\x1D570', "\x0065"), ('\x1D571', "\x0066"), ('\x1D572', "\x0067"), ('\x1D573', "\x0068"), ('\x1D574', "\x0069"), ('\x1D575', "\x006A"), ('\x1D576', "\x006B"), ('\x1D577', "\x006C"), ('\x1D578', "\x006D"), ('\x1D579', "\x006E"), ('\x1D57A', "\x006F"), ('\x1D57B', "\x0070"), ('\x1D57C', "\x0071"), ('\x1D57D', "\x0072"), ('\x1D57E', "\x0073"), ('\x1D57F', "\x0074"), ('\x1D580', "\x0075"), ('\x1D581', "\x0076"), ('\x1D582', "\x0077"), ('\x1D583', "\x0078"), ('\x1D584', "\x0079"), ('\x1D585', "\x007A"), ('\x1D5A0', "\x0061"), ('\x1D5A1', "\x0062"), ('\x1D5A2', "\x0063"), ('\x1D5A3', "\x0064"), ('\x1D5A4', "\x0065"), ('\x1D5A5', "\x0066"), ('\x1D5A6', "\x0067"), ('\x1D5A7', "\x0068"), ('\x1D5A8', "\x0069"), ('\x1D5A9', "\x006A"), ('\x1D5AA', "\x006B"), ('\x1D5AB', "\x006C"), ('\x1D5AC', "\x006D"), ('\x1D5AD', "\x006E"), ('\x1D5AE', "\x006F"), ('\x1D5AF', "\x0070"), ('\x1D5B0', "\x0071"), ('\x1D5B1', "\x0072"), ('\x1D5B2', "\x0073"), ('\x1D5B3', "\x0074"), ('\x1D5B4', "\x0075"), ('\x1D5B5', "\x0076"), ('\x1D5B6', "\x0077"), ('\x1D5B7', "\x0078"), ('\x1D5B8', "\x0079"), ('\x1D5B9', "\x007A"), ('\x1D5D4', "\x0061"), ('\x1D5D5', "\x0062"), ('\x1D5D6', "\x0063"), ('\x1D5D7', "\x0064"), ('\x1D5D8', "\x0065"), ('\x1D5D9', "\x0066"), ('\x1D5DA', "\x0067"), ('\x1D5DB', "\x0068"), ('\x1D5DC', "\x0069"), ('\x1D5DD', "\x006A"), ('\x1D5DE', "\x006B"), ('\x1D5DF', "\x006C"), ('\x1D5E0', "\x006D"), ('\x1D5E1', "\x006E"), ('\x1D5E2', "\x006F"), ('\x1D5E3', "\x0070"), ('\x1D5E4', "\x0071"), ('\x1D5E5', "\x0072"), ('\x1D5E6', "\x0073"), ('\x1D5E7', "\x0074"), ('\x1D5E8', "\x0075"), ('\x1D5E9', "\x0076"), ('\x1D5EA', "\x0077"), ('\x1D5EB', "\x0078"), ('\x1D5EC', "\x0079"), ('\x1D5ED', "\x007A"), ('\x1D608', "\x0061"), ('\x1D609', "\x0062"), ('\x1D60A', "\x0063"), ('\x1D60B', "\x0064"), ('\x1D60C', "\x0065"), ('\x1D60D', "\x0066"), ('\x1D60E', "\x0067"), ('\x1D60F', "\x0068"), ('\x1D610', "\x0069"), ('\x1D611', "\x006A"), ('\x1D612', "\x006B"), ('\x1D613', "\x006C"), ('\x1D614', "\x006D"), ('\x1D615', "\x006E"), ('\x1D616', "\x006F"), ('\x1D617', "\x0070"), ('\x1D618', "\x0071"), ('\x1D619', "\x0072"), ('\x1D61A', "\x0073"), ('\x1D61B', "\x0074"), ('\x1D61C', "\x0075"), ('\x1D61D', "\x0076"), ('\x1D61E', "\x0077"), ('\x1D61F', "\x0078"), ('\x1D620', "\x0079"), ('\x1D621', "\x007A"), ('\x1D63C', "\x0061"), ('\x1D63D', "\x0062"), ('\x1D63E', "\x0063"), ('\x1D63F', "\x0064"), ('\x1D640', "\x0065"), ('\x1D641', "\x0066"), ('\x1D642', "\x0067"), ('\x1D643', "\x0068"), ('\x1D644', "\x0069"), ('\x1D645', "\x006A"), ('\x1D646', "\x006B"), ('\x1D647', "\x006C"), ('\x1D648', "\x006D"), ('\x1D649', "\x006E"), ('\x1D64A', "\x006F"), ('\x1D64B', "\x0070"), ('\x1D64C', "\x0071"), ('\x1D64D', "\x0072"), ('\x1D64E', "\x0073"), ('\x1D64F', "\x0074"), ('\x1D650', "\x0075"), ('\x1D651', "\x0076"), ('\x1D652', "\x0077"), ('\x1D653', "\x0078"), ('\x1D654', "\x0079"), ('\x1D655', "\x007A"), ('\x1D670', "\x0061"), ('\x1D671', "\x0062"), ('\x1D672', "\x0063"), ('\x1D673', "\x0064"), ('\x1D674', "\x0065"), ('\x1D675', "\x0066"), ('\x1D676', "\x0067"), ('\x1D677', "\x0068"), ('\x1D678', "\x0069"), ('\x1D679', "\x006A"), ('\x1D67A', "\x006B"), ('\x1D67B', "\x006C"), ('\x1D67C', "\x006D"), ('\x1D67D', "\x006E"), ('\x1D67E', "\x006F"), ('\x1D67F', "\x0070"), ('\x1D680', "\x0071"), ('\x1D681', "\x0072"), ('\x1D682', "\x0073"), ('\x1D683', "\x0074"), ('\x1D684', "\x0075"), ('\x1D685', "\x0076"), ('\x1D686', "\x0077"), ('\x1D687', "\x0078"), ('\x1D688', "\x0079"), ('\x1D689', "\x007A"), ('\x1D6A8', "\x03B1"), ('\x1D6A9', "\x03B2"), ('\x1D6AA', "\x03B3"), ('\x1D6AB', "\x03B4"), ('\x1D6AC', "\x03B5"), ('\x1D6AD', "\x03B6"), ('\x1D6AE', "\x03B7"), ('\x1D6AF', "\x03B8"), ('\x1D6B0', "\x03B9"), ('\x1D6B1', "\x03BA"), ('\x1D6B2', "\x03BB"), ('\x1D6B3', "\x03BC"), ('\x1D6B4', "\x03BD"), ('\x1D6B5', "\x03BE"), ('\x1D6B6', "\x03BF"), ('\x1D6B7', "\x03C0"), ('\x1D6B8', "\x03C1"), ('\x1D6B9', "\x03B8"), ('\x1D6BA', "\x03C3"), ('\x1D6BB', "\x03C4"), ('\x1D6BC', "\x03C5"), ('\x1D6BD', "\x03C6"), ('\x1D6BE', "\x03C7"), ('\x1D6BF', "\x03C8"), ('\x1D6C0', "\x03C9"), ('\x1D6D3', "\x03C3"), ('\x1D6E2', "\x03B1"), ('\x1D6E3', "\x03B2"), ('\x1D6E4', "\x03B3"), ('\x1D6E5', "\x03B4"), ('\x1D6E6', "\x03B5"), ('\x1D6E7', "\x03B6"), ('\x1D6E8', "\x03B7"), ('\x1D6E9', "\x03B8"), ('\x1D6EA', "\x03B9"), ('\x1D6EB', "\x03BA"), ('\x1D6EC', "\x03BB"), ('\x1D6ED', "\x03BC"), ('\x1D6EE', "\x03BD"), ('\x1D6EF', "\x03BE"), ('\x1D6F0', "\x03BF"), ('\x1D6F1', "\x03C0"), ('\x1D6F2', "\x03C1"), ('\x1D6F3', "\x03B8"), ('\x1D6F4', "\x03C3"), ('\x1D6F5', "\x03C4"), ('\x1D6F6', "\x03C5"), ('\x1D6F7', "\x03C6"), ('\x1D6F8', "\x03C7"), ('\x1D6F9', "\x03C8"), ('\x1D6FA', "\x03C9"), ('\x1D70D', "\x03C3"), ('\x1D71C', "\x03B1"), ('\x1D71D', "\x03B2"), ('\x1D71E', "\x03B3"), ('\x1D71F', "\x03B4"), ('\x1D720', "\x03B5"), ('\x1D721', "\x03B6"), ('\x1D722', "\x03B7"), ('\x1D723', "\x03B8"), ('\x1D724', "\x03B9"), ('\x1D725', "\x03BA"), ('\x1D726', "\x03BB"), ('\x1D727', "\x03BC"), ('\x1D728', "\x03BD"), ('\x1D729', "\x03BE"), ('\x1D72A', "\x03BF"), ('\x1D72B', "\x03C0"), ('\x1D72C', "\x03C1"), ('\x1D72D', "\x03B8"), ('\x1D72E', "\x03C3"), ('\x1D72F', "\x03C4"), ('\x1D730', "\x03C5"), ('\x1D731', "\x03C6"), ('\x1D732', "\x03C7"), ('\x1D733', "\x03C8"), ('\x1D734', "\x03C9"), ('\x1D747', "\x03C3"), ('\x1D756', "\x03B1"), ('\x1D757', "\x03B2"), ('\x1D758', "\x03B3"), ('\x1D759', "\x03B4"), ('\x1D75A', "\x03B5"), ('\x1D75B', "\x03B6"), ('\x1D75C', "\x03B7"), ('\x1D75D', "\x03B8"), ('\x1D75E', "\x03B9"), ('\x1D75F', "\x03BA"), ('\x1D760', "\x03BB"), ('\x1D761', "\x03BC"), ('\x1D762', "\x03BD"), ('\x1D763', "\x03BE"), ('\x1D764', "\x03BF"), ('\x1D765', "\x03C0"), ('\x1D766', "\x03C1"), ('\x1D767', "\x03B8"), ('\x1D768', "\x03C3"), ('\x1D769', "\x03C4"), ('\x1D76A', "\x03C5"), ('\x1D76B', "\x03C6"), ('\x1D76C', "\x03C7"), ('\x1D76D', "\x03C8"), ('\x1D76E', "\x03C9"), ('\x1D781', "\x03C3"), ('\x1D790', "\x03B1"), ('\x1D791', "\x03B2"), ('\x1D792', "\x03B3"), ('\x1D793', "\x03B4"), ('\x1D794', "\x03B5"), ('\x1D795', "\x03B6"), ('\x1D796', "\x03B7"), ('\x1D797', "\x03B8"), ('\x1D798', "\x03B9"), ('\x1D799', "\x03BA"), ('\x1D79A', "\x03BB"), ('\x1D79B', "\x03BC"), ('\x1D79C', "\x03BD"), ('\x1D79D', "\x03BE"), ('\x1D79E', "\x03BF"), ('\x1D79F', "\x03C0"), ('\x1D7A0', "\x03C1"), ('\x1D7A1', "\x03B8"), ('\x1D7A2', "\x03C3"), ('\x1D7A3', "\x03C4"), ('\x1D7A4', "\x03C5"), ('\x1D7A5', "\x03C6"), ('\x1D7A6', "\x03C7"), ('\x1D7A7', "\x03C8"), ('\x1D7A8', "\x03C9"), ('\x1D7BB', "\x03C3")] a1 :: [Range] a1 :: Prohibited a1 = [ Char -> Range single '\x0221', Char -> Char -> Range range '\x0234' '\x024F', Char -> Char -> Range range '\x02AE' '\x02AF', Char -> Char -> Range range '\x02EF' '\x02FF', Char -> Char -> Range range '\x0350' '\x035F', Char -> Char -> Range range '\x0370' '\x0373', Char -> Char -> Range range '\x0376' '\x0379', Char -> Char -> Range range '\x037B' '\x037D', Char -> Char -> Range range '\x037F' '\x0383', Char -> Range single '\x038B', Char -> Range single '\x038D', Char -> Range single '\x03A2', Char -> Range single '\x03CF', Char -> Char -> Range range '\x03F7' '\x03FF', Char -> Range single '\x0487', Char -> Range single '\x04CF', Char -> Char -> Range range '\x04F6' '\x04F7', Char -> Char -> Range range '\x04FA' '\x04FF', Char -> Char -> Range range '\x0510' '\x0530', Char -> Char -> Range range '\x0557' '\x0558', Char -> Range single '\x0560', Char -> Range single '\x0588', Char -> Char -> Range range '\x058B' '\x0590', Char -> Range single '\x05A2', Char -> Range single '\x05BA', Char -> Char -> Range range '\x05C5' '\x05CF', Char -> Char -> Range range '\x05EB' '\x05EF', Char -> Char -> Range range '\x05F5' '\x060B', Char -> Char -> Range range '\x060D' '\x061A', Char -> Char -> Range range '\x061C' '\x061E', Char -> Range single '\x0620', Char -> Char -> Range range '\x063B' '\x063F', Char -> Char -> Range range '\x0656' '\x065F', Char -> Char -> Range range '\x06EE' '\x06EF', Char -> Range single '\x06FF', Char -> Range single '\x070E', Char -> Char -> Range range '\x072D' '\x072F', Char -> Char -> Range range '\x074B' '\x077F', Char -> Char -> Range range '\x07B2' '\x0900', Char -> Range single '\x0904', Char -> Char -> Range range '\x093A' '\x093B', Char -> Char -> Range range '\x094E' '\x094F', Char -> Char -> Range range '\x0955' '\x0957', Char -> Char -> Range range '\x0971' '\x0980', Char -> Range single '\x0984', Char -> Char -> Range range '\x098D' '\x098E', Char -> Char -> Range range '\x0991' '\x0992', Char -> Range single '\x09A9', Char -> Range single '\x09B1', Char -> Char -> Range range '\x09B3' '\x09B5', Char -> Char -> Range range '\x09BA' '\x09BB', Char -> Range single '\x09BD', Char -> Char -> Range range '\x09C5' '\x09C6', Char -> Char -> Range range '\x09C9' '\x09CA', Char -> Char -> Range range '\x09CE' '\x09D6', Char -> Char -> Range range '\x09D8' '\x09DB', Char -> Range single '\x09DE', Char -> Char -> Range range '\x09E4' '\x09E5', Char -> Char -> Range range '\x09FB' '\x0A01', Char -> Char -> Range range '\x0A03' '\x0A04', Char -> Char -> Range range '\x0A0B' '\x0A0E', Char -> Char -> Range range '\x0A11' '\x0A12', Char -> Range single '\x0A29', Char -> Range single '\x0A31', Char -> Range single '\x0A34', Char -> Range single '\x0A37', Char -> Char -> Range range '\x0A3A' '\x0A3B', Char -> Range single '\x0A3D', Char -> Char -> Range range '\x0A43' '\x0A46', Char -> Char -> Range range '\x0A49' '\x0A4A', Char -> Char -> Range range '\x0A4E' '\x0A58', Char -> Range single '\x0A5D', Char -> Char -> Range range '\x0A5F' '\x0A65', Char -> Char -> Range range '\x0A75' '\x0A80', Char -> Range single '\x0A84', Char -> Range single '\x0A8C', Char -> Range single '\x0A8E', Char -> Range single '\x0A92', Char -> Range single '\x0AA9', Char -> Range single '\x0AB1', Char -> Range single '\x0AB4', Char -> Char -> Range range '\x0ABA' '\x0ABB', Char -> Range single '\x0AC6', Char -> Range single '\x0ACA', Char -> Char -> Range range '\x0ACE' '\x0ACF', Char -> Char -> Range range '\x0AD1' '\x0ADF', Char -> Char -> Range range '\x0AE1' '\x0AE5', Char -> Char -> Range range '\x0AF0' '\x0B00', Char -> Range single '\x0B04', Char -> Char -> Range range '\x0B0D' '\x0B0E', Char -> Char -> Range range '\x0B11' '\x0B12', Char -> Range single '\x0B29', Char -> Range single '\x0B31', Char -> Char -> Range range '\x0B34' '\x0B35', Char -> Char -> Range range '\x0B3A' '\x0B3B', Char -> Char -> Range range '\x0B44' '\x0B46', Char -> Char -> Range range '\x0B49' '\x0B4A', Char -> Char -> Range range '\x0B4E' '\x0B55', Char -> Char -> Range range '\x0B58' '\x0B5B', Char -> Range single '\x0B5E', Char -> Char -> Range range '\x0B62' '\x0B65', Char -> Char -> Range range '\x0B71' '\x0B81', Char -> Range single '\x0B84', Char -> Char -> Range range '\x0B8B' '\x0B8D', Char -> Range single '\x0B91', Char -> Char -> Range range '\x0B96' '\x0B98', Char -> Range single '\x0B9B', Char -> Range single '\x0B9D', Char -> Char -> Range range '\x0BA0' '\x0BA2', Char -> Char -> Range range '\x0BA5' '\x0BA7', Char -> Char -> Range range '\x0BAB' '\x0BAD', Char -> Range single '\x0BB6', Char -> Char -> Range range '\x0BBA' '\x0BBD', Char -> Char -> Range range '\x0BC3' '\x0BC5', Char -> Range single '\x0BC9', Char -> Char -> Range range '\x0BCE' '\x0BD6', Char -> Char -> Range range '\x0BD8' '\x0BE6', Char -> Char -> Range range '\x0BF3' '\x0C00', Char -> Range single '\x0C04', Char -> Range single '\x0C0D', Char -> Range single '\x0C11', Char -> Range single '\x0C29', Char -> Range single '\x0C34', Char -> Char -> Range range '\x0C3A' '\x0C3D', Char -> Range single '\x0C45', Char -> Range single '\x0C49', Char -> Char -> Range range '\x0C4E' '\x0C54', Char -> Char -> Range range '\x0C57' '\x0C5F', Char -> Char -> Range range '\x0C62' '\x0C65', Char -> Char -> Range range '\x0C70' '\x0C81', Char -> Range single '\x0C84', Char -> Range single '\x0C8D', Char -> Range single '\x0C91', Char -> Range single '\x0CA9', Char -> Range single '\x0CB4', Char -> Char -> Range range '\x0CBA' '\x0CBD', Char -> Range single '\x0CC5', Char -> Range single '\x0CC9', Char -> Char -> Range range '\x0CCE' '\x0CD4', Char -> Char -> Range range '\x0CD7' '\x0CDD', Char -> Range single '\x0CDF', Char -> Char -> Range range '\x0CE2' '\x0CE5', Char -> Char -> Range range '\x0CF0' '\x0D01', Char -> Range single '\x0D04', Char -> Range single '\x0D0D', Char -> Range single '\x0D11', Char -> Range single '\x0D29', Char -> Char -> Range range '\x0D3A' '\x0D3D', Char -> Char -> Range range '\x0D44' '\x0D45', Char -> Range single '\x0D49', Char -> Char -> Range range '\x0D4E' '\x0D56', Char -> Char -> Range range '\x0D58' '\x0D5F', Char -> Char -> Range range '\x0D62' '\x0D65', Char -> Char -> Range range '\x0D70' '\x0D81', Char -> Range single '\x0D84', Char -> Char -> Range range '\x0D97' '\x0D99', Char -> Range single '\x0DB2', Char -> Range single '\x0DBC', Char -> Char -> Range range '\x0DBE' '\x0DBF', Char -> Char -> Range range '\x0DC7' '\x0DC9', Char -> Char -> Range range '\x0DCB' '\x0DCE', Char -> Range single '\x0DD5', Char -> Range single '\x0DD7', Char -> Char -> Range range '\x0DE0' '\x0DF1', Char -> Char -> Range range '\x0DF5' '\x0E00', Char -> Char -> Range range '\x0E3B' '\x0E3E', Char -> Char -> Range range '\x0E5C' '\x0E80', Char -> Range single '\x0E83', Char -> Char -> Range range '\x0E85' '\x0E86', Char -> Range single '\x0E89', Char -> Char -> Range range '\x0E8B' '\x0E8C', Char -> Char -> Range range '\x0E8E' '\x0E93', Char -> Range single '\x0E98', Char -> Range single '\x0EA0', Char -> Range single '\x0EA4', Char -> Range single '\x0EA6', Char -> Char -> Range range '\x0EA8' '\x0EA9', Char -> Range single '\x0EAC', Char -> Range single '\x0EBA', Char -> Char -> Range range '\x0EBE' '\x0EBF', Char -> Range single '\x0EC5', Char -> Range single '\x0EC7', Char -> Char -> Range range '\x0ECE' '\x0ECF', Char -> Char -> Range range '\x0EDA' '\x0EDB', Char -> Char -> Range range '\x0EDE' '\x0EFF', Char -> Range single '\x0F48', Char -> Char -> Range range '\x0F6B' '\x0F70', Char -> Char -> Range range '\x0F8C' '\x0F8F', Char -> Range single '\x0F98', Char -> Range single '\x0FBD', Char -> Char -> Range range '\x0FCD' '\x0FCE', Char -> Char -> Range range '\x0FD0' '\x0FFF', Char -> Range single '\x1022', Char -> Range single '\x1028', Char -> Range single '\x102B', Char -> Char -> Range range '\x1033' '\x1035', Char -> Char -> Range range '\x103A' '\x103F', Char -> Char -> Range range '\x105A' '\x109F', Char -> Char -> Range range '\x10C6' '\x10CF', Char -> Char -> Range range '\x10F9' '\x10FA', Char -> Char -> Range range '\x10FC' '\x10FF', Char -> Char -> Range range '\x115A' '\x115E', Char -> Char -> Range range '\x11A3' '\x11A7', Char -> Char -> Range range '\x11FA' '\x11FF', Char -> Range single '\x1207', Char -> Range single '\x1247', Char -> Range single '\x1249', Char -> Char -> Range range '\x124E' '\x124F', Char -> Range single '\x1257', Char -> Range single '\x1259', Char -> Char -> Range range '\x125E' '\x125F', Char -> Range single '\x1287', Char -> Range single '\x1289', Char -> Char -> Range range '\x128E' '\x128F', Char -> Range single '\x12AF', Char -> Range single '\x12B1', Char -> Char -> Range range '\x12B6' '\x12B7', Char -> Range single '\x12BF', Char -> Range single '\x12C1', Char -> Char -> Range range '\x12C6' '\x12C7', Char -> Range single '\x12CF', Char -> Range single '\x12D7', Char -> Range single '\x12EF', Char -> Range single '\x130F', Char -> Range single '\x1311', Char -> Char -> Range range '\x1316' '\x1317', Char -> Range single '\x131F', Char -> Range single '\x1347', Char -> Char -> Range range '\x135B' '\x1360', Char -> Char -> Range range '\x137D' '\x139F', Char -> Char -> Range range '\x13F5' '\x1400', Char -> Char -> Range range '\x1677' '\x167F', Char -> Char -> Range range '\x169D' '\x169F', Char -> Char -> Range range '\x16F1' '\x16FF', Char -> Range single '\x170D', Char -> Char -> Range range '\x1715' '\x171F', Char -> Char -> Range range '\x1737' '\x173F', Char -> Char -> Range range '\x1754' '\x175F', Char -> Range single '\x176D', Char -> Range single '\x1771', Char -> Char -> Range range '\x1774' '\x177F', Char -> Char -> Range range '\x17DD' '\x17DF', Char -> Char -> Range range '\x17EA' '\x17FF', Char -> Range single '\x180F', Char -> Char -> Range range '\x181A' '\x181F', Char -> Char -> Range range '\x1878' '\x187F', Char -> Char -> Range range '\x18AA' '\x1DFF', Char -> Char -> Range range '\x1E9C' '\x1E9F', Char -> Char -> Range range '\x1EFA' '\x1EFF', Char -> Char -> Range range '\x1F16' '\x1F17', Char -> Char -> Range range '\x1F1E' '\x1F1F', Char -> Char -> Range range '\x1F46' '\x1F47', Char -> Char -> Range range '\x1F4E' '\x1F4F', Char -> Range single '\x1F58', Char -> Range single '\x1F5A', Char -> Range single '\x1F5C', Char -> Range single '\x1F5E', Char -> Char -> Range range '\x1F7E' '\x1F7F', Char -> Range single '\x1FB5', Char -> Range single '\x1FC5', Char -> Char -> Range range '\x1FD4' '\x1FD5', Char -> Range single '\x1FDC', Char -> Char -> Range range '\x1FF0' '\x1FF1', Char -> Range single '\x1FF5', Char -> Range single '\x1FFF', Char -> Char -> Range range '\x2053' '\x2056', Char -> Char -> Range range '\x2058' '\x205E', Char -> Char -> Range range '\x2064' '\x2069', Char -> Char -> Range range '\x2072' '\x2073', Char -> Char -> Range range '\x208F' '\x209F', Char -> Char -> Range range '\x20B2' '\x20CF', Char -> Char -> Range range '\x20EB' '\x20FF', Char -> Char -> Range range '\x213B' '\x213C', Char -> Char -> Range range '\x214C' '\x2152', Char -> Char -> Range range '\x2184' '\x218F', Char -> Char -> Range range '\x23CF' '\x23FF', Char -> Char -> Range range '\x2427' '\x243F', Char -> Char -> Range range '\x244B' '\x245F', Char -> Range single '\x24FF', Char -> Char -> Range range '\x2614' '\x2615', Char -> Range single '\x2618', Char -> Char -> Range range '\x267E' '\x267F', Char -> Char -> Range range '\x268A' '\x2700', Char -> Range single '\x2705', Char -> Char -> Range range '\x270A' '\x270B', Char -> Range single '\x2728', Char -> Range single '\x274C', Char -> Range single '\x274E', Char -> Char -> Range range '\x2753' '\x2755', Char -> Range single '\x2757', Char -> Char -> Range range '\x275F' '\x2760', Char -> Char -> Range range '\x2795' '\x2797', Char -> Range single '\x27B0', Char -> Char -> Range range '\x27BF' '\x27CF', Char -> Char -> Range range '\x27EC' '\x27EF', Char -> Char -> Range range '\x2B00' '\x2E7F', Char -> Range single '\x2E9A', Char -> Char -> Range range '\x2EF4' '\x2EFF', Char -> Char -> Range range '\x2FD6' '\x2FEF', Char -> Char -> Range range '\x2FFC' '\x2FFF', Char -> Range single '\x3040', Char -> Char -> Range range '\x3097' '\x3098', Char -> Char -> Range range '\x3100' '\x3104', Char -> Char -> Range range '\x312D' '\x3130', Char -> Range single '\x318F', Char -> Char -> Range range '\x31B8' '\x31EF', Char -> Char -> Range range '\x321D' '\x321F', Char -> Char -> Range range '\x3244' '\x3250', Char -> Char -> Range range '\x327C' '\x327E', Char -> Char -> Range range '\x32CC' '\x32CF', Char -> Range single '\x32FF', Char -> Char -> Range range '\x3377' '\x337A', Char -> Char -> Range range '\x33DE' '\x33DF', Char -> Range single '\x33FF', Char -> Char -> Range range '\x4DB6' '\x4DFF', Char -> Char -> Range range '\x9FA6' '\x9FFF', Char -> Char -> Range range '\xA48D' '\xA48F', Char -> Char -> Range range '\xA4C7' '\xABFF', Char -> Char -> Range range '\xD7A4' '\xD7FF', Char -> Char -> Range range '\xFA2E' '\xFA2F', Char -> Char -> Range range '\xFA6B' '\xFAFF', Char -> Char -> Range range '\xFB07' '\xFB12', Char -> Char -> Range range '\xFB18' '\xFB1C', Char -> Range single '\xFB37', Char -> Range single '\xFB3D', Char -> Range single '\xFB3F', Char -> Range single '\xFB42', Char -> Range single '\xFB45', Char -> Char -> Range range '\xFBB2' '\xFBD2', Char -> Char -> Range range '\xFD40' '\xFD4F', Char -> Char -> Range range '\xFD90' '\xFD91', Char -> Char -> Range range '\xFDC8' '\xFDCF', Char -> Char -> Range range '\xFDFD' '\xFDFF', Char -> Char -> Range range '\xFE10' '\xFE1F', Char -> Char -> Range range '\xFE24' '\xFE2F', Char -> Char -> Range range '\xFE47' '\xFE48', Char -> Range single '\xFE53', Char -> Range single '\xFE67', Char -> Char -> Range range '\xFE6C' '\xFE6F', Char -> Range single '\xFE75', Char -> Char -> Range range '\xFEFD' '\xFEFE', Char -> Range single '\xFF00', Char -> Char -> Range range '\xFFBF' '\xFFC1', Char -> Char -> Range range '\xFFC8' '\xFFC9', Char -> Char -> Range range '\xFFD0' '\xFFD1', Char -> Char -> Range range '\xFFD8' '\xFFD9', Char -> Char -> Range range '\xFFDD' '\xFFDF', Char -> Range single '\xFFE7', Char -> Char -> Range range '\xFFEF' '\xFFF8', Char -> Char -> Range range '\x10000' '\x102FF', Char -> Range single '\x1031F', Char -> Char -> Range range '\x10324' '\x1032F', Char -> Char -> Range range '\x1034B' '\x103FF', Char -> Char -> Range range '\x10426' '\x10427', Char -> Char -> Range range '\x1044E' '\x1CFFF', Char -> Char -> Range range '\x1D0F6' '\x1D0FF', Char -> Char -> Range range '\x1D127' '\x1D129', Char -> Char -> Range range '\x1D1DE' '\x1D3FF', Char -> Range single '\x1D455', Char -> Range single '\x1D49D', Char -> Char -> Range range '\x1D4A0' '\x1D4A1', Char -> Char -> Range range '\x1D4A3' '\x1D4A4', Char -> Char -> Range range '\x1D4A7' '\x1D4A8', Char -> Range single '\x1D4AD', Char -> Range single '\x1D4BA', Char -> Range single '\x1D4BC', Char -> Range single '\x1D4C1', Char -> Range single '\x1D4C4', Char -> Range single '\x1D506', Char -> Char -> Range range '\x1D50B' '\x1D50C', Char -> Range single '\x1D515', Char -> Range single '\x1D51D', Char -> Range single '\x1D53A', Char -> Range single '\x1D53F', Char -> Range single '\x1D545', Char -> Char -> Range range '\x1D547' '\x1D549', Char -> Range single '\x1D551', Char -> Char -> Range range '\x1D6A4' '\x1D6A7', Char -> Char -> Range range '\x1D7CA' '\x1D7CD', Char -> Char -> Range range '\x1D800' '\x1FFFD', Char -> Char -> Range range '\x2A6D7' '\x2F7FF', Char -> Char -> Range range '\x2FA1E' '\x2FFFD', Char -> Char -> Range range '\x30000' '\x3FFFD', Char -> Char -> Range range '\x40000' '\x4FFFD', Char -> Char -> Range range '\x50000' '\x5FFFD', Char -> Char -> Range range '\x60000' '\x6FFFD', Char -> Char -> Range range '\x70000' '\x7FFFD', Char -> Char -> Range range '\x80000' '\x8FFFD', Char -> Char -> Range range '\x90000' '\x9FFFD', Char -> Char -> Range range '\xA0000' '\xAFFFD', Char -> Char -> Range range '\xB0000' '\xBFFFD', Char -> Char -> Range range '\xC0000' '\xCFFFD', Char -> Char -> Range range '\xD0000' '\xDFFFD', Char -> Range single '\xE0000', Char -> Char -> Range range '\xE0002' '\xE001F', Char -> Char -> Range range '\xE0080' '\xEFFFD']