diff --git a/src/GF/Canon/CMacros.hs b/src/GF/Canon/CMacros.hs index da936e735..37693efa5 100644 --- a/src/GF/Canon/CMacros.hs +++ b/src/GF/Canon/CMacros.hs @@ -104,6 +104,16 @@ defLinType = RecType [Lbg (L (A.identC "s")) TStr] defLindef :: Term defLindef = R [Ass (L (A.identC "s")) (Arg (A (A.identC "str") 0))] +isDiscontinuousCType :: CType -> Bool +isDiscontinuousCType t = case t of + RecType rs -> length [t | Lbg _ t <- rs, valTableType t == TStr] > 1 + _ -> True --- does not occur; would not behave well in lin commands + +valTableType :: CType -> CType +valTableType t = case t of + Table _ v -> valTableType v + _ -> t + strsFromTerm :: Term -> Err [Str] strsFromTerm t = case t of K (KS s) -> return [str s] diff --git a/src/GF/Canon/Look.hs b/src/GF/Canon/Look.hs index 228a43f3c..8dfd4b3fb 100644 --- a/src/GF/Canon/Look.hs +++ b/src/GF/Canon/Look.hs @@ -41,6 +41,7 @@ lookupLincat gr f = do case info of CncCat t _ _ -> return t AnyInd _ n -> lookupLincat gr $ redirectIdent n f + _ -> prtBad "no lincat found for" f lookupPrintname :: CanonGrammar -> CIdent -> Err Term lookupPrintname gr f = do diff --git a/src/GF/Compile/GetGrammar.hs b/src/GF/Compile/GetGrammar.hs index 4e641dc3d..7907a817b 100644 --- a/src/GF/Compile/GetGrammar.hs +++ b/src/GF/Compile/GetGrammar.hs @@ -22,6 +22,7 @@ import EBNF import ReadFiles ---- +import Char (toUpper) import List (nub) import Monad (foldM) @@ -62,7 +63,7 @@ parseOldGrammar :: FilePath -> IOE ([FilePath],[A.TopDef]) parseOldGrammar file = do putStrE $ "reading old file" +++ file s <- ioeIO $ readFileIf file - A.OldGr incl topdefs <- ioeErr $ {- err2err $ -} pOldGrammar $ oldLexer $ fixNewlines s + A.OldGr incl topdefs <- ioeErr $ pOldGrammar $ oldLexer $ fixNewlines s includes <- ioeErr $ transInclude incl return (includes, topdefs) @@ -74,16 +75,16 @@ err2err (E.Bad s) = Bad s ioeEErr = ioeErr . err2err --- To resolve the new reserved words: change them by turning the final letter to Z. +-- To resolve the new reserved words: +-- change them by turning the final letter to upper case. --- There is a risk of clash. oldLexer :: String -> [L.Token] oldLexer = map change . L.tokens where change t = case t of - (L.PT p (L.TS s)) | elem s new -> (L.PT p (L.TV (init s ++ "Z"))) + (L.PT p (L.TS s)) | elem s newReservedWords -> + (L.PT p (L.TV (init s ++ [toUpper (last s)]))) _ -> t - new = words $ "abstract concrete interface incomplete " ++ - "instance out open resource reuse transfer union with where" getCFGrammar :: Options -> FilePath -> IOE SourceGrammar getCFGrammar opts file = do diff --git a/src/GF/Compile/ShellState.hs b/src/GF/Compile/ShellState.hs index a306902d9..18b237745 100644 --- a/src/GF/Compile/ShellState.hs +++ b/src/GF/Compile/ShellState.hs @@ -313,12 +313,16 @@ firstGrammarST = stateGrammarST . firstStateGrammar firstAbstractST = abstractOf . firstGrammarST firstConcreteST = concreteOf . firstGrammarST -} --- command-line option -language=foo overrides the actual grammar in state +-- command-line option -lang=foo overrides the actual grammar in state grammarOfOptState :: Options -> ShellState -> StateGrammar grammarOfOptState opts st = maybe (firstStateGrammar st) (stateGrammarOfLang st . language) $ getOptVal opts useLanguage +languageOfOptState :: Options -> ShellState -> Maybe Language +languageOfOptState opts st = + maybe (concrete st) (return . language) $ getOptVal opts useLanguage + -- command-line option -cat=foo overrides the possible start cat of a grammar firstCatOpts :: Options -> StateGrammar -> CFCat firstCatOpts opts sgr = diff --git a/src/GF/Grammar/Macros.hs b/src/GF/Grammar/Macros.hs index 5b82b5d1c..b2786e4c4 100644 --- a/src/GF/Grammar/Macros.hs +++ b/src/GF/Grammar/Macros.hs @@ -79,6 +79,10 @@ type MCat = (Ident,Ident) sortMCat :: String -> MCat sortMCat s = (zIdent "_", zIdent s) +--- hack for Editing.actCat in empty state +errorCat :: MCat +errorCat = (zIdent "?", zIdent "?") + getMCat :: Term -> Err MCat getMCat t = case t of Q m c -> return (m,c) diff --git a/src/GF/Shell.hs b/src/GF/Shell.hs index 014f5bd60..3bc5fe4d8 100644 --- a/src/GF/Shell.hs +++ b/src/GF/Shell.hs @@ -7,6 +7,9 @@ import qualified Ident as I import qualified Compute as Co import qualified Lookup as L import qualified GFC +import qualified Look +import qualified CMacros +import qualified GrammarToCanon import Values import GetTree @@ -28,7 +31,7 @@ import HelpFile import PrOld import PrGrammar -import Monad (foldM) +import Monad (foldM,liftM) import System (system) import Random (newStdGen) ---- import Zipper ---- @@ -112,12 +115,15 @@ execC co@(comm, opts0) sa@((st,(h,_)),a) = checkOptions st co >> case comm of CPrintHistory -> (returnArg $ AString $ unlines $ reverse h) sa -- good to have here for piping; eh and ec must be done on outer level - CLinearize [] -> changeArg (opTS2CommandArg (optLinearizeTreeVal opts gro) . s2t) sa + CLinearize [] -> + changeArg (opTS2CommandArg (optLinearizeTreeVal opts gro) . s2t) sa ---- CLinearize m -> changeArg (opTS2CommandArg (optLinearizeArgForm opts gro m)) sa - CParse -> case optParseArgErrMsg opts gro (prCommandArg a) of - Ok (ts,msg) -> putStrLnFlush msg >> changeArg (const $ ATrms ts) sa - Bad msg -> changeArg (const $ AError msg) sa + CParse -> do + warnDiscont opts + case optParseArgErrMsg opts gro (prCommandArg a) of + Ok (ts,msg) -> putStrLnFlush msg >> changeArg (const $ ATrms ts) sa + Bad msg -> changeArg (const $ AError msg) sa CTranslate il ol -> do let a' = opST2CommandArg (optParseArgErr opts (sgr il)) a @@ -175,13 +181,19 @@ execC co@(comm, opts0) sa@((st,(h,_)),a) = checkOptions st co >> case comm of return . L.opersForType src))) sa - CTranslationQuiz il ol -> justOutput (teachTranslation opts (sgr il) (sgr ol)) sa - CTranslationList il ol n -> do + CTranslationQuiz il ol -> do + warnDiscont opts + justOutput (teachTranslation opts (sgr il) (sgr ol)) sa + CTranslationList il ol n -> do + warnDiscont opts qs <- transTrainList opts (sgr il) (sgr ol) (toInteger n) returnArg (AString $ foldr (+++++) [] [unlines (s:ss) | (s,ss) <- qs]) sa - CMorphoQuiz -> justOutput (teachMorpho opts gro) sa + CMorphoQuiz -> do + warnDiscont opts + justOutput (teachMorpho opts gro) sa CMorphoList n -> do + warnDiscont opts qs <- useIOE [] $ morphoTrainList opts gro (toInteger n) returnArg (AString $ foldr (+++++) [] [unlines (s:ss) | (s,ss) <- qs]) sa @@ -201,8 +213,8 @@ execC co@(comm, opts0) sa@((st,(h,_)),a) = checkOptions st co >> case comm of | oElem showAll opts -> returnArg (AString txtHelpFile) sa | otherwise -> returnArg (AString txtHelpFileSummary) sa - CPrintGrammar -> returnArg (AString (optPrintGrammar opts gro)) sa - CPrintGlobalOptions -> justOutput (putStrLn $ prShellStateInfo st) sa + CPrintGrammar -> returnArg (AString (optPrintGrammar opts gro)) sa + CPrintGlobalOptions -> justOutput (putStrLn $ prShellStateInfo st) sa CPrintInformation c -> justOutput (useIOE () $ showInformation opts st c) sa CPrintLanguages -> justOutput (putStrLn $ unwords $ map prLanguage $ allLanguages st) sa @@ -226,6 +238,14 @@ execC co@(comm, opts0) sa@((st,(h,_)),a) = checkOptions st co >> case comm of ASTrm s -> err AError (ATrms . return) $ string2treeErr gro s _ -> a + warnDiscont os = err putStrLn id $ do + let c0 = firstAbsCat os gro + c <- GrammarToCanon.redQIdent c0 + lang <- maybeErr "no concrete" $ languageOfOptState os st + t <- Look.lookupLincat cgr $ CMacros.redirectIdent lang c + return $ if CMacros.isDiscontinuousCType t + then (putStrLn ("Warning: discontinuous category" +++ prt_ c)) + else (return ()) -- commands either change the state or process the argument, but not both -- some commands just do output diff --git a/src/GF/Shell/CommandL.hs b/src/GF/Shell/CommandL.hs index 5945dd271..36e8a5a6d 100644 --- a/src/GF/Shell/CommandL.hs +++ b/src/GF/Shell/CommandL.hs @@ -20,7 +20,7 @@ import UTF8 initEditLoop :: CEnv -> IO () -> IO () initEditLoop env resume = do - let env' = addGlobalOptions (options [sizeDisplay "short"]) env + let env' = startEditEnv env putStrLnFlush $ initEditMsg env' let state = initSStateEnv env' putStrLnFlush $ showCurrentState env' state @@ -113,7 +113,9 @@ pCommand = pCommandWords . words where -- well, this lists the commands of the line-based editor initEditMsg env = unlines $ "State-dependent editing commands are given in the menu:" : - " n = new, r = refine, w = wrap, d = delete, s = select." : + " n [Cat] = new, r [Fun] = refine, w [Fun] [Int] = wrap,": + " ch [Fun] = change head, d = delete, s [Int] = select," : + " x [Var] [Var] = alpha convert." : "Commands changing the environment:" : " i [file] = import, e = empty." : "Other commands:" : diff --git a/src/GF/Shell/Commands.hs b/src/GF/Shell/Commands.hs index 25ef5607f..9bf1f8ff2 100644 --- a/src/GF/Shell/Commands.hs +++ b/src/GF/Shell/Commands.hs @@ -26,6 +26,7 @@ import Unicode import CF import CFIdent (cat2CFCat, cfCat2Cat) +import PPrCF (prCFCat) import Linear import Randomized import Editing @@ -130,10 +131,10 @@ execCommand env c s = case c of CCEnvEmptyAndImport file -> useIOE (emptyShellState, initSState) $ do st <- shellStateFromFiles opts emptyShellState file - return (st,s) + return (startEditEnv st,s) CCEnvEmpty -> do - return (emptyShellState, initSState) + return (startEditEnv emptyShellState, initSState) CCEnvGFShell command -> do let cs = PShell.pCommandLines command @@ -224,7 +225,7 @@ execECommand env c = case c of let cat = cat2CFCat (qualifTop sgr (actCat (stateSState s))) ts = parseAny agrs cat str in (if null ts ---- debug - then withMsg [str, "parse failed in cat" +++ show cat] + then withMsg [str, "parse failed in cat" +++ prCFCat cat] else id) (refineByTrees der cgr ts) s @@ -270,6 +271,10 @@ string2varPair s = case words s of x : y : [] -> liftM2 (,) (string2ident x) (string2ident y) _ -> Bad "expected format 'x y'" + + +startEditEnv env = addGlobalOptions (options [sizeDisplay "short"]) env + -- seen on display cMenuDisplay :: String -> Command diff --git a/src/GF/Shell/ShellCommands.hs b/src/GF/Shell/ShellCommands.hs index 451776108..09de1cd24 100644 --- a/src/GF/Shell/ShellCommands.hs +++ b/src/GF/Shell/ShellCommands.hs @@ -136,7 +136,7 @@ optionsOfCommand co = case co of CStripState -> none CTransformGrammar _ -> flags "printer" CConvertLatex _ -> none - CLinearize _ -> both "table struct record all" "lang number unlexer" + CLinearize _ -> both "utf8 table struct record all" "lang number unlexer" CParse -> both "new n ign raw v" "cat lang lexer parser number rawtrees" CTranslate _ _ -> opts "cat lexer parser" CGenerateRandom -> flags "cat lang number depth" @@ -161,7 +161,8 @@ optionsOfCommand co = case co of CShowTerm -> flags "printer" CSystemCommand _ -> none - CPrintGrammar -> flags "printer" + CPrintGrammar -> both "utf8" "printer" + CPrintMultiGrammar -> opts "utf8" CHelp _ -> opts "all" diff --git a/src/GF/Source/AbsGF.hs b/src/GF/Source/AbsGF.hs index d8115df26..54564c341 100644 --- a/src/GF/Source/AbsGF.hs +++ b/src/GF/Source/AbsGF.hs @@ -100,6 +100,9 @@ data TopDef = | DefPrintOld [PrintDef] | DefLintype [Def] | DefPattern [Def] + | DefPackage Ident [TopDef] + | DefVars [Def] + | DefTokenizer Ident deriving (Eq,Ord,Show) data CatDef = diff --git a/src/GF/Source/GF.cf b/src/GF/Source/GF.cf index 682debc9d..80da5b9d1 100644 --- a/src/GF/Source/GF.cf +++ b/src/GF/Source/GF.cf @@ -270,7 +270,7 @@ separator DDecl "" ; -- for backward compatibility -OldGr. OldGrammar ::= Include [TopDef] ; +OldGr. OldGrammar ::= Include [TopDef] ; NoIncl. Include ::= ; Incl. Include ::= "include" [FileName] ; @@ -292,3 +292,10 @@ ELin. Exp2 ::= "Lin" Ident ; DefPrintOld. TopDef ::= "printname" [PrintDef] ; DefLintype. TopDef ::= "lintype" [Def] ; DefPattern. TopDef ::= "pattern" [Def] ; + +-- deprecated packages are attempted to be interpreted +DefPackage. TopDef ::= "package" Ident "=" "{" [TopDef] "}" ";" ; + +-- these two are just ignored after parsing +DefVars. TopDef ::= "var" [Def] ; +DefTokenizer. TopDef ::= "tokenizer" Ident ";" ; diff --git a/src/GF/Source/LexGF.hs b/src/GF/Source/LexGF.hs index 68dab65dd..85933e3fd 100644 --- a/src/GF/Source/LexGF.hs +++ b/src/GF/Source/LexGF.hs @@ -35,13 +35,17 @@ tokenPos (PT (Pn _ l _) _ :_) = "line " ++ show l tokenPos (Err (Pn _ l _) :_) = "line " ++ show l tokenPos _ = "end of file" +posLineCol (Pn _ l c) = (l,c) +mkPosToken t@(PT p _) = (posLineCol p, prToken t) + prToken t = case t of PT _ (TS s) -> s PT _ (TI s) -> s PT _ (TV s) -> s PT _ (TD s) -> s PT _ (TC s) -> s - _ -> show t + PT _ (T_LString s) -> s + tokens:: String -> [Token] tokens inp = scan tokens_scan inp @@ -55,7 +59,7 @@ tokens_scan = load_scan (tokens_acts,stop_act) tokens_lx eitherResIdent :: (String -> Tok) -> String -> Tok eitherResIdent tv s = if isResWord s then (TS s) else (tv s) where isResWord s = isInTree s $ - B "let" (B "data" (B "Type" (B "Str" (B "PType" (B "Lin" N N) N) (B "Tok" (B "Strs" N N) N)) (B "cat" (B "case" (B "abstract" N N) N) (B "concrete" N N))) (B "in" (B "fn" (B "flags" (B "def" N N) N) (B "grammar" (B "fun" N N) N)) (B "instance" (B "incomplete" (B "include" N N) N) (B "interface" N N)))) (B "pre" (B "open" (B "lindef" (B "lincat" (B "lin" N N) N) (B "of" (B "lintype" N N) N)) (B "param" (B "out" (B "oper" N N) N) (B "pattern" N N))) (B "transfer" (B "reuse" (B "resource" (B "printname" N N) N) (B "table" (B "strs" N N) N)) (B "where" (B "variants" (B "union" N N) N) (B "with" N N)))) + B "lincat" (B "def" (B "Type" (B "Str" (B "PType" (B "Lin" N N) N) (B "Tok" (B "Strs" N N) N)) (B "cat" (B "case" (B "abstract" N N) N) (B "data" (B "concrete" N N) N))) (B "include" (B "fun" (B "fn" (B "flags" N N) N) (B "in" (B "grammar" N N) N)) (B "interface" (B "instance" (B "incomplete" N N) N) (B "lin" (B "let" N N) N)))) (B "resource" (B "out" (B "of" (B "lintype" (B "lindef" N N) N) (B "oper" (B "open" N N) N)) (B "pattern" (B "param" (B "package" N N) N) (B "printname" (B "pre" N N) N))) (B "union" (B "table" (B "strs" (B "reuse" N N) N) (B "transfer" (B "tokenizer" N N) N)) (B "where" (B "variants" (B "var" N N) N) (B "with" N N)))) data BTree = N | B String BTree BTree deriving (Show) diff --git a/src/GF/Source/ParGF.hs b/src/GF/Source/ParGF.hs index 0f53808d4..abfce59c8 100644 --- a/src/GF/Source/ParGF.hs +++ b/src/GF/Source/ParGF.hs @@ -496,21 +496,21 @@ happyOutTok x = unsafeCoerce# x {-# INLINE happyOutTok #-} happyActOffsets :: HappyAddr -happyActOffsets = HappyA# "\x00\x00\xee\xff\x87\x04\xd2\x00\x66\x04\x00\x00\x97\x04\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x04\x31\x01\x26\x00\x4d\x04\x00\x00\x91\x04\x4e\x04\x50\x00\x5b\x00\x00\x00\xd2\x00\x90\x00\x4e\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\x00\x92\x04\x12\x00\x90\x04\x85\x04\xb3\x01\x84\x04\x00\x00\x00\x00\x00\x00\x30\x04\x00\x00\x11\x01\x0c\x00\xae\x04\x2c\x04\x00\x00\x26\x04\xb9\x00\x6c\x04\x68\x04\x5f\x04\x1b\x04\x1b\x04\x1b\x04\x1b\x04\x1b\x04\x1b\x04\x00\x00\x11\x01\x00\x00\x52\x04\x00\x00\x11\x01\x11\x01\x11\x01\xbf\x04\xd2\x00\x00\x00\x53\x04\x63\x00\x91\x00\x5b\x00\xd2\x00\xd2\x00\x48\x04\x81\x01\x50\x04\x15\x04\x07\x04\x63\x00\x0d\x04\x00\x00\x00\x00\x36\x04\x39\x04\xf9\xff\x00\x00\x38\x04\x33\x04\x1f\x04\x24\x02\x2f\x04\x00\x00\x98\x00\x29\x04\x22\x04\xe0\x03\xc7\x02\x0f\x04\xd2\x00\x02\x01\x02\x01\x02\x01\xd2\x00\xd2\x00\xd2\x00\x24\x04\x10\x04\xfa\xff\x92\x01\x00\x00\xd7\x03\x00\x00\x00\x00\xdc\x03\xca\x03\x00\x00\x00\x00\x00\x00\x72\x01\x72\x01\x72\x01\x00\x00\x00\x00\x00\x00\xca\x03\xca\x03\x09\x04\xd2\x00\x00\x00\x00\x00\x00\x00\xc6\x03\x00\x00\xd2\x00\xd2\x00\xfa\x03\xd2\x00\xf9\xff\x06\x04\xf1\x03\x00\x00\x00\x00\x63\x00\xcf\x03\xf9\x03\xf8\x03\xb5\x03\x63\x00\x63\x00\x00\x00\xf7\x03\xd2\x00\xb1\x03\xd2\x00\xd2\x00\xf6\x03\xe4\x03\xde\x03\xd8\x03\x14\x00\x00\x00\x00\x00\xd5\x03\xcb\x03\xda\x03\xd6\x03\x63\x00\xd4\x03\x00\x00\x89\x03\x89\x03\x89\x03\x89\x03\x89\x03\x89\x03\x89\x03\x89\x03\x89\x03\x89\x03\x89\x03\x89\x03\x5f\x01\x89\x03\x00\x00\x00\x00\x00\x00\x11\x01\x00\x00\xc9\x03\x00\x00\x00\x00\x98\x03\x97\x03\x00\x00\x64\x04\xc4\x03\xa2\x03\x1d\x00\x00\x00\x7f\x03\x6e\x03\x6e\x03\x6e\x03\x6e\x03\x22\x00\x00\x00\xc6\x01\xb4\x03\x00\x00\x8c\x00\xb2\x03\x00\x00\xa6\x03\x5c\x03\x5c\x03\x00\x00\xa1\x03\xa0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x03\x00\x00\x86\x03\x91\x03\x8b\x03\x00\x00\x00\x00\x81\x03\x80\x03\x00\x00\x00\x00\x6c\x03\x00\x00\x00\x00\xe8\x00\x73\x03\x00\x00\x63\x00\xd2\x00\x63\x00\x00\x00\x2e\x03\x00\x00\xd2\x00\xd2\x00\x60\x03\x00\x00\x00\x00\x00\x00\x34\x03\x00\x00\x51\x03\x3e\x03\x43\x03\x61\x02\x39\x03\x44\x03\x3a\x03\x00\x00\x63\x00\xd2\x00\x00\x00\xf7\x02\x63\x00\x00\x00\x00\x00\xd2\x00\x0c\x03\x00\x00\x00\x00\x1d\x03\x11\x03\x00\x00\x31\x03\x00\x00\x27\x03\x00\x00\x1a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x03\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x02\x63\x00\x00\x00\x00\x00\x00\x00\x63\x00\xd2\x00\xd2\x00\xf1\x02\x02\x03\x06\x03\x00\x00\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x02\x51\x01\xc1\x02\xc1\x02\xc1\x02\xc1\x02\xd2\x00\xc1\x02\xc1\x02\x1b\x00\x00\x00\x00\x00\xd2\x00\xc1\x02\xd2\x00\xd2\x00\xc1\x02\xf6\x02\x00\x00\xe9\x02\x17\x01\x00\x00\x00\x00\xec\x02\x00\x00\xe6\x02\x00\x00\xeb\x02\x1a\x00\x00\x00\x1a\x00\xe4\x02\xa7\x02\x00\x00\xdb\x02\xb0\x02\x00\x00\x96\x02\x96\x02\x96\x02\x00\x00\x00\x00\x1a\x00\xd2\x00\x00\x00\xc8\x02\x00\x00\x00\x00\x00\x00\x00\x00\xc4\x02\x00\x00\x9b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x02\xab\x02\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x00\x00\xd2\x00\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x02\x6f\x02\x6f\x02\x6f\x02\x6f\x02\x51\x01\xd2\x00\x00\x00\x00\x00\x2a\x00\xaa\x02\x00\x00\x56\x02\x00\x00\x1a\x00\xa6\x02\x5d\x02\x00\x00\x00\x00\x00\x00\x5d\x02\x00\x00\x00\x00\x00\x00\x9e\x02\x00\x00\x00\x00\xd2\x00\x97\x02\x00\x00\x88\x02\x8e\x02\x8c\x02\x84\x02\x00\x00\x3f\x02\x3f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x00\x00\x36\x02\xcc\x01\x1a\x00\x1a\x00\x69\x02\x5a\x02\x00\x00\x00\x00\x00\x00"# +happyActOffsets = HappyA# "\x00\x00\x50\x01\x7b\x04\x92\x00\x58\x04\x00\x00\x86\x04\x00\x00\x00\x00\x00\x00\x00\x00\x83\x04\xf8\x00\x50\x02\x47\x04\x00\x00\x87\x04\x43\x04\x19\x00\x24\x00\x00\x00\x92\x00\xfd\xff\x43\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x84\x04\xfe\xff\x82\x04\x78\x04\x65\x01\x75\x04\x00\x00\x00\x00\x00\x00\x2a\x04\x00\x00\x3e\x01\x01\x00\xf6\x04\x2b\x04\x00\x00\x27\x04\x13\x01\x74\x04\x72\x04\x71\x04\x26\x04\x26\x04\x26\x04\x26\x04\x26\x04\x26\x04\x00\x00\x3e\x01\x00\x00\x64\x04\x00\x00\x3e\x01\x3e\x01\x3e\x01\xdb\x04\x92\x00\x00\x00\x63\x04\x2c\x00\x5d\x00\x24\x00\x92\x00\x92\x00\x5a\x04\x90\x01\x62\x04\x35\x04\x16\x04\x2c\x00\x28\x04\x00\x00\x00\x00\x4a\x04\x4b\x04\xf6\xff\x00\x00\x46\x04\x40\x04\x2e\x04\x6f\x02\x34\x04\x00\x00\xf9\x01\x33\x04\x18\x04\xec\x03\x8d\x02\x32\x04\x92\x00\xc7\x00\xc7\x00\xc7\x00\x92\x00\x92\x00\x92\x00\x1b\x04\x10\x04\xf7\xff\x4d\x01\x00\x00\xe4\x03\x00\x00\x00\x00\xe0\x03\xd5\x03\x00\x00\x00\x00\x00\x00\x19\x01\x19\x01\x19\x01\x00\x00\x00\x00\x00\x00\xd5\x03\xd5\x03\x0a\x04\x92\x00\x00\x00\x00\x00\x00\x00\xd0\x03\x00\x00\x92\x00\x92\x00\xfb\x03\x92\x00\xf6\xff\x0b\x04\x00\x04\x00\x00\x00\x00\x2c\x00\x04\x04\xfa\x03\x06\x04\xc0\x03\x2c\x00\x2c\x00\x00\x00\x05\x04\x92\x00\xbc\x03\x92\x00\x92\x00\xf4\x03\xf3\x03\xef\x03\xdf\x03\xe9\x00\x00\x00\x00\x00\xdb\x03\xc9\x03\xdd\x03\xd8\x03\x2c\x00\xd4\x03\x00\x00\x90\x03\x90\x03\x90\x03\x90\x03\x90\x03\x90\x03\x90\x03\x90\x03\x90\x03\x90\x03\x90\x03\x90\x03\x90\x03\x63\x00\x90\x03\x90\x03\x90\x03\x00\x00\x00\x00\x00\x00\x3e\x01\x00\x00\xd3\x03\x00\x00\x00\x00\xa2\x03\xa0\x03\x00\x00\x38\x02\xd2\x03\xa6\x03\x21\x00\x00\x00\x92\x03\x78\x03\x78\x03\x78\x03\x78\x03\x1e\x00\x00\x00\x78\x01\xb6\x03\x00\x00\xf3\x00\x00\x00\xb0\x03\xaf\x03\x00\x00\xad\x03\x62\x03\x62\x03\x00\x00\xa5\x03\xa3\x03\x00\x00\xa1\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x03\x00\x00\x93\x03\x91\x03\x85\x03\x00\x00\x00\x00\x8f\x03\x84\x03\x00\x00\x00\x00\x7e\x03\x00\x00\x00\x00\x12\x00\x70\x03\x00\x00\x2c\x00\x92\x00\x2c\x00\x00\x00\x22\x03\x00\x00\x92\x00\x92\x00\x69\x03\x00\x00\x00\x00\x00\x00\x32\x03\x00\x00\x4f\x03\x3e\x03\x3d\x03\xf4\x00\x4b\x03\x41\x03\x3c\x03\x00\x00\x2c\x00\x92\x00\x00\x00\xf4\x02\x2c\x00\x00\x00\x00\x00\x92\x00\x1c\x03\x00\x00\x00\x00\x2d\x03\x21\x03\x00\x00\x3a\x03\x00\x00\x2a\x03\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x02\x2c\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x92\x00\x92\x00\xf9\x02\x12\x03\x07\x03\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x02\x01\x01\xca\x02\xca\x02\xca\x02\xca\x02\x92\x00\xca\x02\x0f\x03\xc6\x02\x18\x00\x00\x00\x00\x00\x92\x00\xc6\x02\x00\x00\x92\x00\x92\x00\xc6\x02\x08\x03\x00\x00\x00\x03\xfa\x01\x00\x00\x00\x00\xfc\x02\x00\x00\xf6\x02\x00\x00\xfe\x02\x0e\x00\x00\x00\x0e\x00\xfd\x02\xab\x02\x00\x00\xeb\x02\xd1\x02\x00\x00\xa4\x02\xa4\x02\xa4\x02\x00\x00\x00\x00\x0e\x00\x92\x00\x00\x00\xec\x02\x00\x00\x00\x00\x00\x00\x00\x00\xde\x02\x00\x00\xb6\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x02\xc4\x02\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x92\x00\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x02\x88\x02\x88\x02\x17\x02\x88\x02\x88\x02\x01\x01\x92\x00\x00\x00\x00\x00\x55\x01\xc5\x02\x00\x00\xf1\x01\x00\x00\x0e\x00\xc9\x02\x7c\x02\x00\x00\x00\x00\x00\x00\x7c\x02\x00\x00\x00\x00\x00\x00\xc0\x02\xc1\x02\x00\x00\x00\x00\x92\x00\xb7\x02\x00\x00\x00\x00\xa5\x02\x9f\x02\x9b\x02\x97\x02\x00\x00\x54\x02\x54\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x02\x00\x00\x40\x02\x9c\x01\x0e\x00\x0e\x00\x85\x02\x80\x02\x00\x00\x00\x00\x00\x00"# happyGotoOffsets :: HappyAddr -happyGotoOffsets = HappyA# "\x1d\x02\x2c\x00\xc0\x01\x8f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x03\x00\x00\x00\x00\x00\x00\x00\x00\x42\x02\x83\x02\xc5\x01\x00\x00\x39\x02\x61\x00\x5b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x04\x00\x00\xe7\x01\x00\x00\x00\x00\x49\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x02\x03\x00\x00\x00\x55\x02\x54\x02\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x53\x02\x52\x02\x51\x02\x50\x02\x4f\x02\x4d\x02\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x09\x00\x07\x00\x05\x00\x2b\x02\xbb\x02\x00\x00\x00\x00\xad\x01\x6f\x04\xff\x00\xa9\x02\x5d\x04\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x01\x28\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x02\x00\x00\x00\x00\x4b\x04\x19\x03\x05\x03\x07\x02\x37\x04\x2b\x04\x19\x04\x00\x00\x00\x00\x16\x00\x69\x01\x00\x00\x7e\x01\x00\x00\x00\x00\x12\x02\x63\x01\x00\x00\x00\x00\x00\x00\x5d\x03\x5d\x03\x5d\x03\x00\x00\x00\x00\x00\x00\x7e\x00\x0d\x02\x00\x00\x05\x04\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\x17\x02\xf3\x03\x00\x00\xe7\x03\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x04\x00\x00\x00\x00\x00\x00\xb4\x00\xb8\x03\xff\x01\x00\x00\x00\x00\xd3\x03\x33\x01\xc1\x03\xaf\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x01\x00\x00\x00\x00\x40\x02\x64\x01\xb9\x04\x16\x01\x0b\x01\xb7\x04\xa5\x04\xa1\x04\x81\x04\x80\x04\xa6\x01\x55\x04\xb5\x02\x54\x04\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x01\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x01\xde\x01\xef\x01\xca\x01\xb9\x01\x8c\x01\x00\x00\xe9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x2e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x01\x00\x00\x00\x00\x00\x00\x65\x01\x00\x00\x00\x00\xe2\x01\x9b\x03\x29\x02\x00\x00\x74\x01\x00\x00\x95\x02\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\x00\x8f\x03\x00\x00\x68\x01\xbf\x01\x00\x00\x00\x00\x7d\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\x97\x00\x72\x03\x00\x00\x00\x00\x00\x00\xec\x01\x69\x03\x57\x03\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\x0e\x00\x13\x00\xab\x01\xc2\x00\x45\x01\x4b\x03\x1c\x00\x86\x01\x57\x01\x00\x00\x00\x00\x37\x03\xee\x00\x25\x03\x13\x03\xe6\x00\x00\x00\x00\x00\x00\x00\x35\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x01\x00\x00\x2b\x01\x00\x00\x27\x01\x00\x00\x00\x00\x00\x00\x2c\x01\xa7\x00\x23\x00\xe4\x00\x00\x00\x00\x00\xfa\x00\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x02\x00\x00\x00\x00\x00\x00\x48\x00\xf3\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x00\xcb\x00\xbf\x00\x19\x01\x0e\x00\xe1\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x25\x00\x00\x00\x93\x02\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x02\x2b\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\xcd\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# +happyGotoOffsets = HappyA# "\x44\x02\xa1\x01\xcd\xff\x9f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x03\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x01\x87\x02\xcf\x01\x00\x00\x5f\x02\x85\x00\x7f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x04\x00\x00\xe2\x01\x00\x00\x00\x00\xc5\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x02\x07\x00\x00\x00\x71\x02\x6e\x02\x00\x00\x00\x00\x08\x01\x00\x00\x00\x00\x00\x00\x69\x02\x5a\x02\x55\x02\x51\x02\x4f\x02\x3d\x02\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x09\x00\x03\x00\x19\x02\xcb\x02\x00\x00\x00\x00\xad\x01\x81\x04\xa2\x01\xb9\x02\x6d\x04\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x01\x71\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x02\x00\x00\x00\x00\x5b\x04\x29\x03\xad\x02\x92\x02\x4f\x04\x3b\x04\x29\x04\x00\x00\x00\x00\x14\x00\x81\x03\x00\x00\x96\x01\x00\x00\x00\x00\x26\x02\x2a\x01\x00\x00\x00\x00\x00\x00\x6f\x03\x6f\x03\x6f\x03\x00\x00\x00\x00\x00\x00\x40\x00\x12\x02\x00\x00\x17\x04\x00\x00\x00\x00\x00\x00\x02\x02\x00\x00\x43\x02\x03\x04\x00\x00\xf7\x03\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x03\x00\x00\x00\x00\x00\x00\x99\x00\x06\x02\xd1\x01\x00\x00\x00\x00\xe5\x03\xc5\x00\xd1\x03\xbf\x03\x00\x00\x00\x00\x00\x00\x00\x00\x32\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x01\x00\x00\x00\x00\xfb\x01\x25\x01\xf1\x04\x80\x01\x1d\x02\xe8\x04\xd3\x04\xd7\x04\xd4\x04\xd2\x04\xfe\x01\x0d\x01\xcb\x04\xc5\x04\xf3\x01\x91\x04\x21\x04\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x01\xe7\x01\x7e\x01\xe3\x01\xda\x01\xc9\x00\x00\x00\xbc\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x04\xb5\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x01\x00\x00\x00\x00\x00\x00\x47\x01\x00\x00\x00\x00\xc6\x01\xb3\x03\xa5\x04\x00\x00\xb8\x01\x00\x00\xa7\x02\x9d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x00\x9f\x03\x00\x00\xb5\x01\xb9\x01\x00\x00\x00\x00\x8d\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\x82\x00\x76\x01\x00\x00\x00\x00\x00\x00\x8b\x00\x7b\x03\x67\x03\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x01\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x01\x90\x00\xcf\x00\x4e\x02\xbb\x00\xac\x01\x5b\x03\x1a\x00\x00\x00\x76\x00\xe2\x00\x00\x00\x00\x00\x49\x03\x22\x04\x00\x00\x35\x03\x23\x03\x9e\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x02\x00\x00\x41\x01\x00\x00\x79\x01\x00\x00\x00\x00\x00\x00\x24\x01\x27\x01\x25\x00\x2c\x01\x00\x00\x00\x00\xc6\x00\x17\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x02\x00\x00\x00\x00\x00\x00\x5e\x01\x03\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x02\x89\x00\x8c\x00\x71\x00\xd3\x00\x90\x00\xf1\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x00\x00\x00\x86\x00\x00\x00\xc8\x02\x00\x00\x00\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x01\x9a\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# happyDefActions :: HappyAddr -happyDefActions = HappyA# "\xf6\xff\xd2\xff\x23\xff\x00\x00\x00\x00\xfb\xff\x8d\xff\x89\xff\x88\xff\x7f\xff\x7b\xff\x72\xff\x6d\xff\x62\xff\x00\x00\x8a\xff\x00\x00\x90\xff\x40\xff\x00\x00\x87\xff\x39\xff\x40\xff\x00\x00\x4e\xff\x4c\xff\x4b\xff\x4d\xff\x4f\xff\x00\x00\x00\x00\x90\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\xf9\xff\xf8\xff\x00\x00\xde\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd1\xff\x00\x00\xd2\xff\xf5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\xff\x20\xff\x21\xff\x00\x00\x22\xff\x00\x00\x00\x00\x00\x00\x24\xff\x61\xff\x8d\xff\x00\x00\x90\xff\x00\x00\x00\x00\x61\xff\x00\x00\x95\xff\x00\x00\x8f\xff\x00\x00\x90\xff\x2f\xff\x00\x00\x71\xff\x42\xff\x3f\xff\x00\x00\x40\xff\x41\xff\x3b\xff\x38\xff\x00\x00\x00\x00\x00\x00\x86\xff\x8d\xff\x00\x00\x00\x00\x00\x00\x95\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\xff\x00\x00\x00\x00\x73\xff\x90\xff\x51\xff\x7e\xff\x00\x00\x90\xff\x67\xff\x68\xff\x69\xff\x6f\xff\x70\xff\x6e\xff\x6a\xff\x84\xff\x8c\xff\x00\x00\x00\x00\x00\x00\x00\x00\x80\xff\x85\xff\x8b\xff\x00\x00\x83\xff\x39\xff\x00\x00\x00\x00\x00\x00\x40\xff\x00\x00\x5d\xff\x59\xff\x5a\xff\x46\xff\x00\x00\x2e\xff\x00\x00\x4a\xff\x00\x00\x36\xff\x5e\xff\x00\x00\x00\x00\x90\xff\x00\x00\x00\x00\x00\x00\x60\xff\x00\x00\x00\x00\x95\xff\x53\xff\x47\xff\x44\xff\x00\x00\x32\xff\x00\x00\x00\x00\x00\x00\xdd\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\x1d\xff\x1f\xff\x1e\xff\x1b\xff\x1c\xff\x00\x00\xe7\xff\xe6\xff\x00\x00\x00\x00\xe8\xff\xdb\xff\x00\x00\x00\x00\x00\x00\xf2\xff\xd7\xff\x00\x00\xcd\xff\x00\x00\x00\x00\x00\x00\x1a\xff\x95\xff\x00\x00\xc0\xff\x00\x00\x00\x00\xb7\xff\x00\x00\x00\x00\x00\x00\xb5\xff\xaa\xff\x00\x00\xbf\xff\xbe\xff\xb6\xff\xbc\xff\xbd\xff\xbb\xff\x00\x00\xc3\xff\x00\x00\x00\x00\x00\x00\xb8\xff\xc2\xff\x00\x00\x00\x00\xc1\xff\x26\xff\x00\x00\xc4\xff\x76\xff\x5d\xff\x00\x00\x79\xff\x00\x00\x00\x00\x00\x00\x55\xff\x00\x00\x74\xff\x61\xff\x2b\xff\x93\xff\x92\xff\x8e\xff\x65\xff\x00\x00\x3a\xff\x35\xff\x00\x00\x00\x00\x95\xff\x00\x00\x49\xff\x00\x00\x63\xff\x2f\xff\x00\x00\x45\xff\x00\x00\x00\x00\x3e\xff\x6c\xff\x00\x00\x00\x00\x3b\xff\x37\xff\x00\x00\x00\x00\x82\xff\x00\x00\x94\xff\x00\x00\x50\xff\x95\xff\x64\xff\x7d\xff\x3d\xff\x7c\xff\x81\xff\x6b\xff\x00\x00\x5b\xff\x30\xff\x2d\xff\x58\xff\x4a\xff\x00\x00\x5c\xff\x56\xff\x57\xff\x36\xff\x00\x00\x00\x00\x00\x00\x2a\xff\x00\x00\x5f\xff\x5b\xff\x43\xff\x33\xff\x31\xff\x78\xff\xa4\xff\xb4\xff\xa0\xff\xaf\xff\x9a\xff\x00\x00\x00\x00\xa2\xff\x9e\xff\x98\xff\xb9\xff\xba\xff\x00\x00\x9c\xff\x00\x00\x00\x00\xa6\xff\x00\x00\xd5\xff\x00\x00\xd0\xff\xe4\xff\xe5\xff\xca\xff\xdf\xff\xcc\xff\xe0\xff\x00\x00\xda\xff\xdc\xff\xda\xff\x00\x00\x00\x00\xe1\xff\xd9\xff\x00\x00\xde\xff\xcd\xff\x00\x00\x00\x00\xcf\xff\xce\xff\x00\x00\x00\x00\xa5\xff\xc8\xff\xc7\xff\x9b\xff\xa8\xff\x26\xff\x97\xff\xac\xff\x00\x00\x9d\xff\xa1\xff\xb3\xff\xa7\xff\x99\xff\xb1\xff\xae\xff\xb2\xff\x9f\xff\x27\xff\x25\xff\x40\xff\xa3\xff\x54\xff\x75\xff\x2b\xff\x00\x00\x91\xff\x66\xff\x34\xff\x52\xff\x48\xff\x77\xff\x2c\xff\x29\xff\x00\x00\xaf\xff\x00\x00\x00\x00\x98\xff\xa9\xff\x00\x00\xc6\xff\xe3\xff\x00\x00\x00\x00\xcb\xff\x00\x00\xd6\xff\xda\xff\x00\x00\xf0\xff\xd8\xff\xe2\xff\xc9\xff\x00\x00\xd4\xff\xc5\xff\x96\xff\x00\x00\xb0\xff\xad\xff\x00\x00\x00\x00\xab\xff\x00\x00\x00\x00\xef\xff\x00\x00\xf3\xff\xf0\xff\x00\x00\xd3\xff\x28\xff\xec\xff\xf1\xff\xee\xff\xed\xff\xeb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\xff\xe9\xff"# +happyDefActions = HappyA# "\xf6\xff\xd2\xff\x20\xff\x00\x00\x00\x00\xfb\xff\x8a\xff\x86\xff\x85\xff\x7c\xff\x78\xff\x6f\xff\x6a\xff\x5f\xff\x00\x00\x87\xff\x00\x00\x8d\xff\x3d\xff\x00\x00\x84\xff\x36\xff\x3d\xff\x00\x00\x4b\xff\x49\xff\x48\xff\x4a\xff\x4c\xff\x00\x00\x00\x00\x8d\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\xf9\xff\xf8\xff\x00\x00\xde\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd1\xff\x00\x00\xd2\xff\xf5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\xff\x1d\xff\x1e\xff\x00\x00\x1f\xff\x00\x00\x00\x00\x00\x00\x21\xff\x5e\xff\x8a\xff\x00\x00\x8d\xff\x00\x00\x00\x00\x5e\xff\x00\x00\x92\xff\x00\x00\x8c\xff\x00\x00\x8d\xff\x2c\xff\x00\x00\x6e\xff\x3f\xff\x3c\xff\x00\x00\x3d\xff\x3e\xff\x38\xff\x35\xff\x00\x00\x00\x00\x00\x00\x83\xff\x8a\xff\x00\x00\x00\x00\x00\x00\x92\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\xff\x00\x00\x00\x00\x70\xff\x8d\xff\x4e\xff\x7b\xff\x00\x00\x8d\xff\x64\xff\x65\xff\x66\xff\x6c\xff\x6d\xff\x6b\xff\x67\xff\x81\xff\x89\xff\x00\x00\x00\x00\x00\x00\x00\x00\x7d\xff\x82\xff\x88\xff\x00\x00\x80\xff\x36\xff\x00\x00\x00\x00\x00\x00\x3d\xff\x00\x00\x5a\xff\x56\xff\x57\xff\x43\xff\x00\x00\x2b\xff\x00\x00\x47\xff\x00\x00\x33\xff\x5b\xff\x00\x00\x00\x00\x8d\xff\x00\x00\x00\x00\x00\x00\x5d\xff\x00\x00\x00\x00\x92\xff\x50\xff\x44\xff\x41\xff\x00\x00\x2f\xff\x00\x00\x00\x00\x00\x00\xdd\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\x1a\xff\x1c\xff\x1b\xff\x18\xff\x19\xff\x00\x00\xe7\xff\xe6\xff\x00\x00\x00\x00\xe8\xff\xdb\xff\x00\x00\x00\x00\x00\x00\xf2\xff\xd7\xff\x00\x00\xcd\xff\x00\x00\x00\x00\x00\x00\x17\xff\x92\xff\x00\x00\xb3\xff\x00\x00\xc0\xff\x00\x00\x00\x00\xb7\xff\x00\x00\x00\x00\x00\x00\xb5\xff\xa7\xff\x00\x00\xbf\xff\x00\x00\xbe\xff\xb6\xff\xbc\xff\xbd\xff\xbb\xff\x00\x00\xc3\xff\x00\x00\x00\x00\x00\x00\xb8\xff\xc2\xff\x00\x00\x00\x00\xc1\xff\x23\xff\x00\x00\xc4\xff\x73\xff\x5a\xff\x00\x00\x76\xff\x00\x00\x00\x00\x00\x00\x52\xff\x00\x00\x71\xff\x5e\xff\x28\xff\x90\xff\x8f\xff\x8b\xff\x62\xff\x00\x00\x37\xff\x32\xff\x00\x00\x00\x00\x92\xff\x00\x00\x46\xff\x00\x00\x60\xff\x2c\xff\x00\x00\x42\xff\x00\x00\x00\x00\x3b\xff\x69\xff\x00\x00\x00\x00\x38\xff\x34\xff\x00\x00\x00\x00\x7f\xff\x00\x00\x91\xff\x00\x00\x4d\xff\x92\xff\x61\xff\x7a\xff\x3a\xff\x79\xff\x7e\xff\x68\xff\x00\x00\x58\xff\x2d\xff\x2a\xff\x55\xff\x47\xff\x00\x00\x59\xff\x53\xff\x54\xff\x33\xff\x00\x00\x00\x00\x00\x00\x27\xff\x00\x00\x5c\xff\x58\xff\x40\xff\x30\xff\x2e\xff\x75\xff\xa1\xff\xb1\xff\x9d\xff\xac\xff\x97\xff\x00\x00\x00\x00\x9f\xff\x00\x00\x9b\xff\x95\xff\xb9\xff\xba\xff\x00\x00\x99\xff\xb2\xff\x00\x00\x00\x00\xa3\xff\x00\x00\xd5\xff\x00\x00\xd0\xff\xe4\xff\xe5\xff\xca\xff\xdf\xff\xcc\xff\xe0\xff\x00\x00\xda\xff\xdc\xff\xda\xff\x00\x00\x00\x00\xe1\xff\xd9\xff\x00\x00\xde\xff\xcd\xff\x00\x00\x00\x00\xcf\xff\xce\xff\x00\x00\x00\x00\xa2\xff\xc8\xff\xc7\xff\x98\xff\xa5\xff\x23\xff\x94\xff\xa9\xff\x00\x00\x9a\xff\xde\xff\x9e\xff\xb0\xff\xa4\xff\x96\xff\xae\xff\xab\xff\xaf\xff\x9c\xff\x24\xff\x22\xff\x3d\xff\xa0\xff\x51\xff\x72\xff\x28\xff\x00\x00\x8e\xff\x63\xff\x31\xff\x4f\xff\x45\xff\x74\xff\x29\xff\x26\xff\x00\x00\xac\xff\x00\x00\x00\x00\x00\x00\x95\xff\xa6\xff\x00\x00\xc6\xff\xe3\xff\x00\x00\x00\x00\xcb\xff\x00\x00\xd6\xff\xda\xff\x00\x00\xf0\xff\xd8\xff\xe2\xff\xc9\xff\x00\x00\xd4\xff\xc5\xff\x93\xff\x00\x00\x00\x00\xad\xff\xaa\xff\x00\x00\x00\x00\xb4\xff\xa8\xff\x00\x00\x00\x00\xef\xff\x00\x00\xf3\xff\xf0\xff\x00\x00\xd3\xff\x25\xff\xec\xff\xf1\xff\xee\xff\xed\xff\xeb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\xff\xe9\xff"# happyCheck :: HappyAddr -happyCheck = HappyA# "\xff\xff\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x01\x00\x00\x00\x01\x00\x02\x00\x03\x00\x19\x00\x00\x00\x1a\x00\x03\x00\x00\x00\x03\x00\x04\x00\x05\x00\x2c\x00\x06\x00\x00\x00\x2f\x00\x0a\x00\x05\x00\x05\x00\x0d\x00\x0e\x00\x00\x00\x10\x00\x00\x00\x09\x00\x05\x00\x13\x00\x0b\x00\x16\x00\x00\x00\x02\x00\x19\x00\x1b\x00\x09\x00\x06\x00\x00\x00\x06\x00\x0a\x00\x09\x00\x10\x00\x1a\x00\x12\x00\x25\x00\x13\x00\x14\x00\x2d\x00\x16\x00\x17\x00\x18\x00\x13\x00\x24\x00\x48\x00\x48\x00\x12\x00\x00\x00\x37\x00\x2a\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x36\x00\x2a\x00\x4d\x00\x4e\x00\x4d\x00\x4e\x00\x4d\x00\x03\x00\x4d\x00\x05\x00\x4d\x00\x49\x00\x4d\x00\x4d\x00\x48\x00\x0b\x00\x48\x00\x49\x00\x4a\x00\x0f\x00\x10\x00\x00\x00\x48\x00\x48\x00\x47\x00\x15\x00\x03\x00\x0c\x00\x05\x00\x19\x00\x48\x00\x00\x00\x46\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x10\x00\x24\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x2a\x00\x00\x00\x19\x00\x2d\x00\x00\x00\x37\x00\x3c\x00\x3d\x00\x32\x00\x3c\x00\x3d\x00\x18\x00\x3e\x00\x1c\x00\x1d\x00\x00\x00\x01\x00\x02\x00\x03\x00\x3d\x00\x02\x00\x47\x00\x48\x00\x41\x00\x42\x00\x07\x00\x03\x00\x45\x00\x05\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x0b\x00\x3c\x00\x3d\x00\x07\x00\x0f\x00\x10\x00\x0a\x00\x48\x00\x49\x00\x15\x00\x15\x00\x00\x00\x2a\x00\x19\x00\x12\x00\x48\x00\x49\x00\x4a\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x24\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x2a\x00\x15\x00\x16\x00\x2d\x00\x00\x00\x37\x00\x2a\x00\x00\x00\x32\x00\x00\x00\x01\x00\x02\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x00\x00\x35\x00\x00\x00\x3d\x00\x38\x00\x47\x00\x48\x00\x41\x00\x42\x00\x4a\x00\x03\x00\x45\x00\x05\x00\x48\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x0b\x00\x2a\x00\x12\x00\x00\x00\x0f\x00\x10\x00\x21\x00\x00\x00\x2c\x00\x00\x00\x15\x00\x2f\x00\x35\x00\x28\x00\x03\x00\x38\x00\x05\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x0d\x00\x24\x00\x33\x00\x10\x00\x19\x00\x00\x00\x33\x00\x2a\x00\x17\x00\x3a\x00\x00\x00\x01\x00\x19\x00\x3a\x00\x23\x00\x32\x00\x03\x00\x4d\x00\x05\x00\x22\x00\x45\x00\x46\x00\x00\x00\x12\x00\x0b\x00\x20\x00\x3d\x00\x2a\x00\x0f\x00\x10\x00\x41\x00\x42\x00\x27\x00\x00\x00\x45\x00\x2a\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x0d\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x1a\x00\x24\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x1b\x00\x1c\x00\x00\x00\x24\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x03\x00\x2a\x00\x05\x00\x21\x00\x1f\x00\x08\x00\x0e\x00\x10\x00\x0b\x00\x12\x00\x28\x00\x3d\x00\x0f\x00\x10\x00\x29\x00\x41\x00\x42\x00\x00\x00\x2f\x00\x45\x00\x31\x00\x14\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x20\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x03\x00\x27\x00\x05\x00\x00\x00\x2a\x00\x48\x00\x49\x00\x33\x00\x0b\x00\x2a\x00\x2b\x00\x2c\x00\x0f\x00\x10\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x45\x00\x46\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x03\x00\x1f\x00\x05\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x0b\x00\x00\x00\x1b\x00\x29\x00\x0f\x00\x10\x00\x02\x00\x25\x00\x0d\x00\x00\x00\x0f\x00\x07\x00\x25\x00\x2b\x00\x4a\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x03\x00\x2d\x00\x05\x00\x33\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x0b\x00\x12\x00\x3a\x00\x37\x00\x0f\x00\x10\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x48\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x26\x00\x00\x00\x01\x00\x02\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x10\x00\x03\x00\x12\x00\x05\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x0b\x00\x00\x00\x01\x00\x02\x00\x0f\x00\x10\x00\x1e\x00\x00\x00\x01\x00\x1c\x00\x1d\x00\x03\x00\x00\x00\x05\x00\x26\x00\x2a\x00\x2b\x00\x2c\x00\x0a\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x10\x00\x2a\x00\x2b\x00\x2c\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x00\x00\x19\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x11\x00\x39\x00\x00\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x00\x00\x01\x00\x02\x00\x00\x00\x43\x00\x44\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x00\x00\x39\x00\x2d\x00\x3b\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x00\x00\x01\x00\x02\x00\x43\x00\x44\x00\x15\x00\x16\x00\x3a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x4b\x00\x4c\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x2a\x00\x2b\x00\x2c\x00\x02\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x39\x00\x33\x00\x3b\x00\x04\x00\x33\x00\x34\x00\x04\x00\x05\x00\x3a\x00\x0a\x00\x43\x00\x44\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x40\x00\x39\x00\x42\x00\x3b\x00\x0c\x00\x0d\x00\x33\x00\x34\x00\x2d\x00\x2e\x00\x2f\x00\x43\x00\x44\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x37\x00\x40\x00\x00\x00\x42\x00\x00\x00\x18\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x41\x00\x19\x00\x04\x00\x00\x00\x33\x00\x34\x00\x07\x00\x08\x00\x06\x00\x0c\x00\x39\x00\x23\x00\x3b\x00\x04\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x0a\x00\x2a\x00\x2b\x00\x2c\x00\x06\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0e\x00\x2d\x00\x3e\x00\x3f\x00\x43\x00\x41\x00\x25\x00\x00\x00\x27\x00\x28\x00\x29\x00\x37\x00\x2b\x00\x05\x00\x00\x00\x01\x00\x02\x00\x03\x00\x48\x00\x04\x00\x33\x00\x34\x00\x35\x00\x36\x00\x01\x00\x06\x00\x39\x00\x02\x00\x3b\x00\x3c\x00\x00\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x43\x00\x07\x00\x08\x00\x20\x00\x06\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x27\x00\x06\x00\x48\x00\x2a\x00\x01\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x3c\x00\x3d\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x0c\x00\x48\x00\x07\x00\x0e\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x3c\x00\x3d\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x2d\x00\x0d\x00\x02\x00\x04\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0a\x00\x0e\x00\x3e\x00\x0d\x00\x20\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x27\x00\x2d\x00\x48\x00\x2a\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0a\x00\x02\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x03\x00\x48\x00\x0a\x00\x08\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0b\x00\x02\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x48\x00\x04\x00\x3e\x00\x1b\x00\x48\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x06\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x11\x00\x04\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0c\x00\x37\x00\x04\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x04\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x02\x00\x37\x00\x3e\x00\x04\x00\x48\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x01\x00\x2d\x00\x2e\x00\x2f\x00\x06\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x11\x00\x37\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0a\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2d\x00\x02\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x37\x00\x00\x00\x01\x00\x02\x00\x00\x00\x01\x00\x02\x00\x3e\x00\x48\x00\x04\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x37\x00\x02\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x3e\x00\x2d\x00\x2e\x00\x01\x00\x07\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x02\x00\x37\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x37\x00\x01\x00\x33\x00\x02\x00\x48\x00\x33\x00\x34\x00\x3e\x00\x02\x00\x3a\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x37\x00\x01\x00\x48\x00\x38\x00\x00\x00\x01\x00\x02\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x23\x00\x37\x00\x03\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x3e\x00\x37\x00\x37\x00\x07\x00\x48\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x08\x00\x04\x00\x3e\x00\x04\x00\x01\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x16\x00\x04\x00\x0e\x00\x0c\x00\x01\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x33\x00\x34\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x37\x00\x48\x00\x01\x00\x04\x00\x04\x00\x48\x00\x0d\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x37\x00\x00\x00\x01\x00\x02\x00\x48\x00\x06\x00\x16\x00\x3e\x00\x48\x00\x04\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0d\x00\x37\x00\x48\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x3e\x00\x4a\x00\x03\x00\x48\x00\x07\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x06\x00\x11\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0c\x00\x37\x00\x0a\x00\x33\x00\x07\x00\x0a\x00\x08\x00\x2d\x00\x3e\x00\x37\x00\x3a\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x48\x00\x37\x00\x01\x00\x0a\x00\x01\x00\x00\x00\x00\x00\x03\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x02\x00\x37\x00\x48\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x3e\x00\x02\x00\x17\x00\x17\x00\x01\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x4d\x00\x48\x00\x3e\x00\x22\x00\x22\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x4d\x00\x2a\x00\x2a\x00\x00\x00\x00\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x03\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x37\x00\x03\x00\x48\x00\x17\x00\x17\x00\x08\x00\x4d\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x22\x00\x22\x00\x40\x00\x00\x00\x37\x00\x0d\x00\x44\x00\x12\x00\x2a\x00\x2a\x00\x48\x00\x3e\x00\x48\x00\xff\xff\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x2e\x00\xff\xff\x00\x00\x17\x00\x00\x00\x37\x00\xff\xff\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x3e\x00\xff\xff\x22\x00\xff\xff\x20\x00\x37\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x27\x00\x3e\x00\x17\x00\x2a\x00\x17\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\x22\x00\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x2a\x00\xff\xff\x2a\x00\x25\x00\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\x2b\x00\xff\xff\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\x3b\x00\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\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"# +happyCheck = HappyA# "\xff\xff\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x19\x00\x00\x00\x1a\x00\x15\x00\x05\x00\x00\x00\x03\x00\x19\x00\x05\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x03\x00\x05\x00\x05\x00\x0d\x00\x0b\x00\x04\x00\x10\x00\x05\x00\x0b\x00\x00\x00\x00\x00\x0a\x00\x0f\x00\x10\x00\x09\x00\x19\x00\x0a\x00\x12\x00\x15\x00\x03\x00\x0c\x00\x05\x00\x19\x00\x0d\x00\x1a\x00\x0f\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x10\x00\x24\x00\x24\x00\x00\x00\x00\x00\x4b\x00\x4b\x00\x2a\x00\x2a\x00\x19\x00\x2d\x00\x00\x00\x4b\x00\x4b\x00\x36\x00\x32\x00\x3c\x00\x3d\x00\x18\x00\x2a\x00\x4d\x00\x50\x00\x4d\x00\x4e\x00\x4d\x00\x4e\x00\x4d\x00\x3e\x00\x4d\x00\x4b\x00\x4d\x00\x42\x00\x43\x00\x4b\x00\x4c\x00\x4d\x00\x03\x00\x48\x00\x05\x00\x4b\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x0b\x00\x4b\x00\x2a\x00\x4a\x00\x0f\x00\x10\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x15\x00\x00\x00\x01\x00\x02\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x12\x00\x24\x00\x00\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x2a\x00\x25\x00\x00\x00\x2d\x00\x00\x00\x01\x00\x02\x00\x2b\x00\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1e\x00\x03\x00\x10\x00\x05\x00\x12\x00\x00\x00\x00\x00\x3e\x00\x26\x00\x0b\x00\x00\x00\x42\x00\x43\x00\x0f\x00\x10\x00\x09\x00\x18\x00\x48\x00\x33\x00\x15\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x2a\x00\x3a\x00\x4b\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x17\x00\x24\x00\x35\x00\x45\x00\x46\x00\x38\x00\x00\x00\x2a\x00\x2d\x00\x33\x00\x34\x00\x22\x00\x3c\x00\x3d\x00\x2a\x00\x32\x00\x00\x00\x00\x00\x37\x00\x2a\x00\x00\x00\x03\x00\x40\x00\x05\x00\x42\x00\x35\x00\x00\x00\x3e\x00\x38\x00\x0b\x00\x00\x00\x42\x00\x43\x00\x0f\x00\x10\x00\x12\x00\x49\x00\x48\x00\x12\x00\x21\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4a\x00\x00\x00\x28\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x1b\x00\x24\x00\x03\x00\x04\x00\x05\x00\x2a\x00\x2b\x00\x2c\x00\x1f\x00\x0a\x00\x25\x00\x02\x00\x0d\x00\x0e\x00\x04\x00\x10\x00\x07\x00\x03\x00\x29\x00\x05\x00\x0a\x00\x16\x00\x08\x00\x1f\x00\x19\x00\x0b\x00\x03\x00\x3e\x00\x05\x00\x0f\x00\x10\x00\x42\x00\x43\x00\x29\x00\x0b\x00\x00\x00\x06\x00\x48\x00\x0f\x00\x10\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x13\x00\x03\x00\x0e\x00\x05\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x10\x00\x00\x00\x1e\x00\x00\x00\x07\x00\x08\x00\x00\x00\x01\x00\x02\x00\x0e\x00\x26\x00\x4b\x00\x4c\x00\x4d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x15\x00\x16\x00\x11\x00\x2c\x00\x1b\x00\x00\x00\x2f\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x01\x00\x02\x00\x25\x00\x0d\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x03\x00\x10\x00\x05\x00\x12\x00\x2a\x00\x2b\x00\x2c\x00\x02\x00\x0b\x00\x1b\x00\x1c\x00\x06\x00\x0f\x00\x10\x00\x00\x00\x01\x00\x02\x00\x03\x00\x33\x00\x50\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x03\x00\x3a\x00\x05\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x0b\x00\x00\x00\x01\x00\x02\x00\x0f\x00\x10\x00\x00\x00\x01\x00\x02\x00\x00\x00\x33\x00\x03\x00\x2c\x00\x05\x00\x00\x00\x2f\x00\x00\x00\x3a\x00\x0a\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x10\x00\x4b\x00\x4c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x14\x00\x19\x00\x02\x00\x15\x00\x16\x00\x37\x00\x00\x00\x07\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x21\x00\x00\x00\x01\x00\x33\x00\x47\x00\x48\x00\x06\x00\x28\x00\x33\x00\x34\x00\x3a\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x13\x00\x00\x00\x45\x00\x46\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x01\x00\x02\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x01\x00\x02\x00\x2d\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x00\x00\x01\x00\x02\x00\x37\x00\x00\x00\x3a\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x4a\x00\x33\x00\x34\x00\x00\x00\x00\x00\x47\x00\x48\x00\x39\x00\x00\x00\x3b\x00\x2a\x00\x2b\x00\x2c\x00\x33\x00\x34\x00\x19\x00\x33\x00\x43\x00\x44\x00\x39\x00\x00\x00\x3b\x00\x04\x00\x3a\x00\x00\x00\x23\x00\x33\x00\x34\x00\x00\x00\x43\x00\x44\x00\x00\x00\x39\x00\x07\x00\x3b\x00\x00\x00\x0a\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x43\x00\x44\x00\x12\x00\x2a\x00\x2b\x00\x2c\x00\x33\x00\x34\x00\x40\x00\x00\x00\x42\x00\x19\x00\x39\x00\x25\x00\x3b\x00\x27\x00\x28\x00\x29\x00\x04\x00\x2b\x00\x00\x00\x23\x00\x43\x00\x44\x00\x2a\x00\x2b\x00\x2c\x00\x33\x00\x34\x00\x35\x00\x36\x00\x02\x00\x2f\x00\x39\x00\x31\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x3f\x00\x18\x00\x00\x00\x01\x00\x02\x00\x44\x00\x45\x00\x1a\x00\x47\x00\x33\x00\x34\x00\x00\x00\x25\x00\x00\x00\x27\x00\x28\x00\x29\x00\x24\x00\x2b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2a\x00\x04\x00\x05\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x00\x00\x39\x00\x00\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x3f\x00\x1c\x00\x1d\x00\x09\x00\x00\x00\x44\x00\x45\x00\x00\x00\x47\x00\x00\x00\x01\x00\x02\x00\x03\x00\x13\x00\x14\x00\x33\x00\x16\x00\x17\x00\x18\x00\x00\x00\x1c\x00\x1d\x00\x3a\x00\x10\x00\x00\x00\x12\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x41\x00\x37\x00\x0c\x00\x0d\x00\x0c\x00\x46\x00\x00\x00\x0e\x00\x3e\x00\x3f\x00\x4b\x00\x41\x00\x45\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x06\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x37\x00\x0a\x00\x05\x00\x49\x00\x0d\x00\x04\x00\x01\x00\x3e\x00\x3f\x00\x4b\x00\x41\x00\x02\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x06\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x3c\x00\x3d\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x06\x00\x37\x00\x2d\x00\x2e\x00\x2f\x00\x01\x00\x3c\x00\x3d\x00\x3e\x00\x06\x00\x4b\x00\x00\x00\x37\x00\x01\x00\x00\x00\x01\x00\x02\x00\x03\x00\x07\x00\x08\x00\x0c\x00\x0e\x00\x4b\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x2d\x00\x2e\x00\x2f\x00\x07\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2d\x00\x37\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x0e\x00\x0d\x00\x02\x00\x4b\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0a\x00\x4b\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x2d\x00\x02\x00\x0a\x00\x03\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0b\x00\x08\x00\x3e\x00\x02\x00\x04\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x4b\x00\x03\x00\x01\x00\x1b\x00\x4b\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x4b\x00\x04\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x06\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x11\x00\x04\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0c\x00\x37\x00\x00\x00\x01\x00\x02\x00\x04\x00\x4b\x00\x04\x00\x3e\x00\x01\x00\x06\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x02\x00\x37\x00\x11\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x0a\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2d\x00\x37\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x02\x00\x37\x00\x4b\x00\x33\x00\x00\x00\x01\x00\x02\x00\x03\x00\x3e\x00\x04\x00\x3a\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x01\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x02\x00\x37\x00\x02\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x3e\x00\x07\x00\x01\x00\x2d\x00\x2e\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x02\x00\x01\x00\x3e\x00\x37\x00\x02\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x4b\x00\x2d\x00\x02\x00\x01\x00\x01\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x37\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x4b\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x23\x00\x38\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x37\x00\x37\x00\x04\x00\x37\x00\x07\x00\x4b\x00\x04\x00\x3e\x00\x01\x00\x16\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0e\x00\x37\x00\x0c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x3e\x00\x2d\x00\x04\x00\x01\x00\x01\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x37\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x4b\x00\x37\x00\x04\x00\x04\x00\x4b\x00\x08\x00\x0d\x00\x03\x00\x3e\x00\x06\x00\x16\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x4b\x00\x37\x00\x0d\x00\x03\x00\x07\x00\x4b\x00\x00\x00\x00\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x4d\x00\x37\x00\x4b\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x3e\x00\x04\x00\x4b\x00\x17\x00\x06\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x11\x00\x0c\x00\x3e\x00\x20\x00\x22\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x27\x00\x0a\x00\x2a\x00\x2a\x00\x07\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x08\x00\x0a\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x37\x00\x37\x00\x4b\x00\x2d\x00\x01\x00\x0a\x00\x01\x00\x03\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x4b\x00\x37\x00\x02\x00\x02\x00\x01\x00\x4b\x00\x50\x00\x03\x00\x3e\x00\x50\x00\x03\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x37\x00\x03\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x3e\x00\x4b\x00\x08\x00\x0d\x00\x00\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x50\x00\x12\x00\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x01\x00\x02\x00\x03\x00\x4b\x00\x37\x00\x00\x00\x01\x00\x02\x00\x17\x00\x2e\x00\xff\xff\x3e\x00\xff\xff\xff\xff\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x22\x00\xff\xff\x00\x00\xff\xff\xff\xff\x37\x00\xff\xff\x00\x00\x2a\x00\xff\xff\xff\xff\xff\xff\x3e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x37\x00\x00\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x20\x00\x37\x00\x00\x00\x33\x00\x34\x00\x20\x00\xff\xff\x27\x00\x3e\x00\x39\x00\x2a\x00\x3b\x00\x27\x00\x17\x00\xff\xff\x2a\x00\x20\x00\xff\xff\xff\xff\x00\x00\x17\x00\xff\xff\x17\x00\x27\x00\x22\x00\x17\x00\x2a\x00\xff\xff\x00\x00\xff\xff\x20\x00\x22\x00\x2a\x00\x22\x00\xff\xff\xff\xff\x22\x00\x27\x00\xff\xff\x2a\x00\x2a\x00\x2a\x00\x17\x00\x25\x00\x2a\x00\x27\x00\x28\x00\x29\x00\xff\xff\x2b\x00\xff\xff\x17\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x2a\x00\x22\x00\x39\x00\xff\xff\x3b\x00\x3c\x00\x3d\x00\x23\x00\x3f\x00\x2a\x00\x26\x00\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\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\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\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"# happyTable :: HappyAddr -happyTable = HappyA# "\x00\x00\x3a\x00\x3b\x00\x3a\x00\x3b\x00\x3a\x00\x3b\x00\x3a\x00\x3b\x00\x3a\x00\x3b\x00\x3a\x00\x3b\x00\x3a\x00\x43\x00\x07\x00\x08\x00\x09\x00\x57\x00\xe8\x00\x73\x00\x4f\x00\x70\x00\x94\x00\x7d\x00\x95\x00\x2d\x00\x30\x00\x4a\x00\x2e\x00\x7e\x00\x4c\x01\x6c\x01\xf7\x00\x5d\xff\x4a\x00\x96\x00\x49\x01\x55\x01\x4c\x01\x2b\x00\xb0\x01\x5d\xff\xac\x01\x9a\x01\x97\x00\xe9\x00\x65\x00\x9b\x01\x49\x01\x2a\x00\xaf\x01\xad\x01\x96\x01\xe1\x00\x59\x01\x74\x01\x66\x00\x67\x00\x75\x01\x68\x00\x69\x00\x6a\x00\x2b\x00\x6d\x01\x06\x00\x06\x00\xb5\x01\x52\x00\x0f\x00\xe3\x00\x52\x00\x06\x00\x07\x00\x08\x00\x09\x00\x71\x00\x8f\x01\x3c\x00\xce\x00\x3c\x00\x3d\x00\xb8\x00\x12\x00\xb9\x00\x13\x00\xba\x00\x76\x01\xbc\x00\xff\xff\x06\x00\x14\x00\x06\x00\x25\x00\x26\x00\x15\x00\x16\x00\x52\x00\x06\x00\x06\x00\x56\x01\x17\x00\x94\x00\x5d\x00\x95\x00\x57\x00\x06\x00\x71\x01\x6b\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x96\x00\x1e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2e\x01\x1f\x00\xa3\x01\x97\x00\x61\x00\x4a\x00\x0f\x00\x53\x00\x0d\x01\x20\x00\x53\x00\x88\x00\xa9\x00\x10\x00\x72\x01\x9f\x01\x06\x00\x07\x00\x08\x00\x09\x00\x21\x00\x46\x01\x2f\x01\x84\x01\x22\x00\x23\x00\x47\x01\x12\x00\x24\x00\x13\x00\x4a\x00\x06\x00\x25\x00\x26\x00\x27\x00\x14\x00\x53\x00\x54\x00\x42\xff\x15\x00\x16\x00\x42\xff\x06\x00\x25\x00\x56\x00\x17\x00\x4e\x01\x17\x01\x57\x00\x6e\x00\x06\x00\x25\x00\x26\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x03\x01\x1e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2e\x01\x1f\x00\x90\x01\x50\x01\x61\x00\x9d\x01\x0f\x00\x04\x01\xe4\x00\x20\x00\x8c\x00\x8d\x00\x8e\x00\x10\x00\x8c\x00\x8d\x00\x8e\x00\x9e\x01\x05\x01\x49\x01\x21\x00\x81\x01\x2f\x01\x30\x01\x22\x00\x23\x00\x8a\x01\x12\x00\x24\x00\x13\x00\x06\x00\x06\x00\x25\x00\x26\x00\x27\x00\x14\x00\x04\x01\xb6\x01\xeb\x00\x15\x00\x16\x00\xe5\x00\x8e\x01\x2d\x00\xcf\x00\x17\x00\x2e\x00\x05\x01\x70\x01\x94\x00\x06\x01\x95\x00\x4a\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xf7\x00\x1e\x00\x8f\x00\x96\x00\xec\x00\x49\x01\x8f\x00\x1f\x00\xd0\x00\x90\x00\x9f\x00\x5b\x00\x97\x00\x79\x01\x78\x01\x20\x00\x12\x00\xf7\xff\x47\x00\x63\x01\x91\x00\x24\x01\x4a\x00\x8d\x01\x14\x00\xd3\x00\x21\x00\xd2\x00\x15\x00\x16\x00\x22\x00\x23\x00\x66\x01\xe4\x00\x24\x00\xd5\x00\x68\x01\x06\x00\x25\x00\x26\x00\x27\x00\x3f\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xe1\x00\x1e\x00\x94\x01\x8c\x00\x8d\x00\x8e\x00\x49\x01\x40\x00\x41\x00\x4a\x00\xe2\x00\x06\x00\x25\x00\x26\x00\x4a\x00\x12\x00\xe3\x00\x47\x00\xe5\x00\x69\x01\x3c\xff\x91\x01\x58\x01\x14\x00\x59\x01\xe6\x00\x21\x00\x15\x00\x16\x00\x9c\x01\x22\x00\x23\x00\x6f\x01\x60\x01\x24\x00\x61\x01\x5e\x01\x06\x00\x25\x00\x26\x00\x27\x00\xd3\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x70\x00\x41\x01\x78\x01\x68\x01\xd5\x00\x06\x00\x25\x00\x8f\x00\x48\x00\x4b\x00\x4c\x00\xfc\x00\x15\x00\x16\x00\x90\x00\x4a\x00\xe8\x00\x8c\x00\x8d\x00\x8e\x00\x22\x01\x43\x00\x07\x00\x08\x00\x09\x00\x91\x00\x92\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x32\x01\x12\x00\x69\x01\x47\x00\xc6\x00\x06\x00\x25\x00\x26\x00\x27\x00\x14\x00\x1a\x01\xe9\x00\x6a\x01\x15\x00\x16\x00\x9b\x00\xd7\x00\xc7\x00\xd9\x00\xc8\x00\x9c\x00\xea\x00\xd8\x00\x38\x01\x49\x01\x4b\x00\x4c\x00\x18\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x70\x00\x6e\x00\x47\x00\x8f\x00\x06\x00\x25\x00\x26\x00\x27\x00\x48\x00\x4a\x01\xf5\x00\x0f\x00\x15\x00\x16\x00\x4a\x00\xda\x00\x49\x01\xd9\x00\x06\x00\x4b\x00\x4c\x00\x62\x00\x71\x01\x6c\x01\xa0\x00\x8d\x00\x8e\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x5a\x01\x46\x00\x59\x01\x47\x00\x4c\x01\x06\x00\x25\x00\x26\x00\x27\x00\x48\x00\xef\x00\x8d\x00\x8e\x00\x15\x00\x16\x00\xda\x00\x5a\x00\x5b\x00\x72\x01\x73\x01\x94\x00\x4d\x01\x95\x00\xdb\x00\x4b\x00\x4c\x00\x97\x00\x7e\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x96\x00\x4b\x00\x4c\x00\x62\x00\x06\x00\x25\x00\x26\x00\x27\x00\x51\x01\x97\x00\xa1\x00\xa2\x00\xef\x00\x8d\x00\x8e\x00\x52\x01\xa3\x00\x4a\x00\xa4\x00\x8c\x00\x8d\x00\x8e\x00\xef\x00\x8d\x00\x8e\x00\x4e\x01\xa5\x00\xa6\x00\xa1\x00\xa2\x00\xef\x00\x8d\x00\x8e\x00\x13\x01\xa3\x00\xb4\x01\xa4\x00\x06\x00\x25\x00\x26\x00\x27\x00\xef\x00\x8d\x00\x8e\x00\xa5\x00\x21\x01\x4f\x01\x50\x01\xb5\x01\x06\x00\x07\x00\x08\x00\x09\x00\x27\x00\x28\x00\x16\x01\x06\x00\x25\x00\x26\x00\x4b\x00\x4c\x00\x4d\x00\x19\x01\xa1\x00\xa2\x00\x06\x00\x07\x00\x08\x00\x09\x00\xa3\x00\x8f\x00\xa4\x00\x7d\x00\xa1\x00\xff\x00\x2e\x00\x2f\x00\x48\x01\x7e\x00\xa5\x00\x35\x01\xa1\x00\xa2\x00\xef\x00\x8d\x00\x8e\x00\x00\x01\xa3\x00\x7f\x01\xa4\x00\x84\x00\x85\x00\xa1\x00\xff\x00\x0a\x00\x0b\x00\x77\x00\xa5\x00\xf0\x00\x06\x00\x07\x00\x08\x00\x09\x00\x7f\x00\x0f\x00\x00\x01\xeb\x00\x01\x01\x61\x00\xa9\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x11\x01\x43\x00\x07\x00\x08\x00\x09\x00\xbd\x00\x0f\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\x31\x00\x10\x00\x58\x00\xa4\x01\x12\x01\xec\x00\x98\x01\x51\x00\xa1\x00\xa2\x00\xa5\x01\xae\x01\xb8\x01\x32\x00\xa3\x00\xed\x00\x33\x01\x29\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x57\x00\x7e\x00\x4b\x00\x4c\x00\x62\x00\xb9\x01\x0f\x00\x5d\x00\x07\x00\x08\x00\x09\x00\x41\x00\x44\x00\x10\x00\x58\x00\xb3\x01\x59\x00\xab\x00\x4a\x00\xac\x00\xad\x00\xae\x00\x0f\x00\xaf\x00\xb2\x01\x5d\x00\x07\x00\x08\x00\x09\x00\x06\x00\xa8\x01\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xa9\x01\xab\x01\xb4\x00\xaa\x01\xb5\x00\xb6\x00\xa4\x01\xb7\x00\x06\x00\x07\x00\x08\x00\x09\x00\xb8\x00\xa5\x01\xa6\x01\xd3\x00\xac\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x5e\x00\x42\x01\xa3\x01\x06\x00\xd5\x00\x96\x01\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x53\x00\x85\x01\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x5e\x00\x4a\x00\x99\x01\x06\x00\xa1\x01\x87\x01\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x53\x00\x5f\x00\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x9d\x00\x31\x01\x89\x01\x88\x01\x8c\x01\x7d\x00\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x7e\x00\x8a\x01\x10\x00\x7f\x00\xd3\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x9d\x00\x9e\x00\xd4\x00\x93\x01\x06\x00\xd5\x00\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x94\x01\x58\x01\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x9d\x00\xa8\x00\x5c\x01\x06\x00\x5d\x01\x62\x01\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x5e\x01\x63\x01\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xa1\x01\x06\x00\x07\x00\x08\x00\x09\x00\x7c\x01\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x06\x00\x7b\x01\x10\x00\x7d\x01\x06\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x9b\x01\x06\x00\x07\x00\x08\x00\x09\x00\x1e\x01\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x20\x01\x83\x01\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x83\x01\x06\x00\x07\x00\x08\x00\x09\x00\x1f\x01\x0f\x00\x1c\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x8c\x01\x10\x00\x0a\x00\x0b\x00\x78\x00\x1d\x01\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x28\x01\x0f\x00\x10\x00\x26\x01\x06\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x64\x01\x27\x01\x0a\x00\x0b\x00\x79\x00\x2a\x01\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x2b\x01\x0f\x00\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x65\x01\x06\x00\x07\x00\x08\x00\x09\x00\x2c\x01\x0f\x00\x43\x00\x07\x00\x08\x00\x09\x00\x2d\x01\x2e\x01\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x67\x01\x06\x00\x07\x00\x08\x00\x09\x00\x38\x01\x0f\x00\x8c\x00\x8d\x00\x8e\x00\xef\x00\x8d\x00\x8e\x00\x10\x00\x06\x00\x37\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x6e\x01\x06\x00\x07\x00\x08\x00\x09\x00\x3a\x01\x0f\x00\x3b\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x7d\x01\x10\x00\x0a\x00\x6b\x00\x3c\x01\x3e\x01\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x3d\x01\x0f\x00\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x7e\x01\x06\x00\x07\x00\x08\x00\x09\x00\x3f\x01\x0f\x00\x40\x01\x8f\x00\x41\x01\x06\x00\xa1\x00\x80\x01\x10\x00\x44\x01\xf5\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x01\x06\x00\x07\x00\x08\x00\x09\x00\x45\x01\x0f\x00\x48\x01\x06\x00\x54\x01\xef\x00\x8d\x00\x8e\x00\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x23\x01\x06\x00\x07\x00\x08\x00\x09\x00\x57\x01\x0f\x00\xc6\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x34\x01\x10\x00\xcc\x00\xcd\x00\xce\x00\x06\x00\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x01\xef\x00\x10\x00\xf2\x00\xf3\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xfa\x00\xf4\x00\xf8\x00\xf5\x00\x84\x00\xf9\x00\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\xa1\x00\x02\x01\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xfb\x00\x06\x00\x07\x00\x08\x00\x09\x00\xfa\x00\x0f\x00\x06\x00\x09\x01\xff\x00\x08\x01\x06\x00\x0c\x01\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xfd\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0d\x01\x0f\x00\x8c\x00\x8d\x00\x8e\x00\x06\x00\x16\x01\x10\x01\x10\x00\x06\x00\x7c\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x01\x06\x00\x07\x00\x08\x00\x09\x00\x6d\x00\x0f\x00\x06\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x10\x01\x10\x00\x26\x00\x74\x00\x06\x00\x81\x00\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x82\x00\x86\x00\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x14\x01\x06\x00\x07\x00\x08\x00\x09\x00\x83\x00\x0f\x00\x87\x00\x8f\x00\x88\x00\x8b\x00\x8a\x00\x99\x00\x10\x00\x8c\x00\x0a\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x74\x00\x06\x00\x07\x00\x08\x00\x09\x00\x06\x00\x0f\x00\x9a\x00\x7e\x00\xbc\x00\xcf\x00\xcf\x00\xa8\x00\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x75\x00\x06\x00\x07\x00\x08\x00\x09\x00\xc4\x00\x0f\x00\x06\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x76\x00\x10\x00\xc5\x00\xd0\x00\xd0\x00\x3a\x00\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\x06\x00\x10\x00\xd1\x00\xd8\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x7a\x00\xff\xff\xd2\x00\xd2\x00\xcf\x00\xcf\x00\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x43\x00\x49\x00\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x9c\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4a\x00\x0f\x00\x50\x00\x06\x00\xd0\x00\xd0\x00\x64\x00\xff\xff\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x5e\x00\xcf\x00\xdc\x00\xdd\x00\xca\x00\x4a\x00\x0f\x00\x6d\x00\xcb\x00\x6e\x00\xd2\x00\xd2\x00\x06\x00\x10\x00\x06\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x50\x00\x2a\x00\x00\x00\xcf\x00\xd0\x00\xcf\x00\x0f\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x10\x00\x00\x00\xde\x00\x00\x00\xd3\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\x00\xdf\x00\x10\x00\xd0\x00\xd5\x00\xd0\x00\x34\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\x00\x00\xe7\x00\x00\x00\x00\x00\x36\x00\x37\x00\x00\x00\xd2\x00\x00\x00\xd2\x00\xab\x00\x00\x00\xac\x00\xad\x00\xae\x00\x00\x00\xaf\x00\x00\x00\x00\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\x00\x00\x00\x00\xb4\x00\x00\x00\xb5\x00\xb6\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# +happyTable = HappyA# "\x00\x00\x4f\x00\x3a\x00\x3a\x00\x3b\x00\x3a\x00\x3b\x00\x3a\x00\x3b\x00\x3a\x00\x3b\x00\x3a\x00\x3b\x00\x3a\x00\x3b\x00\x57\x00\x52\x00\x73\x00\x56\x00\x54\x01\x70\x00\x94\x00\x57\x00\x95\x00\x27\x00\x28\x00\x4a\x00\x51\x01\x12\x00\x74\x01\x13\x00\xfd\x00\xbc\x01\x7d\x00\x96\x00\x54\x01\x14\x00\x4a\x00\xc9\x00\x7e\x00\x15\x00\x16\x00\x5d\x01\x97\x00\xbb\x01\xc1\x01\x17\x00\x94\x00\x5d\x00\x95\x00\x57\x00\xca\x00\xe7\x00\xcb\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x96\x00\x1e\x00\x76\x01\xaf\x01\x4a\x00\x06\x00\x06\x00\x1f\x00\xe9\x00\x97\x00\x61\x00\x52\x00\x06\x00\x06\x00\x71\x00\x20\x00\x53\x00\x13\x01\xa9\x00\x99\x01\xbb\x00\xff\xff\x3c\x00\xd1\x00\x3c\x00\x3d\x00\xbc\x00\x21\x00\xbd\x00\x06\x00\xbf\x00\x22\x00\x23\x00\x06\x00\x25\x00\x26\x00\x12\x00\x24\x00\x13\x00\x06\x00\x06\x00\x25\x00\x26\x00\x27\x00\x14\x00\x06\x00\x1d\x01\x5e\x01\x15\x00\x16\x00\x51\x01\x06\x00\x25\x00\xa7\x01\x17\x00\x8c\x00\x8d\x00\x8e\x00\xde\x00\x06\x00\x25\x00\x26\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xc2\x01\x1e\x00\x4a\x00\x53\x00\x88\x00\x52\x00\x51\x01\x1f\x00\xdc\x00\xa9\x01\x61\x00\xf5\x00\x8d\x00\x8e\x00\xdd\x00\x20\x00\x43\x00\x07\x00\x08\x00\x09\x00\xdf\x00\x12\x00\xa0\x01\x13\x00\x61\x01\x09\x01\xb8\x01\x21\x00\x74\x01\x14\x00\xd2\x00\x22\x00\x23\x00\x15\x00\x16\x00\xb9\x01\xa9\x00\x24\x00\x8f\x00\x17\x00\x06\x00\x25\x00\x26\x00\x27\x00\x0a\x01\x90\x00\x06\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xd3\x00\x1e\x00\x0b\x01\x91\x00\x2a\x01\x8a\x01\xea\x00\x1f\x00\x7e\x01\xa1\x00\x05\x01\x6b\x01\x53\x00\x54\x00\x0a\x01\x20\x00\x4a\x00\x51\x01\x0f\x00\xd5\x00\x51\x01\x12\x00\x06\x01\x47\x00\x88\x01\x0b\x01\xee\x00\x21\x00\x0c\x01\x14\x00\x70\x01\x22\x00\x23\x00\x15\x00\x16\x00\x97\x01\x7f\x01\x24\x00\x52\x01\xeb\x00\x06\x00\x25\x00\x26\x00\x27\x00\x94\x01\x70\x01\x79\x01\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xef\x00\x1e\x00\x94\x00\x7d\x00\x95\x00\x4b\x00\x4c\x00\x02\x01\x71\x01\x7e\x00\x7d\x01\x4e\x01\xfd\x00\x5a\xff\x2f\x01\x96\x00\x4f\x01\x12\x00\xa6\x01\x47\x00\x7e\x00\x5a\xff\x39\xff\x71\x01\x97\x00\x14\x00\x70\x00\x21\x00\x81\x01\x15\x00\x16\x00\x22\x00\x23\x00\x72\x01\x48\x00\xde\x00\x30\x00\x24\x00\x15\x00\x16\x00\x06\x00\x25\x00\x26\x00\x27\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x2b\x00\x12\x00\x91\x01\x47\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x14\x00\xee\x00\xb0\x01\x56\x01\x15\x00\x16\x00\x4a\x00\xdf\x00\x98\x01\xb1\x01\xba\x01\x8c\x00\x8d\x00\x8e\x00\x9b\x01\xe0\x00\x06\x00\x25\x00\x26\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x9a\x01\x58\x01\x5a\x01\x2d\x00\xef\x00\x51\x01\x2e\x00\x06\x00\x25\x00\x26\x00\x27\x00\x8c\x00\x8d\x00\x8e\x00\xf0\x00\x3f\x00\x06\x00\x25\x00\x26\x00\x27\x00\x70\x00\x60\x01\x47\x00\x61\x01\x4b\x00\x4c\x00\x1e\x01\xa4\x01\x48\x00\x40\x00\x41\x00\xa5\x01\x15\x00\x16\x00\x06\x00\x07\x00\x08\x00\x09\x00\x8f\x00\xf7\xff\x06\x00\x25\x00\x26\x00\x27\x00\x46\x00\x82\x01\x47\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x48\x00\x8c\x00\x8d\x00\x8e\x00\x15\x00\x16\x00\xf5\x00\x8d\x00\x8e\x00\x9e\x01\x8f\x00\x94\x00\x2d\x00\x95\x00\x56\x01\x2e\x00\xea\x00\xfb\x00\x7e\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x96\x00\x06\x00\x25\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x34\x01\x66\x01\x97\x00\x9b\x00\x57\x01\x58\x01\x0f\x00\x20\x01\x9c\x00\x06\x00\x25\x00\x26\x00\x27\x00\x10\x00\x06\x00\x07\x00\x08\x00\x09\x00\xeb\x00\x9f\x00\x5b\x00\x8f\x00\x35\x01\x8d\x01\x2a\x00\xec\x00\xa1\x00\x89\x01\x90\x00\x78\x01\xa0\x00\x8d\x00\x8e\x00\x06\x00\x25\x00\x26\x00\x27\x00\x2b\x00\x28\x01\x91\x00\x92\x00\x38\x01\xf5\x00\x8d\x00\x8e\x00\x8c\x00\x8d\x00\x8e\x00\x4a\x00\x4b\x00\x4c\x00\x62\x00\x06\x00\x25\x00\x26\x00\xf5\x00\x8d\x00\x8e\x00\xc0\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x34\x01\x5a\x00\x5b\x00\xf5\x00\x8d\x00\x8e\x00\x0f\x00\xf1\x00\xc1\x01\x4b\x00\x4c\x00\x62\x00\x54\x01\x10\x00\xf5\x00\x8d\x00\x8e\x00\x3e\x01\xa1\x00\xa2\x00\x4a\x00\x55\x01\x35\x01\x36\x01\xa3\x00\x59\x01\xa4\x00\x4b\x00\x4c\x00\x97\x00\xa1\x00\xa2\x00\xf2\x00\x8f\x00\xa5\x00\xa6\x00\xa3\x00\xd7\x00\xa4\x00\xa2\x01\x50\x01\x61\x00\x81\x01\xa1\x00\xa2\x00\xf1\x00\xa5\x00\x27\x01\xe1\x00\xa3\x00\x3f\xff\xa4\x00\x19\x01\x3f\xff\xa1\x00\x05\x01\xf5\x00\x8d\x00\x8e\x00\xa5\x00\x3b\x01\x6e\x00\x4b\x00\x4c\x00\x4d\x00\xa1\x00\xa2\x00\x06\x01\x1c\x01\x07\x01\xf2\x00\xa3\x00\xab\x00\xa4\x00\xac\x00\xad\x00\xae\x00\xa9\x01\xaf\x00\x4a\x00\xf3\x00\xa5\x00\xf6\x00\x4b\x00\x4c\x00\x62\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\x1f\x01\x68\x01\xb4\x00\x69\x01\xb5\x00\xb6\x00\xb7\x00\x7f\x00\xb8\x00\xa9\x00\x8c\x00\x8d\x00\x8e\x00\xb9\x00\xba\x00\xe7\x00\xbb\x00\xa1\x00\x08\x01\x7a\x01\xab\x00\xc0\x00\xac\x00\xad\x00\xae\x00\xe8\x00\xaf\x00\x06\x00\x07\x00\x08\x00\x09\x00\xe9\x00\x2e\x00\x2f\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\x7a\x01\xc1\x00\xb4\x00\xc2\x00\xb5\x00\xb6\x00\xb7\x00\xc3\x00\xb8\x00\x7b\x01\xaa\x01\x65\x00\xc4\x00\xb9\x00\xba\x00\x51\x01\xbb\x00\x06\x00\x07\x00\x08\x00\x09\x00\x66\x00\x67\x00\x8f\x00\x68\x00\x69\x00\x6a\x00\xc5\x00\x7b\x01\x7c\x01\xfb\x00\x62\x01\x31\x00\x61\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x17\x01\x5d\x00\x07\x00\x08\x00\x09\x00\xcd\x00\x0f\x00\x84\x00\x85\x00\x32\x00\xce\x00\x51\x00\x41\x00\x10\x00\x58\x00\x06\x00\x18\x01\xbf\x01\xc4\x01\x5d\x00\x07\x00\x08\x00\x09\x00\xc5\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x57\x00\x7d\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0f\x00\x7e\x00\xbe\x01\x6b\x00\x7f\x00\xb4\x01\xb5\x01\x10\x00\x58\x00\x06\x00\x59\x00\xb6\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x5e\x00\x06\x00\x07\x00\x08\x00\x09\x00\xb7\x01\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x53\x00\x8e\x01\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x5e\x00\x06\x00\x07\x00\x08\x00\x09\x00\xb8\x01\x0f\x00\x0a\x00\x0b\x00\x77\x00\xae\x01\x53\x00\x5f\x00\x10\x00\xaf\x01\x06\x00\xb0\x01\x0f\x00\xa0\x01\x06\x00\x07\x00\x08\x00\x09\x00\xb1\x01\xb2\x01\xa3\x01\x90\x01\x06\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x9d\x00\x37\x01\x0a\x00\x0b\x00\x78\x00\xac\x01\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x93\x01\x0f\x00\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x9d\x00\x9e\x00\x94\x01\x91\x01\x96\x01\x06\x00\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x9e\x01\x06\x00\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x9d\x00\xa8\x00\x9d\x01\x60\x01\x65\x01\x64\x01\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x66\x01\x6a\x01\x10\x00\x6b\x01\x84\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xac\x01\x06\x00\x76\x01\x85\x01\x86\x01\x06\x00\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x06\x00\x8c\x01\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xa5\x01\x06\x00\x07\x00\x08\x00\x09\x00\x24\x01\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x26\x01\x22\x01\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x8c\x01\x06\x00\x07\x00\x08\x00\x09\x00\x25\x01\x0f\x00\x8c\x00\x8d\x00\x8e\x00\x23\x01\x06\x00\x2c\x01\x10\x00\x2d\x01\x30\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x96\x01\x06\x00\x07\x00\x08\x00\x09\x00\x2e\x01\x0f\x00\x31\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x6c\x01\x10\x00\x0a\x00\x0b\x00\x79\x00\x32\x01\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x33\x01\x0f\x00\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x6d\x01\x06\x00\x07\x00\x08\x00\x09\x00\x34\x01\x0f\x00\x06\x00\x8f\x00\x43\x00\x07\x00\x08\x00\x09\x00\x10\x00\x3d\x01\x10\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x6f\x01\x06\x00\x07\x00\x08\x00\x09\x00\x3e\x01\x0f\x00\x43\x00\x07\x00\x08\x00\x09\x00\x40\x01\x42\x01\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x77\x01\x06\x00\x07\x00\x08\x00\x09\x00\x41\x01\x0f\x00\x43\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x86\x01\x10\x00\x44\x01\x45\x01\x0a\x00\x6b\x00\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x46\x01\x47\x01\x10\x00\x0f\x00\x48\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x87\x01\x06\x00\x6e\x00\x4b\x01\x4c\x01\x4d\x01\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x50\x01\x0f\x00\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x26\x01\x06\x00\x07\x00\x08\x00\x09\x00\x06\x00\x0f\x00\x43\x00\x07\x00\x08\x00\x09\x00\x5f\x01\x5c\x01\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x29\x01\x06\x00\x07\x00\x08\x00\x09\x00\xc9\x00\x0f\x00\xcf\x00\xf5\x00\xd0\x00\xd1\x00\x06\x00\xf8\x00\x10\x00\xf9\x00\xfa\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x3a\x01\x06\x00\x07\x00\x08\x00\x09\x00\xfb\x00\x0f\x00\x84\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x01\x10\x00\x44\x00\xfe\x00\xff\x00\x00\x01\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0f\x01\x0f\x00\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x01\x01\x06\x00\x07\x00\x08\x00\x09\x00\x06\x00\x0f\x00\x05\x01\x0e\x01\x06\x00\x10\x01\x12\x01\x13\x01\x10\x00\x1c\x01\x16\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x03\x01\x06\x00\x07\x00\x08\x00\x09\x00\x06\x00\x0f\x00\x6d\x00\x74\x00\x81\x00\x06\x00\xd2\x00\x4a\x00\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x14\x01\x06\x00\x07\x00\x08\x00\x09\x00\x26\x00\x0f\x00\x06\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x16\x01\x10\x00\x7c\x00\x06\x00\xd3\x00\x82\x00\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x86\x00\x83\x00\x10\x00\xd8\x00\xd4\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x1a\x01\x6e\x01\x87\x00\xd5\x00\xda\x00\x88\x00\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x8a\x00\x8b\x00\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x74\x00\x06\x00\x07\x00\x08\x00\x09\x00\x8c\x00\x0f\x00\x06\x00\x99\x00\x9a\x00\x7e\x00\xbf\x00\xa8\x00\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x75\x00\x06\x00\x07\x00\x08\x00\x09\x00\x06\x00\x0f\x00\xc7\x00\xc8\x00\x3a\x00\x06\x00\xff\xff\x43\x00\x10\x00\xff\xff\x49\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x76\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4a\x00\x0f\x00\x50\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x7a\x00\x10\x00\x06\x00\x64\x00\x6d\x00\xd2\x00\x0f\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\x6e\x00\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x9c\x00\x06\x00\x07\x00\x08\x00\x09\x00\x06\x00\x0f\x00\xf5\x00\x8d\x00\x8e\x00\xd3\x00\x2a\x00\x00\x00\x10\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x5e\x00\xd6\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x4a\x00\xd5\x00\x00\x00\x00\x00\x00\x00\x10\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x50\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\xd2\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x10\x00\xd2\x00\x4a\x00\xd2\x00\xd8\x00\x0f\x00\xd2\x00\xa1\x00\xa2\x00\xd8\x00\x00\x00\x48\x01\x10\x00\xa3\x00\xda\x00\x39\x01\x49\x01\xd3\x00\x00\x00\xda\x00\xd8\x00\x00\x00\x00\x00\xd2\x00\xd3\x00\x00\x00\xd3\x00\xd9\x00\xdd\x00\xd3\x00\xda\x00\x00\x00\xd2\x00\x00\x00\xd8\x00\xe2\x00\xd5\x00\xe3\x00\x00\x00\x00\x00\xe4\x00\xe5\x00\x00\x00\xd5\x00\xda\x00\xd5\x00\xd3\x00\xab\x00\xd5\x00\xac\x00\xad\x00\xae\x00\x00\x00\xaf\x00\x00\x00\xd3\x00\x00\x00\xe6\x00\x00\x00\x00\x00\x00\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xd5\x00\xed\x00\xb4\x00\x00\x00\xb5\x00\xb6\x00\xb7\x00\x34\x00\xb8\x00\xd5\x00\x35\x00\x00\x00\x00\x00\xb9\x00\xba\x00\x00\x00\xbb\x00\x00\x00\x00\x00\x00\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# -happyReduceArr = array (4, 229) [ +happyReduceArr = array (4, 232) [ (4 , happyReduce_4), (5 , happyReduce_5), (6 , happyReduce_6), @@ -736,10 +736,13 @@ happyReduceArr = array (4, 229) [ (226 , happyReduce_226), (227 , happyReduce_227), (228 , happyReduce_228), - (229 , happyReduce_229) + (229 , happyReduce_229), + (230 , happyReduce_230), + (231 , happyReduce_231), + (232 , happyReduce_232) ] -happy_n_terms = 78 :: Int +happy_n_terms = 81 :: Int happy_n_nonterms = 79 :: Int happyReduce_4 = happySpecReduce_1 0# happyReduction_4 @@ -767,7 +770,7 @@ happyReduce_7 = happySpecReduce_1 3# happyReduction_7 happyReduction_7 happy_x_1 = case happyOutTok happy_x_1 of { (PT _ (T_LString happy_var_1)) -> happyIn10 - (LString happy_var_1 + (LString (happy_var_1) )} happyReduce_8 = happySpecReduce_1 4# happyReduction_8 @@ -1356,8 +1359,40 @@ happyReduction_74 happy_x_2 (DefPattern happy_var_2 )} -happyReduce_75 = happySpecReduce_2 25# happyReduction_75 -happyReduction_75 happy_x_2 +happyReduce_75 = happyReduce 7# 24# happyReduction_75 +happyReduction_75 (happy_x_7 `HappyStk` + happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut7 happy_x_2 of { happy_var_2 -> + case happyOut21 happy_x_5 of { happy_var_5 -> + happyIn31 + (DefPackage happy_var_2 (reverse happy_var_5) + ) `HappyStk` happyRest}} + +happyReduce_76 = happySpecReduce_2 24# happyReduction_76 +happyReduction_76 happy_x_2 + happy_x_1 + = case happyOut41 happy_x_2 of { happy_var_2 -> + happyIn31 + (DefVars happy_var_2 + )} + +happyReduce_77 = happySpecReduce_3 24# happyReduction_77 +happyReduction_77 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut7 happy_x_2 of { happy_var_2 -> + happyIn31 + (DefTokenizer happy_var_2 + )} + +happyReduce_78 = happySpecReduce_2 25# happyReduction_78 +happyReduction_78 happy_x_2 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> case happyOut81 happy_x_2 of { happy_var_2 -> @@ -1365,8 +1400,8 @@ happyReduction_75 happy_x_2 (CatDef happy_var_1 (reverse happy_var_2) )}} -happyReduce_76 = happySpecReduce_3 26# happyReduction_76 -happyReduction_76 happy_x_3 +happyReduce_79 = happySpecReduce_3 26# happyReduction_79 +happyReduction_79 happy_x_3 happy_x_2 happy_x_1 = case happyOut49 happy_x_1 of { happy_var_1 -> @@ -1375,8 +1410,8 @@ happyReduction_76 happy_x_3 (FunDef happy_var_1 happy_var_3 )}} -happyReduce_77 = happySpecReduce_3 27# happyReduction_77 -happyReduction_77 happy_x_3 +happyReduce_80 = happySpecReduce_3 27# happyReduction_80 +happyReduction_80 happy_x_3 happy_x_2 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> @@ -1385,15 +1420,15 @@ happyReduction_77 happy_x_3 (DataDef happy_var_1 happy_var_3 )}} -happyReduce_78 = happySpecReduce_1 28# happyReduction_78 -happyReduction_78 happy_x_1 +happyReduce_81 = happySpecReduce_1 28# happyReduction_81 +happyReduction_81 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> happyIn35 (DataId happy_var_1 )} -happyReduce_79 = happySpecReduce_3 28# happyReduction_79 -happyReduction_79 happy_x_3 +happyReduce_82 = happySpecReduce_3 28# happyReduction_82 +happyReduction_82 happy_x_3 happy_x_2 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> @@ -1402,20 +1437,20 @@ happyReduction_79 happy_x_3 (DataQId happy_var_1 happy_var_3 )}} -happyReduce_80 = happySpecReduce_0 29# happyReduction_80 -happyReduction_80 = happyIn36 +happyReduce_83 = happySpecReduce_0 29# happyReduction_83 +happyReduction_83 = happyIn36 ([] ) -happyReduce_81 = happySpecReduce_1 29# happyReduction_81 -happyReduction_81 happy_x_1 +happyReduce_84 = happySpecReduce_1 29# happyReduction_84 +happyReduction_84 happy_x_1 = case happyOut35 happy_x_1 of { happy_var_1 -> happyIn36 ((:[]) happy_var_1 )} -happyReduce_82 = happySpecReduce_3 29# happyReduction_82 -happyReduction_82 happy_x_3 +happyReduce_85 = happySpecReduce_3 29# happyReduction_85 +happyReduction_85 happy_x_3 happy_x_2 happy_x_1 = case happyOut35 happy_x_1 of { happy_var_1 -> @@ -1424,8 +1459,8 @@ happyReduction_82 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_83 = happySpecReduce_3 30# happyReduction_83 -happyReduction_83 happy_x_3 +happyReduce_86 = happySpecReduce_3 30# happyReduction_86 +happyReduction_86 happy_x_3 happy_x_2 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> @@ -1434,8 +1469,8 @@ happyReduction_83 happy_x_3 (ParDef happy_var_1 happy_var_3 )}} -happyReduce_84 = happyReduce 6# 30# happyReduction_84 -happyReduction_84 (happy_x_6 `HappyStk` +happyReduce_87 = happyReduce 6# 30# happyReduction_87 +happyReduction_87 (happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` @@ -1448,15 +1483,15 @@ happyReduction_84 (happy_x_6 `HappyStk` (ParDefIndir happy_var_1 happy_var_5 ) `HappyStk` happyRest}} -happyReduce_85 = happySpecReduce_1 30# happyReduction_85 -happyReduction_85 happy_x_1 +happyReduce_88 = happySpecReduce_1 30# happyReduction_88 +happyReduction_88 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> happyIn37 (ParDefAbs happy_var_1 )} -happyReduce_86 = happySpecReduce_2 31# happyReduction_86 -happyReduction_86 happy_x_2 +happyReduce_89 = happySpecReduce_2 31# happyReduction_89 +happyReduction_89 happy_x_2 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> case happyOut81 happy_x_2 of { happy_var_2 -> @@ -1464,8 +1499,8 @@ happyReduction_86 happy_x_2 (ParConstr happy_var_1 (reverse happy_var_2) )}} -happyReduce_87 = happySpecReduce_3 32# happyReduction_87 -happyReduction_87 happy_x_3 +happyReduce_90 = happySpecReduce_3 32# happyReduction_90 +happyReduction_90 happy_x_3 happy_x_2 happy_x_1 = case happyOut49 happy_x_1 of { happy_var_1 -> @@ -1474,8 +1509,8 @@ happyReduction_87 happy_x_3 (PrintDef happy_var_1 happy_var_3 )}} -happyReduce_88 = happySpecReduce_3 33# happyReduction_88 -happyReduction_88 happy_x_3 +happyReduce_91 = happySpecReduce_3 33# happyReduction_91 +happyReduction_91 happy_x_3 happy_x_2 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> @@ -1484,16 +1519,16 @@ happyReduction_88 happy_x_3 (FlagDef happy_var_1 happy_var_3 )}} -happyReduce_89 = happySpecReduce_2 34# happyReduction_89 -happyReduction_89 happy_x_2 +happyReduce_92 = happySpecReduce_2 34# happyReduction_92 +happyReduction_92 happy_x_2 happy_x_1 = case happyOut30 happy_x_1 of { happy_var_1 -> happyIn41 ((:[]) happy_var_1 )} -happyReduce_90 = happySpecReduce_3 34# happyReduction_90 -happyReduction_90 happy_x_3 +happyReduce_93 = happySpecReduce_3 34# happyReduction_93 +happyReduction_93 happy_x_3 happy_x_2 happy_x_1 = case happyOut30 happy_x_1 of { happy_var_1 -> @@ -1502,16 +1537,16 @@ happyReduction_90 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_91 = happySpecReduce_2 35# happyReduction_91 -happyReduction_91 happy_x_2 +happyReduce_94 = happySpecReduce_2 35# happyReduction_94 +happyReduction_94 happy_x_2 happy_x_1 = case happyOut32 happy_x_1 of { happy_var_1 -> happyIn42 ((:[]) happy_var_1 )} -happyReduce_92 = happySpecReduce_3 35# happyReduction_92 -happyReduction_92 happy_x_3 +happyReduce_95 = happySpecReduce_3 35# happyReduction_95 +happyReduction_95 happy_x_3 happy_x_2 happy_x_1 = case happyOut32 happy_x_1 of { happy_var_1 -> @@ -1520,16 +1555,16 @@ happyReduction_92 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_93 = happySpecReduce_2 36# happyReduction_93 -happyReduction_93 happy_x_2 +happyReduce_96 = happySpecReduce_2 36# happyReduction_96 +happyReduction_96 happy_x_2 happy_x_1 = case happyOut33 happy_x_1 of { happy_var_1 -> happyIn43 ((:[]) happy_var_1 )} -happyReduce_94 = happySpecReduce_3 36# happyReduction_94 -happyReduction_94 happy_x_3 +happyReduce_97 = happySpecReduce_3 36# happyReduction_97 +happyReduction_97 happy_x_3 happy_x_2 happy_x_1 = case happyOut33 happy_x_1 of { happy_var_1 -> @@ -1538,16 +1573,16 @@ happyReduction_94 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_95 = happySpecReduce_2 37# happyReduction_95 -happyReduction_95 happy_x_2 +happyReduce_98 = happySpecReduce_2 37# happyReduction_98 +happyReduction_98 happy_x_2 happy_x_1 = case happyOut34 happy_x_1 of { happy_var_1 -> happyIn44 ((:[]) happy_var_1 )} -happyReduce_96 = happySpecReduce_3 37# happyReduction_96 -happyReduction_96 happy_x_3 +happyReduce_99 = happySpecReduce_3 37# happyReduction_99 +happyReduction_99 happy_x_3 happy_x_2 happy_x_1 = case happyOut34 happy_x_1 of { happy_var_1 -> @@ -1556,16 +1591,16 @@ happyReduction_96 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_97 = happySpecReduce_2 38# happyReduction_97 -happyReduction_97 happy_x_2 +happyReduce_100 = happySpecReduce_2 38# happyReduction_100 +happyReduction_100 happy_x_2 happy_x_1 = case happyOut37 happy_x_1 of { happy_var_1 -> happyIn45 ((:[]) happy_var_1 )} -happyReduce_98 = happySpecReduce_3 38# happyReduction_98 -happyReduction_98 happy_x_3 +happyReduce_101 = happySpecReduce_3 38# happyReduction_101 +happyReduction_101 happy_x_3 happy_x_2 happy_x_1 = case happyOut37 happy_x_1 of { happy_var_1 -> @@ -1574,16 +1609,16 @@ happyReduction_98 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_99 = happySpecReduce_2 39# happyReduction_99 -happyReduction_99 happy_x_2 +happyReduce_102 = happySpecReduce_2 39# happyReduction_102 +happyReduction_102 happy_x_2 happy_x_1 = case happyOut39 happy_x_1 of { happy_var_1 -> happyIn46 ((:[]) happy_var_1 )} -happyReduce_100 = happySpecReduce_3 39# happyReduction_100 -happyReduction_100 happy_x_3 +happyReduce_103 = happySpecReduce_3 39# happyReduction_103 +happyReduction_103 happy_x_3 happy_x_2 happy_x_1 = case happyOut39 happy_x_1 of { happy_var_1 -> @@ -1592,16 +1627,16 @@ happyReduction_100 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_101 = happySpecReduce_2 40# happyReduction_101 -happyReduction_101 happy_x_2 +happyReduce_104 = happySpecReduce_2 40# happyReduction_104 +happyReduction_104 happy_x_2 happy_x_1 = case happyOut40 happy_x_1 of { happy_var_1 -> happyIn47 ((:[]) happy_var_1 )} -happyReduce_102 = happySpecReduce_3 40# happyReduction_102 -happyReduction_102 happy_x_3 +happyReduce_105 = happySpecReduce_3 40# happyReduction_105 +happyReduction_105 happy_x_3 happy_x_2 happy_x_1 = case happyOut40 happy_x_1 of { happy_var_1 -> @@ -1610,20 +1645,20 @@ happyReduction_102 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_103 = happySpecReduce_0 41# happyReduction_103 -happyReduction_103 = happyIn48 +happyReduce_106 = happySpecReduce_0 41# happyReduction_106 +happyReduction_106 = happyIn48 ([] ) -happyReduce_104 = happySpecReduce_1 41# happyReduction_104 -happyReduction_104 happy_x_1 +happyReduce_107 = happySpecReduce_1 41# happyReduction_107 +happyReduction_107 happy_x_1 = case happyOut38 happy_x_1 of { happy_var_1 -> happyIn48 ((:[]) happy_var_1 )} -happyReduce_105 = happySpecReduce_3 41# happyReduction_105 -happyReduction_105 happy_x_3 +happyReduce_108 = happySpecReduce_3 41# happyReduction_108 +happyReduction_108 happy_x_3 happy_x_2 happy_x_1 = case happyOut38 happy_x_1 of { happy_var_1 -> @@ -1632,15 +1667,15 @@ happyReduction_105 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_106 = happySpecReduce_1 42# happyReduction_106 -happyReduction_106 happy_x_1 +happyReduce_109 = happySpecReduce_1 42# happyReduction_109 +happyReduction_109 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> happyIn49 ((:[]) happy_var_1 )} -happyReduce_107 = happySpecReduce_3 42# happyReduction_107 -happyReduction_107 happy_x_3 +happyReduce_110 = happySpecReduce_3 42# happyReduction_110 +happyReduction_110 happy_x_3 happy_x_2 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> @@ -1649,8 +1684,8 @@ happyReduction_107 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_108 = happySpecReduce_3 43# happyReduction_108 -happyReduction_108 happy_x_3 +happyReduce_111 = happySpecReduce_3 43# happyReduction_111 +happyReduction_111 happy_x_3 happy_x_2 happy_x_1 = case happyOut49 happy_x_1 of { happy_var_1 -> @@ -1659,8 +1694,8 @@ happyReduction_108 happy_x_3 (LDDecl happy_var_1 happy_var_3 )}} -happyReduce_109 = happySpecReduce_3 43# happyReduction_109 -happyReduction_109 happy_x_3 +happyReduce_112 = happySpecReduce_3 43# happyReduction_112 +happyReduction_112 happy_x_3 happy_x_2 happy_x_1 = case happyOut49 happy_x_1 of { happy_var_1 -> @@ -1669,8 +1704,8 @@ happyReduction_109 happy_x_3 (LDDef happy_var_1 happy_var_3 )}} -happyReduce_110 = happyReduce 5# 43# happyReduction_110 -happyReduction_110 (happy_x_5 `HappyStk` +happyReduce_113 = happyReduce 5# 43# happyReduction_113 +happyReduction_113 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -1683,20 +1718,20 @@ happyReduction_110 (happy_x_5 `HappyStk` (LDFull happy_var_1 happy_var_3 happy_var_5 ) `HappyStk` happyRest}}} -happyReduce_111 = happySpecReduce_0 44# happyReduction_111 -happyReduction_111 = happyIn51 +happyReduce_114 = happySpecReduce_0 44# happyReduction_114 +happyReduction_114 = happyIn51 ([] ) -happyReduce_112 = happySpecReduce_1 44# happyReduction_112 -happyReduction_112 happy_x_1 +happyReduce_115 = happySpecReduce_1 44# happyReduction_115 +happyReduction_115 happy_x_1 = case happyOut50 happy_x_1 of { happy_var_1 -> happyIn51 ((:[]) happy_var_1 )} -happyReduce_113 = happySpecReduce_3 44# happyReduction_113 -happyReduction_113 happy_x_3 +happyReduce_116 = happySpecReduce_3 44# happyReduction_116 +happyReduction_116 happy_x_3 happy_x_2 happy_x_1 = case happyOut50 happy_x_1 of { happy_var_1 -> @@ -1705,15 +1740,15 @@ happyReduction_113 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_114 = happySpecReduce_1 45# happyReduction_114 -happyReduction_114 happy_x_1 +happyReduce_117 = happySpecReduce_1 45# happyReduction_117 +happyReduction_117 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> happyIn52 (EIdent happy_var_1 )} -happyReduce_115 = happySpecReduce_3 45# happyReduction_115 -happyReduction_115 happy_x_3 +happyReduce_118 = happySpecReduce_3 45# happyReduction_118 +happyReduction_118 happy_x_3 happy_x_2 happy_x_1 = case happyOut7 happy_x_2 of { happy_var_2 -> @@ -1721,8 +1756,8 @@ happyReduction_115 happy_x_3 (EConstr happy_var_2 )} -happyReduce_116 = happySpecReduce_3 45# happyReduction_116 -happyReduction_116 happy_x_3 +happyReduce_119 = happySpecReduce_3 45# happyReduction_119 +happyReduction_119 happy_x_3 happy_x_2 happy_x_1 = case happyOut7 happy_x_2 of { happy_var_2 -> @@ -1730,42 +1765,42 @@ happyReduction_116 happy_x_3 (ECons happy_var_2 )} -happyReduce_117 = happySpecReduce_1 45# happyReduction_117 -happyReduction_117 happy_x_1 +happyReduce_120 = happySpecReduce_1 45# happyReduction_120 +happyReduction_120 happy_x_1 = case happyOut62 happy_x_1 of { happy_var_1 -> happyIn52 (ESort happy_var_1 )} -happyReduce_118 = happySpecReduce_1 45# happyReduction_118 -happyReduction_118 happy_x_1 +happyReduce_121 = happySpecReduce_1 45# happyReduction_121 +happyReduction_121 happy_x_1 = case happyOut8 happy_x_1 of { happy_var_1 -> happyIn52 (EString happy_var_1 )} -happyReduce_119 = happySpecReduce_1 45# happyReduction_119 -happyReduction_119 happy_x_1 +happyReduce_122 = happySpecReduce_1 45# happyReduction_122 +happyReduction_122 happy_x_1 = case happyOut9 happy_x_1 of { happy_var_1 -> happyIn52 (EInt happy_var_1 )} -happyReduce_120 = happySpecReduce_1 45# happyReduction_120 -happyReduction_120 happy_x_1 +happyReduce_123 = happySpecReduce_1 45# happyReduction_123 +happyReduction_123 happy_x_1 = happyIn52 (EMeta ) -happyReduce_121 = happySpecReduce_2 45# happyReduction_121 -happyReduction_121 happy_x_2 +happyReduce_124 = happySpecReduce_2 45# happyReduction_124 +happyReduction_124 happy_x_2 happy_x_1 = happyIn52 (EEmpty ) -happyReduce_122 = happySpecReduce_3 45# happyReduction_122 -happyReduction_122 happy_x_3 +happyReduce_125 = happySpecReduce_3 45# happyReduction_125 +happyReduction_125 happy_x_3 happy_x_2 happy_x_1 = case happyOut8 happy_x_2 of { happy_var_2 -> @@ -1773,8 +1808,8 @@ happyReduction_122 happy_x_3 (EStrings happy_var_2 )} -happyReduce_123 = happySpecReduce_3 45# happyReduction_123 -happyReduction_123 happy_x_3 +happyReduce_126 = happySpecReduce_3 45# happyReduction_126 +happyReduction_126 happy_x_3 happy_x_2 happy_x_1 = case happyOut51 happy_x_2 of { happy_var_2 -> @@ -1782,8 +1817,8 @@ happyReduction_123 happy_x_3 (ERecord happy_var_2 )} -happyReduce_124 = happySpecReduce_3 45# happyReduction_124 -happyReduction_124 happy_x_3 +happyReduce_127 = happySpecReduce_3 45# happyReduction_127 +happyReduction_127 happy_x_3 happy_x_2 happy_x_1 = case happyOut72 happy_x_2 of { happy_var_2 -> @@ -1791,8 +1826,8 @@ happyReduction_124 happy_x_3 (ETuple happy_var_2 )} -happyReduce_125 = happyReduce 4# 45# happyReduction_125 -happyReduction_125 (happy_x_4 `HappyStk` +happyReduce_128 = happyReduce 4# 45# happyReduction_128 +happyReduction_128 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -1802,8 +1837,8 @@ happyReduction_125 (happy_x_4 `HappyStk` (EIndir happy_var_3 ) `HappyStk` happyRest} -happyReduce_126 = happyReduce 5# 45# happyReduction_126 -happyReduction_126 (happy_x_5 `HappyStk` +happyReduce_129 = happyReduce 5# 45# happyReduction_129 +happyReduction_129 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -1815,8 +1850,8 @@ happyReduction_126 (happy_x_5 `HappyStk` (ETyped happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_127 = happySpecReduce_3 45# happyReduction_127 -happyReduction_127 happy_x_3 +happyReduce_130 = happySpecReduce_3 45# happyReduction_130 +happyReduction_130 happy_x_3 happy_x_2 happy_x_1 = case happyOut56 happy_x_2 of { happy_var_2 -> @@ -1824,15 +1859,15 @@ happyReduction_127 happy_x_3 (happy_var_2 )} -happyReduce_128 = happySpecReduce_1 45# happyReduction_128 -happyReduction_128 happy_x_1 +happyReduce_131 = happySpecReduce_1 45# happyReduction_131 +happyReduction_131 happy_x_1 = case happyOut10 happy_x_1 of { happy_var_1 -> happyIn52 (ELString happy_var_1 )} -happyReduce_129 = happySpecReduce_3 46# happyReduction_129 -happyReduction_129 happy_x_3 +happyReduce_132 = happySpecReduce_3 46# happyReduction_132 +happyReduction_132 happy_x_3 happy_x_2 happy_x_1 = case happyOut53 happy_x_1 of { happy_var_1 -> @@ -1841,8 +1876,8 @@ happyReduction_129 happy_x_3 (EProj happy_var_1 happy_var_3 )}} -happyReduce_130 = happyReduce 5# 46# happyReduction_130 -happyReduction_130 (happy_x_5 `HappyStk` +happyReduce_133 = happyReduce 5# 46# happyReduction_133 +happyReduction_133 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -1854,8 +1889,8 @@ happyReduction_130 (happy_x_5 `HappyStk` (EQConstr happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_131 = happyReduce 5# 46# happyReduction_131 -happyReduction_131 (happy_x_5 `HappyStk` +happyReduce_134 = happyReduce 5# 46# happyReduction_134 +happyReduction_134 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -1867,15 +1902,15 @@ happyReduction_131 (happy_x_5 `HappyStk` (EQCons happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_132 = happySpecReduce_1 46# happyReduction_132 -happyReduction_132 happy_x_1 +happyReduce_135 = happySpecReduce_1 46# happyReduction_135 +happyReduction_135 happy_x_1 = case happyOut52 happy_x_1 of { happy_var_1 -> happyIn53 (happy_var_1 )} -happyReduce_133 = happySpecReduce_2 47# happyReduction_133 -happyReduction_133 happy_x_2 +happyReduce_136 = happySpecReduce_2 47# happyReduction_136 +happyReduction_136 happy_x_2 happy_x_1 = case happyOut54 happy_x_1 of { happy_var_1 -> case happyOut53 happy_x_2 of { happy_var_2 -> @@ -1883,8 +1918,8 @@ happyReduction_133 happy_x_2 (EApp happy_var_1 happy_var_2 )}} -happyReduce_134 = happyReduce 4# 47# happyReduction_134 -happyReduction_134 (happy_x_4 `HappyStk` +happyReduce_137 = happyReduce 4# 47# happyReduction_137 +happyReduction_137 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -1894,8 +1929,8 @@ happyReduction_134 (happy_x_4 `HappyStk` (ETable happy_var_3 ) `HappyStk` happyRest} -happyReduce_135 = happyReduce 5# 47# happyReduction_135 -happyReduction_135 (happy_x_5 `HappyStk` +happyReduce_138 = happyReduce 5# 47# happyReduction_138 +happyReduction_138 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -1907,8 +1942,8 @@ happyReduction_135 (happy_x_5 `HappyStk` (ETTable happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_136 = happyReduce 6# 47# happyReduction_136 -happyReduction_136 (happy_x_6 `HappyStk` +happyReduce_139 = happyReduce 6# 47# happyReduction_139 +happyReduction_139 (happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` @@ -1921,8 +1956,8 @@ happyReduction_136 (happy_x_6 `HappyStk` (ECase happy_var_2 happy_var_5 ) `HappyStk` happyRest}} -happyReduce_137 = happyReduce 4# 47# happyReduction_137 -happyReduction_137 (happy_x_4 `HappyStk` +happyReduce_140 = happyReduce 4# 47# happyReduction_140 +happyReduction_140 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -1932,8 +1967,8 @@ happyReduction_137 (happy_x_4 `HappyStk` (EVariants happy_var_3 ) `HappyStk` happyRest} -happyReduce_138 = happyReduce 6# 47# happyReduction_138 -happyReduction_138 (happy_x_6 `HappyStk` +happyReduce_141 = happyReduce 6# 47# happyReduction_141 +happyReduction_141 (happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` @@ -1946,8 +1981,8 @@ happyReduction_138 (happy_x_6 `HappyStk` (EPre happy_var_3 happy_var_5 ) `HappyStk` happyRest}} -happyReduce_139 = happyReduce 4# 47# happyReduction_139 -happyReduction_139 (happy_x_4 `HappyStk` +happyReduce_142 = happyReduce 4# 47# happyReduction_142 +happyReduction_142 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -1957,8 +1992,8 @@ happyReduction_139 (happy_x_4 `HappyStk` (EStrs happy_var_3 ) `HappyStk` happyRest} -happyReduce_140 = happySpecReduce_3 47# happyReduction_140 -happyReduction_140 happy_x_3 +happyReduce_143 = happySpecReduce_3 47# happyReduction_143 +happyReduction_143 happy_x_3 happy_x_2 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> @@ -1967,23 +2002,23 @@ happyReduction_140 happy_x_3 (EConAt happy_var_1 happy_var_3 )}} -happyReduce_141 = happySpecReduce_1 47# happyReduction_141 -happyReduction_141 happy_x_1 +happyReduce_144 = happySpecReduce_1 47# happyReduction_144 +happyReduction_144 happy_x_1 = case happyOut53 happy_x_1 of { happy_var_1 -> happyIn54 (happy_var_1 )} -happyReduce_142 = happySpecReduce_2 47# happyReduction_142 -happyReduction_142 happy_x_2 +happyReduce_145 = happySpecReduce_2 47# happyReduction_145 +happyReduction_145 happy_x_2 happy_x_1 = case happyOut7 happy_x_2 of { happy_var_2 -> happyIn54 (ELin happy_var_2 )} -happyReduce_143 = happySpecReduce_3 48# happyReduction_143 -happyReduction_143 happy_x_3 +happyReduce_146 = happySpecReduce_3 48# happyReduction_146 +happyReduction_146 happy_x_3 happy_x_2 happy_x_1 = case happyOut55 happy_x_1 of { happy_var_1 -> @@ -1992,8 +2027,8 @@ happyReduction_143 happy_x_3 (ESelect happy_var_1 happy_var_3 )}} -happyReduce_144 = happySpecReduce_3 48# happyReduction_144 -happyReduction_144 happy_x_3 +happyReduce_147 = happySpecReduce_3 48# happyReduction_147 +happyReduction_147 happy_x_3 happy_x_2 happy_x_1 = case happyOut55 happy_x_1 of { happy_var_1 -> @@ -2002,8 +2037,8 @@ happyReduction_144 happy_x_3 (ETupTyp happy_var_1 happy_var_3 )}} -happyReduce_145 = happySpecReduce_3 48# happyReduction_145 -happyReduction_145 happy_x_3 +happyReduce_148 = happySpecReduce_3 48# happyReduction_148 +happyReduction_148 happy_x_3 happy_x_2 happy_x_1 = case happyOut55 happy_x_1 of { happy_var_1 -> @@ -2012,15 +2047,15 @@ happyReduction_145 happy_x_3 (EExtend happy_var_1 happy_var_3 )}} -happyReduce_146 = happySpecReduce_1 48# happyReduction_146 -happyReduction_146 happy_x_1 +happyReduce_149 = happySpecReduce_1 48# happyReduction_149 +happyReduction_149 happy_x_1 = case happyOut54 happy_x_1 of { happy_var_1 -> happyIn55 (happy_var_1 )} -happyReduce_147 = happyReduce 4# 49# happyReduction_147 -happyReduction_147 (happy_x_4 `HappyStk` +happyReduce_150 = happyReduce 4# 49# happyReduction_150 +happyReduction_150 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -2031,8 +2066,8 @@ happyReduction_147 (happy_x_4 `HappyStk` (EAbstr happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_148 = happyReduce 5# 49# happyReduction_148 -happyReduction_148 (happy_x_5 `HappyStk` +happyReduce_151 = happyReduce 5# 49# happyReduction_151 +happyReduction_151 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -2044,8 +2079,8 @@ happyReduction_148 (happy_x_5 `HappyStk` (ECTable happy_var_3 happy_var_5 ) `HappyStk` happyRest}} -happyReduce_149 = happySpecReduce_3 49# happyReduction_149 -happyReduction_149 happy_x_3 +happyReduce_152 = happySpecReduce_3 49# happyReduction_152 +happyReduction_152 happy_x_3 happy_x_2 happy_x_1 = case happyOut69 happy_x_1 of { happy_var_1 -> @@ -2054,8 +2089,8 @@ happyReduction_149 happy_x_3 (EProd happy_var_1 happy_var_3 )}} -happyReduce_150 = happySpecReduce_3 49# happyReduction_150 -happyReduction_150 happy_x_3 +happyReduce_153 = happySpecReduce_3 49# happyReduction_153 +happyReduction_153 happy_x_3 happy_x_2 happy_x_1 = case happyOut55 happy_x_1 of { happy_var_1 -> @@ -2064,8 +2099,8 @@ happyReduction_150 happy_x_3 (ETType happy_var_1 happy_var_3 )}} -happyReduce_151 = happySpecReduce_3 49# happyReduction_151 -happyReduction_151 happy_x_3 +happyReduce_154 = happySpecReduce_3 49# happyReduction_154 +happyReduction_154 happy_x_3 happy_x_2 happy_x_1 = case happyOut55 happy_x_1 of { happy_var_1 -> @@ -2074,8 +2109,8 @@ happyReduction_151 happy_x_3 (EConcat happy_var_1 happy_var_3 )}} -happyReduce_152 = happySpecReduce_3 49# happyReduction_152 -happyReduction_152 happy_x_3 +happyReduce_155 = happySpecReduce_3 49# happyReduction_155 +happyReduction_155 happy_x_3 happy_x_2 happy_x_1 = case happyOut55 happy_x_1 of { happy_var_1 -> @@ -2084,8 +2119,8 @@ happyReduction_152 happy_x_3 (EGlue happy_var_1 happy_var_3 )}} -happyReduce_153 = happyReduce 6# 49# happyReduction_153 -happyReduction_153 (happy_x_6 `HappyStk` +happyReduce_156 = happyReduce 6# 49# happyReduction_156 +happyReduction_156 (happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` @@ -2098,8 +2133,8 @@ happyReduction_153 (happy_x_6 `HappyStk` (ELet happy_var_3 happy_var_6 ) `HappyStk` happyRest}} -happyReduce_154 = happyReduce 4# 49# happyReduction_154 -happyReduction_154 (happy_x_4 `HappyStk` +happyReduce_157 = happyReduce 4# 49# happyReduction_157 +happyReduction_157 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -2110,8 +2145,8 @@ happyReduction_154 (happy_x_4 `HappyStk` (ELetb happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_155 = happyReduce 5# 49# happyReduction_155 -happyReduction_155 (happy_x_5 `HappyStk` +happyReduce_158 = happyReduce 5# 49# happyReduction_158 +happyReduction_158 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -2123,8 +2158,8 @@ happyReduction_155 (happy_x_5 `HappyStk` (EWhere happy_var_1 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_156 = happyReduce 4# 49# happyReduction_156 -happyReduction_156 (happy_x_4 `HappyStk` +happyReduce_159 = happyReduce 4# 49# happyReduction_159 +happyReduction_159 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -2134,27 +2169,27 @@ happyReduction_156 (happy_x_4 `HappyStk` (EEqs happy_var_3 ) `HappyStk` happyRest} -happyReduce_157 = happySpecReduce_1 49# happyReduction_157 -happyReduction_157 happy_x_1 +happyReduce_160 = happySpecReduce_1 49# happyReduction_160 +happyReduction_160 happy_x_1 = case happyOut55 happy_x_1 of { happy_var_1 -> happyIn56 (happy_var_1 )} -happyReduce_158 = happySpecReduce_0 50# happyReduction_158 -happyReduction_158 = happyIn57 +happyReduce_161 = happySpecReduce_0 50# happyReduction_161 +happyReduction_161 = happyIn57 ([] ) -happyReduce_159 = happySpecReduce_1 50# happyReduction_159 -happyReduction_159 happy_x_1 +happyReduce_162 = happySpecReduce_1 50# happyReduction_162 +happyReduction_162 happy_x_1 = case happyOut56 happy_x_1 of { happy_var_1 -> happyIn57 ((:[]) happy_var_1 )} -happyReduce_160 = happySpecReduce_3 50# happyReduction_160 -happyReduction_160 happy_x_3 +happyReduce_163 = happySpecReduce_3 50# happyReduction_163 +happyReduction_163 happy_x_3 happy_x_2 happy_x_1 = case happyOut56 happy_x_1 of { happy_var_1 -> @@ -2163,21 +2198,21 @@ happyReduction_160 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_161 = happySpecReduce_1 51# happyReduction_161 -happyReduction_161 happy_x_1 +happyReduce_164 = happySpecReduce_1 51# happyReduction_164 +happyReduction_164 happy_x_1 = happyIn58 (PW ) -happyReduce_162 = happySpecReduce_1 51# happyReduction_162 -happyReduction_162 happy_x_1 +happyReduce_165 = happySpecReduce_1 51# happyReduction_165 +happyReduction_165 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> happyIn58 (PV happy_var_1 )} -happyReduce_163 = happySpecReduce_3 51# happyReduction_163 -happyReduction_163 happy_x_3 +happyReduce_166 = happySpecReduce_3 51# happyReduction_166 +happyReduction_166 happy_x_3 happy_x_2 happy_x_1 = case happyOut7 happy_x_2 of { happy_var_2 -> @@ -2185,8 +2220,8 @@ happyReduction_163 happy_x_3 (PCon happy_var_2 )} -happyReduce_164 = happySpecReduce_3 51# happyReduction_164 -happyReduction_164 happy_x_3 +happyReduce_167 = happySpecReduce_3 51# happyReduction_167 +happyReduction_167 happy_x_3 happy_x_2 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> @@ -2195,22 +2230,22 @@ happyReduction_164 happy_x_3 (PQ happy_var_1 happy_var_3 )}} -happyReduce_165 = happySpecReduce_1 51# happyReduction_165 -happyReduction_165 happy_x_1 +happyReduce_168 = happySpecReduce_1 51# happyReduction_168 +happyReduction_168 happy_x_1 = case happyOut9 happy_x_1 of { happy_var_1 -> happyIn58 (PInt happy_var_1 )} -happyReduce_166 = happySpecReduce_1 51# happyReduction_166 -happyReduction_166 happy_x_1 +happyReduce_169 = happySpecReduce_1 51# happyReduction_169 +happyReduction_169 happy_x_1 = case happyOut8 happy_x_1 of { happy_var_1 -> happyIn58 (PStr happy_var_1 )} -happyReduce_167 = happySpecReduce_3 51# happyReduction_167 -happyReduction_167 happy_x_3 +happyReduce_170 = happySpecReduce_3 51# happyReduction_170 +happyReduction_170 happy_x_3 happy_x_2 happy_x_1 = case happyOut63 happy_x_2 of { happy_var_2 -> @@ -2218,8 +2253,8 @@ happyReduction_167 happy_x_3 (PR happy_var_2 )} -happyReduce_168 = happySpecReduce_3 51# happyReduction_168 -happyReduction_168 happy_x_3 +happyReduce_171 = happySpecReduce_3 51# happyReduction_171 +happyReduction_171 happy_x_3 happy_x_2 happy_x_1 = case happyOut73 happy_x_2 of { happy_var_2 -> @@ -2227,8 +2262,8 @@ happyReduction_168 happy_x_3 (PTup happy_var_2 )} -happyReduce_169 = happySpecReduce_3 51# happyReduction_169 -happyReduction_169 happy_x_3 +happyReduce_172 = happySpecReduce_3 51# happyReduction_172 +happyReduction_172 happy_x_3 happy_x_2 happy_x_1 = case happyOut59 happy_x_2 of { happy_var_2 -> @@ -2236,8 +2271,8 @@ happyReduction_169 happy_x_3 (happy_var_2 )} -happyReduce_170 = happySpecReduce_2 52# happyReduction_170 -happyReduction_170 happy_x_2 +happyReduce_173 = happySpecReduce_2 52# happyReduction_173 +happyReduction_173 happy_x_2 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> case happyOut65 happy_x_2 of { happy_var_2 -> @@ -2245,8 +2280,8 @@ happyReduction_170 happy_x_2 (PC happy_var_1 happy_var_2 )}} -happyReduce_171 = happyReduce 4# 52# happyReduction_171 -happyReduction_171 (happy_x_4 `HappyStk` +happyReduce_174 = happyReduce 4# 52# happyReduction_174 +happyReduction_174 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -2258,15 +2293,15 @@ happyReduction_171 (happy_x_4 `HappyStk` (PQC happy_var_1 happy_var_3 happy_var_4 ) `HappyStk` happyRest}}} -happyReduce_172 = happySpecReduce_1 52# happyReduction_172 -happyReduction_172 happy_x_1 +happyReduce_175 = happySpecReduce_1 52# happyReduction_175 +happyReduction_175 happy_x_1 = case happyOut58 happy_x_1 of { happy_var_1 -> happyIn59 (happy_var_1 )} -happyReduce_173 = happySpecReduce_3 53# happyReduction_173 -happyReduction_173 happy_x_3 +happyReduce_176 = happySpecReduce_3 53# happyReduction_176 +happyReduction_176 happy_x_3 happy_x_2 happy_x_1 = case happyOut49 happy_x_1 of { happy_var_1 -> @@ -2275,65 +2310,65 @@ happyReduction_173 happy_x_3 (PA happy_var_1 happy_var_3 )}} -happyReduce_174 = happySpecReduce_1 54# happyReduction_174 -happyReduction_174 happy_x_1 +happyReduce_177 = happySpecReduce_1 54# happyReduction_177 +happyReduction_177 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> happyIn61 (LIdent happy_var_1 )} -happyReduce_175 = happySpecReduce_2 54# happyReduction_175 -happyReduction_175 happy_x_2 +happyReduce_178 = happySpecReduce_2 54# happyReduction_178 +happyReduction_178 happy_x_2 happy_x_1 = case happyOut9 happy_x_2 of { happy_var_2 -> happyIn61 (LVar happy_var_2 )} -happyReduce_176 = happySpecReduce_1 55# happyReduction_176 -happyReduction_176 happy_x_1 - = happyIn62 - (Sort_Type - ) - -happyReduce_177 = happySpecReduce_1 55# happyReduction_177 -happyReduction_177 happy_x_1 - = happyIn62 - (Sort_PType - ) - -happyReduce_178 = happySpecReduce_1 55# happyReduction_178 -happyReduction_178 happy_x_1 - = happyIn62 - (Sort_Tok - ) - happyReduce_179 = happySpecReduce_1 55# happyReduction_179 happyReduction_179 happy_x_1 = happyIn62 - (Sort_Str + (Sort_Type ) happyReduce_180 = happySpecReduce_1 55# happyReduction_180 happyReduction_180 happy_x_1 + = happyIn62 + (Sort_PType + ) + +happyReduce_181 = happySpecReduce_1 55# happyReduction_181 +happyReduction_181 happy_x_1 + = happyIn62 + (Sort_Tok + ) + +happyReduce_182 = happySpecReduce_1 55# happyReduction_182 +happyReduction_182 happy_x_1 + = happyIn62 + (Sort_Str + ) + +happyReduce_183 = happySpecReduce_1 55# happyReduction_183 +happyReduction_183 happy_x_1 = happyIn62 (Sort_Strs ) -happyReduce_181 = happySpecReduce_0 56# happyReduction_181 -happyReduction_181 = happyIn63 +happyReduce_184 = happySpecReduce_0 56# happyReduction_184 +happyReduction_184 = happyIn63 ([] ) -happyReduce_182 = happySpecReduce_1 56# happyReduction_182 -happyReduction_182 happy_x_1 +happyReduce_185 = happySpecReduce_1 56# happyReduction_185 +happyReduction_185 happy_x_1 = case happyOut60 happy_x_1 of { happy_var_1 -> happyIn63 ((:[]) happy_var_1 )} -happyReduce_183 = happySpecReduce_3 56# happyReduction_183 -happyReduction_183 happy_x_3 +happyReduce_186 = happySpecReduce_3 56# happyReduction_186 +happyReduction_186 happy_x_3 happy_x_2 happy_x_1 = case happyOut60 happy_x_1 of { happy_var_1 -> @@ -2342,22 +2377,22 @@ happyReduction_183 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_184 = happySpecReduce_1 57# happyReduction_184 -happyReduction_184 happy_x_1 +happyReduce_187 = happySpecReduce_1 57# happyReduction_187 +happyReduction_187 happy_x_1 = case happyOut59 happy_x_1 of { happy_var_1 -> happyIn64 (AltP happy_var_1 )} -happyReduce_185 = happySpecReduce_1 58# happyReduction_185 -happyReduction_185 happy_x_1 +happyReduce_188 = happySpecReduce_1 58# happyReduction_188 +happyReduction_188 happy_x_1 = case happyOut58 happy_x_1 of { happy_var_1 -> happyIn65 ((:[]) happy_var_1 )} -happyReduce_186 = happySpecReduce_2 58# happyReduction_186 -happyReduction_186 happy_x_2 +happyReduce_189 = happySpecReduce_2 58# happyReduction_189 +happyReduction_189 happy_x_2 happy_x_1 = case happyOut58 happy_x_1 of { happy_var_1 -> case happyOut65 happy_x_2 of { happy_var_2 -> @@ -2365,15 +2400,15 @@ happyReduction_186 happy_x_2 ((:) happy_var_1 happy_var_2 )}} -happyReduce_187 = happySpecReduce_1 59# happyReduction_187 -happyReduction_187 happy_x_1 +happyReduce_190 = happySpecReduce_1 59# happyReduction_190 +happyReduction_190 happy_x_1 = case happyOut64 happy_x_1 of { happy_var_1 -> happyIn66 ((:[]) happy_var_1 )} -happyReduce_188 = happySpecReduce_3 59# happyReduction_188 -happyReduction_188 happy_x_3 +happyReduce_191 = happySpecReduce_3 59# happyReduction_191 +happyReduction_191 happy_x_3 happy_x_2 happy_x_1 = case happyOut64 happy_x_1 of { happy_var_1 -> @@ -2382,33 +2417,33 @@ happyReduction_188 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_189 = happySpecReduce_1 60# happyReduction_189 -happyReduction_189 happy_x_1 +happyReduce_192 = happySpecReduce_1 60# happyReduction_192 +happyReduction_192 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> happyIn67 (BIdent happy_var_1 )} -happyReduce_190 = happySpecReduce_1 60# happyReduction_190 -happyReduction_190 happy_x_1 +happyReduce_193 = happySpecReduce_1 60# happyReduction_193 +happyReduction_193 happy_x_1 = happyIn67 (BWild ) -happyReduce_191 = happySpecReduce_0 61# happyReduction_191 -happyReduction_191 = happyIn68 +happyReduce_194 = happySpecReduce_0 61# happyReduction_194 +happyReduction_194 = happyIn68 ([] ) -happyReduce_192 = happySpecReduce_1 61# happyReduction_192 -happyReduction_192 happy_x_1 +happyReduce_195 = happySpecReduce_1 61# happyReduction_195 +happyReduction_195 happy_x_1 = case happyOut67 happy_x_1 of { happy_var_1 -> happyIn68 ((:[]) happy_var_1 )} -happyReduce_193 = happySpecReduce_3 61# happyReduction_193 -happyReduction_193 happy_x_3 +happyReduce_196 = happySpecReduce_3 61# happyReduction_196 +happyReduction_196 happy_x_3 happy_x_2 happy_x_1 = case happyOut67 happy_x_1 of { happy_var_1 -> @@ -2417,8 +2452,8 @@ happyReduction_193 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_194 = happyReduce 5# 62# happyReduction_194 -happyReduction_194 (happy_x_5 `HappyStk` +happyReduce_197 = happyReduce 5# 62# happyReduction_197 +happyReduction_197 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -2430,41 +2465,41 @@ happyReduction_194 (happy_x_5 `HappyStk` (DDec happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_195 = happySpecReduce_1 62# happyReduction_195 -happyReduction_195 happy_x_1 +happyReduce_198 = happySpecReduce_1 62# happyReduction_198 +happyReduction_198 happy_x_1 = case happyOut54 happy_x_1 of { happy_var_1 -> happyIn69 (DExp happy_var_1 )} -happyReduce_196 = happySpecReduce_1 63# happyReduction_196 -happyReduction_196 happy_x_1 +happyReduce_199 = happySpecReduce_1 63# happyReduction_199 +happyReduction_199 happy_x_1 = case happyOut56 happy_x_1 of { happy_var_1 -> happyIn70 (TComp happy_var_1 )} -happyReduce_197 = happySpecReduce_1 64# happyReduction_197 -happyReduction_197 happy_x_1 +happyReduce_200 = happySpecReduce_1 64# happyReduction_200 +happyReduction_200 happy_x_1 = case happyOut59 happy_x_1 of { happy_var_1 -> happyIn71 (PTComp happy_var_1 )} -happyReduce_198 = happySpecReduce_0 65# happyReduction_198 -happyReduction_198 = happyIn72 +happyReduce_201 = happySpecReduce_0 65# happyReduction_201 +happyReduction_201 = happyIn72 ([] ) -happyReduce_199 = happySpecReduce_1 65# happyReduction_199 -happyReduction_199 happy_x_1 +happyReduce_202 = happySpecReduce_1 65# happyReduction_202 +happyReduction_202 happy_x_1 = case happyOut70 happy_x_1 of { happy_var_1 -> happyIn72 ((:[]) happy_var_1 )} -happyReduce_200 = happySpecReduce_3 65# happyReduction_200 -happyReduction_200 happy_x_3 +happyReduce_203 = happySpecReduce_3 65# happyReduction_203 +happyReduction_203 happy_x_3 happy_x_2 happy_x_1 = case happyOut70 happy_x_1 of { happy_var_1 -> @@ -2473,20 +2508,20 @@ happyReduction_200 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_201 = happySpecReduce_0 66# happyReduction_201 -happyReduction_201 = happyIn73 +happyReduce_204 = happySpecReduce_0 66# happyReduction_204 +happyReduction_204 = happyIn73 ([] ) -happyReduce_202 = happySpecReduce_1 66# happyReduction_202 -happyReduction_202 happy_x_1 +happyReduce_205 = happySpecReduce_1 66# happyReduction_205 +happyReduction_205 happy_x_1 = case happyOut71 happy_x_1 of { happy_var_1 -> happyIn73 ((:[]) happy_var_1 )} -happyReduce_203 = happySpecReduce_3 66# happyReduction_203 -happyReduction_203 happy_x_3 +happyReduce_206 = happySpecReduce_3 66# happyReduction_206 +happyReduction_206 happy_x_3 happy_x_2 happy_x_1 = case happyOut71 happy_x_1 of { happy_var_1 -> @@ -2495,8 +2530,8 @@ happyReduction_203 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_204 = happySpecReduce_3 67# happyReduction_204 -happyReduction_204 happy_x_3 +happyReduce_207 = happySpecReduce_3 67# happyReduction_207 +happyReduction_207 happy_x_3 happy_x_2 happy_x_1 = case happyOut66 happy_x_1 of { happy_var_1 -> @@ -2505,15 +2540,15 @@ happyReduction_204 happy_x_3 (Case happy_var_1 happy_var_3 )}} -happyReduce_205 = happySpecReduce_1 68# happyReduction_205 -happyReduction_205 happy_x_1 +happyReduce_208 = happySpecReduce_1 68# happyReduction_208 +happyReduction_208 happy_x_1 = case happyOut74 happy_x_1 of { happy_var_1 -> happyIn75 ((:[]) happy_var_1 )} -happyReduce_206 = happySpecReduce_3 68# happyReduction_206 -happyReduction_206 happy_x_3 +happyReduce_209 = happySpecReduce_3 68# happyReduction_209 +happyReduction_209 happy_x_3 happy_x_2 happy_x_1 = case happyOut74 happy_x_1 of { happy_var_1 -> @@ -2522,8 +2557,8 @@ happyReduction_206 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_207 = happySpecReduce_3 69# happyReduction_207 -happyReduction_207 happy_x_3 +happyReduce_210 = happySpecReduce_3 69# happyReduction_210 +happyReduction_210 happy_x_3 happy_x_2 happy_x_1 = case happyOut65 happy_x_1 of { happy_var_1 -> @@ -2532,20 +2567,20 @@ happyReduction_207 happy_x_3 (Equ happy_var_1 happy_var_3 )}} -happyReduce_208 = happySpecReduce_0 70# happyReduction_208 -happyReduction_208 = happyIn77 +happyReduce_211 = happySpecReduce_0 70# happyReduction_211 +happyReduction_211 = happyIn77 ([] ) -happyReduce_209 = happySpecReduce_1 70# happyReduction_209 -happyReduction_209 happy_x_1 +happyReduce_212 = happySpecReduce_1 70# happyReduction_212 +happyReduction_212 happy_x_1 = case happyOut76 happy_x_1 of { happy_var_1 -> happyIn77 ((:[]) happy_var_1 )} -happyReduce_210 = happySpecReduce_3 70# happyReduction_210 -happyReduction_210 happy_x_3 +happyReduce_213 = happySpecReduce_3 70# happyReduction_213 +happyReduction_213 happy_x_3 happy_x_2 happy_x_1 = case happyOut76 happy_x_1 of { happy_var_1 -> @@ -2554,8 +2589,8 @@ happyReduction_210 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_211 = happySpecReduce_3 71# happyReduction_211 -happyReduction_211 happy_x_3 +happyReduce_214 = happySpecReduce_3 71# happyReduction_214 +happyReduction_214 happy_x_3 happy_x_2 happy_x_1 = case happyOut56 happy_x_1 of { happy_var_1 -> @@ -2564,20 +2599,20 @@ happyReduction_211 happy_x_3 (Alt happy_var_1 happy_var_3 )}} -happyReduce_212 = happySpecReduce_0 72# happyReduction_212 -happyReduction_212 = happyIn79 +happyReduce_215 = happySpecReduce_0 72# happyReduction_215 +happyReduction_215 = happyIn79 ([] ) -happyReduce_213 = happySpecReduce_1 72# happyReduction_213 -happyReduction_213 happy_x_1 +happyReduce_216 = happySpecReduce_1 72# happyReduction_216 +happyReduction_216 happy_x_1 = case happyOut78 happy_x_1 of { happy_var_1 -> happyIn79 ((:[]) happy_var_1 )} -happyReduce_214 = happySpecReduce_3 72# happyReduction_214 -happyReduction_214 happy_x_3 +happyReduce_217 = happySpecReduce_3 72# happyReduction_217 +happyReduction_217 happy_x_3 happy_x_2 happy_x_1 = case happyOut78 happy_x_1 of { happy_var_1 -> @@ -2586,8 +2621,8 @@ happyReduction_214 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_215 = happyReduce 5# 73# happyReduction_215 -happyReduction_215 (happy_x_5 `HappyStk` +happyReduce_218 = happyReduce 5# 73# happyReduction_218 +happyReduction_218 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -2599,20 +2634,20 @@ happyReduction_215 (happy_x_5 `HappyStk` (DDDec happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_216 = happySpecReduce_1 73# happyReduction_216 -happyReduction_216 happy_x_1 +happyReduce_219 = happySpecReduce_1 73# happyReduction_219 +happyReduction_219 happy_x_1 = case happyOut52 happy_x_1 of { happy_var_1 -> happyIn80 (DDExp happy_var_1 )} -happyReduce_217 = happySpecReduce_0 74# happyReduction_217 -happyReduction_217 = happyIn81 +happyReduce_220 = happySpecReduce_0 74# happyReduction_220 +happyReduction_220 = happyIn81 ([] ) -happyReduce_218 = happySpecReduce_2 74# happyReduction_218 -happyReduction_218 happy_x_2 +happyReduce_221 = happySpecReduce_2 74# happyReduction_221 +happyReduction_221 happy_x_2 happy_x_1 = case happyOut81 happy_x_1 of { happy_var_1 -> case happyOut80 happy_x_2 of { happy_var_2 -> @@ -2620,8 +2655,8 @@ happyReduction_218 happy_x_2 (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_219 = happySpecReduce_2 75# happyReduction_219 -happyReduction_219 happy_x_2 +happyReduce_222 = happySpecReduce_2 75# happyReduction_222 +happyReduction_222 happy_x_2 happy_x_1 = case happyOut83 happy_x_1 of { happy_var_1 -> case happyOut21 happy_x_2 of { happy_var_2 -> @@ -2629,59 +2664,59 @@ happyReduction_219 happy_x_2 (OldGr happy_var_1 (reverse happy_var_2) )}} -happyReduce_220 = happySpecReduce_0 76# happyReduction_220 -happyReduction_220 = happyIn83 +happyReduce_223 = happySpecReduce_0 76# happyReduction_223 +happyReduction_223 = happyIn83 (NoIncl ) -happyReduce_221 = happySpecReduce_2 76# happyReduction_221 -happyReduction_221 happy_x_2 +happyReduce_224 = happySpecReduce_2 76# happyReduction_224 +happyReduction_224 happy_x_2 happy_x_1 = case happyOut85 happy_x_2 of { happy_var_2 -> happyIn83 (Incl happy_var_2 )} -happyReduce_222 = happySpecReduce_1 77# happyReduction_222 -happyReduction_222 happy_x_1 +happyReduce_225 = happySpecReduce_1 77# happyReduction_225 +happyReduction_225 happy_x_1 = case happyOut8 happy_x_1 of { happy_var_1 -> happyIn84 (FString happy_var_1 )} -happyReduce_223 = happySpecReduce_1 77# happyReduction_223 -happyReduction_223 happy_x_1 +happyReduce_226 = happySpecReduce_1 77# happyReduction_226 +happyReduction_226 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> happyIn84 (FIdent happy_var_1 )} -happyReduce_224 = happySpecReduce_2 77# happyReduction_224 -happyReduction_224 happy_x_2 +happyReduce_227 = happySpecReduce_2 77# happyReduction_227 +happyReduction_227 happy_x_2 happy_x_1 = case happyOut84 happy_x_2 of { happy_var_2 -> happyIn84 (FSlash happy_var_2 )} -happyReduce_225 = happySpecReduce_2 77# happyReduction_225 -happyReduction_225 happy_x_2 +happyReduce_228 = happySpecReduce_2 77# happyReduction_228 +happyReduction_228 happy_x_2 happy_x_1 = case happyOut84 happy_x_2 of { happy_var_2 -> happyIn84 (FDot happy_var_2 )} -happyReduce_226 = happySpecReduce_2 77# happyReduction_226 -happyReduction_226 happy_x_2 +happyReduce_229 = happySpecReduce_2 77# happyReduction_229 +happyReduction_229 happy_x_2 happy_x_1 = case happyOut84 happy_x_2 of { happy_var_2 -> happyIn84 (FMinus happy_var_2 )} -happyReduce_227 = happySpecReduce_2 77# happyReduction_227 -happyReduction_227 happy_x_2 +happyReduce_230 = happySpecReduce_2 77# happyReduction_230 +happyReduction_230 happy_x_2 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> case happyOut84 happy_x_2 of { happy_var_2 -> @@ -2689,16 +2724,16 @@ happyReduction_227 happy_x_2 (FAddId happy_var_1 happy_var_2 )}} -happyReduce_228 = happySpecReduce_2 78# happyReduction_228 -happyReduction_228 happy_x_2 +happyReduce_231 = happySpecReduce_2 78# happyReduction_231 +happyReduction_231 happy_x_2 happy_x_1 = case happyOut84 happy_x_1 of { happy_var_1 -> happyIn85 ((:[]) happy_var_1 )} -happyReduce_229 = happySpecReduce_3 78# happyReduction_229 -happyReduction_229 happy_x_3 +happyReduce_232 = happySpecReduce_3 78# happyReduction_232 +happyReduction_232 happy_x_3 happy_x_2 happy_x_1 = case happyOut84 happy_x_1 of { happy_var_1 -> @@ -2708,7 +2743,7 @@ happyReduction_229 happy_x_3 )}} happyNewToken action sts stk [] = - happyDoAction 77# (error "reading EOF!") action sts stk [] + happyDoAction 80# (error "reading EOF!") action sts stk [] happyNewToken action sts stk (tk:tks) = let cont i = happyDoAction i tk action sts stk tks in @@ -2771,24 +2806,27 @@ happyNewToken action sts stk (tk:tks) = PT _ (TS "open") -> cont 56#; PT _ (TS "oper") -> cont 57#; PT _ (TS "out") -> cont 58#; - PT _ (TS "param") -> cont 59#; - PT _ (TS "pattern") -> cont 60#; - PT _ (TS "pre") -> cont 61#; - PT _ (TS "printname") -> cont 62#; - PT _ (TS "resource") -> cont 63#; - PT _ (TS "reuse") -> cont 64#; - PT _ (TS "strs") -> cont 65#; - PT _ (TS "table") -> cont 66#; - PT _ (TS "transfer") -> cont 67#; - PT _ (TS "union") -> cont 68#; - PT _ (TS "variants") -> cont 69#; - PT _ (TS "where") -> cont 70#; - PT _ (TS "with") -> cont 71#; - PT _ (TV happy_dollar_dollar) -> cont 72#; - PT _ (TL happy_dollar_dollar) -> cont 73#; - PT _ (TI happy_dollar_dollar) -> cont 74#; - PT _ (T_LString happy_dollar_dollar) -> cont 75#; - _ -> cont 76#; + PT _ (TS "package") -> cont 59#; + PT _ (TS "param") -> cont 60#; + PT _ (TS "pattern") -> cont 61#; + PT _ (TS "pre") -> cont 62#; + PT _ (TS "printname") -> cont 63#; + PT _ (TS "resource") -> cont 64#; + PT _ (TS "reuse") -> cont 65#; + PT _ (TS "strs") -> cont 66#; + PT _ (TS "table") -> cont 67#; + PT _ (TS "tokenizer") -> cont 68#; + PT _ (TS "transfer") -> cont 69#; + PT _ (TS "union") -> cont 70#; + PT _ (TS "var") -> cont 71#; + PT _ (TS "variants") -> cont 72#; + PT _ (TS "where") -> cont 73#; + PT _ (TS "with") -> cont 74#; + PT _ (TV happy_dollar_dollar) -> cont 75#; + PT _ (TL happy_dollar_dollar) -> cont 76#; + PT _ (TI happy_dollar_dollar) -> cont 77#; + PT _ (T_LString happy_dollar_dollar) -> cont 78#; + _ -> cont 79#; _ -> happyError tks } @@ -2821,7 +2859,7 @@ happyError ts = myLexer = tokens {-# LINE 1 "GenericTemplate.hs" #-} --- $Id: ParGF.hs,v 1.2 2004/02/27 08:43:52 aarne Exp $ +-- $Id: ParGF.hs,v 1.3 2004/06/24 15:06:10 aarne Exp $ diff --git a/src/GF/Source/PrintGF.hs b/src/GF/Source/PrintGF.hs index 732cdb002..e44891e44 100644 --- a/src/GF/Source/PrintGF.hs +++ b/src/GF/Source/PrintGF.hs @@ -210,6 +210,9 @@ instance Print TopDef where DefPrintOld printdefs -> prPrec i 0 (concat [["printname"] , prt 0 printdefs]) DefLintype defs -> prPrec i 0 (concat [["lintype"] , prt 0 defs]) DefPattern defs -> prPrec i 0 (concat [["pattern"] , prt 0 defs]) + DefPackage id topdefs -> prPrec i 0 (concat [["package"] , prt 0 id , ["="] , ["{"] , prt 0 topdefs , ["}"] , [";"]]) + DefVars defs -> prPrec i 0 (concat [["var"] , prt 0 defs]) + DefTokenizer id -> prPrec i 0 (concat [["tokenizer"] , prt 0 id , [";"]]) prtList es = case es of [] -> (concat []) diff --git a/src/GF/Source/SkelGF.hs b/src/GF/Source/SkelGF.hs index 0a1924359..93eac6922 100644 --- a/src/GF/Source/SkelGF.hs +++ b/src/GF/Source/SkelGF.hs @@ -128,6 +128,9 @@ transTopDef x = case x of DefPrintOld printdefs -> failure x DefLintype defs -> failure x DefPattern defs -> failure x + DefPackage id topdefs -> failure x + DefVars defs -> failure x + DefTokenizer id -> failure x transCatDef :: CatDef -> Result diff --git a/src/GF/Source/SourceToGrammar.hs b/src/GF/Source/SourceToGrammar.hs index 074c8a577..6d2d8dd3d 100644 --- a/src/GF/Source/SourceToGrammar.hs +++ b/src/GF/Source/SourceToGrammar.hs @@ -505,28 +505,34 @@ transOldGrammar opts name0 x = case x of g1 <- transGrammar $ Gr moddefs removeLiT g1 --- needed for bw compatibility with an obsolete feature where - sortTopDefs ds = [mkAbs a,mkRes r,mkCnc c] - where (a,r,c) = foldr srt ([],[],[]) ds - srt d (a,r,c) = case d of - DefCat catdefs -> (d:a,r,c) - DefFun fundefs -> (d:a,r,c) - DefDef defs -> (d:a,r,c) - DefData pardefs -> (d:a,r,c) - DefPar pardefs -> (a,d:r,c) - DefOper defs -> (a,d:r,c) - DefLintype defs -> (a,d:r,c) - DefLincat defs -> (a,r,d:c) - DefLindef defs -> (a,r,d:c) - DefLin defs -> (a,r,d:c) - DefPattern defs -> (a,r,d:c) - DefFlag defs -> (a,r,d:c) --- a guess - DefPrintCat printdefs -> (a,r,d:c) - DefPrintFun printdefs -> (a,r,d:c) - DefPrintOld printdefs -> (a,r,d:c) - mkAbs a = MModule q (MTAbstract absName) (MBody ne (Opens []) (topDefs a)) - mkRes r = MModule q (MTResource resName) (MBody ne (Opens []) (topDefs r)) - mkCnc r = MModule q (MTConcrete cncName absName) - (MBody ne (Opens [OName resName]) (topDefs r)) + sortTopDefs ds = [mkAbs a,mkRes ops r,mkCnc ops c] ++ map mkPack ps + where + ops = map fst ps + (a,r,c,ps) = foldr srt ([],[],[],[]) ds + srt d (a,r,c,ps) = case d of + DefCat catdefs -> (d:a,r,c,ps) + DefFun fundefs -> (d:a,r,c,ps) + DefDef defs -> (d:a,r,c,ps) + DefData pardefs -> (d:a,r,c,ps) + DefPar pardefs -> (a,d:r,c,ps) + DefOper defs -> (a,d:r,c,ps) + DefLintype defs -> (a,d:r,c,ps) + DefLincat defs -> (a,r,d:c,ps) + DefLindef defs -> (a,r,d:c,ps) + DefLin defs -> (a,r,d:c,ps) + DefPattern defs -> (a,r,d:c,ps) + DefFlag defs -> (a,r,d:c,ps) --- a guess + DefPrintCat printdefs -> (a,r,d:c,ps) + DefPrintFun printdefs -> (a,r,d:c,ps) + DefPrintOld printdefs -> (a,r,d:c,ps) + DefPackage m ds -> (a,r,c,(m,ds):ps) + _ -> (a,r,c,ps) + mkAbs a = MModule q (MTAbstract absName) (MBody ne (Opens []) (topDefs a)) + mkRes ps r = MModule q (MTResource resName) (MBody ne (Opens ops) (topDefs r)) + where ops = map OName ps + mkCnc ps r = MModule q (MTConcrete cncName absName) + (MBody ne (Opens (map OName (resName:ps))) (topDefs r)) + mkPack (m, ds) = MModule q (MTResource m) (MBody ne (Opens []) (topDefs ds)) topDefs t = t ne = NoExt q = CMCompl @@ -551,12 +557,18 @@ transInclude x = case x of where trans f = case f of FString s -> s - FIdent (IC s) -> s + FIdent (IC s) -> let s' = init s ++ [toLower (last s)] in + if elem s' newReservedWords then s' else s + --- unsafe hack ; cf. GetGrammar.oldLexer FSlash filename -> '/' : trans filename FDot filename -> '.' : trans filename FMinus filename -> '-' : trans filename FAddId (IC s) filename -> s ++ trans filename +newReservedWords = + words $ "abstract concrete interface incomplete " ++ + "instance out open resource reuse transfer union with where" + termInPattern :: G.Term -> G.Term termInPattern t = M.mkAbs xx $ G.R [(s, (Nothing, toP body))] where toP t = case t of diff --git a/src/GF/Source/TestGF.hs b/src/GF/Source/TestGF.hs index 89700bda6..b236f1347 100644 --- a/src/GF/Source/TestGF.hs +++ b/src/GF/Source/TestGF.hs @@ -1,5 +1,9 @@ -- automatically generated by BNF Converter -module TestGF where +module Main where + + +import IO ( stdin, hGetContents ) +import System ( getArgs, getProgName ) import LexGF import ParGF @@ -13,13 +17,21 @@ type ParseFun a = [Token] -> Err a myLLexer = myLexer -runFile :: (Print a, Show a) => ParseFun a -> FilePath -> IO() +runFile :: (Print a, Show a) => ParseFun a -> FilePath -> IO () runFile p f = readFile f >>= run p -run :: (Print a, Show a) => ParseFun a -> String -> IO() +run :: (Print a, Show a) => ParseFun a -> String -> IO () run p s = case (p (myLLexer s)) of Bad s -> do putStrLn "\nParse Failed...\n" putStrLn s Ok tree -> do putStrLn "\nParse Successful!" putStrLn $ "\n[Abstract Syntax]\n\n" ++ show tree putStrLn $ "\n[Linearized tree]\n\n" ++ printTree tree + +main :: IO () +main = do args <- getArgs + case args of + [] -> hGetContents stdin >>= run pGrammar + [f] -> runFile pGrammar f + _ -> do progName <- getProgName + putStrLn $ progName ++ ": excess arguments." diff --git a/src/GF/UseGrammar/Editing.hs b/src/GF/UseGrammar/Editing.hs index 6f444efe8..b740d6d08 100644 --- a/src/GF/UseGrammar/Editing.hs +++ b/src/GF/UseGrammar/Editing.hs @@ -5,6 +5,7 @@ import qualified GFC import TypeCheck import LookAbs import AbsCompute +import Macros (errorCat) import Operations import Zipper @@ -35,7 +36,7 @@ actVal :: State -> Val actVal = valNode . nodeTree . actTree actCat :: State -> Cat -actCat = errVal undefined . val2cat . actVal ---- undef +actCat = errVal errorCat . val2cat . actVal ---- undef actAtom :: State -> Atom actAtom = atomTree . actTree diff --git a/src/Makefile b/src/Makefile index c2deba8e4..bd33ea63a 100644 --- a/src/Makefile +++ b/src/Makefile @@ -5,6 +5,7 @@ GHMAKE=$(GHC) --make GHCFLAGS=-package lang -package util -fglasgow-exts $(CPPFLAGS) $(LDFLAGS) GHCOPTFLAGS=-O $(GHCFLAGS) GHCFUDFLAG=-package Fudgets +JAVAFLAGS=-target 1.4 -source 1.4 HUGSINCLUDE =.:for-hugs:api:source:canonical:cf:grammar:infra:shell:useGrammar:compile:newparsing:trace: BASICINCLUDE =-iapi -icompile -igrammar -iinfra -ishell -isource -icanonical -iuseGrammar -icf -inewparsing -iparsers -inotrace @@ -101,7 +102,7 @@ ghci-nofud: today: util/mktoday.sh javac: - $(JAVAC) -target 1.4 -source 1.4 java/*.java + $(JAVAC) $(JAVAFLAGS) java/*.java jar: javac cd java; $(JAR) -cmf manifest.txt gf-java.jar *.class diff --git a/src/ReleaseProcedure b/src/ReleaseProcedure index 3a377185e..ec7b1e6fc 100644 --- a/src/ReleaseProcedure +++ b/src/ReleaseProcedure @@ -1,6 +1,6 @@ Procedure for making a GF release: -1. Make sure everything the should be in the release has been +1. Make sure everything that should be in the release has been checked in. 2. Go to the src/ dir. @@ -43,7 +43,7 @@ Procedure for making a GF release: - Make sure that you have the directories neccessary to build RPMs: - $ mkdir -p ~/rpm/{BUILD,RPMS/$ARCH,RPMS/noarch,SOURCES,SRPMS,SPECS,tmp} + $ mkdir -p ~/rpm/{BUILD,RPMS/i586,RPMS/noarch,SOURCES,SRPMS,SPECS,tmp} - Create ~/.rpmrc with the following contents: