{-# OPTIONS -fglasgow-exts -cpp #-} {-# LINE 1 "Text/Highlighting/Illuminate/CSS.x" #-} {-# OPTIONS -w #-} -- Suppress warnings from alex-generated code module Text.Highlighting.Illuminate.CSS (lexer) where #if __GLASGOW_HASKELL__ >= 603 #include "ghcconfig.h" #elif defined(__GLASGOW_HASKELL__) #include "config.h" #endif #if __GLASGOW_HASKELL__ >= 503 import Data.Array import Data.Char (ord) import Data.Array.Base (unsafeAt) #else import Array import Char (ord) #endif #if __GLASGOW_HASKELL__ >= 503 import GHC.Exts #else import GlaExts #endif import Text.Highlighting.Illuminate.Types import Data.Sequence (Seq, (><), (<|), (|>), singleton, viewl, ViewL(..)) import qualified Data.Sequence as Seq (empty) import qualified Data.Foldable as F import Data.List (span, break, splitAt, isPrefixOf) {-# LINE 1 "templates/wrappers.hs" #-} {-# LINE 1 "templates/wrappers.hs" #-} {-# LINE 1 "" #-} {-# LINE 1 "" #-} {-# LINE 1 "templates/wrappers.hs" #-} -- ----------------------------------------------------------------------------- -- Alex wrapper code. -- -- This code is in the PUBLIC DOMAIN; you may copy it freely and use -- it for any purpose whatsoever. {-# LINE 18 "templates/wrappers.hs" #-} -- ----------------------------------------------------------------------------- -- The input type type AlexInput = (AlexPosn, -- current position, Char, -- previous char String) -- current input string alexInputPrevChar :: AlexInput -> Char alexInputPrevChar (p,c,s) = c alexGetChar :: AlexInput -> Maybe (Char,AlexInput) alexGetChar (p,c,[]) = Nothing alexGetChar (p,_,(c:s)) = let p' = alexMove p c in p' `seq` Just (c, (p', c, s)) {-# LINE 51 "templates/wrappers.hs" #-} -- ----------------------------------------------------------------------------- -- Token positions -- `Posn' records the location of a token in the input text. It has three -- fields: the address (number of chacaters preceding the token), line number -- and column of a token within the file. `start_pos' gives the position of the -- start of the file and `eof_pos' a standard encoding for the end of file. -- `move_pos' calculates the new position after traversing a given character, -- assuming the usual eight character tab stops. data AlexPosn = AlexPn !Int !Int !Int deriving (Eq,Show) alexStartPos :: AlexPosn alexStartPos = AlexPn 0 1 1 alexMove :: AlexPosn -> Char -> AlexPosn alexMove (AlexPn a l c) '\t' = AlexPn (a+1) l (((c+7) `div` 8)*8+1) alexMove (AlexPn a l c) '\n' = AlexPn (a+1) (l+1) 1 alexMove (AlexPn a l c) _ = AlexPn (a+1) l (c+1) -- ----------------------------------------------------------------------------- -- Default monad data AlexState = AlexState { alex_pos :: !AlexPosn, -- position at current input location alex_inp :: String, -- the current input alex_chr :: !Char, -- the character before the input alex_scd :: !Int -- the current startcode , alex_ust :: AlexUserState -- AlexUserState will be defined in the user program } -- Compile with -funbox-strict-fields for best results! runAlex :: String -> Alex a -> Either String a runAlex input (Alex f) = case f (AlexState {alex_pos = alexStartPos, alex_inp = input, alex_chr = '\n', alex_ust = alexInitUserState, alex_scd = 0}) of Left msg -> Left msg Right ( _, a ) -> Right a newtype Alex a = Alex { unAlex :: AlexState -> Either String (AlexState, a) } instance Monad Alex where m >>= k = Alex $ \s -> case unAlex m s of Left msg -> Left msg Right (s',a) -> unAlex (k a) s' return a = Alex $ \s -> Right (s,a) alexGetInput :: Alex AlexInput alexGetInput = Alex $ \s@AlexState{alex_pos=pos,alex_chr=c,alex_inp=inp} -> Right (s, (pos,c,inp)) alexSetInput :: AlexInput -> Alex () alexSetInput (pos,c,inp) = Alex $ \s -> case s{alex_pos=pos,alex_chr=c,alex_inp=inp} of s@(AlexState{}) -> Right (s, ()) alexError :: String -> Alex a alexError message = Alex $ \s -> Left message alexGetStartCode :: Alex Int alexGetStartCode = Alex $ \s@AlexState{alex_scd=sc} -> Right (s, sc) alexSetStartCode :: Int -> Alex () alexSetStartCode sc = Alex $ \s -> Right (s{alex_scd=sc}, ()) alexMonadScan = do inp <- alexGetInput sc <- alexGetStartCode case alexScan inp sc of AlexEOF -> alexEOF AlexError inp' -> alexError "lexical error" AlexSkip inp' len -> do alexSetInput inp' alexMonadScan AlexToken inp' len action -> do alexSetInput inp' action inp len -- ----------------------------------------------------------------------------- -- Useful token actions type AlexAction result = AlexInput -> Int -> result -- just ignore this token and scan another one -- skip :: AlexAction result skip input len = alexMonadScan -- ignore this token, but set the start code to a new value -- begin :: Int -> AlexAction result begin code input len = do alexSetStartCode code; alexMonadScan -- perform an action for this token, and set the start code to a new value -- andBegin :: AlexAction result -> Int -> AlexAction result (action `andBegin` code) input len = do alexSetStartCode code; action input len -- token :: (String -> Int -> token) -> AlexAction token token t input len = return (t input len) -- ----------------------------------------------------------------------------- -- Monad (with ByteString input) {-# LINE 251 "templates/wrappers.hs" #-} -- ----------------------------------------------------------------------------- -- Basic wrapper {-# LINE 273 "templates/wrappers.hs" #-} -- ----------------------------------------------------------------------------- -- Basic wrapper, ByteString version {-# LINE 297 "templates/wrappers.hs" #-} {-# LINE 322 "templates/wrappers.hs" #-} -- ----------------------------------------------------------------------------- -- Posn wrapper -- Adds text positions to the basic model. {-# LINE 339 "templates/wrappers.hs" #-} -- ----------------------------------------------------------------------------- -- Posn wrapper, ByteString version {-# LINE 354 "templates/wrappers.hs" #-} -- ----------------------------------------------------------------------------- -- GScan wrapper -- For compatibility with previous versions of Alex, and because we can. -- ----------------------------------------------------------------------------- -- Custom code for highlighting alexEOF = return $ singleton (EOF,"") type AlexUserState = [(Int,TokenType)] -- a stack of codes and default token types alexInitUserState = [(0,Plain)] tok :: TokenType -> AlexInput -> Int -> Alex Tokens tok t (_,_,s) len = return $ singleton (t, take len s) getUserState :: Alex AlexUserState getUserState = Alex $ \s@AlexState{alex_ust=ust} -> Right (s, ust) setUserState :: AlexUserState -> Alex () setUserState newstate = Alex $ \s -> Right (s{alex_ust=newstate}, ()) modifyUserState :: (AlexUserState -> AlexUserState) -> Alex () modifyUserState fn = Alex $ \s@AlexState{alex_ust=ust} -> Right (s{alex_ust = fn ust}, ()) plain :: AlexInput -> Int -> Alex Tokens plain (_,_,s) len = do ((_,defaultToken) : _) <- getUserState return $ singleton (defaultToken, take len s) pushContext :: (Int, TokenType) -> b -> Alex b pushContext newcontext toks = do modifyUserState (newcontext :) alexSetStartCode $ fst newcontext return toks popContext :: b -> Alex b popContext toks = do contexts <- getUserState case contexts of [] -> error "Empty contexts stack!" [x] -> return toks (x:y:xs) -> do setUserState (y:xs) alexSetStartCode $ fst y return toks scanForStop :: String -> String -> Int scanForStop stop ('\n':xs) = 1 + let (sps, xs') = span (`elem` " \t") xs offset = length sps + length stop in if stop `isPrefixOf` xs' then case (takeWhile (`elem` " \t") $ drop (length stop) xs') of ('\n':_) -> offset [] -> offset _ -> offset + scanForStop stop (drop offset xs') else length sps + scanForStop stop xs' scanForStop stop (_:xs) = 1 + scanForStop stop xs scanForStop stop [] = 0 hereDoc :: Tokens -> Alex Tokens hereDoc toks = Alex $ \s -> let inp = alex_inp s unescape ('\\':x:xs) = x : unescape xs unescape (x:xs) = x : unescape xs unescape [] = [] unstring = tail . init . unescape in case viewl toks of ((tt,str) :< empty) | tt `elem` [String, VarId] -> let stop = if tt == String then unstring str else str off = scanForStop stop inp (res, newinp) = splitAt off inp newpos = foldl alexMove (alex_pos s) res s' = s{alex_pos = newpos, alex_inp = newinp, alex_chr = '\n'} in Right (s', toks |> (String, res)) _ -> Left "hereDoc expecting String or VarId" (==>) :: (AlexInput -> Int -> Alex a) -> (a -> Alex b) -> (AlexInput -> Int -> Alex b) (act1 ==> act2) inp len = do res <- act1 inp len act2 res scanner :: Scanner scanner str = runAlex str $ do let loop acc = do toks <- alexMonadScan case viewl toks of ((t,_) :< _) | t == EOF -> return acc _ -> loop (acc >< toks) loop Seq.empty tokenizeWith :: Lexer -> AlexInput -> Int -> Alex Tokens tokenizeWith lx (_,_,s) len = do case (scan lx) (take len s) of Left e -> fail e Right r -> return r scanWith :: Lexer -> Tokens -> Alex Tokens scanWith lx toks = Alex $ \s -> case (scan lx) (alex_inp s) of Left e -> Left e Right r -> Right (s', toks >< r) where s' = s{alex_pos = newpos, alex_inp = newinp, alex_chr = lastchar} parsed_chars = F.concatMap snd r newpos = foldl alexMove (alex_pos s) parsed_chars lastchar = if null parsed_chars then '\n' else last parsed_chars newinp = drop (length parsed_chars) (alex_inp s) alex_base :: AlexAddr alex_base = AlexA# "\xf7\xff\xff\xff\x6a\x00\x00\x00\x80\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\xd3\xff\xff\xff\x00\x00\x00\x00\xc9\xff\xff\xff\xb5\xff\xff\xff\xc1\xff\xff\xff\xb7\xff\xff\xff\xc2\xff\xff\xff\xbb\xff\xff\xff\xb1\xff\xff\xff\xc3\xff\xff\xff\xc4\xff\xff\xff\xb8\xff\xff\xff\x00\x00\x00\x00\xd0\xff\xff\xff\xbf\xff\xff\xff\xcb\xff\xff\xff\xc5\xff\xff\xff\xcc\xff\xff\xff\xc6\xff\xff\xff\xba\xff\xff\xff\xc7\xff\xff\xff\xce\xff\xff\xff\xe2\xff\xff\xff\x00\x00\x00\x00\xb9\x00\x00\x00\xd0\x00\x00\x00\x47\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\xe9\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\xff\xff\xff\xf1\xff\xff\xff\x26\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x43\x00\x00\x00\x40\x00\x00\x00\x3a\x00\x00\x00\x3c\x00\x00\x00\x49\x00\x00\x00\x62\x00\x00\x00\x5e\x00\x00\x00\x52\x00\x00\x00\x5d\x00\x00\x00\x4c\x00\x00\x00\x50\x00\x00\x00\x60\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\xc7\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x68\x00\x00\x00\x75\x00\x00\x00\x7d\x00\x00\x00\x86\x00\x00\x00\x8f\x00\x00\x00\x87\x00\x00\x00\x82\x00\x00\x00\x88\x00\x00\x00\x8c\x00\x00\x00\x8a\x00\x00\x00\x98\x00\x00\x00\x9e\x00\x00\x00\xab\x00\x00\x00\xa6\x00\x00\x00\xa9\x00\x00\x00\xa0\x00\x00\x00\x9d\x00\x00\x00\xae\x00\x00\x00\xa4\x00\x00\x00\xb0\x00\x00\x00\xb1\x00\x00\x00\xb3\x00\x00\x00\xbd\x00\x00\x00\xb4\x00\x00\x00\xbe\x00\x00\x00\xc4\x00\x00\x00\xb2\x00\x00\x00\xb5\x00\x00\x00\xc8\x00\x00\x00\xc6\x00\x00\x00\xbb\x00\x00\x00\xcc\x00\x00\x00\xcb\x00\x00\x00\xcf\x00\x00\x00\xd5\x00\x00\x00\xdb\x00\x00\x00\xcd\x00\x00\x00\xd2\x00\x00\x00\xdd\x00\x00\x00\xd4\x00\x00\x00\xd7\x00\x00\x00\xe7\x00\x00\x00\xe6\x00\x00\x00\xe1\x00\x00\x00\xde\x00\x00\x00\xe8\x00\x00\x00\xd8\x00\x00\x00\xe2\x00\x00\x00\xeb\x00\x00\x00\xe3\x00\x00\x00\xe4\x00\x00\x00\xea\x00\x00\x00\xee\x00\x00\x00\xe5\x00\x00\x00\xe9\x00\x00\x00\xec\x00\x00\x00\xed\x00\x00\x00\xef\x00\x00\x00\xf0\x00\x00\x00\xf1\x00\x00\x00\xf2\x00\x00\x00\xf3\x00\x00\x00\xf4\x00\x00\x00\xf7\x00\x00\x00\xf5\x00\x00\x00\xf6\x00\x00\x00\xf8\x00\x00\x00\xf9\x00\x00\x00\xfd\x00\x00\x00\xfa\x00\x00\x00\x00\x01\x00\x00\xfe\x00\x00\x00\xff\x00\x00\x00\x02\x01\x00\x00\x03\x01\x00\x00\x07\x01\x00\x00\x08\x01\x00\x00\x04\x01\x00\x00\x0c\x01\x00\x00\x09\x01\x00\x00\x0e\x01\x00\x00\x0d\x01\x00\x00\x0b\x01\x00\x00\x0a\x01\x00\x00\xdf\x00\x00\x00\x0f\x01\x00\x00\x01\x01\x00\x00\x10\x01\x00\x00\x11\x01\x00\x00\x14\x01\x00\x00\x1c\x01\x00\x00\x12\x01\x00\x00\x13\x01\x00\x00\x16\x01\x00\x00\x20\x01\x00\x00\x15\x01\x00\x00\x17\x01\x00\x00\x1b\x01\x00\x00\x23\x01\x00\x00\x22\x01\x00\x00\x29\x01\x00\x00\x1a\x01\x00\x00\x27\x01\x00\x00\x28\x01\x00\x00\x2e\x01\x00\x00\x1f\x01\x00\x00\x2c\x01\x00\x00\x2d\x01\x00\x00\x31\x01\x00\x00\x24\x01\x00\x00\x2f\x01\x00\x00\x30\x01\x00\x00\x36\x01\x00\x00\x2a\x01\x00\x00\x33\x01\x00\x00\x34\x01\x00\x00\x38\x01\x00\x00\x2b\x01\x00\x00\x39\x01\x00\x00\x32\x01\x00\x00\x35\x01\x00\x00\x3a\x01\x00\x00\x3f\x01\x00\x00\x3c\x01\x00\x00\x3b\x01\x00\x00\x40\x01\x00\x00\x3e\x01\x00\x00\x37\x01\x00\x00\x75\x01\x00\x00\x3d\x01\x00\x00\x41\x01\x00\x00\x44\x01\x00\x00\x4c\x01\x00\x00\x4d\x01\x00\x00\xfb\x00\x00\x00\x43\x01\x00\x00\x47\x01\x00\x00\x4e\x01\x00\x00\x49\x01\x00\x00\x4b\x01\x00\x00\x45\x01\x00\x00\x56\x01\x00\x00\x50\x01\x00\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x00\x00\x5a\x01\x00\x00\x4f\x01\x00\x00\x76\x01\x00\x00\x59\x01\x00\x00\x58\x01\x00\x00\x61\x01\x00\x00\x57\x01\x00\x00\x63\x01\x00\x00\x46\x01\x00\x00\x65\x01\x00\x00\x5e\x01\x00\x00\x5b\x01\x00\x00\x68\x01\x00\x00\x5d\x01\x00\x00\x69\x01\x00\x00\x5f\x01\x00\x00\x6c\x01\x00\x00\x73\x01\x00\x00\x70\x01\x00\x00\x64\x01\x00\x00\x6d\x01\x00\x00\x67\x01\x00\x00\x72\x01\x00\x00\x74\x01\x00\x00\x6e\x01\x00\x00\x6a\x01\x00\x00\x7a\x01\x00\x00\x6f\x01\x00\x00\x71\x01\x00\x00\x77\x01\x00\x00\x78\x01\x00\x00\x79\x01\x00\x00\x7e\x01\x00\x00\x81\x01\x00\x00\x7b\x01\x00\x00\x7c\x01\x00\x00\x7f\x01\x00\x00\x82\x01\x00\x00\x6b\x01\x00\x00\x85\x01\x00\x00\x86\x01\x00\x00\x7d\x01\x00\x00\x87\x01\x00\x00\x83\x01\x00\x00\xe0\x00\x00\x00\x89\x01\x00\x00\x84\x01\x00\x00\x8c\x01\x00\x00\x88\x01\x00\x00\x8b\x01\x00\x00\x8a\x01\x00\x00\x8d\x01\x00\x00\x8e\x01\x00\x00\xb9\x01\x00\x00\x8f\x01\x00\x00\x96\x01\x00\x00\x90\x01\x00\x00\x91\x01\x00\x00\x92\x01\x00\x00\x93\x01\x00\x00\x94\x01\x00\x00\x9d\x01\x00\x00\x95\x01\x00\x00\x98\x01\x00\x00\x97\x01\x00\x00\x9a\x01\x00\x00\xa3\x01\x00\x00\x80\x01\x00\x00\x9f\x01\x00\x00\x9e\x01\x00\x00\x99\x01\x00\x00\xa5\x01\x00\x00\x9b\x01\x00\x00\xa7\x01\x00\x00\xae\x01\x00\x00\xaf\x01\x00\x00\xaa\x01\x00\x00\xa1\x01\x00\x00\xa4\x01\x00\x00\xa6\x01\x00\x00\xa9\x01\x00\x00\xb3\x01\x00\x00\xa8\x01\x00\x00\xba\x01\x00\x00\xb6\x01\x00\x00\xb4\x01\x00\x00\xbc\x01\x00\x00\xbe\x01\x00\x00\xb1\x01\x00\x00\xbb\x01\x00\x00\xc4\x01\x00\x00\xb8\x01\x00\x00\xb5\x01\x00\x00\xc2\x01\x00\x00\xbf\x01\x00\x00\xc3\x01\x00\x00\xc5\x01\x00\x00\xb7\x01\x00\x00\xc7\x01\x00\x00\xc6\x01\x00\x00\xc9\x01\x00\x00\xca\x01\x00\x00\xbd\x01\x00\x00\xce\x01\x00\x00\xc8\x01\x00\x00\xc0\x01\x00\x00\xc1\x01\x00\x00\xd1\x01\x00\x00\xcb\x01\x00\x00\x0b\x02\x00\x00\xcc\x01\x00\x00\xd0\x01\x00\x00\xd8\x01\x00\x00\xd7\x01\x00\x00\xd2\x01\x00\x00\xd3\x01\x00\x00\xdb\x01\x00\x00\xd5\x01\x00\x00\xd9\x01\x00\x00\x17\x02\x00\x00\xdd\x01\x00\x00\xe1\x01\x00\x00\xde\x01\x00\x00\xe2\x01\x00\x00\xe3\x01\x00\x00\xd6\x01\x00\x00\xda\x01\x00\x00\x1f\x02\x00\x00\xdc\x01\x00\x00\xdf\x01\x00\x00\xd4\x01\x00\x00\xe4\x01\x00\x00\xec\x01\x00\x00\xe9\x01\x00\x00\xe7\x01\x00\x00\xf4\x01\x00\x00\xef\x01\x00\x00\xf2\x01\x00\x00\xeb\x01\x00\x00\xe5\x01\x00\x00\xf3\x01\x00\x00\xea\x01\x00\x00\xf6\x01\x00\x00\xf1\x01\x00\x00\xed\x01\x00\x00\xe8\x01\x00\x00\xf5\x01\x00\x00\xfd\x01\x00\x00\x02\x02\x00\x00\xf7\x01\x00\x00\xff\x01\x00\x00\xfb\x01\x00\x00\xf9\x01\x00\x00\x06\x02\x00\x00\xfe\x01\x00\x00\xfc\x01\x00\x00\x05\x02\x00\x00\x09\x02\x00\x00\x0c\x02\x00\x00\x01\x02\x00\x00\x04\x02\x00\x00\x03\x02\x00\x00\x07\x02\x00\x00\x0a\x02\x00\x00\x0f\x02\x00\x00\x11\x02\x00\x00\x18\x02\x00\x00\x0d\x02\x00\x00\x1a\x02\x00\x00\x0e\x02\x00\x00\x44\x02\x00\x00\x13\x02\x00\x00\x1d\x02\x00\x00\x1e\x02\x00\x00\x12\x02\x00\x00\x21\x02\x00\x00\x14\x02\x00\x00\x50\x02\x00\x00\x22\x02\x00\x00\x24\x02\x00\x00\x23\x02\x00\x00\x20\x02\x00\x00\x26\x02\x00\x00\x1b\x02\x00\x00\x27\x02\x00\x00\x2d\x02\x00\x00\x28\x02\x00\x00\x2a\x02\x00\x00\x25\x02\x00\x00\x5e\x02\x00\x00\x2c\x02\x00\x00\x30\x02\x00\x00\x2e\x02\x00\x00\x2f\x02\x00\x00\x32\x02\x00\x00\x29\x02\x00\x00\x35\x02\x00\x00\x34\x02\x00\x00\x2b\x02\x00\x00\x33\x02\x00\x00\x36\x02\x00\x00\x31\x02\x00\x00\x38\x02\x00\x00\x41\x02\x00\x00\x37\x02\x00\x00\x3a\x02\x00\x00\x3b\x02\x00\x00\x3d\x02\x00\x00\x3e\x02\x00\x00\x3c\x02\x00\x00\x3f\x02\x00\x00\x43\x02\x00\x00\x42\x02\x00\x00\x46\x02\x00\x00\x45\x02\x00\x00\x47\x02\x00\x00\x48\x02\x00\x00\x49\x02\x00\x00\x4b\x02\x00\x00\x4e\x02\x00\x00\x4c\x02\x00\x00\x4a\x02\x00\x00\x4d\x02\x00\x00\x53\x02\x00\x00\x58\x02\x00\x00\x51\x02\x00\x00\x52\x02\x00\x00\x54\x02\x00\x00\x4f\x02\x00\x00\x39\x02\x00\x00\x63\x02\x00\x00\x61\x02\x00\x00\x5b\x02\x00\x00\x5d\x02\x00\x00\x59\x02\x00\x00\x62\x02\x00\x00\x68\x02\x00\x00\x5c\x02\x00\x00\x60\x02\x00\x00\x64\x02\x00\x00\x67\x02\x00\x00\x69\x02\x00\x00\x5f\x02\x00\x00\x66\x02\x00\x00\x65\x02\x00\x00\x6a\x02\x00\x00\x6c\x02\x00\x00\x6b\x02\x00\x00\x72\x02\x00\x00\x77\x02\x00\x00\x6d\x02\x00\x00\x7a\x02\x00\x00\x7e\x02\x00\x00\x70\x02\x00\x00\x7f\x02\x00\x00\x82\x02\x00\x00\x7b\x02\x00\x00\xb8\x02\x00\x00\x86\x02\x00\x00\x83\x02\x00\x00\x76\x02\x00\x00\x87\x02\x00\x00\x79\x02\x00\x00\x88\x02\x00\x00\x8a\x02\x00\x00\x84\x02\x00\x00\x7c\x02\x00\x00\x8c\x02\x00\x00\x89\x02\x00\x00\x81\x02\x00\x00\x8d\x02\x00\x00\x8e\x02\x00\x00\x90\x02\x00\x00\x85\x02\x00\x00\x94\x02\x00\x00\x99\x02\x00\x00\x96\x02\x00\x00\x8b\x02\x00\x00\x98\x02\x00\x00\x8f\x02\x00\x00\x9b\x02\x00\x00\x9c\x02\x00\x00\x95\x02\x00\x00\x91\x02\x00\x00\xa0\x02\x00\x00\x92\x02\x00\x00\xa4\x02\x00\x00\xa1\x02\x00\x00\x9a\x02\x00\x00\x9d\x02\x00\x00\x9f\x02\x00\x00\xa3\x02\x00\x00\xa6\x02\x00\x00\xa7\x02\x00\x00\x97\x02\x00\x00\xe1\x02\x00\x00\xab\x02\x00\x00\x9e\x02\x00\x00\xa2\x02\x00\x00\xa8\x02\x00\x00\xa9\x02\x00\x00\xae\x02\x00\x00\xa5\x02\x00\x00\xad\x02\x00\x00\xaa\x02\x00\x00\xb0\x02\x00\x00\xac\x02\x00\x00\xaf\x02\x00\x00\xb1\x02\x00\x00\xb2\x02\x00\x00\xb3\x02\x00\x00\xb5\x02\x00\x00\xb6\x02\x00\x00\xb7\x02\x00\x00\xbc\x02\x00\x00\xb4\x02\x00\x00\xba\x02\x00\x00\xbd\x02\x00\x00\xb9\x02\x00\x00\xbb\x02\x00\x00\xc2\x02\x00\x00\xbe\x02\x00\x00\xc4\x02\x00\x00\xbf\x02\x00\x00\xc0\x02\x00\x00\xc6\x02\x00\x00\xce\x02\x00\x00\xc5\x02\x00\x00\xcd\x02\x00\x00\xcc\x02\x00\x00\xc3\x02\x00\x00\xd2\x02\x00\x00\xd5\x02\x00\x00\xca\x02\x00\x00\xc9\x02\x00\x00\xd3\x02\x00\x00\xda\x02\x00\x00\xcf\x02\x00\x00\xd6\x02\x00\x00\xd7\x02\x00\x00\xd0\x02\x00\x00\xd4\x02\x00\x00\xe3\x02\x00\x00\xd8\x02\x00\x00\xd9\x02\x00\x00\xe6\x02\x00\x00\xdb\x02\x00\x00\xdf\x02\x00\x00\xdc\x02\x00\x00\xe2\x02\x00\x00\xe7\x02\x00\x00\xe5\x02\x00\x00\x17\x03\x00\x00\xe0\x02\x00\x00\xe8\x02\x00\x00\xdd\x02\x00\x00\xee\x02\x00\x00\xe4\x02\x00\x00\xef\x02\x00\x00\xe9\x02\x00\x00\xea\x02\x00\x00\xf4\x02\x00\x00\xf5\x02\x00\x00\xec\x02\x00\x00\xf6\x02\x00\x00\x2d\x03\x00\x00\xf2\x02\x00\x00\xfe\x02\x00\x00\xeb\x02\x00\x00\xf1\x02\x00\x00\xed\x02\x00\x00\xf3\x02\x00\x00\xf0\x02\x00\x00\xf7\x02\x00\x00\x34\x03\x00\x00\x05\x03\x00\x00\xf9\x02\x00\x00\x01\x03\x00\x00\x06\x03\x00\x00\x02\x03\x00\x00\x07\x03\x00\x00\x0c\x03\x00\x00\x03\x03\x00\x00\xff\x02\x00\x00\x12\x03\x00\x00\x00\x03\x00\x00\x0d\x03\x00\x00\x08\x03\x00\x00\x0e\x03\x00\x00\x0f\x03\x00\x00\x11\x03\x00\x00\x15\x03\x00\x00\x10\x03\x00\x00\x0b\x03\x00\x00\x13\x03\x00\x00\x1f\x03\x00\x00\x1d\x03\x00\x00\x14\x03\x00\x00\x16\x03\x00\x00\x18\x03\x00\x00\x21\x03\x00\x00\x19\x03\x00\x00\x1b\x03\x00\x00\x1e\x03\x00\x00\x1a\x03\x00\x00\x20\x03\x00\x00\x22\x03\x00\x00\x1c\x03\x00\x00\x23\x03\x00\x00\x27\x03\x00\x00\x25\x03\x00\x00\x24\x03\x00\x00\x30\x03\x00\x00\x26\x03\x00\x00\x58\x03\x00\x00\x33\x03\x00\x00\x2e\x03\x00\x00\x32\x03\x00\x00\x2f\x03\x00\x00\x35\x03\x00\x00\x29\x03\x00\x00\x28\x03\x00\x00\x36\x03\x00\x00\x3a\x03\x00\x00\x38\x03\x00\x00\x37\x03\x00\x00\x59\x03\x00\x00\x3f\x03\x00\x00\x39\x03\x00\x00\x3d\x03\x00\x00\x3b\x03\x00\x00\x3c\x03\x00\x00\x3e\x03\x00\x00\x40\x03\x00\x00\x45\x03\x00\x00\x42\x03\x00\x00\x41\x03\x00\x00\x43\x03\x00\x00\x44\x03\x00\x00\x46\x03\x00\x00\x47\x03\x00\x00\x4b\x03\x00\x00\x4a\x03\x00\x00\x74\x03\x00\x00\x4c\x03\x00\x00\x53\x03\x00\x00\x48\x03\x00\x00\x4d\x03\x00\x00\x4e\x03\x00\x00\x49\x03\x00\x00\x4f\x03\x00\x00\x50\x03\x00\x00\x52\x03\x00\x00\x5d\x03\x00\x00\x55\x03\x00\x00\x54\x03\x00\x00\x56\x03\x00\x00\x7b\x03\x00\x00\x57\x03\x00\x00\x51\x03\x00\x00\x5b\x03\x00\x00\x60\x03\x00\x00\x62\x03\x00\x00\x5c\x03\x00\x00\x5a\x03\x00\x00\x5e\x03\x00\x00\x5f\x03\x00\x00\x63\x03\x00\x00\x61\x03\x00\x00\x69\x03\x00\x00\x8c\x03\x00\x00\x64\x03\x00\x00\x66\x03\x00\x00\x6e\x03\x00\x00\x6d\x03\x00\x00\x68\x03\x00\x00\x6a\x03\x00\x00\x72\x03\x00\x00\xa7\x03\x00\x00\x71\x03\x00\x00\x6f\x03\x00\x00\x77\x03\x00\x00\x79\x03\x00\x00\x67\x03\x00\x00\xd7\x03\x00\x00\x00\x00\x00\x00\xdc\x03\x00\x00\xc0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x03\x00\x00\xf4\x03\x00\x00\xa6\x03\x00\x00\xa0\x03\x00\x00\x94\x03\x00\x00\x9a\x03\x00\x00\xf9\x03\x00\x00\x11\x04\x00\x00\x16\x04\x00\x00\x1e\x04\x00\x00\x00\x00\x00\x00\xcb\x03\x00\x00\xd2\x03\x00\x00\xec\x03\x00\x00\x44\x04\x00\x00\x8f\x04\x00\x00\xda\x04\x00\x00\x25\x05\x00\x00\x70\x05\x00\x00\xc1\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# alex_table :: AlexAddr alex_table = AlexA# "\x00\x00\x42\x03\x04\x00\x06\x00\x07\x00\x08\x00\x09\x00\x07\x00\x0b\x00\x0c\x00\x11\x00\x07\x00\x0d\x00\x0f\x00\x12\x00\x13\x00\x18\x00\x12\x00\x17\x00\x16\x00\x14\x00\x12\x00\xaa\x00\xcc\x00\x40\x03\x40\x03\x3a\x03\xec\x00\x40\x03\x40\x03\xf1\x00\x40\x03\x40\x03\x40\x03\x40\x03\x40\x03\x40\x03\x39\x03\x35\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x40\x03\x40\x03\x32\x03\x40\x03\x40\x03\x40\x03\x1a\x00\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x40\x03\xf6\x00\x40\x03\x40\x03\x3c\x03\xfb\x00\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3c\x03\x3f\x03\x40\x03\x42\x03\x40\x03\x1c\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x50\x01\x80\x01\x89\x01\xc4\x01\xd8\x01\x12\x02\x2b\x02\x3b\x02\x52\x02\x42\x03\x27\x03\x27\x03\x1e\x00\x5f\x02\x27\x03\x27\x03\x87\x02\x27\x03\x27\x03\x27\x03\x27\x03\x27\x03\x27\x03\x27\x03\x26\x03\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x20\x00\x27\x03\x27\x03\x27\x03\x27\x03\x27\x03\x27\x03\x05\x00\x9c\x00\x9d\x00\x9e\x00\x1b\x00\x9f\x00\xa0\x00\x21\x00\x19\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\xa4\x00\xa6\x00\xa7\x00\x15\x00\xa3\x00\x10\x00\xa2\x00\xa5\x00\x27\x03\x0e\x00\x27\x03\x27\x03\xae\x00\x22\x00\x9b\x00\xa1\x00\x27\x01\x5d\x01\x69\x01\x7a\x01\xc8\x00\xa1\x01\xa9\x00\x0a\x00\xa8\x00\xa6\x01\xd3\x01\xaf\x00\x07\x02\x25\x02\x73\x02\x78\x02\x81\x02\xa8\x02\xd7\x02\xe2\x02\x04\x03\xac\x00\xad\x00\x1d\x03\xb0\x00\x27\x03\x28\x03\x27\x03\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\xb1\x00\xb2\x00\xb3\x00\x23\x00\xb5\x00\xb6\x00\xb7\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x24\x00\xb9\x00\xba\x00\xbb\x00\x25\x00\xbd\x00\xbe\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\xbf\x00\xc0\x00\xc1\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\xc2\x00\x26\x00\xc4\x00\xc6\x00\xc5\x00\xc7\x00\x27\x00\xc9\x00\xab\x00\x24\x01\xb4\x00\xcb\x00\xca\x00\x28\x00\xe4\x00\xcd\x00\xb8\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\xbc\x00\xe9\x00\xc3\x00\xce\x00\xcf\x00\xd1\x00\xd2\x00\xe0\x00\xd5\x00\xde\x00\xd0\x00\x29\x00\x20\x01\xd4\x00\xd3\x00\x2a\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xdb\x00\xda\x00\xe3\x00\xdd\x00\x2b\x00\x2c\x00\xdc\x00\xdf\x00\xe1\x00\x2d\x00\xe2\x00\x6c\x01\xea\x00\x02\x01\xeb\x00\xed\x00\xe5\x00\x34\x01\x2e\x00\x2f\x00\xe8\x00\xf2\x00\xe6\x00\xef\x00\xe7\x00\xee\x00\xf7\x00\x35\x00\xf0\x00\x30\x00\xf3\x00\x00\x01\x31\x00\xf4\x00\xf5\x00\x10\x01\xfc\x00\x04\x01\x32\x00\xf8\x00\xf9\x00\x14\x01\x08\x01\x33\x00\xfa\x00\xfd\x00\x18\x01\xfe\x00\x03\x01\xff\x00\x34\x00\x01\x01\x0c\x01\x07\x01\x36\x00\x0b\x01\x1c\x01\x05\x01\x37\x00\x09\x01\x0f\x01\x38\x00\x0d\x01\x06\x01\x11\x01\x0a\x01\x12\x01\x13\x01\x39\x00\x0e\x01\x15\x01\x16\x01\x17\x01\x3a\x00\x1a\x01\x19\x01\x3b\x00\x1b\x01\x1d\x01\x1e\x01\x3c\x00\x22\x01\x21\x01\x1f\x01\x23\x01\x28\x01\x3d\x00\x2e\x01\x42\x01\x26\x01\x2d\x01\x25\x01\x3e\x00\x31\x01\x2b\x01\x30\x01\x32\x01\x29\x01\x2c\x01\x36\x01\x2a\x01\x2f\x01\x3f\x00\x33\x01\x48\x01\x4f\x01\x40\x00\x35\x01\x41\x00\x38\x01\x3a\x01\x37\x01\x3b\x01\x39\x01\x42\x00\x3c\x01\x40\x01\x3e\x01\x41\x01\x43\x01\x3d\x01\x45\x01\x43\x00\x44\x01\x3f\x01\x47\x01\x46\x01\x49\x01\x4b\x01\x4a\x01\x4c\x01\x4e\x01\x44\x00\x4d\x01\x46\x00\x54\x01\x45\x00\x51\x01\x55\x01\x52\x01\x56\x01\x53\x01\x47\x00\x57\x01\x66\x01\x59\x01\x58\x01\x5a\x01\x48\x00\x5c\x01\x5e\x01\x5b\x01\x60\x01\x61\x01\x63\x01\x75\x01\x68\x01\x6b\x01\x49\x00\x6d\x01\x5f\x01\x65\x01\x83\x01\x64\x01\x62\x01\x4a\x00\x67\x01\x76\x01\x6a\x01\x71\x01\x6f\x01\x4b\x00\x70\x01\x6e\x01\x4c\x00\x72\x01\x77\x01\x78\x01\x79\x01\x7d\x01\x7b\x01\x81\x01\x73\x01\x7e\x01\x7c\x01\x82\x01\x4d\x00\x7f\x01\x74\x01\x84\x01\x4e\x00\x85\x01\x4f\x00\x51\x00\x86\x01\x87\x01\x8a\x01\x96\x01\x9c\x01\x50\x00\x8b\x01\x8c\x01\x88\x01\x8d\x01\x8e\x01\x91\x01\x8f\x01\x52\x00\x90\x01\x92\x01\x93\x01\x53\x00\x97\x01\x95\x01\x54\x00\x94\x01\x98\x01\x99\x01\x9a\x01\x9b\x01\x9d\x01\x9e\x01\x55\x00\x9f\x01\x56\x00\xa2\x01\xa0\x01\xa8\x01\xa3\x01\xa4\x01\x57\x00\xa5\x01\xa7\x01\x58\x00\xaa\x01\xab\x01\xb4\x01\xad\x01\xb0\x01\xb1\x01\xb2\x01\xa9\x01\xac\x01\xb6\x01\xae\x01\xaf\x01\xb3\x01\x59\x00\xb5\x01\xb7\x01\xb8\x01\xb9\x01\xba\x01\xbd\x01\xbb\x01\x5a\x00\xbc\x01\xbf\x01\xc2\x01\xbe\x01\xc0\x01\xc3\x01\x5b\x00\xc5\x01\xc1\x01\xc6\x01\xc7\x01\xc8\x01\x5c\x00\xcb\x01\xc9\x01\xca\x01\x5d\x00\xcc\x01\xd0\x01\xcd\x01\xce\x01\xcf\x01\xd1\x01\x5e\x00\xd4\x01\xd7\x01\xd2\x01\xd6\x01\x5f\x00\xdf\x01\xd5\x01\xe7\x01\xfb\x01\x60\x00\xda\x01\xdc\x01\xf0\x01\xdd\x01\xea\x01\xe4\x01\xe0\x01\xde\x01\x61\x00\xe5\x01\xe1\x01\xdb\x01\xe3\x01\xd9\x01\xe2\x01\x62\x00\xf1\x01\xe6\x01\xe8\x01\xe9\x01\x63\x00\xeb\x01\xec\x01\xed\x01\xee\x01\xef\x01\xf5\x01\x64\x00\xf3\x01\xf2\x01\xfd\x01\xf4\x01\x65\x00\xf6\x01\x66\x00\xf8\x01\xf9\x01\x67\x00\xfc\x01\xfe\x01\xff\x01\x01\x02\x00\x02\x05\x02\xf7\x01\x02\x02\x69\x00\xfa\x01\x68\x00\x04\x02\x06\x02\x0a\x02\x09\x02\x0b\x02\x03\x02\x6b\x00\x0c\x02\x13\x02\x10\x02\x08\x02\x0f\x02\x11\x02\x0d\x02\x1f\x02\x6a\x00\x1d\x02\x0e\x02\x6f\x00\x14\x02\x15\x02\x6d\x00\x16\x02\x1c\x02\x17\x02\x1a\x02\x22\x02\x6c\x00\x1b\x02\x6e\x00\x18\x02\x20\x02\x24\x02\x28\x02\x23\x02\x1e\x02\x19\x02\x21\x02\x26\x02\x27\x02\x29\x02\x2a\x02\x3a\x02\x70\x00\x32\x02\x2d\x02\x5c\x02\x2f\x02\x30\x02\x64\x02\x71\x00\x31\x02\x6d\x02\x72\x00\x37\x02\x33\x02\x50\x02\x38\x02\x73\x00\x34\x02\x2e\x02\x36\x02\x2c\x02\x39\x02\x35\x02\x75\x00\x3c\x02\x74\x00\x3d\x02\x3f\x02\x3e\x02\x41\x02\x40\x02\x42\x02\x46\x02\x43\x02\x44\x02\x76\x00\x45\x02\x47\x02\x4a\x02\x4b\x02\x48\x02\x77\x00\x4f\x02\x49\x02\x4d\x02\x78\x00\x4e\x02\x4c\x02\x51\x02\x79\x00\x53\x02\x57\x02\x54\x02\x56\x02\x61\x02\x55\x02\x58\x02\x7a\x00\x59\x02\x5b\x02\x5a\x02\x7b\x00\x5d\x02\x5e\x02\x65\x02\x7c\x00\x63\x02\x7d\x00\x60\x02\x62\x02\x67\x02\x68\x02\x66\x02\x6b\x02\x00\x00\x69\x02\x6a\x02\x7e\x00\x6f\x02\x6c\x02\x6e\x02\x71\x02\x77\x02\x72\x02\x7b\x02\x7f\x00\x70\x02\x7a\x02\x79\x02\x75\x02\x7d\x02\x7f\x02\x8a\x02\x83\x00\x74\x02\x76\x02\x7c\x02\x80\x00\x80\x02\x85\x02\x7e\x02\x82\x02\x81\x00\x86\x02\x84\x00\x89\x02\x82\x00\x9d\x02\x84\x02\x88\x02\x8b\x02\x92\x02\xa4\x02\x83\x02\x8c\x02\x8d\x02\x85\x00\x93\x02\x8e\x02\x90\x02\x8f\x02\x91\x02\x95\x02\x86\x00\xa0\x02\x94\x02\x96\x02\x99\x02\x9b\x02\xa2\x02\x9e\x02\x9c\x02\x97\x02\x9f\x02\x98\x02\x9a\x02\x87\x00\xa3\x02\xa1\x02\x88\x00\xa6\x02\xa9\x02\xa5\x02\xaa\x02\xab\x02\xb3\x02\xad\x02\xac\x02\xa7\x02\x89\x00\xae\x02\xaf\x02\xb1\x02\xb6\x02\xb2\x02\xd6\x02\xb0\x02\xb8\x02\xb7\x02\x8a\x00\xb4\x02\xbb\x02\xb9\x02\xb5\x02\xbc\x02\xba\x02\xc4\x02\xbd\x02\x8b\x00\xbf\x02\xbe\x02\xc0\x02\xc1\x02\xc6\x02\xc2\x02\xc3\x02\xc9\x02\xce\x02\xc7\x02\xca\x02\x8c\x00\xc5\x02\xc8\x02\x8d\x00\xcb\x02\xcc\x02\xd0\x02\xcd\x02\xd3\x02\xde\x02\xea\x02\xd1\x02\xda\x02\xd4\x02\xcf\x02\xdd\x02\x90\x00\x8e\x00\xd2\x02\x8f\x00\xd9\x02\xd8\x02\xd5\x02\xdb\x02\xdc\x02\xdf\x02\xe1\x02\xe0\x02\x91\x00\xe8\x02\xe3\x02\xe4\x02\xe5\x02\xe7\x02\xef\x02\xe6\x02\xeb\x02\xfb\x02\xee\x02\xe9\x02\xf7\x02\xec\x02\xed\x02\xf2\x02\x09\x03\xf1\x02\x92\x00\xf3\x02\xf5\x02\xf4\x02\xf9\x02\xfa\x02\xf8\x02\xf0\x02\xfc\x02\x01\x03\xfd\x02\xfe\x02\xff\x02\x95\x00\xf6\x02\x16\x03\x00\x03\x08\x03\x0c\x03\x03\x03\x06\x03\x93\x00\x0f\x03\x0b\x03\x94\x00\x0d\x03\x02\x03\x05\x03\x0e\x03\x96\x00\x07\x03\x10\x03\x0a\x03\x98\x00\x13\x03\x15\x03\x12\x03\x19\x03\x1a\x03\x1b\x03\x97\x00\x14\x03\x1e\x03\x11\x03\x18\x03\x17\x03\x1c\x03\x99\x00\x1f\x03\x21\x03\xff\xff\x20\x03\x22\x03\x9a\x00\x25\x03\x25\x03\x25\x03\x25\x03\x25\x03\x25\x03\x25\x03\x25\x03\x25\x03\x25\x03\x34\x03\x2a\x03\x2c\x03\x2d\x03\x2e\x03\x36\x03\x2b\x03\x2b\x03\x2b\x03\x2b\x03\x2b\x03\x34\x03\xff\xff\x25\x03\x00\x00\x00\x00\x36\x03\x00\x00\x25\x03\x2b\x03\x2b\x03\x2b\x03\x2b\x03\x2b\x03\x31\x03\x31\x03\x31\x03\x31\x03\x31\x03\x2b\x03\x00\x00\x00\x00\x00\x00\x2a\x03\x2c\x03\x2d\x03\x2e\x03\x00\x00\x00\x00\x24\x03\x00\x00\x00\x00\x2b\x03\x00\x00\x24\x03\x00\x00\x00\x00\x31\x03\x31\x03\x31\x03\x31\x03\x31\x03\x31\x03\x33\x03\x33\x03\x33\x03\x33\x03\x33\x03\x00\x00\x29\x03\x00\x00\x33\x03\x33\x03\x33\x03\x33\x03\x33\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x03\x29\x03\x00\x00\x00\x00\x00\x00\x33\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x03\x30\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x00\x00\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x00\x00\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x00\x00\x00\x00\x00\x00\x00\x00\x38\x03\x00\x00\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x38\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x03\x00\x00\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\xff\xff\x00\x00\x00\x00\x00\x00\x3b\x03\x00\x00\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x3b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# alex_check :: AlexAddr alex_check = AlexA# "\xff\xff\x0a\x00\x2f\x00\x3a\x00\x4f\x00\x44\x00\x4f\x00\x45\x00\x4d\x00\x58\x00\x3a\x00\x47\x00\x49\x00\x55\x00\x4f\x00\x44\x00\x49\x00\x45\x00\x58\x00\x4d\x00\x4f\x00\x47\x00\x2d\x00\x2d\x00\x21\x00\x22\x00\x23\x00\x2d\x00\x25\x00\x26\x00\x2d\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x55\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x2d\x00\x5d\x00\x5e\x00\x5f\x00\x2d\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x0a\x00\x7e\x00\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x0a\x00\x21\x00\x22\x00\x23\x00\x2d\x00\x25\x00\x26\x00\x2d\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x2a\x00\x7a\x00\x69\x00\x6d\x00\x42\x00\x75\x00\x74\x00\x68\x00\x46\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x6b\x00\x72\x00\x6f\x00\x54\x00\x63\x00\x42\x00\x61\x00\x67\x00\x5b\x00\x46\x00\x5d\x00\x5e\x00\x61\x00\x64\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x6f\x00\x68\x00\x6e\x00\x54\x00\x75\x00\x6c\x00\x6d\x00\x63\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x74\x00\x74\x00\x7a\x00\x68\x00\x7c\x00\x7d\x00\x7e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x6d\x00\x65\x00\x6e\x00\x74\x00\x6f\x00\x6c\x00\x6f\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x72\x00\x6d\x00\x61\x00\x67\x00\x65\x00\x6f\x00\x73\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x69\x00\x74\x00\x69\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x6f\x00\x6e\x00\x65\x00\x65\x00\x70\x00\x61\x00\x74\x00\x72\x00\x61\x00\x74\x00\x63\x00\x65\x00\x64\x00\x72\x00\x62\x00\x63\x00\x69\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x70\x00\x6c\x00\x72\x00\x6f\x00\x6c\x00\x61\x00\x70\x00\x72\x00\x73\x00\x74\x00\x6c\x00\x65\x00\x77\x00\x6f\x00\x73\x00\x72\x00\x70\x00\x61\x00\x63\x00\x69\x00\x74\x00\x6e\x00\x68\x00\x6c\x00\x67\x00\x65\x00\x79\x00\x6f\x00\x69\x00\x70\x00\x67\x00\x76\x00\x65\x00\x79\x00\x66\x00\x63\x00\x6f\x00\x61\x00\x74\x00\x6d\x00\x6f\x00\x63\x00\x74\x00\x6c\x00\x74\x00\x6f\x00\x63\x00\x65\x00\x6f\x00\x74\x00\x6f\x00\x73\x00\x72\x00\x6c\x00\x6f\x00\x77\x00\x63\x00\x73\x00\x72\x00\x6f\x00\x6c\x00\x77\x00\x73\x00\x72\x00\x6f\x00\x6f\x00\x77\x00\x6c\x00\x6c\x00\x6f\x00\x72\x00\x74\x00\x73\x00\x6c\x00\x65\x00\x6c\x00\x77\x00\x74\x00\x65\x00\x74\x00\x6c\x00\x65\x00\x74\x00\x79\x00\x69\x00\x79\x00\x64\x00\x74\x00\x68\x00\x79\x00\x69\x00\x64\x00\x74\x00\x68\x00\x64\x00\x69\x00\x68\x00\x74\x00\x69\x00\x64\x00\x68\x00\x64\x00\x69\x00\x74\x00\x74\x00\x61\x00\x68\x00\x2d\x00\x2d\x00\x6f\x00\x6e\x00\x74\x00\x6d\x00\x64\x00\x69\x00\x69\x00\x6c\x00\x70\x00\x6f\x00\x6f\x00\x74\x00\x73\x00\x65\x00\x65\x00\x6d\x00\x75\x00\x72\x00\x69\x00\x70\x00\x6f\x00\x74\x00\x6c\x00\x65\x00\x6e\x00\x72\x00\x6e\x00\x65\x00\x6e\x00\x72\x00\x69\x00\x75\x00\x63\x00\x74\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x65\x00\x72\x00\x6e\x00\x65\x00\x65\x00\x74\x00\x73\x00\x65\x00\x65\x00\x74\x00\x61\x00\x62\x00\x66\x00\x65\x00\x74\x00\x72\x00\x66\x00\x70\x00\x72\x00\x6f\x00\x72\x00\x65\x00\x6f\x00\x69\x00\x73\x00\x65\x00\x63\x00\x69\x00\x2d\x00\x61\x00\x65\x00\x72\x00\x61\x00\x72\x00\x73\x00\x6d\x00\x6f\x00\x74\x00\x6e\x00\x6c\x00\x63\x00\x6c\x00\x6d\x00\x69\x00\x79\x00\x6f\x00\x74\x00\x6e\x00\x70\x00\x65\x00\x6c\x00\x6c\x00\x61\x00\x6c\x00\x66\x00\x74\x00\x6f\x00\x6f\x00\x61\x00\x73\x00\x6e\x00\x79\x00\x69\x00\x74\x00\x6c\x00\x74\x00\x65\x00\x73\x00\x69\x00\x61\x00\x76\x00\x77\x00\x79\x00\x64\x00\x6a\x00\x7a\x00\x75\x00\x73\x00\x65\x00\x74\x00\x74\x00\x72\x00\x74\x00\x63\x00\x68\x00\x61\x00\x6c\x00\x65\x00\x79\x00\x72\x00\x69\x00\x61\x00\x6e\x00\x65\x00\x69\x00\x74\x00\x67\x00\x74\x00\x65\x00\x68\x00\x66\x00\x69\x00\x67\x00\x74\x00\x68\x00\x65\x00\x74\x00\x74\x00\x65\x00\x69\x00\x2d\x00\x61\x00\x63\x00\x69\x00\x74\x00\x72\x00\x65\x00\x73\x00\x70\x00\x6e\x00\x67\x00\x6e\x00\x2d\x00\x68\x00\x65\x00\x69\x00\x73\x00\x67\x00\x74\x00\x68\x00\x2d\x00\x79\x00\x74\x00\x73\x00\x6c\x00\x65\x00\x69\x00\x74\x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\x00\x70\x00\x6f\x00\x6e\x00\x69\x00\x74\x00\x74\x00\x69\x00\x6f\x00\x79\x00\x65\x00\x61\x00\x69\x00\x70\x00\x67\x00\x6e\x00\x62\x00\x72\x00\x6b\x00\x69\x00\x70\x00\x6f\x00\x69\x00\x78\x00\x67\x00\x2d\x00\x6c\x00\x6f\x00\x68\x00\x74\x00\x65\x00\x74\x00\x72\x00\x6f\x00\x74\x00\x74\x00\x6d\x00\x2d\x00\x66\x00\x65\x00\x72\x00\x74\x00\x6f\x00\x66\x00\x66\x00\x73\x00\x65\x00\x67\x00\x74\x00\x65\x00\x68\x00\x2d\x00\x69\x00\x73\x00\x68\x00\x74\x00\x69\x00\x64\x00\x68\x00\x6e\x00\x68\x00\x65\x00\x67\x00\x69\x00\x64\x00\x77\x00\x68\x00\x68\x00\x74\x00\x74\x00\x69\x00\x74\x00\x68\x00\x70\x00\x61\x00\x77\x00\x65\x00\x6e\x00\x63\x00\x69\x00\x72\x00\x6c\x00\x6e\x00\x75\x00\x76\x00\x73\x00\x64\x00\x74\x00\x77\x00\x6f\x00\x6c\x00\x65\x00\x6f\x00\x69\x00\x73\x00\x6c\x00\x66\x00\x72\x00\x77\x00\x68\x00\x74\x00\x65\x00\x6f\x00\x64\x00\x6c\x00\x74\x00\x79\x00\x72\x00\x61\x00\x64\x00\x69\x00\x6e\x00\x67\x00\x67\x00\x62\x00\x6f\x00\x69\x00\x69\x00\x67\x00\x6c\x00\x70\x00\x68\x00\x6f\x00\x74\x00\x6c\x00\x6f\x00\x75\x00\x65\x00\x6d\x00\x74\x00\x72\x00\x6f\x00\x74\x00\x66\x00\x74\x00\x65\x00\x62\x00\x74\x00\x72\x00\x61\x00\x65\x00\x2d\x00\x6b\x00\x61\x00\x62\x00\x66\x00\x74\x00\x72\x00\x65\x00\x65\x00\x72\x00\x69\x00\x66\x00\x65\x00\x64\x00\x6f\x00\x73\x00\x65\x00\x69\x00\x6e\x00\x73\x00\x65\x00\x61\x00\x62\x00\x66\x00\x65\x00\x61\x00\x74\x00\x65\x00\x72\x00\x66\x00\x72\x00\x6f\x00\x65\x00\x74\x00\x63\x00\x61\x00\x68\x00\x67\x00\x65\x00\x72\x00\x6e\x00\x2d\x00\x64\x00\x79\x00\x69\x00\xff\xff\x75\x00\x72\x00\x67\x00\x69\x00\x6e\x00\x73\x00\x69\x00\x65\x00\x6f\x00\x68\x00\x6e\x00\x74\x00\x63\x00\x69\x00\x6f\x00\x65\x00\x67\x00\x61\x00\x65\x00\x75\x00\x74\x00\x6e\x00\x73\x00\x68\x00\x65\x00\x73\x00\x69\x00\x73\x00\x61\x00\x6b\x00\x65\x00\x74\x00\x65\x00\x70\x00\x68\x00\x64\x00\x61\x00\x74\x00\x7a\x00\x65\x00\x6e\x00\x72\x00\x70\x00\x75\x00\x65\x00\x6d\x00\x72\x00\x6e\x00\x6c\x00\x2d\x00\x75\x00\x63\x00\x61\x00\x69\x00\x61\x00\x63\x00\x6f\x00\x74\x00\x68\x00\x75\x00\x74\x00\x6e\x00\x74\x00\x72\x00\x65\x00\x65\x00\x61\x00\x72\x00\x62\x00\x6c\x00\x65\x00\x2d\x00\x65\x00\x73\x00\x73\x00\x6c\x00\x61\x00\x6f\x00\x2d\x00\x75\x00\x6f\x00\x79\x00\x6c\x00\x61\x00\x74\x00\x78\x00\x64\x00\x69\x00\x74\x00\x65\x00\x67\x00\x69\x00\x63\x00\x6e\x00\x72\x00\x6f\x00\x61\x00\x74\x00\x64\x00\x69\x00\x6f\x00\x73\x00\x74\x00\x65\x00\x68\x00\x6e\x00\x6e\x00\x6e\x00\x74\x00\x61\x00\x64\x00\x61\x00\x6f\x00\x66\x00\x2d\x00\x2d\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x65\x00\x70\x00\x77\x00\x73\x00\x6d\x00\x69\x00\x6e\x00\x72\x00\x6f\x00\x64\x00\x62\x00\x64\x00\x69\x00\x69\x00\x61\x00\x65\x00\x72\x00\x74\x00\x63\x00\x69\x00\x69\x00\x61\x00\x2d\x00\x67\x00\x6c\x00\x6f\x00\x6c\x00\x69\x00\x62\x00\x2d\x00\x69\x00\x6e\x00\x69\x00\x69\x00\x6c\x00\x63\x00\x65\x00\x69\x00\x73\x00\x66\x00\x6c\x00\x61\x00\x6d\x00\x69\x00\x65\x00\x74\x00\x2d\x00\x6c\x00\x65\x00\x61\x00\x6d\x00\x69\x00\x79\x00\x64\x00\x70\x00\x79\x00\x63\x00\x75\x00\x68\x00\x69\x00\x65\x00\x74\x00\x6f\x00\x73\x00\x68\x00\x6f\x00\x64\x00\x74\x00\x61\x00\x63\x00\x69\x00\x73\x00\x72\x00\x2d\x00\x77\x00\x70\x00\x73\x00\x6e\x00\x67\x00\x69\x00\x64\x00\x0a\x00\x6e\x00\x65\x00\x78\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2a\x00\x45\x00\x4c\x00\x59\x00\x54\x00\x2f\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2a\x00\x0a\x00\x20\x00\xff\xff\xff\xff\x2f\x00\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\xff\xff\xff\xff\xff\xff\x65\x00\x6c\x00\x79\x00\x74\x00\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x20\x00\xff\xff\x3a\x00\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x3e\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x3e\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x53\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x0a\x00\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# alex_deflt :: AlexAddr alex_deflt = AlexA# "\x41\x03\x41\x03\x41\x03\x41\x03\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x37\x03\x37\x03\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x03\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# alex_accept = listArray (0::Int,834) [[],[],[],[],[(AlexAcc (alex_action_0))],[(AlexAcc (alex_action_16))],[(AlexAcc (alex_action_1))],[(AlexAcc (alex_action_1))],[],[],[(AlexAcc (alex_action_16))],[],[],[],[(AlexAcc (alex_action_16))],[],[(AlexAcc (alex_action_16))],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_2))],[],[],[(AlexAcc (alex_action_16))],[],[],[],[(AlexAcc (alex_action_16))],[],[(AlexAcc (alex_action_16))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_4))],[(AlexAcc (alex_action_16))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_5))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAccPred (alex_action_6) (alexRightContext 803))],[(AlexAcc (alex_action_16))],[],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_16))],[],[],[],[],[],[],[(AlexAccSkip)],[],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_9))],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_15))],[],[(AlexAcc (alex_action_10))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_11))],[(AlexAcc (alex_action_11))],[(AlexAcc (alex_action_12))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_16))],[(AlexAccPred (alex_action_13) (alexRightContext 829))],[(AlexAccPred (alex_action_13) (alexRightContext 829)),(AlexAcc (alex_action_16))],[],[(AlexAccSkip)],[(AlexAcc (alex_action_14))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_16))],[(AlexAcc (alex_action_17))]] {-# LINE 78 "Text/Highlighting/Illuminate/CSS.x" #-} lexer :: Lexer lexer = Lexer { name = "CSS" , aliases = ["css"] , filenames = ["*.css"] , scan = scanner } cbracket,comment,linecomment :: Int cbracket = 1 comment = 2 linecomment = 3 alex_action_0 = tok Comment ==> popContext alex_action_1 = tok Alert alex_action_2 = tok Alert alex_action_3 = tok Whitespace ==> popContext alex_action_4 = tok Number alex_action_5 = tok Number alex_action_6 = tok Property alex_action_7 = tok Symbol alex_action_8 = tok CBracket ==> popContext alex_action_9 = tok EOF alex_action_10 = tok Comment ==> pushContext (comment, Comment) alex_action_11 = tok Comment ==> pushContext (linecomment, Comment) alex_action_12 = tok Selector alex_action_13 = tok String alex_action_14 = tok CBracket ==> pushContext (cbracket, Plain) alex_action_15 = tok Symbol alex_action_16 = plain alex_action_17 = tok Whitespace {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "" #-} {-# LINE 1 "" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-} -- ----------------------------------------------------------------------------- -- ALEX TEMPLATE -- -- This code is in the PUBLIC DOMAIN; you may copy it freely and use -- it for any purpose whatsoever. -- ----------------------------------------------------------------------------- -- INTERNALS and main scanner engine {-# LINE 35 "templates/GenericTemplate.hs" #-} {-# LINE 45 "templates/GenericTemplate.hs" #-} data AlexAddr = AlexA# Addr# #if __GLASGOW_HASKELL__ < 503 uncheckedShiftL# = shiftL# #endif {-# INLINE alexIndexInt16OffAddr #-} alexIndexInt16OffAddr (AlexA# arr) off = #ifdef WORDS_BIGENDIAN narrow16Int# i where i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low) high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#))) low = int2Word# (ord# (indexCharOffAddr# arr off')) off' = off *# 2# #else indexInt16OffAddr# arr off #endif {-# INLINE alexIndexInt32OffAddr #-} alexIndexInt32OffAddr (AlexA# arr) off = #ifdef WORDS_BIGENDIAN narrow32Int# i where i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#` (b2 `uncheckedShiftL#` 16#) `or#` (b1 `uncheckedShiftL#` 8#) `or#` b0) b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#))) b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#))) b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#))) b0 = int2Word# (ord# (indexCharOffAddr# arr off')) off' = off *# 4# #else indexInt32OffAddr# arr off #endif #if __GLASGOW_HASKELL__ < 503 quickIndex arr i = arr ! i #else -- GHC >= 503, unsafeAt is available from Data.Array.Base. quickIndex = unsafeAt #endif -- ----------------------------------------------------------------------------- -- Main lexing routines data AlexReturn a = AlexEOF | AlexError !AlexInput | AlexSkip !AlexInput !Int | AlexToken !AlexInput !Int a -- alexScan :: AlexInput -> StartCode -> AlexReturn a alexScan input (I# (sc)) = alexScanUser undefined input (I# (sc)) alexScanUser user input (I# (sc)) = case alex_scan_tkn user input 0# input sc AlexNone of (AlexNone, input') -> case alexGetChar input of Nothing -> AlexEOF Just _ -> AlexError input' (AlexLastSkip input len, _) -> AlexSkip input len (AlexLastAcc k input len, _) -> AlexToken input len k -- Push the input through the DFA, remembering the most recent accepting -- state it encountered. alex_scan_tkn user orig_input len input s last_acc = input `seq` -- strict in the input let new_acc = check_accs (alex_accept `quickIndex` (I# (s))) in new_acc `seq` case alexGetChar input of Nothing -> (new_acc, input) Just (c, new_input) -> let base = alexIndexInt32OffAddr alex_base s (I# (ord_c)) = ord c offset = (base +# ord_c) check = alexIndexInt16OffAddr alex_check offset new_s = if (offset >=# 0#) && (check ==# ord_c) then alexIndexInt16OffAddr alex_table offset else alexIndexInt16OffAddr alex_deflt s in case new_s of -1# -> (new_acc, input) -- on an error, we want to keep the input *before* the -- character that failed, not after. _ -> alex_scan_tkn user orig_input (len +# 1#) new_input new_s new_acc where check_accs [] = last_acc check_accs (AlexAcc a : _) = AlexLastAcc a input (I# (len)) check_accs (AlexAccSkip : _) = AlexLastSkip input (I# (len)) check_accs (AlexAccPred a pred : rest) | pred user orig_input (I# (len)) input = AlexLastAcc a input (I# (len)) check_accs (AlexAccSkipPred pred : rest) | pred user orig_input (I# (len)) input = AlexLastSkip input (I# (len)) check_accs (_ : rest) = check_accs rest data AlexLastAcc a = AlexNone | AlexLastAcc a !AlexInput !Int | AlexLastSkip !AlexInput !Int data AlexAcc a user = AlexAcc a | AlexAccSkip | AlexAccPred a (AlexAccPred user) | AlexAccSkipPred (AlexAccPred user) type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool -- ----------------------------------------------------------------------------- -- Predicates on a rule alexAndPred p1 p2 user in1 len in2 = p1 user in1 len in2 && p2 user in1 len in2 --alexPrevCharIsPred :: Char -> AlexAccPred _ alexPrevCharIs c _ input _ _ = c == alexInputPrevChar input --alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _ alexPrevCharIsOneOf arr _ input _ _ = arr ! alexInputPrevChar input --alexRightContext :: Int -> AlexAccPred _ alexRightContext (I# (sc)) user _ _ input = case alex_scan_tkn user input 0# input sc AlexNone of (AlexNone, _) -> False _ -> True -- TODO: there's no need to find the longest -- match when checking the right context, just -- the first match will do. -- used by wrappers iUnbox (I# (i)) = i