{-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-missing-signatures #-} {-# LANGUAGE CPP #-} {-# LINE 2 "Lexer.x" #-} module Lexer where import Data.Char (chr) #if __GLASGOW_HASKELL__ >= 603 #include "ghcconfig.h" #elif defined(__GLASGOW_HASKELL__) #include "config.h" #endif #if __GLASGOW_HASKELL__ >= 503 import Data.Array import Data.Array.Base (unsafeAt) #else import Array #endif {-# 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. import Control.Applicative as App (Applicative (..)) import qualified Control.Monad (ap) import Data.Word (Word8) import Data.Char (ord) import qualified Data.Bits -- | Encode a Haskell String to a list of Word8 values, in UTF8 format. utf8Encode :: Char -> [Word8] utf8Encode = map fromIntegral . go . ord where go oc | oc <= 0x7f = [oc] | oc <= 0x7ff = [ 0xc0 + (oc `Data.Bits.shiftR` 6) , 0x80 + oc Data.Bits..&. 0x3f ] | oc <= 0xffff = [ 0xe0 + (oc `Data.Bits.shiftR` 12) , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f) , 0x80 + oc Data.Bits..&. 0x3f ] | otherwise = [ 0xf0 + (oc `Data.Bits.shiftR` 18) , 0x80 + ((oc `Data.Bits.shiftR` 12) Data.Bits..&. 0x3f) , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f) , 0x80 + oc Data.Bits..&. 0x3f ] type Byte = Word8 -- ----------------------------------------------------------------------------- -- The input type type AlexInput = (AlexPosn, -- current position, Char, -- previous char [Byte], -- pending bytes on current char String) -- current input string ignorePendingBytes :: AlexInput -> AlexInput ignorePendingBytes (p,c,_ps,s) = (p,c,[],s) alexInputPrevChar :: AlexInput -> Char alexInputPrevChar (_p,c,_bs,_s) = c alexGetByte :: AlexInput -> Maybe (Byte,AlexInput) alexGetByte (p,c,(b:bs),s) = Just (b,(p,c,bs,s)) alexGetByte (_,_,[],[]) = Nothing alexGetByte (p,_,[],(c:s)) = let p' = alexMove p c (b:bs) = utf8Encode c in p' `seq` Just (b, (p', c, bs, s)) -- ----------------------------------------------------------------------------- -- 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+alex_tab_size-1) `div` alex_tab_size)*alex_tab_size+1) alexMove (AlexPn a l _) '\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_bytes :: [Byte], alex_scd :: !Int -- the current startcode } -- 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_bytes = [], alex_scd = 0}) of Left msg -> Left msg Right ( _, a ) -> Right a newtype Alex a = Alex { unAlex :: AlexState -> Either String (AlexState, a) } instance Functor Alex where fmap f a = Alex $ \s -> case unAlex a s of Left msg -> Left msg Right (s', a') -> Right (s', f a') instance Applicative Alex where pure a = Alex $ \s -> Right (s, a) fa <*> a = Alex $ \s -> case unAlex fa s of Left msg -> Left msg Right (s', f) -> case unAlex a s' of Left msg -> Left msg Right (s'', b) -> Right (s'', f b) 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 = App.pure alexGetInput :: Alex AlexInput alexGetInput = Alex $ \s@AlexState{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp__} -> Right (s, (pos,c,bs,inp__)) alexSetInput :: AlexInput -> Alex () alexSetInput (pos,c,bs,inp__) = Alex $ \s -> case s{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp__} of state__@(AlexState{}) -> Right (state__, ()) alexError :: String -> Alex a alexError message = Alex $ const $ 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 ((AlexPn _ line column),_,_,_) -> alexError $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column) AlexSkip inp__' _len -> do alexSetInput inp__' alexMonadScan AlexToken inp__' len action -> do alexSetInput inp__' action (ignorePendingBytes inp__) len -- ----------------------------------------------------------------------------- -- Useful token actions type AlexAction result = AlexInput -> Int -> Alex 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 :: (AlexInput -> Int -> token) -> AlexAction token token t input__ len = return (t input__ len) -- ----------------------------------------------------------------------------- -- Monad (with ByteString input) -- ----------------------------------------------------------------------------- -- Basic wrapper -- ----------------------------------------------------------------------------- -- Basic wrapper, ByteString version -- ----------------------------------------------------------------------------- -- Posn wrapper -- Adds text positions to the basic model. -- ----------------------------------------------------------------------------- -- Posn wrapper, ByteString version -- ----------------------------------------------------------------------------- -- GScan wrapper -- For compatibility with previous versions of Alex, and because we can. alex_tab_size :: Int alex_tab_size = 8 alex_base :: Array Int Int alex_base = listArray (0 :: Int, 104) [ -8 , -58 , -73 , 0 , 40 , 0 , 168 , 296 , 552 , 488 , 0 , 734 , -39 , 697 , -31 , -86 , -38 , 746 , 0 , 731 , 951 , 1035 , 1119 , 1203 , 1287 , 1371 , 1455 , 1539 , 1623 , 1707 , 1791 , 1875 , -42 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -103 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 712 , -34 , 0 , -40 , 0 , -33 , 0 , 0 , 0 , -22 , 0 , 0 , 0 , 1950 , 2025 , 2102 , 2112 , 2134 , 0 , 2166 , 2250 , 2334 , 2418 , 2502 , 2586 , 2670 , 2754 , 2838 , 2922 , 3006 , 3090 , 3174 , 3258 , 3342 , 3426 , 3510 , 3594 , 3678 , 3762 , 3846 , 3930 , 4014 , 4098 , 4182 , 4266 , 4350 , 4434 , 4518 , 4602 , 4677 , 4752 , 4827 , 4902 , 4977 , 5052 , 5127 , 5202 ] alex_table :: Array Int Int alex_table = listArray (0 :: Int, 5457) [ 0 , 17 , 17 , 44 , 13 , 17 , 13 , 41 , 39 , 65 , 65 , 65 , 65 , 65 , 65 , 65 , 65 , 65 , 65 , 43 , 33 , 42 , 37 , 18 , 17 , 1 , 11 , 47 , 45 , 0 , 14 , 0 , 55 , 56 , 52 , 50 , 34 , 51 , 15 , 53 , 63 , 63 , 63 , 63 , 63 , 63 , 63 , 63 , 63 , 63 , 16 , 35 , 48 , 32 , 49 , 0 , 0 , 102 , 102 , 102 , 102 , 102 , 101 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 104 , 102 , 102 , 102 , 102 , 102 , 102 , 59 , 36 , 60 , 0 , 81 , 54 , 81 , 81 , 79 , 77 , 85 , 81 , 76 , 81 , 95 , 81 , 81 , 71 , 81 , 81 , 81 , 84 , 81 , 70 , 81 , 86 , 81 , 75 , 81 , 81 , 81 , 81 , 57 , 40 , 58 , 9 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 2 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 7 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 8 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 65 , 65 , 65 , 65 , 65 , 65 , 65 , 65 , 65 , 17 , 17 , 38 , 0 , 17 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 66 , 0 , 81 , 0 , 0 , 46 , 0 , 0 , 0 , 0 , 17 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 8 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 9 , 7 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 2 , 6 , 5 , 5 , 5 , 4 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 102 , 0 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 102 , 0 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 64 , 0 , 63 , 63 , 63 , 63 , 63 , 63 , 63 , 63 , 63 , 63 , 64 , 64 , 64 , 64 , 64 , 64 , 64 , 64 , 64 , 64 , 0 , 12 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 12 , 65 , 65 , 65 , 65 , 65 , 65 , 65 , 65 , 65 , 65 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 12 , 0 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 12 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 19 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 20 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 25 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 30 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 96 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 94 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 69 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 93 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 91 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 90 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 89 , 81 , 81 , 81 , 82 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 88 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 87 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 83 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 80 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 78 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 74 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 73 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 72 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 92 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 68 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 67 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 31 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 28 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 27 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 26 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 24 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 23 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 22 , 81 , 81 , 81 , 81 , 29 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 0 , 0 , 0 , 0 , 81 , 0 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 81 , 21 , 81 , 81 , 81 , 81 , 81 , 81 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 102 , 0 , 102 , 102 , 102 , 102 , 61 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 102 , 0 , 102 , 102 , 102 , 102 , 62 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 102 , 0 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 97 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 102 , 0 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 98 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 102 , 0 , 103 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 102 , 0 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 102 , 0 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 100 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 102 , 0 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 99 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 102 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] alex_check :: Array Int Int alex_check = listArray (0 :: Int, 5457) [ -1 , 9 , 10 , 61 , 43 , 13 , 45 , 38 , 94 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 61 , 58 , 124 , 62 , 45 , 32 , 33 , 34 , 61 , 61 , -1 , 38 , -1 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , 91 , 92 , 93 , -1 , 95 , 96 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 123 , 124 , 125 , 191 , 192 , 193 , 194 , 195 , 196 , 197 , 198 , 199 , 200 , 201 , 202 , 203 , 204 , 205 , 206 , 207 , 208 , 209 , 210 , 211 , 212 , 213 , 214 , 215 , 216 , 217 , 218 , 219 , 220 , 221 , 222 , 223 , 224 , 225 , 226 , 227 , 228 , 229 , 230 , 231 , 232 , 233 , 234 , 235 , 236 , 237 , 238 , 239 , 240 , 241 , 242 , 243 , 244 , 245 , 246 , 247 , 248 , 249 , 250 , 251 , 252 , 253 , 254 , 255 , 143 , 144 , 145 , 146 , 147 , 148 , 149 , 150 , 151 , 152 , 153 , 154 , 155 , 156 , 157 , 158 , 159 , 160 , 161 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 , 174 , 175 , 176 , 177 , 178 , 179 , 180 , 181 , 182 , 183 , 184 , 185 , 186 , 187 , 188 , 189 , 190 , 191 , 192 , 193 , 194 , 195 , 196 , 197 , 198 , 199 , 200 , 201 , 202 , 203 , 204 , 205 , 206 , 207 , 208 , 209 , 210 , 211 , 212 , 213 , 214 , 215 , 216 , 217 , 218 , 219 , 220 , 221 , 222 , 223 , 224 , 225 , 226 , 227 , 228 , 229 , 230 , 231 , 232 , 233 , 234 , 235 , 236 , 237 , 238 , 239 , 240 , 241 , 242 , 243 , 244 , 245 , 246 , 247 , 248 , 249 , 250 , 251 , 252 , 253 , 254 , 255 , 128 , 129 , 130 , 131 , 132 , 133 , 134 , 135 , 136 , 137 , 138 , 139 , 140 , 141 , 142 , 143 , 144 , 145 , 146 , 147 , 148 , 149 , 150 , 151 , 152 , 153 , 154 , 155 , 156 , 157 , 158 , 159 , 160 , 161 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 , 174 , 175 , 176 , 177 , 178 , 179 , 180 , 181 , 182 , 183 , 184 , 185 , 186 , 187 , 188 , 189 , 190 , 191 , 192 , 193 , 194 , 195 , 196 , 197 , 198 , 199 , 200 , 201 , 202 , 203 , 204 , 205 , 206 , 207 , 208 , 209 , 210 , 211 , 212 , 213 , 214 , 215 , 216 , 217 , 218 , 219 , 220 , 221 , 222 , 223 , 224 , 225 , 226 , 227 , 228 , 229 , 230 , 231 , 232 , 233 , 234 , 235 , 236 , 237 , 238 , 239 , 240 , 241 , 242 , 243 , 244 , 245 , 246 , 247 , 248 , 249 , 250 , 251 , 252 , 253 , 254 , 255 , 128 , 129 , 130 , 131 , 132 , 133 , 134 , 135 , 136 , 137 , 138 , 139 , 140 , 141 , 142 , 143 , 144 , 145 , 146 , 147 , 148 , 149 , 150 , 151 , 152 , 153 , 154 , 155 , 156 , 157 , 158 , 159 , 160 , 161 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 , 174 , 175 , 176 , 177 , 178 , 179 , 180 , 181 , 182 , 183 , 184 , 185 , 186 , 187 , 188 , 189 , 190 , 191 , 192 , 193 , 194 , 195 , 196 , 197 , 198 , 199 , 200 , 201 , 202 , 203 , 204 , 205 , 206 , 207 , 208 , 209 , 210 , 211 , 212 , 213 , 214 , 215 , 216 , 217 , 218 , 219 , 220 , 221 , 222 , 223 , 224 , 225 , 226 , 227 , 228 , 229 , 230 , 231 , 232 , 233 , 234 , 235 , 236 , 237 , 238 , 239 , 240 , 241 , 242 , 243 , 244 , 245 , 246 , 247 , 248 , 249 , 250 , 251 , 252 , 253 , 254 , 255 , 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , 63 , 64 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , 91 , 92 , 93 , 94 , 95 , 96 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 123 , 124 , 125 , 126 , 127 , 192 , 193 , 194 , 195 , 196 , 197 , 198 , 199 , 200 , 201 , 202 , 203 , 204 , 205 , 206 , 207 , 208 , 209 , 210 , 211 , 212 , 213 , 214 , 215 , 216 , 217 , 218 , 219 , 220 , 221 , 222 , 223 , 224 , 225 , 226 , 227 , 228 , 229 , 230 , 231 , 232 , 233 , 234 , 235 , 236 , 237 , 238 , 239 , 240 , 241 , 242 , 243 , 244 , 245 , 246 , 247 , 248 , 249 , 250 , 251 , 252 , 253 , 254 , 255 , 10 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 9 , 10 , 45 , -1 , 13 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 34 , -1 , 39 , -1 , -1 , 61 , -1 , -1 , -1 , -1 , 32 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 128 , 129 , 130 , 131 , 132 , 133 , 134 , 135 , 136 , 137 , 138 , 139 , 140 , 141 , 142 , 143 , 144 , 145 , 146 , 147 , 148 , 149 , 150 , 151 , 152 , 153 , 154 , 155 , 156 , 157 , 158 , 159 , 160 , 161 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 , 174 , 175 , 176 , 177 , 178 , 179 , 180 , 181 , 182 , 183 , 184 , 185 , 186 , 187 , 188 , 189 , 190 , 191 , 192 , 193 , 194 , 195 , 196 , 197 , 198 , 199 , 200 , 201 , 202 , 203 , 204 , 205 , 206 , 207 , 208 , 209 , 210 , 211 , 212 , 213 , 214 , 215 , 216 , 217 , 218 , 219 , 220 , 221 , 222 , 223 , 224 , 225 , 226 , 227 , 228 , 229 , 230 , 231 , 232 , 233 , 234 , 235 , 236 , 237 , 238 , 239 , 240 , 241 , 242 , 243 , 244 , 245 , 246 , 247 , 248 , 249 , 250 , 251 , 252 , 253 , 254 , 255 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 46 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , 69 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 69 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 101 , -1 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 101 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 39 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , -1 , -1 , -1 , -1 , 95 , -1 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 ] alex_deflt :: Array Int Int alex_deflt = listArray (0 :: Int, 104) [ -1 , -1 , 10 , 10 , 3 , 3 , -1 , -1 , 11 , 11 , 11 , 11 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 ] alex_accept = listArray (0 :: Int, 104) [ AlexAccNone , AlexAccNone , AlexAccNone , AlexAccNone , AlexAccNone , AlexAccNone , AlexAccNone , AlexAccNone , AlexAccNone , AlexAccNone , AlexAccNone , AlexAccNone , AlexAccNone , AlexAccNone , AlexAccNone , AlexAccNone , AlexAccNone , AlexAcc 87 , AlexAcc 86 , AlexAcc 85 , AlexAcc 84 , AlexAcc 83 , AlexAcc 82 , AlexAcc 81 , AlexAcc 80 , AlexAcc 79 , AlexAcc 78 , AlexAcc 77 , AlexAcc 76 , AlexAcc 75 , AlexAcc 74 , AlexAcc 73 , AlexAcc 72 , AlexAcc 71 , AlexAcc 70 , AlexAcc 69 , AlexAcc 68 , AlexAcc 67 , AlexAcc 66 , AlexAcc 65 , AlexAcc 64 , AlexAcc 63 , AlexAcc 62 , AlexAcc 61 , AlexAcc 60 , AlexAcc 59 , AlexAcc 58 , AlexAcc 57 , AlexAcc 56 , AlexAcc 55 , AlexAcc 54 , AlexAcc 53 , AlexAcc 52 , AlexAcc 51 , AlexAcc 50 , AlexAcc 49 , AlexAcc 48 , AlexAcc 47 , AlexAcc 46 , AlexAcc 45 , AlexAcc 44 , AlexAcc 43 , AlexAcc 42 , AlexAcc 41 , AlexAcc 40 , AlexAcc 39 , AlexAcc 38 , AlexAcc 37 , AlexAcc 36 , AlexAcc 35 , AlexAcc 34 , AlexAcc 33 , AlexAcc 32 , AlexAcc 31 , AlexAcc 30 , AlexAcc 29 , AlexAcc 28 , AlexAcc 27 , AlexAcc 26 , AlexAcc 25 , AlexAcc 24 , AlexAcc 23 , AlexAcc 22 , AlexAcc 21 , AlexAcc 20 , AlexAcc 19 , AlexAcc 18 , AlexAcc 17 , AlexAcc 16 , AlexAcc 15 , AlexAcc 14 , AlexAcc 13 , AlexAcc 12 , AlexAcc 11 , AlexAcc 10 , AlexAcc 9 , AlexAcc 8 , AlexAcc 7 , AlexAcc 6 , AlexAcc 5 , AlexAcc 4 , AlexAcc 3 , AlexAcc 2 , AlexAcc 1 , AlexAcc 0 ] alex_actions = array (0 :: Int, 88) [ (87,alex_action_0) , (86,alex_action_1) , (85,alex_action_2) , (84,alex_action_3) , (83,alex_action_4) , (82,alex_action_5) , (81,alex_action_6) , (80,alex_action_7) , (79,alex_action_8) , (78,alex_action_9) , (77,alex_action_10) , (76,alex_action_11) , (75,alex_action_12) , (74,alex_action_13) , (73,alex_action_14) , (72,alex_action_15) , (71,alex_action_16) , (70,alex_action_17) , (69,alex_action_18) , (68,alex_action_19) , (67,alex_action_20) , (66,alex_action_21) , (65,alex_action_22) , (64,alex_action_23) , (63,alex_action_24) , (62,alex_action_25) , (61,alex_action_26) , (60,alex_action_27) , (59,alex_action_28) , (58,alex_action_29) , (57,alex_action_30) , (56,alex_action_31) , (55,alex_action_32) , (54,alex_action_33) , (53,alex_action_34) , (52,alex_action_35) , (51,alex_action_36) , (50,alex_action_37) , (49,alex_action_38) , (48,alex_action_39) , (47,alex_action_40) , (46,alex_action_41) , (45,alex_action_42) , (44,alex_action_43) , (43,alex_action_44) , (42,alex_action_45) , (41,alex_action_46) , (40,alex_action_47) , (39,alex_action_47) , (38,alex_action_48) , (37,alex_action_49) , (36,alex_action_49) , (35,alex_action_49) , (34,alex_action_49) , (33,alex_action_49) , (32,alex_action_49) , (31,alex_action_49) , (30,alex_action_49) , (29,alex_action_49) , (28,alex_action_49) , (27,alex_action_49) , (26,alex_action_49) , (25,alex_action_49) , (24,alex_action_49) , (23,alex_action_49) , (22,alex_action_49) , (21,alex_action_49) , (20,alex_action_49) , (19,alex_action_49) , (18,alex_action_49) , (17,alex_action_49) , (16,alex_action_49) , (15,alex_action_49) , (14,alex_action_49) , (13,alex_action_49) , (12,alex_action_49) , (11,alex_action_49) , (10,alex_action_49) , (9,alex_action_49) , (8,alex_action_49) , (7,alex_action_50) , (6,alex_action_50) , (5,alex_action_50) , (4,alex_action_50) , (3,alex_action_50) , (2,alex_action_50) , (1,alex_action_50) , (0,alex_action_50) ] {-# LINE 76 "Lexer.x" #-} mkL :: LexemeClass -> AlexInput -> Int -> Alex Lexeme mkL c (p,_,_,str) len = return (L p c (take len str)) data Lexeme = L AlexPosn LexemeClass String deriving (Eq, Show) data LexemeClass = L_DATA | L_DERIVING | L_LET | L_IN | L_IF | L_THEN | L_ELSE | L_PREV | L_CURR | L_VAL | L_IS | L_RS | L_GOF | L_EQUAL | L_DBLCOLON | L_COMMA | L_SEMICOLON | L_BACKSLASH | L_RARROW | L_LARROW | L_DOTHAT | L_PIPE | L_DBLAND | L_DBLOR | L_EQ | L_NE | L_LE | L_GE | L_LT | L_GT | L_PLUS | L_MINUS | L_AST | L_SLASH | L_BACKQUOTE | L_LPAREN | L_RPAREN | L_LBRACE | L_RBRACE | L_LBRACKET | L_RBRACKET | L_IDENT | L_CONSTRUCTOR | L_BOOL | L_INT | L_FLOAT | L_STRING | LEOF deriving (Eq, Show) -- the idea of nested comments is borrowed from an Alex example for Haskell 98: -- https://github.com/simonmar/alex/blob/master/examples/haskell.x -- nested_comment :: AlexInput -> Int -> Alex Lexeme nested_comment _ _ = do input <- alexGetInput go 1 input where go 0 input = do alexSetInput input; alexMonadScan go n input = do case alexGetByte input of Nothing -> err input Just (c,input) -> do case chr (fromIntegral c) of '-' -> do -- checking the end of the commnet ? case alexGetByte input of Nothing -> err input Just (125,input) -> go (n-1) input Just (c,input) -> go n input '\123' -> do -- checking the beginnig of a new comment ? case alexGetByte input of Nothing -> err input Just (c,input) | c == fromIntegral (ord '-') -> go (n+1) input Just (c,input) -> go n input c -> go n input err input = do alexSetInput input; lexError "error in nested comment" lexError s = do (p,c,_,input) <- alexGetInput alexError (showPosn p ++ ": " ++ s ++ (if (not (null input)) then " before " ++ show (head input) else " at end of file")) scanner str = runAlex str $ do let loop i ts = do tok@(L _ cl _) <- alexMonadScan; if cl == LEOF then return (i, reverse ts) else do loop (i+1) (tok:ts) loop 0 [] alexEOF = return (L undefined LEOF "") showPosn (AlexPn _ line col) = show line ++ ':': show col main = getContents >>= print . scanner alex_action_0 = skip alex_action_1 = nested_comment alex_action_2 = mkL L_DATA alex_action_3 = mkL L_DERIVING alex_action_4 = mkL L_LET alex_action_5 = mkL L_IN alex_action_6 = mkL L_IF alex_action_7 = mkL L_THEN alex_action_8 = mkL L_ELSE alex_action_9 = mkL L_PREV alex_action_10 = mkL L_CURR alex_action_11 = mkL L_VAL alex_action_12 = mkL L_IS alex_action_13 = mkL L_RS alex_action_14 = mkL L_GOF alex_action_15 = mkL L_EQUAL alex_action_16 = mkL L_DBLCOLON alex_action_17 = mkL L_COMMA alex_action_18 = mkL L_SEMICOLON alex_action_19 = mkL L_BACKSLASH alex_action_20 = mkL L_RARROW alex_action_21 = mkL L_LARROW alex_action_22 = mkL L_DOTHAT alex_action_23 = mkL L_PIPE alex_action_24 = mkL L_DBLAND alex_action_25 = mkL L_DBLOR alex_action_26 = mkL L_EQ alex_action_27 = mkL L_NE alex_action_28 = mkL L_NE alex_action_29 = mkL L_LE alex_action_30 = mkL L_GE alex_action_31 = mkL L_LT alex_action_32 = mkL L_GT alex_action_33 = mkL L_PLUS alex_action_34 = mkL L_MINUS alex_action_35 = mkL L_AST alex_action_36 = mkL L_SLASH alex_action_37 = mkL L_BACKQUOTE alex_action_38 = mkL L_LPAREN alex_action_39 = mkL L_RPAREN alex_action_40 = mkL L_LBRACE alex_action_41 = mkL L_RBRACE alex_action_42 = mkL L_LBRACKET alex_action_43 = mkL L_RBRACKET alex_action_44 = mkL L_BOOL alex_action_45 = mkL L_BOOL alex_action_46 = mkL L_INT alex_action_47 = mkL L_FLOAT alex_action_48 = mkL L_STRING alex_action_49 = mkL L_IDENT alex_action_50 = mkL L_CONSTRUCTOR {-# 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 alexIndexInt16OffAddr arr off = arr ! off alexIndexInt32OffAddr arr off = arr ! off quickIndex arr i = arr ! i -- ----------------------------------------------------------------------------- -- Main lexing routines data AlexReturn a = AlexEOF | AlexError !AlexInput | AlexSkip !AlexInput !Int | AlexToken !AlexInput !Int a -- alexScan :: AlexInput -> StartCode -> AlexReturn a alexScan input__ (sc) = alexScanUser undefined input__ (sc) alexScanUser user__ input__ (sc) = case alex_scan_tkn user__ input__ (0) input__ sc AlexNone of (AlexNone, input__') -> case alexGetByte input__ of Nothing -> AlexEOF Just _ -> AlexError input__' (AlexLastSkip input__'' len, _) -> AlexSkip input__'' len (AlexLastAcc k input__''' len, _) -> AlexToken input__''' len (alex_actions ! 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` (s))) in new_acc `seq` case alexGetByte input__ of Nothing -> (new_acc, input__) Just (c, new_input) -> case fromIntegral c of { (ord_c) -> let base = alexIndexInt32OffAddr alex_base s 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 (if c < 0x80 || c >= 0xC0 then (len + (1)) else len) -- note that the length is increased ONLY if this is the 1st byte in a char encoding) new_input new_s new_acc } where check_accs (AlexAccNone) = last_acc check_accs (AlexAcc a ) = AlexLastAcc a input__ (len) check_accs (AlexAccSkip) = AlexLastSkip input__ (len) check_accs (AlexAccPred a predx rest) | predx user__ orig_input (len) input__ = AlexLastAcc a input__ (len) | otherwise = check_accs rest check_accs (AlexAccSkipPred predx rest) | predx user__ orig_input (len) input__ = AlexLastSkip input__ (len) | otherwise = check_accs rest data AlexLastAcc = AlexNone | AlexLastAcc !Int !AlexInput !Int | AlexLastSkip !AlexInput !Int data AlexAcc user = AlexAccNone | AlexAcc Int | AlexAccSkip | AlexAccPred Int (AlexAccPred user) (AlexAcc user) | AlexAccSkipPred (AlexAccPred user) (AlexAcc 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__ alexPrevCharMatches f _ input__ _ _ = f (alexInputPrevChar input__) --alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _ alexPrevCharIsOneOf arr _ input__ _ _ = arr ! alexInputPrevChar input__ --alexRightContext :: Int -> AlexAccPred _ alexRightContext (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.