diff --git a/rzk/src/Language/Rzk/Free/Syntax.hs b/rzk/src/Language/Rzk/Free/Syntax.hs index 05d46dc96..fb5019c5f 100644 --- a/rzk/src/Language/Rzk/Free/Syntax.hs +++ b/rzk/src/Language/Rzk/Free/Syntax.hs @@ -16,7 +16,8 @@ import Data.Char (chr, ord) import Data.Coerce import Data.Function (on) import Data.Functor (void) -import Data.List (nub, (\\)) +import Data.List (intercalate, nub, (\\)) +import Data.Maybe (fromMaybe) import Data.String import Free.Scoped @@ -24,13 +25,36 @@ import Free.Scoped.TH import qualified Language.Rzk.Syntax as Rzk -newtype VarIdent = VarIdent { getVarIdent :: Rzk.VarIdent } +data RzkPosition = RzkPosition + { rzkFilePath :: Maybe FilePath + , rzkLineCol :: Rzk.BNFC'Position + } + +ppRzkPosition :: RzkPosition -> String +ppRzkPosition RzkPosition{..} = intercalate ":" $ concat + [ [fromMaybe "" rzkFilePath] + , foldMap (\(row, col) -> map show [row, col]) rzkLineCol] + +newtype VarIdent = VarIdent { getVarIdent :: Rzk.VarIdent' RzkPosition } instance Eq VarIdent where (==) = (==) `on` (void . getVarIdent) instance IsString VarIdent where - fromString s = VarIdent (Rzk.VarIdent Nothing (fromString s)) + fromString s = VarIdent (Rzk.VarIdent (RzkPosition Nothing Nothing) (fromString s)) + +ppVarIdentWithLocation :: VarIdent -> String +ppVarIdentWithLocation (VarIdent var@(Rzk.VarIdent pos _ident)) = + Rzk.printTree var <> " (" <> ppRzkPosition pos <> ")" + +varIdent :: Rzk.VarIdent -> VarIdent +varIdent = varIdentAt Nothing + +varIdentAt :: Maybe FilePath -> Rzk.VarIdent -> VarIdent +varIdentAt path (Rzk.VarIdent pos ident) = VarIdent (Rzk.VarIdent (RzkPosition path pos) ident) + +fromVarIdent :: VarIdent -> Rzk.VarIdent +fromVarIdent (VarIdent (Rzk.VarIdent (RzkPosition _file pos) ident)) = Rzk.VarIdent pos ident data TermF scope term = UniverseF @@ -141,14 +165,14 @@ toScopePattern pat bvars = toTerm $ \z -> where bindings (Rzk.PatternWildcard _loc) _ = [] bindings (Rzk.PatternUnit _loc) _ = [] - bindings (Rzk.PatternVar _loc x) t = [(VarIdent x, t)] + bindings (Rzk.PatternVar _loc x) t = [(varIdent x, t)] bindings (Rzk.PatternPair _loc l r) t = bindings l (First t) <> bindings r (Second t) toTerm :: (VarIdent -> Term a) -> Rzk.Term -> Term a toTerm bvars = go where go = \case - Rzk.Var _loc x -> bvars (VarIdent x) + Rzk.Var _loc x -> bvars (varIdent x) Rzk.Universe _loc -> Universe Rzk.UniverseCube _loc -> UniverseCube @@ -211,15 +235,15 @@ toTerm bvars = go Rzk.Hole _loc _ident -> error "holes are not supported" - patternVar (Rzk.PatternVar _loc x) = Just (VarIdent x) + patternVar (Rzk.PatternVar _loc x) = Just (varIdent x) patternVar _ = Nothing fromTerm' :: Term' -> Rzk.Term fromTerm' t = fromTermWith' vars (defaultVarIdents \\ vars) t where vars = freeVars t -fromScope' :: Rzk.VarIdent -> [VarIdent] -> [VarIdent] -> Scope Term VarIdent -> Rzk.Term -fromScope' x used xs = fromTermWith' (VarIdent x : used) xs . (>>= fmap VarIdent . f . fmap getVarIdent) +fromScope' :: VarIdent -> [VarIdent] -> [VarIdent] -> Scope Term VarIdent -> Rzk.Term +fromScope' x used xs = fromTermWith' (x : used) xs . (>>= f) where f Z = Pure x f (S z) = Pure z @@ -239,7 +263,7 @@ fromTermWith' used vars = go go :: Term' -> Rzk.Term go = \case - Pure z -> Rzk.Var loc (getVarIdent z) + Pure z -> Rzk.Var loc (fromVarIdent z) Universe -> Rzk.Universe loc UniverseCube -> Rzk.UniverseCube loc @@ -259,23 +283,23 @@ fromTermWith' used vars = go RecBottom -> Rzk.RecBottom loc RecOr rs -> Rzk.RecOr loc [ Rzk.Restriction loc (go tope) (go term) | (tope, term) <- rs ] - TypeFun z arg Nothing ret -> withFresh z $ \(VarIdent x, xs) -> - Rzk.TypeFun loc (Rzk.ParamVarType loc (Rzk.PatternVar loc x) (go arg)) (fromScope' x used xs ret) - TypeFun z arg (Just tope) ret -> withFresh z $ \(VarIdent x, xs) -> - Rzk.TypeFun loc (Rzk.ParamVarShape loc (Rzk.PatternVar loc x) (go arg) (fromScope' x used xs tope)) (fromScope' x used xs ret) + TypeFun z arg Nothing ret -> withFresh z $ \(x, xs) -> + Rzk.TypeFun loc (Rzk.ParamVarType loc (Rzk.PatternVar loc (fromVarIdent x)) (go arg)) (fromScope' x used xs ret) + TypeFun z arg (Just tope) ret -> withFresh z $ \(x, xs) -> + Rzk.TypeFun loc (Rzk.ParamVarShape loc (Rzk.PatternVar loc (fromVarIdent x)) (go arg) (fromScope' x used xs tope)) (fromScope' x used xs ret) - TypeSigma z a b -> withFresh z $ \(VarIdent x, xs) -> - Rzk.TypeSigma loc (Rzk.PatternVar loc x) (go a) (fromScope' x used xs b) + TypeSigma z a b -> withFresh z $ \(x, xs) -> + Rzk.TypeSigma loc (Rzk.PatternVar loc (fromVarIdent x)) (go a) (fromScope' x used xs b) TypeId l (Just tA) r -> Rzk.TypeId loc (go l) (go tA) (go r) TypeId l Nothing r -> Rzk.TypeIdSimple loc (go l) (go r) App l r -> Rzk.App loc (go l) (go r) - Lambda z Nothing scope -> withFresh z $ \(VarIdent x, xs) -> - Rzk.Lambda loc [Rzk.ParamPattern loc (Rzk.PatternVar loc x)] (fromScope' x used xs scope) - Lambda z (Just (ty, Nothing)) scope -> withFresh z $ \(VarIdent x, xs) -> - Rzk.Lambda loc [Rzk.ParamPatternType loc [Rzk.PatternVar loc x] (go ty)] (fromScope' x used xs scope) - Lambda z (Just (cube, Just tope)) scope -> withFresh z $ \(VarIdent x, xs) -> - Rzk.Lambda loc [Rzk.ParamPatternShape loc (Rzk.PatternVar loc x) (go cube) (fromScope' x used xs tope)] (fromScope' x used xs scope) + Lambda z Nothing scope -> withFresh z $ \(x, xs) -> + Rzk.Lambda loc [Rzk.ParamPattern loc (Rzk.PatternVar loc (fromVarIdent x))] (fromScope' x used xs scope) + Lambda z (Just (ty, Nothing)) scope -> withFresh z $ \(x, xs) -> + Rzk.Lambda loc [Rzk.ParamPatternType loc [Rzk.PatternVar loc (fromVarIdent x)] (go ty)] (fromScope' x used xs scope) + Lambda z (Just (cube, Just tope)) scope -> withFresh z $ \(x, xs) -> + Rzk.Lambda loc [Rzk.ParamPatternShape loc (Rzk.PatternVar loc (fromVarIdent x)) (go cube) (fromScope' x used xs tope)] (fromScope' x used xs scope) -- Lambda (Maybe (term, Maybe scope)) scope -> Rzk.Lambda loc (Maybe (term, Maybe scope)) scope Pair l r -> Rzk.Pair loc (go l) (go r) @@ -293,7 +317,7 @@ fromTermWith' used vars = go defaultVarIdents :: [VarIdent] defaultVarIdents = - [ VarIdent (Rzk.VarIdent Nothing (Rzk.VarIdentToken name)) + [ fromString name | n <- [1..] , let name = "x" <> map digitToSub (show n) ] where diff --git a/rzk/src/Language/Rzk/Syntax.cf b/rzk/src/Language/Rzk/Syntax.cf index 74a7babea..61a5e318b 100644 --- a/rzk/src/Language/Rzk/Syntax.cf +++ b/rzk/src/Language/Rzk/Syntax.cf @@ -107,7 +107,7 @@ define recOr psi phi a b = RecOr [ Restriction psi a, Restriction phi b ] ; -- Types TypeFun. Term1 ::= ParamDecl "->" Term1 ; TypeSigma. Term1 ::= "Sigma" "(" Pattern ":" Term ")" "," Term1 ; -TypeUnit. Term1 ::= "Unit" ; +TypeUnit. Term7 ::= "Unit" ; TypeId. Term1 ::= Term2 "=_{" Term "}" Term2 ; TypeIdSimple. Term1 ::= Term2 "=" Term2 ; TypeRestricted. Term6 ::= Term6 "[" [Restriction] "]" ; diff --git a/rzk/src/Language/Rzk/Syntax/Doc.txt b/rzk/src/Language/Rzk/Syntax/Doc.txt index 5d1698497..fa4e03987 100644 --- a/rzk/src/Language/Rzk/Syntax/Doc.txt +++ b/rzk/src/Language/Rzk/Syntax/Doc.txt @@ -123,6 +123,7 @@ All other symbols are terminals. | | **|** | ``recBOT`` | | **|** | ``recOR`` ``(`` //[Restriction]// ``)`` | | **|** | ``recOR`` ``(`` //Term// ``,`` //Term// ``,`` //Term// ``,`` //Term// ``)`` + | | **|** | ``Unit`` | | **|** | ``<`` //ParamDecl// ``->`` //Term// ``>`` | | **|** | ``(`` //Term// ``,`` //Term// ``)`` | | **|** | ``unit`` @@ -144,7 +145,6 @@ All other symbols are terminals. | | **|** | //Term3// | //Term1// | -> | //ParamDecl// ``->`` //Term1// | | **|** | ``Sigma`` ``(`` //Pattern// ``:`` //Term// ``)`` ``,`` //Term1// - | | **|** | ``Unit`` | | **|** | //Term2// ``=_{`` //Term// ``}`` //Term2// | | **|** | //Term2// ``=`` //Term2// | | **|** | ``\`` //[Param]// ``->`` //Term1// diff --git a/rzk/src/Language/Rzk/Syntax/Par.hs b/rzk/src/Language/Rzk/Syntax/Par.hs index c5e7af57f..d3e69daf8 100644 --- a/rzk/src/Language/Rzk/Syntax/Par.hs +++ b/rzk/src/Language/Rzk/Syntax/Par.hs @@ -267,7 +267,7 @@ happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x happyExpList :: HappyAddr -happyExpList = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xcf\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\xf3\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x08\x20\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x02\x08\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x80\x00\x0a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x20\x80\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x3b\xe0\xb7\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xec\x00\x9f\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x3b\xe0\x37\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x0e\xf8\x0d\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xb0\x03\x7e\x03\x18\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xec\x80\xdf\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x0e\xf8\x0d\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\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\x40\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x01\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x2e\xf0\x09\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe9\xb7\xa8\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xb0\x03\x7e\x0b\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x80\x00\x0a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xec\x00\x9f\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x0e\xf0\x09\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x20\x80\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x2e\xf0\x09\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\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\x00\x00\x00\x00\x00\x00\x89\x47\xb0\x0b\x7c\x02\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\xbb\xc0\x27\x80\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\x00\x40\x00\x00\x00\x20\x80\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x02\x08\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x08\x20\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x80\x00\x02\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x08\x20\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x3f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xcf\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x02\x08\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x3b\xe0\x37\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x0e\xf8\x0d\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x80\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x08\x20\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x02\x08\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x20\x80\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x80\x00\x02\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x3b\xe0\x37\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x0e\xf8\x0d\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xb0\x03\x7e\x03\x18\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xec\x80\xdf\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\xbb\xc0\x27\x80\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\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x02\x08\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x20\x80\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x10\x80\x00\x00\x08\xa0\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x20\x00\x00\x02\x28\x20\x00\x00\x00\x00\x00\x00\x00\xfe\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x3b\xe0\x37\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\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\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# +happyExpList = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xcf\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\xf3\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x08\x20\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x02\x08\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x80\x00\x0a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x20\x80\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7b\xe0\xb7\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xec\x01\x9f\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7b\xe0\x37\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x1e\xf8\x0d\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xb0\x07\x7e\x03\x18\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xec\x81\xdf\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x1e\xf8\x0d\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\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\x40\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x01\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x3e\xf0\x09\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe9\xb7\xa8\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xb0\x07\x7e\x0b\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x80\x00\x0a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xec\x01\x9f\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x1e\xf0\x09\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x20\x80\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x3e\xf0\x09\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\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\x00\x00\x00\x00\x00\x00\x89\x47\xb0\x0f\x7c\x02\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\xfb\xc0\x27\x80\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\x00\x40\x00\x00\x00\x20\x80\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x02\x08\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x08\x20\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x80\x00\x02\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x08\x20\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x3f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xcf\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x02\x08\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7b\xe0\x37\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x1e\xf8\x0d\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x80\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x08\x20\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x02\x08\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x20\x80\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x80\x00\x02\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7b\xe0\x37\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x1e\xf8\x0d\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xb0\x07\x7e\x03\x18\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xec\x81\xdf\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\xfb\xc0\x27\x80\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\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x02\x08\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x20\x80\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x10\x80\x00\x00\x08\xa0\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x20\x00\x00\x02\x28\x20\x00\x00\x00\x00\x00\x00\x00\xfe\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7b\xe0\x37\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\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\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x78\x04\x7f\xe1\xb7\xa8\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x47\xf0\x17\x7e\x8b\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x1e\xc1\x5f\xf8\x2d\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xe2\x11\xfc\x85\xdf\xa2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# {-# NOINLINE happyExpListPerState #-} happyExpListPerState st = @@ -283,22 +283,22 @@ happyExpListPerState st = f (Prelude.True, nr) = [token_strs Prelude.!! nr] happyActOffsets :: HappyAddr -happyActOffsets = HappyA# "\x03\x00\xce\xff\xdc\xff\xdc\xff\x25\x00\x04\x00\xf9\x06\xf9\x06\x0f\x00\x10\x00\x28\x00\x28\x00\x98\x00\x98\x00\x7d\x00\x4b\x00\x4b\x00\x47\x01\xf9\x00\xf9\x00\xf9\x00\xf9\x00\x4b\x00\xf9\x00\x4b\x00\x4b\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\xff\x00\x00\x01\x00\x40\x00\x41\x00\xee\xff\x00\x00\xa4\x00\x6e\x00\x43\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x00\x47\x01\x81\x00\x00\x00\x88\x00\x00\x00\x4b\x00\x47\x01\x00\x00\x5a\x00\x9a\x00\x9c\x00\x00\x00\x00\x00\x80\x00\xf1\xff\x4b\x00\x56\x00\x80\x00\x80\x00\x20\x01\x80\x00\x80\x00\xf4\xff\x80\x00\xa6\x00\x89\x00\x93\x00\xa1\x00\xa1\x00\x20\x01\x00\x00\x00\x00\x98\x00\xa1\x00\x6a\x00\x00\x00\x00\x00\x6a\x00\xa1\x00\x6a\x00\xa1\x00\x6a\x00\xa1\x00\x00\x00\xa1\x00\xa1\x00\xce\x00\xd0\x00\xae\x00\xb2\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\xb2\x00\xb2\x00\xb2\x00\xb2\x00\xcc\x00\xcc\x00\xd9\x00\xd9\x00\xda\x00\xda\x00\x00\x00\xda\x00\xee\x00\xf8\x00\xfa\x00\xfa\x00\xfa\x00\xfa\x00\xf9\x06\x00\x00\x00\x00\x23\x01\x26\x01\x28\x01\x00\x00\x2a\x01\x2f\x01\x15\x01\x15\x01\x15\x01\x00\x00\x00\x00\x00\x00\x32\x01\x3d\x01\xf9\x06\x18\x01\x48\x01\x00\x00\x42\x01\x0d\x00\x4d\x01\x00\x00\x00\x00\x4b\x00\x4b\x00\x4b\x00\xf9\x00\xf9\x00\x4b\x00\x33\x00\x6a\x00\x6a\x00\x4e\x01\x6a\x00\x00\x00\xea\xff\x4b\x00\x4b\x00\x00\x00\x58\x01\x6a\x00\x5f\x01\x5b\x01\x5d\x01\x4b\x00\x4b\x00\xf9\x00\xf9\x00\xf9\x00\xf9\x00\x4b\x00\x4b\x00\x00\x00\x00\x00\x50\x01\x50\x01\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4b\x00\x4b\x00\x63\x01\x4b\x00\x6f\x01\x73\x01\xfd\xff\x4b\x00\x00\x00\xf9\xff\x4b\x00\x6c\x01\x7d\x01\x00\x00\x4b\x00\x4f\x01\x00\x00\x20\x01\x00\x00\x00\x00\x60\x01\x4b\x00\x6a\x00\x4b\x00\x8f\x01\x00\x00\x4b\x00\x4b\x00\x56\x01\x57\x01\x5a\x01\xf9\x06\x61\x01\x4b\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x01\x89\x01\x4b\x00\x8a\x01\x4b\x00\x8b\x01\x4b\x00\x00\x00\x00\x00\x00\x00\x66\x01\x96\x01\x97\x01\x00\x00\xf9\x00\xb4\x01\x4b\x00\x4b\x00\x3d\x00\x4b\x00\x88\x01\x4b\x00\x00\x00\x4b\x00\x00\x00\x4b\x00\xb1\x01\xc6\x01\xc7\x01\x00\x00\x00\x00\x00\x00\xc8\x01\xcb\x01\xe6\x01\x00\x00\xc9\x01\x4b\x00\x00\x00\xca\x01\xec\x01\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\xc0\x01\x4b\x00\xe2\x01\x4b\x00\x00\x00\x4b\x00\xbc\x01\x00\x00\x00\x00\xe4\x01\x4b\x00\xe5\x01\x4b\x00\xc4\x01\xf1\x01\x01\x02\xe7\x01\xe8\x01\x4b\x00\x4b\x00\x0c\x02\x4b\x00\x12\x02\x14\x02\x4b\x00\x00\x00\x4b\x00\x4b\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x01\x4b\x00\x4b\x00\x00\x00\x26\x02\x2a\x02\x00\x00\x00\x00\x4b\x00\x32\x02\x4b\x00\x39\x02\x00\x00\x00\x00"# +happyActOffsets = HappyA# "\x03\x00\xce\xff\xd4\xff\xd4\xff\x16\x00\xf7\xff\x07\x07\x07\x07\x0f\x00\xf8\xff\x28\x00\x28\x00\x98\x00\x98\x00\x7d\x00\x4b\x00\x4b\x00\x47\x01\xf9\x00\xf9\x00\xf9\x00\xf9\x00\x4b\x00\xf9\x00\x4b\x00\x4b\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\xff\x00\x00\x01\x00\x40\x00\x32\x00\xee\xff\x00\x00\xa4\x00\x6e\x00\x29\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x00\x47\x01\x78\x00\x00\x00\x81\x00\x00\x00\x4b\x00\x47\x01\x00\x00\x5a\x00\x90\x00\x9a\x00\x00\x00\x00\x00\x80\x00\xf1\xff\x4b\x00\x56\x00\x80\x00\x80\x00\x20\x01\x80\x00\x80\x00\xf4\xff\x80\x00\xa6\x00\x8b\x00\x6f\x00\xa1\x00\xa1\x00\x20\x01\x00\x00\x00\x00\x98\x00\xa1\x00\x6a\x00\x00\x00\x00\x00\x6a\x00\xa1\x00\x6a\x00\xa1\x00\x6a\x00\xa1\x00\x00\x00\xa1\x00\xa1\x00\xce\x00\xd0\x00\xae\x00\xb2\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\xb2\x00\xb2\x00\xb2\x00\xb2\x00\xbd\x00\xbd\x00\xd1\x00\xd1\x00\xe3\x00\xe3\x00\x00\x00\xe3\x00\xfd\x00\xf2\x00\xf1\x00\xf1\x00\xf1\x00\xf1\x00\x07\x07\x00\x00\x00\x00\x26\x01\x31\x01\x32\x01\x00\x00\x21\x01\x3b\x01\x15\x01\x15\x01\x15\x01\x00\x00\x00\x00\x00\x00\x40\x01\x42\x01\x07\x07\x19\x01\x4e\x01\x00\x00\x4b\x01\x0d\x00\x4f\x01\x00\x00\x00\x00\x4b\x00\x4b\x00\x4b\x00\xf9\x00\xf9\x00\x4b\x00\x33\x00\x6a\x00\x6a\x00\x59\x01\x6a\x00\x00\x00\xea\xff\x4b\x00\x4b\x00\x00\x00\x54\x01\x6a\x00\x60\x01\x5b\x01\x5c\x01\x4b\x00\x4b\x00\xf9\x00\xf9\x00\xf9\x00\xf9\x00\x4b\x00\x4b\x00\x00\x00\x00\x00\x6c\x01\x6c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4b\x00\x4b\x00\x64\x01\x4b\x00\x6f\x01\x77\x01\xfd\xff\x4b\x00\x00\x00\xf9\xff\x4b\x00\x73\x01\x74\x01\x00\x00\x4b\x00\x5e\x01\x00\x00\x20\x01\x00\x00\x00\x00\x69\x01\x4b\x00\x6a\x00\x4b\x00\x92\x01\x00\x00\x4b\x00\x4b\x00\x57\x01\x58\x01\x5d\x01\x07\x07\x62\x01\x4b\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x01\x8e\x01\x4b\x00\x8f\x01\x4b\x00\x90\x01\x4b\x00\x00\x00\x00\x00\x00\x00\x8c\x01\xb8\x01\xc9\x01\x00\x00\xf9\x00\xcb\x01\x4b\x00\x4b\x00\x3d\x00\x4b\x00\x9f\x01\x4b\x00\x00\x00\x4b\x00\x00\x00\x4b\x00\xbb\x01\xce\x01\xec\x01\x00\x00\x00\x00\x00\x00\xef\x01\xed\x01\xee\x01\x00\x00\xf2\x01\x4b\x00\x00\x00\xf3\x01\xf4\x01\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\xfc\x01\x4b\x00\x07\x02\x4b\x00\x00\x00\x4b\x00\xc5\x01\x00\x00\x00\x00\x0b\x02\x4b\x00\x0c\x02\x4b\x00\xeb\x01\x17\x02\x1a\x02\xff\x01\x02\x02\x4b\x00\x4b\x00\x35\x02\x4b\x00\x39\x02\x3a\x02\x4b\x00\x00\x00\x4b\x00\x4b\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x02\x4b\x00\x4b\x00\x00\x00\x3d\x02\x43\x02\x00\x00\x00\x00\x4b\x00\x4f\x02\x4b\x00\x53\x02\x00\x00\x00\x00"# happyGotoOffsets :: HappyAddr -happyGotoOffsets = HappyA# "\x14\x00\xa7\x00\x02\x00\x67\x00\x44\x02\x46\x02\x57\x02\x5d\x00\x41\x02\x54\x00\x94\x02\x22\x02\x08\x07\xc5\x00\x91\x06\x02\x02\xb6\x01\xed\x00\x98\x06\x8a\x06\x6c\x06\x3d\x06\xad\x05\xcd\x06\x1d\x02\x9a\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\xfb\x00\x00\x00\x00\x00\x28\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x01\x22\x01\x00\x00\x00\x00\x00\x00\x00\x00\x43\x02\xd7\x06\x00\x00\x95\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x06\x4e\x02\x00\x00\x00\x00\x00\x00\xde\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x06\x00\x00\x00\x00\x72\x01\x00\x00\x48\x02\x00\x00\x00\x00\xba\x02\x00\x00\x6e\x02\x00\x00\xbb\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x69\x02\x74\x02\x8f\x02\x9a\x02\x2a\x00\xde\x00\xf3\x00\x86\x00\x51\x02\x61\x02\xfd\x00\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x66\x02\x67\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x01\x13\x01\x00\x00\x00\x00\x00\x00\x6e\x02\x00\x00\x00\x00\x00\x00\xd1\x01\xb5\x02\xdc\x01\xd2\x06\x44\x06\xc0\x02\x00\x00\xe0\x02\xe1\x02\x00\x00\x06\x03\x00\x00\x00\x00\xf7\x01\xdb\x02\x00\x00\x00\x00\x07\x03\x00\x00\x00\x00\x00\x00\xa8\x01\xb7\x05\x4b\x06\x73\x06\xaf\x06\xb6\x06\xd1\x05\xdb\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x02\x01\x03\x0c\x03\x00\x00\xf5\x05\x00\x00\x00\x00\x00\x00\x27\x03\x00\x00\x00\x00\x32\x03\x00\x00\x00\x00\x00\x00\x4d\x03\x00\x00\x00\x00\xde\x06\x00\x00\x00\x00\x00\x00\x58\x03\x2c\x03\x73\x03\x00\x00\x00\x00\x7e\x03\x99\x03\x87\x01\xe4\x06\xe9\x06\x2b\x01\x77\x02\xa4\x03\xbf\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x03\x00\x00\xe5\x03\x00\x00\xf0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x06\x00\x00\x0b\x04\x16\x04\x00\x00\x31\x04\x00\x00\x3c\x04\x00\x00\x57\x04\x00\x00\x62\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x04\x00\x00\xa3\x04\x00\x00\xae\x04\x00\x00\xc9\x04\x9b\x00\x00\x00\x00\x00\x00\x00\xd4\x04\x00\x00\xef\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x04\x15\x05\x00\x00\xff\x05\x00\x00\x00\x00\x20\x05\x00\x00\x19\x06\x23\x06\x00\x00\x00\x00\x3b\x05\x00\x00\x46\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x05\x6c\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x87\x05\x00\x00\x92\x05\x00\x00\x00\x00\x00\x00"# +happyGotoOffsets = HappyA# "\x95\x00\xa7\x00\x02\x00\x67\x00\x68\x02\x6b\x02\x6e\x02\x5d\x00\x69\x02\x54\x00\x88\x01\x25\x02\xf3\x00\xc5\x00\x94\x06\x05\x02\xb9\x01\xed\x00\x9b\x06\x8d\x06\x6f\x06\x40\x06\xb0\x05\xd0\x06\x20\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\x80\x01\x00\x00\x00\x00\x2b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x01\xda\x06\x00\x00\x00\x00\x00\x00\x00\x00\x46\x02\xe1\x06\x00\x00\x97\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x06\x51\x02\x00\x00\x00\x00\x00\x00\xef\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x06\x00\x00\x00\x00\x41\x01\x00\x00\x4b\x02\x00\x00\x00\x00\x98\x02\x00\x00\x71\x02\x00\x00\xbd\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x6c\x02\x77\x02\x92\x02\x9d\x02\x2a\x00\xde\x00\x1a\x01\x86\x00\x75\x02\x7a\x02\x24\x01\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x02\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x02\x8a\x02\x8f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x01\x3a\x01\x00\x00\x00\x00\x00\x00\x71\x02\x00\x00\x00\x00\x00\x00\xd4\x01\xb8\x02\xdf\x01\xd5\x06\x47\x06\xc3\x02\x00\x00\xbe\x02\xe3\x02\x00\x00\xe4\x02\x00\x00\x00\x00\xfa\x01\xde\x02\x00\x00\x00\x00\x09\x03\x00\x00\x00\x00\x00\x00\xab\x01\xba\x05\x4e\x06\x76\x06\xb2\x06\xb9\x06\xd4\x05\xde\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x02\x04\x03\x0f\x03\x00\x00\xf8\x05\x00\x00\x00\x00\x00\x00\x2a\x03\x00\x00\x00\x00\x35\x03\x00\x00\x00\x00\x00\x00\x50\x03\x00\x00\x00\x00\xef\x06\x00\x00\x00\x00\x00\x00\x5b\x03\x0a\x03\x76\x03\x00\x00\x00\x00\x81\x03\x9c\x03\x98\x01\xf1\x06\xf7\x06\x10\x01\x9b\x02\xa7\x03\xc2\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x03\x00\x00\xe8\x03\x00\x00\xf3\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x06\x00\x00\x0e\x04\x19\x04\x00\x00\x34\x04\x00\x00\x3f\x04\x00\x00\x5a\x04\x00\x00\x65\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x04\x00\x00\xa6\x04\x00\x00\xb1\x04\x00\x00\xcc\x04\xd6\x01\x00\x00\x00\x00\x00\x00\xd7\x04\x00\x00\xf2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x04\x18\x05\x00\x00\x02\x06\x00\x00\x00\x00\x23\x05\x00\x00\x1c\x06\x26\x06\x00\x00\x00\x00\x3e\x05\x00\x00\x49\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\x6f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x05\x00\x00\x95\x05\x00\x00\x00\x00\x00\x00"# happyAdjustOffset :: Happy_GHC_Exts.Int# -> Happy_GHC_Exts.Int# happyAdjustOffset off = off happyDefActions :: HappyAddr -happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xff\xc8\xff\xc7\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\xe5\xff\xe0\xff\xe1\xff\x9d\xff\x9c\xff\x00\x00\x83\xff\x96\xff\x94\xff\x92\xff\x8b\xff\x81\xff\x99\xff\x80\xff\x00\x00\x00\x00\xad\xff\xab\xff\xae\xff\xaa\xff\xac\xff\x00\x00\xa8\xff\xb0\xff\x00\x00\xa9\xff\xaf\xff\xb1\xff\x8f\xff\x00\x00\x00\x00\x00\x00\xa7\xff\x00\x00\xa1\xff\x00\x00\x00\x00\xa2\xff\x00\x00\x00\x00\x00\x00\xe4\xff\xe3\xff\x00\x00\x00\x00\x00\x00\x8b\xff\x00\x00\x00\x00\x99\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xff\x00\x00\x00\x00\x00\x00\x00\x00\xba\xff\xc3\xff\xbf\xff\xbc\xff\x00\x00\x00\x00\xc5\xff\xc4\xff\x00\x00\x00\x00\xc1\xff\x00\x00\x00\x00\x00\x00\xc6\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\xc7\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\xff\x00\x00\x00\x00\xdf\xff\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xff\xe2\xff\xde\xff\x00\x00\x00\x00\x00\x00\xda\xff\x00\x00\x00\x00\xc8\xff\xc8\xff\xc8\xff\xd7\xff\xd6\xff\xd8\xff\x00\x00\x00\x00\xcb\xff\x00\x00\x00\x00\xc0\xff\x00\x00\xc1\xff\x00\x00\xbb\xff\x86\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\xff\x00\x00\x00\x00\x00\x00\x85\xff\x00\x00\x00\x00\x00\x00\x9c\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xff\x91\xff\x98\xff\x97\xff\x95\xff\x93\xff\x82\xff\x7f\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9b\xff\x00\x00\x00\x00\x8d\xff\x9a\xff\xb2\xff\xb4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xff\x00\x00\x00\x00\x00\x00\xdd\xff\xd1\xff\xd2\xff\xdb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\xd3\xff\xc9\xff\x00\x00\x00\x00\x00\x00\x87\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\xff\x00\x00\x8c\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb9\xff\xb7\xff\xa4\xff\x00\x00\x00\x00\x00\x00\x9f\xff\x00\x00\x00\x00\xb8\xff\x00\x00\x00\x00\xa3\xff\x8e\xff\xbe\xff\xc2\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\xff\x00\x00\xc7\xff\xd0\xff\xd5\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\xb5\xff\x00\x00\x00\x00\xbd\xff\xcc\xff\x00\x00\xce\xff\x00\x00\xcf\xff\xcd\xff\x88\xff\x89\xff\x00\x00\x00\x00\x00\x00\x90\xff\x00\x00\x00\x00\xb6\xff\xa5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9e\xff"# +happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xff\xc8\xff\xc7\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\xe5\xff\xe0\xff\xe1\xff\x9c\xff\x9b\xff\x00\x00\x83\xff\x95\xff\x93\xff\x91\xff\x8b\xff\x81\xff\x98\xff\x80\xff\x00\x00\x00\x00\xad\xff\xab\xff\xae\xff\xaa\xff\xac\xff\x00\x00\xa8\xff\xb0\xff\x00\x00\xa9\xff\xaf\xff\xb1\xff\xa4\xff\x00\x00\x00\x00\x00\x00\xa7\xff\x00\x00\xa0\xff\x00\x00\x00\x00\xa1\xff\x00\x00\x00\x00\x00\x00\xe4\xff\xe3\xff\x00\x00\x00\x00\x00\x00\x8b\xff\x00\x00\x00\x00\x98\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xff\x00\x00\x00\x00\x00\x00\x00\x00\xba\xff\xc3\xff\xbf\xff\xbc\xff\x00\x00\x00\x00\xc5\xff\xc4\xff\x00\x00\x00\x00\xc1\xff\x00\x00\x00\x00\x00\x00\xc6\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\xc7\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\xff\x00\x00\x00\x00\xdf\xff\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xff\xe2\xff\xde\xff\x00\x00\x00\x00\x00\x00\xda\xff\x00\x00\x00\x00\xc8\xff\xc8\xff\xc8\xff\xd7\xff\xd6\xff\xd8\xff\x00\x00\x00\x00\xcb\xff\x00\x00\x00\x00\xc0\xff\x00\x00\xc1\xff\x00\x00\xbb\xff\x86\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\xff\x00\x00\x00\x00\x00\x00\x85\xff\x00\x00\x00\x00\x00\x00\x9b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xff\x90\xff\x97\xff\x96\xff\x94\xff\x92\xff\x82\xff\x7f\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9a\xff\x00\x00\x00\x00\x8d\xff\x99\xff\xb2\xff\xb4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xff\x00\x00\x00\x00\x00\x00\xdd\xff\xd1\xff\xd2\xff\xdb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\xd3\xff\xc9\xff\x00\x00\x00\x00\x00\x00\x87\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\xff\x00\x00\x8c\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb9\xff\xb7\xff\xa3\xff\x00\x00\x00\x00\x00\x00\x9e\xff\x00\x00\x00\x00\xb8\xff\x00\x00\x00\x00\xa2\xff\x8e\xff\xbe\xff\xc2\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\xff\x00\x00\xc7\xff\xd0\xff\xd5\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\xb5\xff\x00\x00\x00\x00\xbd\xff\xcc\xff\x00\x00\xce\xff\x00\x00\xcf\xff\xcd\xff\x88\xff\x89\xff\x00\x00\x00\x00\x00\x00\x8f\xff\x00\x00\x00\x00\xb6\xff\xa5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9d\xff"# happyCheck :: HappyAddr -happyCheck = HappyA# "\xff\xff\x10\x00\x15\x00\x01\x00\x13\x00\x1b\x00\x12\x00\x05\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x09\x00\x14\x00\x20\x00\x1e\x00\x22\x00\x14\x00\x44\x00\x12\x00\x1b\x00\x24\x00\x25\x00\x03\x00\x27\x00\x28\x00\x29\x00\x07\x00\x2b\x00\x10\x00\x30\x00\x43\x00\x1f\x00\x14\x00\x21\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x3e\x00\x10\x00\x39\x00\x01\x00\x13\x00\x40\x00\x09\x00\x05\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x43\x00\x44\x00\x45\x00\x1e\x00\x10\x00\x45\x00\x3d\x00\x37\x00\x2f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x11\x00\x2c\x00\x39\x00\x14\x00\x2f\x00\x3a\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x43\x00\x38\x00\x39\x00\x43\x00\x3b\x00\x01\x00\x16\x00\x2f\x00\x3f\x00\x05\x00\x41\x00\x10\x00\x43\x00\x44\x00\x13\x00\x42\x00\x0c\x00\x39\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x09\x00\x0a\x00\x01\x00\x1e\x00\x10\x00\x43\x00\x05\x00\x06\x00\x2d\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x20\x00\x2c\x00\x22\x00\x3c\x00\x10\x00\x3e\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x14\x00\x38\x00\x39\x00\x10\x00\x3b\x00\x01\x00\x45\x00\x2f\x00\x3f\x00\x05\x00\x41\x00\x10\x00\x43\x00\x44\x00\x13\x00\x10\x00\x0c\x00\x39\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x10\x00\x2f\x00\x01\x00\x1e\x00\x01\x00\x43\x00\x05\x00\x06\x00\x05\x00\x24\x00\x25\x00\x39\x00\x27\x00\x28\x00\x29\x00\x0c\x00\x10\x00\x02\x00\x10\x00\x04\x00\x10\x00\x43\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x10\x00\x38\x00\x39\x00\x13\x00\x3b\x00\x15\x00\x14\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x01\x00\x43\x00\x44\x00\x1e\x00\x05\x00\x06\x00\x45\x00\x01\x00\x2f\x00\x24\x00\x25\x00\x05\x00\x27\x00\x28\x00\x29\x00\x45\x00\x2b\x00\x3d\x00\x39\x00\x0d\x00\x3b\x00\x0f\x00\x10\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x43\x00\x01\x00\x39\x00\x10\x00\x01\x00\x05\x00\x06\x00\x10\x00\x05\x00\x40\x00\x13\x00\x45\x00\x43\x00\x44\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1d\x00\x01\x00\x02\x00\x1e\x00\x04\x00\x05\x00\x45\x00\x01\x00\x43\x00\x24\x00\x25\x00\x05\x00\x27\x00\x28\x00\x29\x00\x01\x00\x02\x00\x01\x00\x04\x00\x05\x00\x14\x00\x05\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x10\x00\x38\x00\x39\x00\x13\x00\x3b\x00\x42\x00\x14\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x01\x00\x43\x00\x44\x00\x1e\x00\x05\x00\x06\x00\x09\x00\x0a\x00\x43\x00\x24\x00\x25\x00\x45\x00\x27\x00\x28\x00\x29\x00\x01\x00\x02\x00\x37\x00\x04\x00\x05\x00\x09\x00\x0a\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x10\x00\x38\x00\x39\x00\x13\x00\x09\x00\x0a\x00\x14\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x43\x00\x43\x00\x44\x00\x1e\x00\x45\x00\x1d\x00\x1b\x00\x01\x00\x1b\x00\x24\x00\x25\x00\x05\x00\x27\x00\x28\x00\x29\x00\x20\x00\x2b\x00\x1d\x00\x1b\x00\x0d\x00\x3a\x00\x0f\x00\x10\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x10\x00\x1b\x00\x39\x00\x13\x00\x43\x00\x14\x00\x1b\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x12\x00\x43\x00\x44\x00\x1e\x00\x10\x00\x10\x00\x1b\x00\x1b\x00\x10\x00\x24\x00\x25\x00\x15\x00\x27\x00\x28\x00\x29\x00\x1b\x00\x1b\x00\x01\x00\x15\x00\x1b\x00\x1b\x00\x05\x00\x1b\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x1b\x00\x0d\x00\x39\x00\x0f\x00\x10\x00\x14\x00\x11\x00\x2f\x00\x2f\x00\x1b\x00\x01\x00\x2f\x00\x43\x00\x44\x00\x05\x00\x3e\x00\x2e\x00\x39\x00\x39\x00\x3b\x00\x3b\x00\x39\x00\x0d\x00\x3b\x00\x0f\x00\x10\x00\x1b\x00\x43\x00\x43\x00\x01\x00\x02\x00\x43\x00\x04\x00\x05\x00\x11\x00\x08\x00\x3c\x00\x42\x00\x1b\x00\x1b\x00\x1b\x00\x11\x00\x11\x00\x01\x00\x02\x00\x11\x00\x04\x00\x05\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x01\x00\x02\x00\x11\x00\x04\x00\x05\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x11\x00\x3e\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x23\x00\x04\x00\x05\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x1c\x00\x01\x00\x02\x00\x14\x00\x04\x00\x05\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x14\x00\x04\x00\x05\x00\x11\x00\x1c\x00\x43\x00\x1c\x00\x1c\x00\x3e\x00\x01\x00\x02\x00\x14\x00\x04\x00\x05\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\x12\x00\x14\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x14\x00\x04\x00\x05\x00\x01\x00\x3c\x00\x3e\x00\x14\x00\x05\x00\x14\x00\x01\x00\x02\x00\x3e\x00\x04\x00\x05\x00\x11\x00\x0d\x00\x0e\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\x14\x00\x11\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x14\x00\x04\x00\x05\x00\x01\x00\x11\x00\x07\x00\x0b\x00\x05\x00\x08\x00\x01\x00\x02\x00\x00\x00\x04\x00\x05\x00\x11\x00\x0d\x00\x0e\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\x09\x00\x00\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x08\x00\x04\x00\x05\x00\x01\x00\x0b\x00\x0b\x00\x0b\x00\x05\x00\xff\xff\x01\x00\x02\x00\x00\x00\x04\x00\x05\x00\x11\x00\x0d\x00\x0e\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x01\x00\x01\x00\xff\xff\xff\xff\x05\x00\x05\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\x0d\x00\x0d\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x01\x00\x01\x00\xff\xff\xff\xff\x05\x00\x05\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\x0d\x00\x0d\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x01\x00\x01\x00\xff\xff\xff\xff\x05\x00\x05\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\x0d\x00\x0d\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x01\x00\x01\x00\xff\xff\xff\xff\x05\x00\x05\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\x0d\x00\x0d\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\x0d\x00\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\x1a\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\x1a\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\x1a\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\x1a\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\xff\xff\x1a\x00\x14\x00\x15\x00\x16\x00\x17\x00\x01\x00\x02\x00\x1a\x00\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x14\x00\x15\x00\x16\x00\xff\xff\x11\x00\xff\xff\x1a\x00\x14\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x1a\x00\x14\x00\x15\x00\xff\xff\xff\xff\x01\x00\x02\x00\x1a\x00\x04\x00\x05\x00\xff\xff\x11\x00\x01\x00\x02\x00\x14\x00\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\x1a\x00\xff\xff\xff\xff\xff\xff\x14\x00\x15\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x14\x00\x15\x00\xff\xff\xff\xff\x01\x00\x02\x00\x1a\x00\x04\x00\x05\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\x14\x00\x04\x00\x05\x00\xff\xff\x01\x00\x14\x00\x1a\x00\xff\xff\x05\x00\x01\x00\x14\x00\x1a\x00\xff\xff\x05\x00\xff\xff\xff\xff\x0d\x00\x14\x00\x0f\x00\x10\x00\xff\xff\x0d\x00\xff\xff\x0f\x00\x10\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# +happyCheck = HappyA# "\xff\xff\x10\x00\x15\x00\x01\x00\x13\x00\x1b\x00\x12\x00\x05\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x09\x00\x14\x00\x20\x00\x1e\x00\x22\x00\x14\x00\x44\x00\x12\x00\x1b\x00\x24\x00\x25\x00\x43\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x10\x00\x30\x00\x09\x00\x1f\x00\x14\x00\x21\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x3e\x00\x10\x00\x39\x00\x01\x00\x13\x00\x40\x00\x37\x00\x05\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x43\x00\x44\x00\x45\x00\x1e\x00\x10\x00\x45\x00\x3d\x00\x43\x00\x2f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x11\x00\x2c\x00\x39\x00\x14\x00\x2f\x00\x3a\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x43\x00\x38\x00\x39\x00\x42\x00\x3b\x00\x01\x00\x16\x00\x2f\x00\x3f\x00\x05\x00\x41\x00\x10\x00\x43\x00\x44\x00\x13\x00\x2d\x00\x0c\x00\x39\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x09\x00\x0a\x00\x01\x00\x1e\x00\x10\x00\x43\x00\x05\x00\x06\x00\x45\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x20\x00\x2c\x00\x22\x00\x3c\x00\x10\x00\x3e\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x14\x00\x38\x00\x39\x00\x10\x00\x3b\x00\x01\x00\x10\x00\x2f\x00\x3f\x00\x05\x00\x41\x00\x10\x00\x43\x00\x44\x00\x13\x00\x10\x00\x0c\x00\x39\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x03\x00\x2f\x00\x01\x00\x1e\x00\x07\x00\x43\x00\x05\x00\x06\x00\x10\x00\x24\x00\x25\x00\x39\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x10\x00\x02\x00\x10\x00\x04\x00\x3d\x00\x43\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x10\x00\x38\x00\x39\x00\x13\x00\x3b\x00\x15\x00\x14\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x01\x00\x43\x00\x44\x00\x1e\x00\x05\x00\x06\x00\x45\x00\x01\x00\x2f\x00\x24\x00\x25\x00\x05\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x45\x00\x39\x00\x0d\x00\x3b\x00\x0f\x00\x10\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x43\x00\x01\x00\x39\x00\x10\x00\x01\x00\x05\x00\x06\x00\x10\x00\x05\x00\x40\x00\x13\x00\x45\x00\x43\x00\x44\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1d\x00\x01\x00\x02\x00\x1e\x00\x04\x00\x05\x00\x45\x00\x01\x00\x43\x00\x24\x00\x25\x00\x05\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x09\x00\x0a\x00\x42\x00\x0d\x00\x14\x00\x0f\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x10\x00\x38\x00\x39\x00\x13\x00\x3b\x00\x09\x00\x0a\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x43\x00\x43\x00\x44\x00\x1e\x00\x01\x00\x09\x00\x0a\x00\x01\x00\x05\x00\x24\x00\x25\x00\x05\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x0d\x00\x01\x00\x0f\x00\x10\x00\x45\x00\x05\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x10\x00\x38\x00\x39\x00\x13\x00\x37\x00\x43\x00\x45\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x01\x00\x43\x00\x44\x00\x1e\x00\x05\x00\x06\x00\x20\x00\x01\x00\x1d\x00\x24\x00\x25\x00\x05\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x1b\x00\x1b\x00\x0d\x00\x3a\x00\x0f\x00\x10\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x10\x00\x1d\x00\x39\x00\x13\x00\x1b\x00\x43\x00\x1b\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x14\x00\x43\x00\x44\x00\x1e\x00\x1b\x00\x10\x00\x10\x00\x15\x00\x1b\x00\x24\x00\x25\x00\x10\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x1b\x00\x1b\x00\x1b\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x12\x00\x1b\x00\x39\x00\x01\x00\x02\x00\x14\x00\x04\x00\x05\x00\x2f\x00\x2f\x00\x11\x00\x01\x00\x43\x00\x44\x00\x2f\x00\x05\x00\x1b\x00\x1b\x00\x39\x00\x39\x00\x3b\x00\x3b\x00\x14\x00\x0d\x00\x39\x00\x2e\x00\x3b\x00\x01\x00\x43\x00\x43\x00\x3e\x00\x05\x00\x01\x00\x02\x00\x43\x00\x04\x00\x05\x00\x11\x00\x42\x00\x0d\x00\x08\x00\x0f\x00\x10\x00\x1b\x00\x1b\x00\x1b\x00\x01\x00\x02\x00\x11\x00\x04\x00\x05\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x01\x00\x02\x00\x11\x00\x04\x00\x05\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x3c\x00\x11\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x01\x00\x04\x00\x05\x00\x11\x00\x05\x00\x11\x00\x3e\x00\x23\x00\x11\x00\x01\x00\x02\x00\x0c\x00\x04\x00\x05\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x11\x00\x04\x00\x05\x00\x11\x00\x14\x00\x14\x00\x11\x00\x11\x00\x11\x00\x01\x00\x02\x00\x43\x00\x04\x00\x05\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\x12\x00\x1c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x1c\x00\x04\x00\x05\x00\x01\x00\x1c\x00\x1c\x00\x3e\x00\x05\x00\x14\x00\x01\x00\x02\x00\x14\x00\x04\x00\x05\x00\x11\x00\x0d\x00\x0e\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\x3e\x00\x3c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x14\x00\x04\x00\x05\x00\x01\x00\x14\x00\x14\x00\x3e\x00\x05\x00\x14\x00\x01\x00\x02\x00\x11\x00\x04\x00\x05\x00\x11\x00\x0d\x00\x0e\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\x14\x00\x11\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x07\x00\x04\x00\x05\x00\x01\x00\x08\x00\x0b\x00\x00\x00\x05\x00\x09\x00\x01\x00\x02\x00\x00\x00\x04\x00\x05\x00\x11\x00\x0d\x00\x0e\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\x08\x00\x0b\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x0b\x00\x04\x00\x05\x00\x01\x00\x01\x00\x0b\x00\x00\x00\x05\x00\x05\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\x0d\x00\x0d\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x01\x00\x01\x00\xff\xff\xff\xff\x05\x00\x05\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\x0d\x00\x0d\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x01\x00\x01\x00\xff\xff\xff\xff\x05\x00\x05\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\x0d\x00\x0d\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x01\x00\x01\x00\xff\xff\xff\xff\x05\x00\x05\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\x0d\x00\x0d\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\x1a\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\x1a\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\x1a\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\x1a\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\xff\xff\x1a\x00\x14\x00\x15\x00\x16\x00\x17\x00\x01\x00\x02\x00\x1a\x00\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x14\x00\x15\x00\x16\x00\xff\xff\x11\x00\xff\xff\x1a\x00\x14\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x1a\x00\x14\x00\x15\x00\xff\xff\xff\xff\x01\x00\x02\x00\x1a\x00\x04\x00\x05\x00\xff\xff\x11\x00\x01\x00\x02\x00\x14\x00\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\x1a\x00\xff\xff\xff\xff\xff\xff\x14\x00\x15\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x14\x00\x15\x00\xff\xff\xff\xff\x01\x00\x02\x00\x1a\x00\x04\x00\x05\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\x14\x00\x04\x00\x05\x00\xff\xff\xff\xff\x14\x00\x1a\x00\xff\xff\xff\xff\xff\xff\x14\x00\x1a\x00\x01\x00\x02\x00\x01\x00\x04\x00\x05\x00\x14\x00\x05\x00\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x0d\x00\xff\xff\x0f\x00\x10\x00\xff\xff\x14\x00\x0d\x00\xff\xff\x0f\x00\x10\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# happyTable :: HappyAddr -happyTable = HappyA# "\x00\x00\x49\x00\xb7\x00\x1c\x00\x2c\x00\xc9\x00\x9f\x00\x7e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x7c\x00\xd8\x00\xa0\x00\x31\x00\xa1\x00\xfe\x00\x46\x00\x9f\x00\xfc\x00\x32\x00\x33\x00\x80\x00\x35\x00\x36\x00\x37\x00\x81\x00\x9c\x00\x63\x00\xb2\x00\x45\x00\xb5\x00\xd8\x00\xb6\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xca\x00\x2b\x00\x41\x00\x1c\x00\x2c\x00\xb8\x00\x7c\x00\x8c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x45\x00\x46\x00\xff\xff\x31\x00\x63\x00\xff\xff\x9d\x00\x7a\x00\x5d\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xcf\x00\x39\x00\x5e\x00\xd0\x00\xb0\x00\x68\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x45\x00\x40\x00\x41\x00\x45\x00\x42\x00\x1c\x00\xb4\x00\x5d\x00\x43\x00\x64\x00\x44\x00\x2b\x00\x45\x00\x46\x00\x2c\x00\x1c\x00\x65\x00\x5e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x68\x00\x69\x00\x1c\x00\x31\x00\xa6\x00\x45\x00\x7c\x00\x7d\x00\xb3\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xa0\x00\x39\x00\xa1\x00\x0e\x01\x63\x00\x0f\x01\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xb1\x00\x40\x00\x41\x00\xad\x00\x42\x00\x1c\x00\xff\xff\x5d\x00\x43\x00\x64\x00\x44\x00\x2b\x00\x45\x00\x46\x00\x2c\x00\xaa\x00\x89\x00\x5e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xa9\x00\x5d\x00\x1c\x00\x31\x00\x1c\x00\x45\x00\x7c\x00\x91\x00\x64\x00\x32\x00\x33\x00\x5e\x00\x35\x00\x36\x00\x37\x00\x1d\x01\x5c\x00\x1d\x00\xa4\x00\x7f\x00\xa3\x00\x45\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x49\x00\x40\x00\x41\x00\x2c\x00\x42\x00\xba\xff\x9e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x1c\x00\x45\x00\x46\x00\x31\x00\x7c\x00\x85\x00\xff\xff\x1c\x00\x5d\x00\x32\x00\x33\x00\x57\x00\x35\x00\x36\x00\x37\x00\xff\xff\x9c\x00\x9d\x00\x5e\x00\x58\x00\x5f\x00\x59\x00\x5a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x45\x00\x1c\x00\x41\x00\x94\x00\x1c\x00\x7c\x00\x83\x00\x2b\x00\x8b\x00\xba\xff\x2c\x00\xff\xff\x45\x00\x46\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x93\x00\x1c\x00\x1d\x00\x31\x00\x1e\x00\x1f\x00\xff\xff\x1c\x00\x45\x00\x32\x00\x33\x00\x8a\x00\x35\x00\x36\x00\x37\x00\x1c\x00\x1d\x00\x1c\x00\x1e\x00\x1f\x00\x50\x00\x86\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x49\x00\x40\x00\x41\x00\x2c\x00\x42\x00\x1c\x00\x9a\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x1c\x00\x45\x00\x46\x00\x31\x00\x7c\x00\xd9\x00\x68\x00\x82\x00\x45\x00\x32\x00\x33\x00\xff\xff\x35\x00\x36\x00\x37\x00\x1c\x00\x1d\x00\x7a\x00\x1e\x00\x1f\x00\x68\x00\xda\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x49\x00\x40\x00\x41\x00\x2c\x00\x68\x00\xe8\x00\xaa\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x45\x00\x45\x00\x46\x00\x31\x00\xff\xff\xe5\x00\xe4\x00\x1c\x00\xe3\x00\x32\x00\x33\x00\x57\x00\x35\x00\x36\x00\x37\x00\xe2\x00\x9c\x00\xe1\x00\xdd\x00\x58\x00\x68\x00\x59\x00\xab\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x49\x00\xdc\x00\x41\x00\x2c\x00\x45\x00\xd8\x00\xd9\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x9f\x00\x45\x00\x46\x00\x31\x00\x5c\x00\x5c\x00\xd7\x00\xcc\x00\x5c\x00\x32\x00\x33\x00\xc5\x00\x35\x00\x36\x00\x37\x00\xef\x00\xed\x00\x1c\x00\xc3\x00\xeb\x00\xc2\x00\x57\x00\xc1\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x02\x01\x58\x00\x41\x00\x59\x00\x99\x00\x00\x01\xff\x00\x5d\x00\x5d\x00\xfa\x00\x1c\x00\x5d\x00\x45\x00\x46\x00\x57\x00\xf7\x00\xf6\x00\x5e\x00\x5e\x00\x5f\x00\x5f\x00\x5e\x00\x58\x00\x5f\x00\x59\x00\xed\x00\xf9\x00\x45\x00\x45\x00\x1c\x00\x1d\x00\x45\x00\x1e\x00\x1f\x00\xf2\x00\x1d\x01\x16\x01\x1c\x00\x1c\x01\x1a\x01\x18\x01\x15\x01\x14\x01\x1c\x00\x1d\x00\x20\x00\x1e\x00\x1f\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x1c\x00\x1d\x00\x20\x00\x1e\x00\x1f\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xbf\x00\x12\x01\x0c\x01\x20\x00\x51\x00\x52\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x53\x00\x1c\x00\x1d\x00\x08\x01\x1e\x00\x1f\x00\x07\x01\x06\x01\x2b\x01\x28\x01\x26\x01\x23\x01\x1c\x00\x1d\x00\x2a\x01\x1e\x00\x1f\x00\x20\x00\x51\x00\xd5\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x53\x00\x20\x00\x51\x00\xd3\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x53\x00\x1c\x00\x1d\x00\x29\x01\x1e\x00\x1f\x00\x25\x01\x21\x01\x45\x00\x37\x01\x35\x01\x33\x01\x1c\x00\x1d\x00\x32\x01\x1e\x00\x1f\x00\x20\x00\x51\x00\xc6\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xc7\x00\x20\x00\x54\x00\x31\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x53\x00\x1c\x00\x1d\x00\x2c\x01\x1e\x00\x1f\x00\x1c\x00\x2f\x01\x30\x01\x3e\x01\x57\x00\x3d\x01\x1c\x00\x1d\x00\x42\x01\x1e\x00\xae\x00\x20\x00\x60\x00\x61\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x46\x00\x20\x00\x44\x01\x43\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xa1\x00\x1c\x00\x1d\x00\x46\x01\x1e\x00\x1f\x00\x1c\x00\x48\x01\x7a\x00\x66\x00\x57\x00\x78\x00\x1c\x00\x1d\x00\x88\x00\x1e\x00\x1f\x00\x20\x00\x97\x00\x98\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xa7\x00\x20\x00\x77\x00\x87\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xa1\x00\x1c\x00\x1d\x00\x84\x00\x1e\x00\x1f\x00\x1c\x00\xdf\x00\xde\x00\xdd\x00\x57\x00\x00\x00\x1c\x00\x1d\x00\xe7\x00\x1e\x00\x1f\x00\x20\x00\x60\x00\x95\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x90\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x8f\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x1c\x00\x1c\x00\x00\x00\x00\x00\x57\x00\x57\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x63\x00\xa4\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x8e\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x8d\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x1c\x00\x1c\x00\x00\x00\x00\x00\x57\x00\x57\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x96\x00\x94\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xd4\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xd0\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x1c\x00\x1c\x00\x00\x00\x00\x00\x57\x00\x57\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\xcd\x00\xcc\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xc5\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x04\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x1c\x00\x1c\x00\x00\x00\x00\x00\x57\x00\x57\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\xca\x00\xc3\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x03\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x02\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\xf3\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xfc\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xfa\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xf7\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xf4\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xf2\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xf0\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xef\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe6\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe5\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x1a\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x18\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x16\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x10\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x0f\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x0c\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x0a\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x09\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x08\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x26\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x23\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x21\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x1f\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x1e\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x35\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x33\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x2d\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x2c\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x3b\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x38\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x37\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x40\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x3f\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x44\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x46\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x49\x00\x4a\x00\x27\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x49\x00\xbe\x00\x27\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x49\x00\xb9\x00\x27\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x49\x00\xb8\x00\x27\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x49\x00\x00\x01\x27\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x49\x00\x3e\x01\x27\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x49\x00\x3a\x01\x27\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x49\x00\x39\x01\x27\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x21\x00\x22\x00\x23\x00\x24\x00\x4b\x00\x00\x00\x4c\x00\x21\x00\x22\x00\x23\x00\x24\x00\xd1\x00\x00\x00\x4c\x00\x21\x00\x22\x00\x23\x00\x24\x00\xbd\x00\x00\x00\x4c\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x21\x00\x22\x00\x23\x00\x24\x00\x12\x01\x00\x00\x4c\x00\x21\x00\x22\x00\x23\x00\x4d\x00\x00\x00\x00\x00\x4c\x00\x21\x00\x22\x00\x23\x00\xbc\x00\x1c\x00\x1d\x00\x4c\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x21\x00\x22\x00\x4e\x00\x00\x00\x55\x00\x00\x00\x4c\x00\x21\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x56\x00\x21\x00\x4f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x4c\x00\x1e\x00\x1f\x00\x00\x00\xad\x00\x1c\x00\x1d\x00\x21\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x21\x00\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x21\x00\xba\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x4c\x00\x1e\x00\x1f\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x21\x00\x1e\x00\x1f\x00\x00\x00\x1c\x00\x21\x00\x47\x00\x00\x00\x57\x00\x1c\x00\xa6\x00\xd2\x00\x00\x00\x57\x00\x00\x00\x00\x00\x58\x00\x9a\x00\x59\x00\xeb\x00\x00\x00\x58\x00\x00\x00\x59\x00\xe9\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x00\x00\x00\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x49\x00\xb7\x00\x1c\x00\x2c\x00\xc9\x00\x9f\x00\x7e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x7c\x00\xd8\x00\xa0\x00\x31\x00\xa1\x00\xfe\x00\x46\x00\x9f\x00\xfc\x00\x32\x00\x33\x00\x45\x00\x35\x00\x36\x00\x37\x00\x38\x00\x9c\x00\x63\x00\xb2\x00\x7c\x00\xb5\x00\xd8\x00\xb6\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xca\x00\x2b\x00\x41\x00\x1c\x00\x2c\x00\xb8\x00\x7a\x00\x8c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x45\x00\x46\x00\xff\xff\x31\x00\x63\x00\xff\xff\x9d\x00\x45\x00\x5d\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xcf\x00\x39\x00\x5e\x00\xd0\x00\xb0\x00\x68\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x45\x00\x40\x00\x41\x00\x1c\x00\x42\x00\x1c\x00\xb4\x00\x5d\x00\x43\x00\x64\x00\x44\x00\x2b\x00\x45\x00\x46\x00\x2c\x00\xb3\x00\x65\x00\x5e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x68\x00\x69\x00\x1c\x00\x31\x00\xa6\x00\x45\x00\x7c\x00\x7d\x00\xff\xff\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xa0\x00\x39\x00\xa1\x00\x0e\x01\x63\x00\x0f\x01\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xb1\x00\x40\x00\x41\x00\xad\x00\x42\x00\x1c\x00\xaa\x00\x5d\x00\x43\x00\x64\x00\x44\x00\x2b\x00\x45\x00\x46\x00\x2c\x00\xa9\x00\x89\x00\x5e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x80\x00\x5d\x00\x1c\x00\x31\x00\x81\x00\x45\x00\x7c\x00\x91\x00\xa4\x00\x32\x00\x33\x00\x5e\x00\x35\x00\x36\x00\x37\x00\x38\x00\x5c\x00\x1d\x00\xa3\x00\x7f\x00\x9d\x00\x45\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x49\x00\x40\x00\x41\x00\x2c\x00\x42\x00\xba\xff\x9e\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x1c\x00\x45\x00\x46\x00\x31\x00\x7c\x00\x85\x00\xff\xff\x1c\x00\x5d\x00\x32\x00\x33\x00\x57\x00\x35\x00\x36\x00\x37\x00\x38\x00\x9c\x00\xff\xff\x5e\x00\x58\x00\x5f\x00\x59\x00\x5a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x45\x00\x1c\x00\x41\x00\x94\x00\x1c\x00\x7c\x00\x83\x00\x2b\x00\x8b\x00\xba\xff\x2c\x00\xff\xff\x45\x00\x46\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x93\x00\x1c\x00\x1d\x00\x31\x00\x1e\x00\x1f\x00\xff\xff\x1c\x00\x45\x00\x32\x00\x33\x00\x57\x00\x35\x00\x36\x00\x37\x00\x38\x00\x68\x00\x82\x00\x1c\x00\x58\x00\x50\x00\x5f\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x49\x00\x40\x00\x41\x00\x2c\x00\x42\x00\x68\x00\xda\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x45\x00\x45\x00\x46\x00\x31\x00\x1c\x00\x68\x00\xe8\x00\x1c\x00\x57\x00\x32\x00\x33\x00\x8a\x00\x35\x00\x36\x00\x37\x00\x38\x00\x58\x00\x1c\x00\x59\x00\xab\x00\xff\xff\x86\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x49\x00\x40\x00\x41\x00\x2c\x00\x7a\x00\x45\x00\xff\xff\x2d\x00\x2e\x00\x2f\x00\x30\x00\x1c\x00\x45\x00\x46\x00\x31\x00\x7c\x00\xd9\x00\xe2\x00\x1c\x00\xe5\x00\x32\x00\x33\x00\x57\x00\x35\x00\x36\x00\x37\x00\x38\x00\x9c\x00\xe4\x00\xe3\x00\x58\x00\x68\x00\x59\x00\x99\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x49\x00\xe1\x00\x41\x00\x2c\x00\xdd\x00\x45\x00\xdc\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xd8\x00\x45\x00\x46\x00\x31\x00\xd9\x00\x5c\x00\x5c\x00\xc5\x00\xd7\x00\x32\x00\x33\x00\x5c\x00\x35\x00\x36\x00\x37\x00\x38\x00\xef\x00\xed\x00\xcc\x00\xc3\x00\xc2\x00\xc1\x00\xeb\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x9f\x00\x02\x01\x41\x00\x1c\x00\x1d\x00\x00\x01\x1e\x00\x1f\x00\x5d\x00\x5d\x00\xff\x00\x1c\x00\x45\x00\x46\x00\x5d\x00\x57\x00\xfa\x00\xf9\x00\x5e\x00\x5e\x00\x5f\x00\x5f\x00\x9a\x00\x63\x00\x5e\x00\xf6\x00\x5f\x00\x1c\x00\x45\x00\x45\x00\xf7\x00\x57\x00\x1c\x00\x1d\x00\x45\x00\x1e\x00\x1f\x00\xf2\x00\x1c\x00\x58\x00\x1d\x01\x59\x00\xed\x00\x1c\x01\x1a\x01\x18\x01\x1c\x00\x1d\x00\x20\x00\x1e\x00\x1f\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x1c\x00\x1d\x00\x20\x00\x1e\x00\x1f\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xbf\x00\x16\x01\x15\x01\x20\x00\x51\x00\x52\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x53\x00\x1c\x00\x1d\x00\x1c\x00\x1e\x00\x1f\x00\x14\x01\x64\x00\x12\x01\x0c\x01\x08\x01\x07\x01\x1c\x00\x1d\x00\x1d\x01\x1e\x00\x1f\x00\x20\x00\x51\x00\xd5\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x53\x00\x20\x00\x51\x00\xd3\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x53\x00\x1c\x00\x1d\x00\x06\x01\x1e\x00\x1f\x00\x2b\x01\x2a\x01\x29\x01\x28\x01\x26\x01\x25\x01\x1c\x00\x1d\x00\x45\x00\x1e\x00\x1f\x00\x20\x00\x51\x00\xc6\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xc7\x00\x20\x00\x54\x00\x23\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x53\x00\x1c\x00\x1d\x00\x21\x01\x1e\x00\x1f\x00\x1c\x00\x37\x01\x35\x01\x33\x01\x57\x00\x32\x01\x1c\x00\x1d\x00\x31\x01\x1e\x00\xae\x00\x20\x00\x60\x00\x61\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x46\x00\x20\x00\x30\x01\x2f\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xa1\x00\x1c\x00\x1d\x00\x2c\x01\x1e\x00\x1f\x00\x1c\x00\x3e\x01\x3d\x01\x42\x01\x57\x00\x44\x01\x1c\x00\x1d\x00\x43\x01\x1e\x00\x1f\x00\x20\x00\x97\x00\x98\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xa7\x00\x20\x00\x46\x01\x48\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xa1\x00\x1c\x00\x1d\x00\x7a\x00\x1e\x00\x1f\x00\x1c\x00\x78\x00\x66\x00\x88\x00\x57\x00\x77\x00\x1c\x00\x1d\x00\x87\x00\x1e\x00\x1f\x00\x20\x00\x60\x00\x95\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x90\x00\x20\x00\x84\x00\xdf\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x8f\x00\x1c\x00\x1d\x00\xde\x00\x1e\x00\x1f\x00\x1c\x00\x1c\x00\xdd\x00\xe7\x00\x57\x00\x57\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\xa4\x00\x96\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x8e\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x8d\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x1c\x00\x1c\x00\x00\x00\x00\x00\x57\x00\x57\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x94\x00\xcd\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xd4\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xd0\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x1c\x00\x1c\x00\x00\x00\x00\x00\x57\x00\x57\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\xcc\x00\xca\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xc5\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x04\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x1c\x00\x1c\x00\x00\x00\x00\x00\x57\x00\x57\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\xc3\x00\xf3\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x03\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x02\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xfc\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xfa\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xf7\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xf4\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xf2\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xf0\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xef\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe6\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe5\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x1a\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x18\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x16\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x10\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x0f\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x0c\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x0a\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x09\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x08\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x26\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x23\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x21\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x1f\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x1e\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x35\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x33\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x2d\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x2c\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x3b\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x38\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x37\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x40\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x3f\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x44\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x46\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x49\x00\x4a\x00\x27\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x49\x00\xbe\x00\x27\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x49\x00\xb9\x00\x27\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x49\x00\xb8\x00\x27\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x49\x00\x00\x01\x27\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x49\x00\x3e\x01\x27\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x49\x00\x3a\x01\x27\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x49\x00\x39\x01\x27\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x21\x00\x22\x00\x23\x00\x24\x00\x4b\x00\x00\x00\x4c\x00\x21\x00\x22\x00\x23\x00\x24\x00\xd1\x00\x00\x00\x4c\x00\x21\x00\x22\x00\x23\x00\x24\x00\xbd\x00\x00\x00\x4c\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x21\x00\x22\x00\x23\x00\x24\x00\x12\x01\x00\x00\x4c\x00\x21\x00\x22\x00\x23\x00\x4d\x00\x00\x00\x00\x00\x4c\x00\x21\x00\x22\x00\x23\x00\xbc\x00\x1c\x00\x1d\x00\x4c\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x21\x00\x22\x00\x4e\x00\x00\x00\x55\x00\x00\x00\x4c\x00\x21\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x56\x00\x21\x00\x4f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x4c\x00\x1e\x00\x1f\x00\x00\x00\xad\x00\x1c\x00\x1d\x00\x21\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x21\x00\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x21\x00\xba\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x4c\x00\x1e\x00\x1f\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x21\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x21\x00\x47\x00\x00\x00\x00\x00\x00\x00\xaa\x00\xd2\x00\x1c\x00\x1d\x00\x1c\x00\x1e\x00\x1f\x00\xa6\x00\x57\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\xeb\x00\x00\x00\x9a\x00\x58\x00\x00\x00\x59\x00\xe9\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x00\x00\x00\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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 = Happy_Data_Array.array (26, 128) [ (26 , happyReduce_26), @@ -1081,8 +1081,15 @@ happyReduction_90 (happy_x_10 `HappyStk` ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.recOr (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9)) ) `HappyStk` happyRest}}}}} -happyReduce_91 = happyReduce 5# 20# happyReduction_91 -happyReduction_91 (happy_x_5 `HappyStk` +happyReduce_91 = happySpecReduce_1 20# happyReduction_91 +happyReduction_91 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn49 + ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1))) + )} + +happyReduce_92 = happyReduce 5# 20# happyReduction_92 +happyReduction_92 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -1095,8 +1102,8 @@ happyReduction_91 (happy_x_5 `HappyStk` ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.typeExtension (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4)) ) `HappyStk` happyRest}}} -happyReduce_92 = happyReduce 5# 20# happyReduction_92 -happyReduction_92 (happy_x_5 `HappyStk` +happyReduce_93 = happyReduce 5# 20# happyReduction_93 +happyReduction_93 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -1109,22 +1116,22 @@ happyReduction_92 (happy_x_5 `HappyStk` ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Pair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4)) ) `HappyStk` happyRest}}} -happyReduce_93 = happySpecReduce_1 20# happyReduction_93 -happyReduction_93 happy_x_1 +happyReduce_94 = happySpecReduce_1 20# happyReduction_94 +happyReduction_94 happy_x_1 = case happyOutTok happy_x_1 of { happy_var_1 -> happyIn49 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Unit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1))) )} -happyReduce_94 = happySpecReduce_1 20# happyReduction_94 -happyReduction_94 happy_x_1 +happyReduce_95 = happySpecReduce_1 20# happyReduction_95 +happyReduction_95 happy_x_1 = case happyOutTok happy_x_1 of { happy_var_1 -> happyIn49 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Refl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1))) )} -happyReduce_95 = happySpecReduce_3 20# happyReduction_95 -happyReduction_95 happy_x_3 +happyReduce_96 = happySpecReduce_3 20# happyReduction_96 +happyReduction_96 happy_x_3 happy_x_2 happy_x_1 = case happyOutTok happy_x_1 of { happy_var_1 -> @@ -1133,8 +1140,8 @@ happyReduction_95 happy_x_3 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTerm (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2)) )}} -happyReduce_96 = happyReduce 5# 20# happyReduction_96 -happyReduction_96 (happy_x_5 `HappyStk` +happyReduce_97 = happyReduce 5# 20# happyReduction_97 +happyReduction_97 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -1147,8 +1154,8 @@ happyReduction_96 (happy_x_5 `HappyStk` ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4)) ) `HappyStk` happyRest}}} -happyReduce_97 = happyReduce 14# 20# happyReduction_97 -happyReduction_97 (happy_x_14 `HappyStk` +happyReduce_98 = happyReduce 14# 20# happyReduction_98 +happyReduction_98 (happy_x_14 `HappyStk` happy_x_13 `HappyStk` happy_x_12 `HappyStk` happy_x_11 `HappyStk` @@ -1174,22 +1181,22 @@ happyReduction_97 (happy_x_14 `HappyStk` ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.IdJ (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9) (snd happy_var_11) (snd happy_var_13)) ) `HappyStk` happyRest}}}}}}} -happyReduce_98 = happySpecReduce_1 20# happyReduction_98 -happyReduction_98 happy_x_1 +happyReduce_99 = happySpecReduce_1 20# happyReduction_99 +happyReduction_99 happy_x_1 = case happyOut33 happy_x_1 of { (HappyWrap33 happy_var_1) -> happyIn49 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Hole (fst happy_var_1) (snd happy_var_1)) )} -happyReduce_99 = happySpecReduce_1 20# happyReduction_99 -happyReduction_99 happy_x_1 +happyReduce_100 = happySpecReduce_1 20# happyReduction_100 +happyReduction_100 happy_x_1 = case happyOut34 happy_x_1 of { (HappyWrap34 happy_var_1) -> happyIn49 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Var (fst happy_var_1) (snd happy_var_1)) )} -happyReduce_100 = happySpecReduce_3 20# happyReduction_100 -happyReduction_100 happy_x_3 +happyReduce_101 = happySpecReduce_3 20# happyReduction_101 +happyReduction_101 happy_x_3 happy_x_2 happy_x_1 = case happyOutTok happy_x_1 of { happy_var_1 -> @@ -1198,8 +1205,8 @@ happyReduction_100 happy_x_3 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), (snd happy_var_2)) )}} -happyReduce_101 = happySpecReduce_3 21# happyReduction_101 -happyReduction_101 happy_x_3 +happyReduce_102 = happySpecReduce_3 21# happyReduction_102 +happyReduction_102 happy_x_3 happy_x_2 happy_x_1 = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> @@ -1208,15 +1215,15 @@ happyReduction_101 happy_x_3 ((fst happy_var_1, Language.Rzk.Syntax.Abs.CubeProduct (fst happy_var_1) (snd happy_var_1) (snd happy_var_3)) )}} -happyReduce_102 = happySpecReduce_1 21# happyReduction_102 -happyReduction_102 happy_x_1 +happyReduce_103 = happySpecReduce_1 21# happyReduction_103 +happyReduction_103 happy_x_1 = case happyOut55 happy_x_1 of { (HappyWrap55 happy_var_1) -> happyIn50 ((fst happy_var_1, (snd happy_var_1)) )} -happyReduce_103 = happySpecReduce_3 22# happyReduction_103 -happyReduction_103 happy_x_3 +happyReduce_104 = happySpecReduce_3 22# happyReduction_104 +happyReduction_104 happy_x_3 happy_x_2 happy_x_1 = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> @@ -1225,8 +1232,8 @@ happyReduction_103 happy_x_3 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3)) )}} -happyReduce_104 = happySpecReduce_3 22# happyReduction_104 -happyReduction_104 happy_x_3 +happyReduce_105 = happySpecReduce_3 22# happyReduction_105 +happyReduction_105 happy_x_3 happy_x_2 happy_x_1 = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> @@ -1235,15 +1242,15 @@ happyReduction_104 happy_x_3 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeLEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3)) )}} -happyReduce_105 = happySpecReduce_1 22# happyReduction_105 -happyReduction_105 happy_x_1 +happyReduce_106 = happySpecReduce_1 22# happyReduction_106 +happyReduction_106 happy_x_1 = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> happyIn51 ((fst happy_var_1, (snd happy_var_1)) )} -happyReduce_106 = happySpecReduce_3 23# happyReduction_106 -happyReduction_106 happy_x_3 +happyReduce_107 = happySpecReduce_3 23# happyReduction_107 +happyReduction_107 happy_x_3 happy_x_2 happy_x_1 = case happyOut51 happy_x_1 of { (HappyWrap51 happy_var_1) -> @@ -1252,15 +1259,15 @@ happyReduction_106 happy_x_3 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeAnd (fst happy_var_1) (snd happy_var_1) (snd happy_var_3)) )}} -happyReduce_107 = happySpecReduce_1 23# happyReduction_107 -happyReduction_107 happy_x_1 +happyReduce_108 = happySpecReduce_1 23# happyReduction_108 +happyReduction_108 happy_x_1 = case happyOut51 happy_x_1 of { (HappyWrap51 happy_var_1) -> happyIn52 ((fst happy_var_1, (snd happy_var_1)) )} -happyReduce_108 = happySpecReduce_3 24# happyReduction_108 -happyReduction_108 happy_x_3 +happyReduce_109 = happySpecReduce_3 24# happyReduction_109 +happyReduction_109 happy_x_3 happy_x_2 happy_x_1 = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> @@ -1269,15 +1276,15 @@ happyReduction_108 happy_x_3 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeOr (fst happy_var_1) (snd happy_var_1) (snd happy_var_3)) )}} -happyReduce_109 = happySpecReduce_1 24# happyReduction_109 -happyReduction_109 happy_x_1 +happyReduce_110 = happySpecReduce_1 24# happyReduction_110 +happyReduction_110 happy_x_1 = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> happyIn53 ((fst happy_var_1, (snd happy_var_1)) )} -happyReduce_110 = happySpecReduce_3 25# happyReduction_110 -happyReduction_110 happy_x_3 +happyReduce_111 = happySpecReduce_3 25# happyReduction_111 +happyReduction_111 happy_x_3 happy_x_2 happy_x_1 = case happyOut46 happy_x_1 of { (HappyWrap46 happy_var_1) -> @@ -1286,8 +1293,8 @@ happyReduction_110 happy_x_3 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeFun (fst happy_var_1) (snd happy_var_1) (snd happy_var_3)) )}} -happyReduce_111 = happyReduce 8# 25# happyReduction_111 -happyReduction_111 (happy_x_8 `HappyStk` +happyReduce_112 = happyReduce 8# 25# happyReduction_112 +happyReduction_112 (happy_x_8 `HappyStk` happy_x_7 `HappyStk` happy_x_6 `HappyStk` happy_x_5 `HappyStk` @@ -1304,13 +1311,6 @@ happyReduction_111 (happy_x_8 `HappyStk` ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8)) ) `HappyStk` happyRest}}}} -happyReduce_112 = happySpecReduce_1 25# happyReduction_112 -happyReduction_112 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn54 - ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1))) - )} - happyReduce_113 = happyReduce 5# 25# happyReduction_113 happyReduction_113 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` diff --git a/rzk/src/Language/Rzk/Syntax/Par.info b/rzk/src/Language/Rzk/Syntax/Par.info index e30272c7f..e79fe38ff 100644 --- a/rzk/src/Language/Rzk/Syntax/Par.info +++ b/rzk/src/Language/Rzk/Syntax/Par.info @@ -97,28 +97,28 @@ Grammar Term7 -> 'recBOT' (88) Term7 -> 'recOR' '(' ListRestriction ')' (89) Term7 -> 'recOR' '(' Term ',' Term ',' Term ',' Term ')' (90) - Term7 -> '<' ParamDecl '->' Term '>' (91) - Term7 -> '(' Term ',' Term ')' (92) - Term7 -> 'unit' (93) - Term7 -> 'refl' (94) - Term7 -> 'refl_{' Term '}' (95) - Term7 -> 'refl_{' Term ':' Term '}' (96) - Term7 -> 'idJ' '(' Term ',' Term ',' Term ',' Term ',' Term ',' Term ')' (97) - Term7 -> HoleIdent (98) - Term7 -> VarIdent (99) - Term7 -> '(' Term ')' (100) - Term5 -> Term5 '*' Term6 (101) - Term5 -> Term6 (102) - Term4 -> Term5 '===' Term5 (103) - Term4 -> Term5 '<=' Term5 (104) - Term4 -> Term5 (105) - Term3 -> Term4 '/\\' Term3 (106) - Term3 -> Term4 (107) - Term2 -> Term3 '\\/' Term2 (108) - Term2 -> Term3 (109) - Term1 -> ParamDecl '->' Term1 (110) - Term1 -> 'Sigma' '(' Pattern ':' Term ')' ',' Term1 (111) - Term1 -> 'Unit' (112) + Term7 -> 'Unit' (91) + Term7 -> '<' ParamDecl '->' Term '>' (92) + Term7 -> '(' Term ',' Term ')' (93) + Term7 -> 'unit' (94) + Term7 -> 'refl' (95) + Term7 -> 'refl_{' Term '}' (96) + Term7 -> 'refl_{' Term ':' Term '}' (97) + Term7 -> 'idJ' '(' Term ',' Term ',' Term ',' Term ',' Term ',' Term ')' (98) + Term7 -> HoleIdent (99) + Term7 -> VarIdent (100) + Term7 -> '(' Term ')' (101) + Term5 -> Term5 '*' Term6 (102) + Term5 -> Term6 (103) + Term4 -> Term5 '===' Term5 (104) + Term4 -> Term5 '<=' Term5 (105) + Term4 -> Term5 (106) + Term3 -> Term4 '/\\' Term3 (107) + Term3 -> Term4 (108) + Term2 -> Term3 '\\/' Term2 (109) + Term2 -> Term3 (110) + Term1 -> ParamDecl '->' Term1 (111) + Term1 -> 'Sigma' '(' Pattern ':' Term ')' ',' Term1 (112) Term1 -> Term2 '=_{' Term '}' Term2 (113) Term1 -> Term2 '=' Term2 (114) Term1 -> '\\' ListParam '->' Term1 (115) @@ -257,12 +257,12 @@ Non-terminals ParamDecl rules 69, 70, 71, 72, 73, 74 Restriction rule 75 ListRestriction rules 76, 77 - Term7 rules 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100 - Term5 rules 101, 102 - Term4 rules 103, 104, 105 - Term3 rules 106, 107 - Term2 rules 108, 109 - Term1 rules 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 + Term7 rules 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101 + Term5 rules 102, 103 + Term4 rules 104, 105, 106 + Term3 rules 107, 108 + Term2 rules 109, 110 + Term1 rules 111, 112, 113, 114, 115, 116, 117, 118, 119 Term6 rules 120, 121, 122, 123, 124 Term rules 125, 126 ListTerm rules 127, 128 @@ -459,6 +459,7 @@ State 14 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 'first' shift, and enter state 57 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 @@ -592,6 +593,7 @@ State 17 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 'recOR' shift, and enter state 60 @@ -623,6 +625,7 @@ State 18 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 'first' shift, and enter state 57 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 @@ -658,6 +661,7 @@ State 19 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 'first' shift, and enter state 57 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 @@ -694,6 +698,7 @@ State 20 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 'first' shift, and enter state 57 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 @@ -731,6 +736,7 @@ State 21 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 'first' shift, and enter state 57 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 @@ -815,6 +821,7 @@ State 23 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 'first' shift, and enter state 57 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 @@ -973,6 +980,7 @@ State 28 'TOP' reduce using rule 31 'TOPE' reduce using rule 31 'U' reduce using rule 31 + 'Unit' reduce using rule 31 '[' reduce using rule 31 '\\/' reduce using rule 31 ']' reduce using rule 31 @@ -1024,6 +1032,7 @@ State 29 'TOP' reduce using rule 30 'TOPE' reduce using rule 30 'U' reduce using rule 30 + 'Unit' reduce using rule 30 '[' reduce using rule 30 '\\/' reduce using rule 30 ']' reduce using rule 30 @@ -1045,55 +1054,7 @@ State 29 State 30 - Term7 -> HoleIdent . (rule 98) - - '(' reduce using rule 98 - ')' reduce using rule 98 - '*' reduce using rule 98 - '*_1' reduce using rule 98 - ',' reduce using rule 98 - '->' reduce using rule 98 - '/\\' reduce using rule 98 - '0_2' reduce using rule 98 - '1' reduce using rule 98 - '1_2' reduce using rule 98 - '2' reduce using rule 98 - ':' reduce using rule 98 - ':=' reduce using rule 98 - ';' reduce using rule 98 - '<' reduce using rule 98 - '<=' reduce using rule 98 - '=' reduce using rule 98 - '===' reduce using rule 98 - '=_{' reduce using rule 98 - '>' reduce using rule 98 - 'BOT' reduce using rule 98 - 'CUBE' reduce using rule 98 - 'TOP' reduce using rule 98 - 'TOPE' reduce using rule 98 - 'U' reduce using rule 98 - '[' reduce using rule 98 - '\\/' reduce using rule 98 - ']' reduce using rule 98 - 'as' reduce using rule 98 - 'idJ' reduce using rule 98 - 'recBOT' reduce using rule 98 - 'recOR' reduce using rule 98 - 'refl' reduce using rule 98 - 'refl_{' reduce using rule 98 - 'unit' reduce using rule 98 - '|' reduce using rule 98 - '|->' reduce using rule 98 - '}' reduce using rule 98 - '→' reduce using rule 98 - L_VarIdentTokenreduce using rule 98 - L_HoleIdentTokenreduce using rule 98 - %eof reduce using rule 98 - - -State 31 - - Term7 -> VarIdent . (rule 99) + Term7 -> HoleIdent . (rule 99) '(' reduce using rule 99 ')' reduce using rule 99 @@ -1120,6 +1081,7 @@ State 31 'TOP' reduce using rule 99 'TOPE' reduce using rule 99 'U' reduce using rule 99 + 'Unit' reduce using rule 99 '[' reduce using rule 99 '\\/' reduce using rule 99 ']' reduce using rule 99 @@ -1139,9 +1101,58 @@ State 31 %eof reduce using rule 99 +State 31 + + Term7 -> VarIdent . (rule 100) + + '(' reduce using rule 100 + ')' reduce using rule 100 + '*' reduce using rule 100 + '*_1' reduce using rule 100 + ',' reduce using rule 100 + '->' reduce using rule 100 + '/\\' reduce using rule 100 + '0_2' reduce using rule 100 + '1' reduce using rule 100 + '1_2' reduce using rule 100 + '2' reduce using rule 100 + ':' reduce using rule 100 + ':=' reduce using rule 100 + ';' reduce using rule 100 + '<' reduce using rule 100 + '<=' reduce using rule 100 + '=' reduce using rule 100 + '===' reduce using rule 100 + '=_{' reduce using rule 100 + '>' reduce using rule 100 + 'BOT' reduce using rule 100 + 'CUBE' reduce using rule 100 + 'TOP' reduce using rule 100 + 'TOPE' reduce using rule 100 + 'U' reduce using rule 100 + 'Unit' reduce using rule 100 + '[' reduce using rule 100 + '\\/' reduce using rule 100 + ']' reduce using rule 100 + 'as' reduce using rule 100 + 'idJ' reduce using rule 100 + 'recBOT' reduce using rule 100 + 'recOR' reduce using rule 100 + 'refl' reduce using rule 100 + 'refl_{' reduce using rule 100 + 'unit' reduce using rule 100 + '|' reduce using rule 100 + '|->' reduce using rule 100 + '}' reduce using rule 100 + '→' reduce using rule 100 + L_VarIdentTokenreduce using rule 100 + L_HoleIdentTokenreduce using rule 100 + %eof reduce using rule 100 + + State 32 - Term1 -> ParamDecl . '->' Term1 (rule 110) + Term1 -> ParamDecl . '->' Term1 (rule 111) Term1 -> ParamDecl . '→' Term1 (rule 117) '->' shift, and enter state 182 @@ -1177,6 +1188,7 @@ State 33 'TOP' reduce using rule 124 'TOPE' reduce using rule 124 'U' reduce using rule 124 + 'Unit' reduce using rule 124 '[' reduce using rule 124 '\\/' reduce using rule 124 ']' reduce using rule 124 @@ -1198,75 +1210,75 @@ State 33 State 34 - Term5 -> Term5 . '*' Term6 (rule 101) - Term4 -> Term5 . '===' Term5 (rule 103) - Term4 -> Term5 . '<=' Term5 (rule 104) - Term4 -> Term5 . (rule 105) + Term5 -> Term5 . '*' Term6 (rule 102) + Term4 -> Term5 . '===' Term5 (rule 104) + Term4 -> Term5 . '<=' Term5 (rule 105) + Term4 -> Term5 . (rule 106) - ')' reduce using rule 105 + ')' reduce using rule 106 '*' shift, and enter state 158 - ',' reduce using rule 105 - '/\\' reduce using rule 105 - ':' reduce using rule 105 - ':=' reduce using rule 105 - ';' reduce using rule 105 + ',' reduce using rule 106 + '/\\' reduce using rule 106 + ':' reduce using rule 106 + ':=' reduce using rule 106 + ';' reduce using rule 106 '<=' shift, and enter state 180 - '=' reduce using rule 105 + '=' reduce using rule 106 '===' shift, and enter state 181 - '=_{' reduce using rule 105 - '>' reduce using rule 105 - '\\/' reduce using rule 105 - ']' reduce using rule 105 - 'as' reduce using rule 105 - '|' reduce using rule 105 - '|->' reduce using rule 105 - '}' reduce using rule 105 - %eof reduce using rule 105 + '=_{' reduce using rule 106 + '>' reduce using rule 106 + '\\/' reduce using rule 106 + ']' reduce using rule 106 + 'as' reduce using rule 106 + '|' reduce using rule 106 + '|->' reduce using rule 106 + '}' reduce using rule 106 + %eof reduce using rule 106 State 35 - Term3 -> Term4 . '/\\' Term3 (rule 106) - Term3 -> Term4 . (rule 107) + Term3 -> Term4 . '/\\' Term3 (rule 107) + Term3 -> Term4 . (rule 108) - ')' reduce using rule 107 - ',' reduce using rule 107 + ')' reduce using rule 108 + ',' reduce using rule 108 '/\\' shift, and enter state 179 - ':' reduce using rule 107 - ':=' reduce using rule 107 - ';' reduce using rule 107 - '=' reduce using rule 107 - '=_{' reduce using rule 107 - '>' reduce using rule 107 - '\\/' reduce using rule 107 - ']' reduce using rule 107 - 'as' reduce using rule 107 - '|' reduce using rule 107 - '|->' reduce using rule 107 - '}' reduce using rule 107 - %eof reduce using rule 107 + ':' reduce using rule 108 + ':=' reduce using rule 108 + ';' reduce using rule 108 + '=' reduce using rule 108 + '=_{' reduce using rule 108 + '>' reduce using rule 108 + '\\/' reduce using rule 108 + ']' reduce using rule 108 + 'as' reduce using rule 108 + '|' reduce using rule 108 + '|->' reduce using rule 108 + '}' reduce using rule 108 + %eof reduce using rule 108 State 36 - Term2 -> Term3 . '\\/' Term2 (rule 108) - Term2 -> Term3 . (rule 109) + Term2 -> Term3 . '\\/' Term2 (rule 109) + Term2 -> Term3 . (rule 110) - ')' reduce using rule 109 - ',' reduce using rule 109 - ':' reduce using rule 109 - ':=' reduce using rule 109 - ';' reduce using rule 109 - '=' reduce using rule 109 - '=_{' reduce using rule 109 - '>' reduce using rule 109 + ')' reduce using rule 110 + ',' reduce using rule 110 + ':' reduce using rule 110 + ':=' reduce using rule 110 + ';' reduce using rule 110 + '=' reduce using rule 110 + '=_{' reduce using rule 110 + '>' reduce using rule 110 '\\/' shift, and enter state 178 - ']' reduce using rule 109 - 'as' reduce using rule 109 - '|' reduce using rule 109 - '|->' reduce using rule 109 - '}' reduce using rule 109 - %eof reduce using rule 109 + ']' reduce using rule 110 + 'as' reduce using rule 110 + '|' reduce using rule 110 + '|->' reduce using rule 110 + '}' reduce using rule 110 + %eof reduce using rule 110 State 37 @@ -1312,52 +1324,53 @@ State 38 State 39 ParamDecl -> Term6 . (rule 69) - Term5 -> Term6 . (rule 102) + Term5 -> Term6 . (rule 103) Term6 -> Term6 . '[' ListRestriction ']' (rule 120) Term6 -> Term6 . Term7 (rule 121) '(' shift, and enter state 72 - ')' reduce using rule 102 - '*' reduce using rule 102 + ')' reduce using rule 103 + '*' reduce using rule 103 '*_1' shift, and enter state 43 - ',' reduce using rule 102 + ',' reduce using rule 103 '->' reduce using rule 69 - '/\\' reduce using rule 102 + '/\\' reduce using rule 103 '0_2' shift, and enter state 44 '1' shift, and enter state 45 '1_2' shift, and enter state 46 '2' shift, and enter state 47 - ':' reduce using rule 102 - ':=' reduce using rule 102 - ';' reduce using rule 102 + ':' reduce using rule 103 + ':=' reduce using rule 103 + ';' reduce using rule 103 '<' shift, and enter state 48 - '<=' reduce using rule 102 - '=' reduce using rule 102 - '===' reduce using rule 102 - '=_{' reduce using rule 102 - '>' reduce using rule 102 + '<=' reduce using rule 103 + '=' reduce using rule 103 + '===' reduce using rule 103 + '=_{' reduce using rule 103 + '>' reduce using rule 103 'BOT' shift, and enter state 49 'CUBE' shift, and enter state 50 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 '[' shift, and enter state 155 - '\\/' reduce using rule 102 - ']' reduce using rule 102 - 'as' reduce using rule 102 + '\\/' reduce using rule 103 + ']' reduce using rule 103 + 'as' reduce using rule 103 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 'recOR' shift, and enter state 60 'refl' shift, and enter state 61 'refl_{' shift, and enter state 62 'unit' shift, and enter state 64 - '|' reduce using rule 102 - '|->' reduce using rule 102 - '}' reduce using rule 102 + '|' reduce using rule 103 + '|->' reduce using rule 103 + '}' reduce using rule 103 '→' reduce using rule 69 L_VarIdentTokenshift, and enter state 68 L_HoleIdentTokenshift, and enter state 69 - %eof reduce using rule 102 + %eof reduce using rule 103 VarIdentToken goto state 28 HoleIdentToken goto state 29 @@ -1385,8 +1398,8 @@ State 42 ParamDecl -> '(' . '_' ':' Term ')' (rule 70) ParamDecl -> '(' . VarIdent ':' Term ')' (rule 72) - Term7 -> '(' . Term ',' Term ')' (rule 92) - Term7 -> '(' . Term ')' (rule 100) + Term7 -> '(' . Term ',' Term ')' (rule 93) + Term7 -> '(' . Term ')' (rule 101) '(' shift, and enter state 42 '*_1' shift, and enter state 43 @@ -1461,6 +1474,7 @@ State 43 'TOP' reduce using rule 82 'TOPE' reduce using rule 82 'U' reduce using rule 82 + 'Unit' reduce using rule 82 '[' reduce using rule 82 '\\/' reduce using rule 82 ']' reduce using rule 82 @@ -1509,6 +1523,7 @@ State 44 'TOP' reduce using rule 84 'TOPE' reduce using rule 84 'U' reduce using rule 84 + 'Unit' reduce using rule 84 '[' reduce using rule 84 '\\/' reduce using rule 84 ']' reduce using rule 84 @@ -1557,6 +1572,7 @@ State 45 'TOP' reduce using rule 81 'TOPE' reduce using rule 81 'U' reduce using rule 81 + 'Unit' reduce using rule 81 '[' reduce using rule 81 '\\/' reduce using rule 81 ']' reduce using rule 81 @@ -1605,6 +1621,7 @@ State 46 'TOP' reduce using rule 85 'TOPE' reduce using rule 85 'U' reduce using rule 85 + 'Unit' reduce using rule 85 '[' reduce using rule 85 '\\/' reduce using rule 85 ']' reduce using rule 85 @@ -1653,6 +1670,7 @@ State 47 'TOP' reduce using rule 83 'TOPE' reduce using rule 83 'U' reduce using rule 83 + 'Unit' reduce using rule 83 '[' reduce using rule 83 '\\/' reduce using rule 83 ']' reduce using rule 83 @@ -1674,7 +1692,7 @@ State 47 State 48 - Term7 -> '<' . ParamDecl '->' Term '>' (rule 91) + Term7 -> '<' . ParamDecl '->' Term '>' (rule 92) '(' shift, and enter state 42 '*_1' shift, and enter state 43 @@ -1688,6 +1706,7 @@ State 48 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 'first' shift, and enter state 57 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 @@ -1737,6 +1756,7 @@ State 49 'TOP' reduce using rule 87 'TOPE' reduce using rule 87 'U' reduce using rule 87 + 'Unit' reduce using rule 87 '[' reduce using rule 87 '\\/' reduce using rule 87 ']' reduce using rule 87 @@ -1785,6 +1805,7 @@ State 50 'TOP' reduce using rule 79 'TOPE' reduce using rule 79 'U' reduce using rule 79 + 'Unit' reduce using rule 79 '[' reduce using rule 79 '\\/' reduce using rule 79 ']' reduce using rule 79 @@ -1806,7 +1827,7 @@ State 50 State 51 - Term1 -> 'Sigma' . '(' Pattern ':' Term ')' ',' Term1 (rule 111) + Term1 -> 'Sigma' . '(' Pattern ':' Term ')' ',' Term1 (rule 112) '(' shift, and enter state 172 @@ -1840,6 +1861,7 @@ State 52 'TOP' reduce using rule 86 'TOPE' reduce using rule 86 'U' reduce using rule 86 + 'Unit' reduce using rule 86 '[' reduce using rule 86 '\\/' reduce using rule 86 ']' reduce using rule 86 @@ -1888,6 +1910,7 @@ State 53 'TOP' reduce using rule 80 'TOPE' reduce using rule 80 'U' reduce using rule 80 + 'Unit' reduce using rule 80 '[' reduce using rule 80 '\\/' reduce using rule 80 ']' reduce using rule 80 @@ -1936,6 +1959,7 @@ State 54 'TOP' reduce using rule 78 'TOPE' reduce using rule 78 'U' reduce using rule 78 + 'Unit' reduce using rule 78 '[' reduce using rule 78 '\\/' reduce using rule 78 ']' reduce using rule 78 @@ -1957,40 +1981,72 @@ State 54 State 55 - Term1 -> 'Unit' . (rule 112) - - ')' reduce using rule 112 - ',' reduce using rule 112 - ':' reduce using rule 112 - ':=' reduce using rule 112 - ';' reduce using rule 112 - '>' reduce using rule 112 - ']' reduce using rule 112 - '|' reduce using rule 112 - '|->' reduce using rule 112 - '}' reduce using rule 112 - %eof reduce using rule 112 - - -State 56 - - Term1 -> '\\' . ListParam '->' Term1 (rule 115) - - '(' shift, and enter state 91 - '_' shift, and enter state 92 - 'unit' shift, and enter state 93 - '{' shift, and enter state 94 - L_VarIdentTokenshift, and enter state 68 - - VarIdentToken goto state 28 - VarIdent goto state 87 - Pattern goto state 88 - Param goto state 89 - ListParam goto state 171 - -State 57 - - Term6 -> 'first' . Term7 (rule 122) + Term7 -> 'Unit' . (rule 91) + + '(' reduce using rule 91 + ')' reduce using rule 91 + '*' reduce using rule 91 + '*_1' reduce using rule 91 + ',' reduce using rule 91 + '->' reduce using rule 91 + '/\\' reduce using rule 91 + '0_2' reduce using rule 91 + '1' reduce using rule 91 + '1_2' reduce using rule 91 + '2' reduce using rule 91 + ':' reduce using rule 91 + ':=' reduce using rule 91 + ';' reduce using rule 91 + '<' reduce using rule 91 + '<=' reduce using rule 91 + '=' reduce using rule 91 + '===' reduce using rule 91 + '=_{' reduce using rule 91 + '>' reduce using rule 91 + 'BOT' reduce using rule 91 + 'CUBE' reduce using rule 91 + 'TOP' reduce using rule 91 + 'TOPE' reduce using rule 91 + 'U' reduce using rule 91 + 'Unit' reduce using rule 91 + '[' reduce using rule 91 + '\\/' reduce using rule 91 + ']' reduce using rule 91 + 'as' reduce using rule 91 + 'idJ' reduce using rule 91 + 'recBOT' reduce using rule 91 + 'recOR' reduce using rule 91 + 'refl' reduce using rule 91 + 'refl_{' reduce using rule 91 + 'unit' reduce using rule 91 + '|' reduce using rule 91 + '|->' reduce using rule 91 + '}' reduce using rule 91 + '→' reduce using rule 91 + L_VarIdentTokenreduce using rule 91 + L_HoleIdentTokenreduce using rule 91 + %eof reduce using rule 91 + + +State 56 + + Term1 -> '\\' . ListParam '->' Term1 (rule 115) + + '(' shift, and enter state 91 + '_' shift, and enter state 92 + 'unit' shift, and enter state 93 + '{' shift, and enter state 94 + L_VarIdentTokenshift, and enter state 68 + + VarIdentToken goto state 28 + VarIdent goto state 87 + Pattern goto state 88 + Param goto state 89 + ListParam goto state 171 + +State 57 + + Term6 -> 'first' . Term7 (rule 122) '(' shift, and enter state 72 '*_1' shift, and enter state 43 @@ -2004,6 +2060,7 @@ State 57 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 'recOR' shift, and enter state 60 @@ -2021,7 +2078,7 @@ State 57 State 58 - Term7 -> 'idJ' . '(' Term ',' Term ',' Term ',' Term ',' Term ',' Term ')' (rule 97) + Term7 -> 'idJ' . '(' Term ',' Term ',' Term ',' Term ',' Term ',' Term ')' (rule 98) '(' shift, and enter state 169 @@ -2055,6 +2112,7 @@ State 59 'TOP' reduce using rule 88 'TOPE' reduce using rule 88 'U' reduce using rule 88 + 'Unit' reduce using rule 88 '[' reduce using rule 88 '\\/' reduce using rule 88 ']' reduce using rule 88 @@ -2084,56 +2142,57 @@ State 60 State 61 - Term7 -> 'refl' . (rule 94) + Term7 -> 'refl' . (rule 95) - '(' reduce using rule 94 - ')' reduce using rule 94 - '*' reduce using rule 94 - '*_1' reduce using rule 94 - ',' reduce using rule 94 - '->' reduce using rule 94 - '/\\' reduce using rule 94 - '0_2' reduce using rule 94 - '1' reduce using rule 94 - '1_2' reduce using rule 94 - '2' reduce using rule 94 - ':' reduce using rule 94 - ':=' reduce using rule 94 - ';' reduce using rule 94 - '<' reduce using rule 94 - '<=' reduce using rule 94 - '=' reduce using rule 94 - '===' reduce using rule 94 - '=_{' reduce using rule 94 - '>' reduce using rule 94 - 'BOT' reduce using rule 94 - 'CUBE' reduce using rule 94 - 'TOP' reduce using rule 94 - 'TOPE' reduce using rule 94 - 'U' reduce using rule 94 - '[' reduce using rule 94 - '\\/' reduce using rule 94 - ']' reduce using rule 94 - 'as' reduce using rule 94 - 'idJ' reduce using rule 94 - 'recBOT' reduce using rule 94 - 'recOR' reduce using rule 94 - 'refl' reduce using rule 94 - 'refl_{' reduce using rule 94 - 'unit' reduce using rule 94 - '|' reduce using rule 94 - '|->' reduce using rule 94 - '}' reduce using rule 94 - '→' reduce using rule 94 - L_VarIdentTokenreduce using rule 94 - L_HoleIdentTokenreduce using rule 94 - %eof reduce using rule 94 + '(' reduce using rule 95 + ')' reduce using rule 95 + '*' reduce using rule 95 + '*_1' reduce using rule 95 + ',' reduce using rule 95 + '->' reduce using rule 95 + '/\\' reduce using rule 95 + '0_2' reduce using rule 95 + '1' reduce using rule 95 + '1_2' reduce using rule 95 + '2' reduce using rule 95 + ':' reduce using rule 95 + ':=' reduce using rule 95 + ';' reduce using rule 95 + '<' reduce using rule 95 + '<=' reduce using rule 95 + '=' reduce using rule 95 + '===' reduce using rule 95 + '=_{' reduce using rule 95 + '>' reduce using rule 95 + 'BOT' reduce using rule 95 + 'CUBE' reduce using rule 95 + 'TOP' reduce using rule 95 + 'TOPE' reduce using rule 95 + 'U' reduce using rule 95 + 'Unit' reduce using rule 95 + '[' reduce using rule 95 + '\\/' reduce using rule 95 + ']' reduce using rule 95 + 'as' reduce using rule 95 + 'idJ' reduce using rule 95 + 'recBOT' reduce using rule 95 + 'recOR' reduce using rule 95 + 'refl' reduce using rule 95 + 'refl_{' reduce using rule 95 + 'unit' reduce using rule 95 + '|' reduce using rule 95 + '|->' reduce using rule 95 + '}' reduce using rule 95 + '→' reduce using rule 95 + L_VarIdentTokenreduce using rule 95 + L_HoleIdentTokenreduce using rule 95 + %eof reduce using rule 95 State 62 - Term7 -> 'refl_{' . Term '}' (rule 95) - Term7 -> 'refl_{' . Term ':' Term '}' (rule 96) + Term7 -> 'refl_{' . Term '}' (rule 96) + Term7 -> 'refl_{' . Term ':' Term '}' (rule 97) '(' shift, and enter state 42 '*_1' shift, and enter state 43 @@ -2194,6 +2253,7 @@ State 63 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 'recOR' shift, and enter state 60 @@ -2211,50 +2271,51 @@ State 63 State 64 - Term7 -> 'unit' . (rule 93) + Term7 -> 'unit' . (rule 94) - '(' reduce using rule 93 - ')' reduce using rule 93 - '*' reduce using rule 93 - '*_1' reduce using rule 93 - ',' reduce using rule 93 - '->' reduce using rule 93 - '/\\' reduce using rule 93 - '0_2' reduce using rule 93 - '1' reduce using rule 93 - '1_2' reduce using rule 93 - '2' reduce using rule 93 - ':' reduce using rule 93 - ':=' reduce using rule 93 - ';' reduce using rule 93 - '<' reduce using rule 93 - '<=' reduce using rule 93 - '=' reduce using rule 93 - '===' reduce using rule 93 - '=_{' reduce using rule 93 - '>' reduce using rule 93 - 'BOT' reduce using rule 93 - 'CUBE' reduce using rule 93 - 'TOP' reduce using rule 93 - 'TOPE' reduce using rule 93 - 'U' reduce using rule 93 - '[' reduce using rule 93 - '\\/' reduce using rule 93 - ']' reduce using rule 93 - 'as' reduce using rule 93 - 'idJ' reduce using rule 93 - 'recBOT' reduce using rule 93 - 'recOR' reduce using rule 93 - 'refl' reduce using rule 93 - 'refl_{' reduce using rule 93 - 'unit' reduce using rule 93 - '|' reduce using rule 93 - '|->' reduce using rule 93 - '}' reduce using rule 93 - '→' reduce using rule 93 - L_VarIdentTokenreduce using rule 93 - L_HoleIdentTokenreduce using rule 93 - %eof reduce using rule 93 + '(' reduce using rule 94 + ')' reduce using rule 94 + '*' reduce using rule 94 + '*_1' reduce using rule 94 + ',' reduce using rule 94 + '->' reduce using rule 94 + '/\\' reduce using rule 94 + '0_2' reduce using rule 94 + '1' reduce using rule 94 + '1_2' reduce using rule 94 + '2' reduce using rule 94 + ':' reduce using rule 94 + ':=' reduce using rule 94 + ';' reduce using rule 94 + '<' reduce using rule 94 + '<=' reduce using rule 94 + '=' reduce using rule 94 + '===' reduce using rule 94 + '=_{' reduce using rule 94 + '>' reduce using rule 94 + 'BOT' reduce using rule 94 + 'CUBE' reduce using rule 94 + 'TOP' reduce using rule 94 + 'TOPE' reduce using rule 94 + 'U' reduce using rule 94 + 'Unit' reduce using rule 94 + '[' reduce using rule 94 + '\\/' reduce using rule 94 + ']' reduce using rule 94 + 'as' reduce using rule 94 + 'idJ' reduce using rule 94 + 'recBOT' reduce using rule 94 + 'recOR' reduce using rule 94 + 'refl' reduce using rule 94 + 'refl_{' reduce using rule 94 + 'unit' reduce using rule 94 + '|' reduce using rule 94 + '|->' reduce using rule 94 + '}' reduce using rule 94 + '→' reduce using rule 94 + L_VarIdentTokenreduce using rule 94 + L_HoleIdentTokenreduce using rule 94 + %eof reduce using rule 94 State 65 @@ -2315,6 +2376,7 @@ State 68 'TOP' reduce using rule 27 'TOPE' reduce using rule 27 'U' reduce using rule 27 + 'Unit' reduce using rule 27 '[' reduce using rule 27 '\\/' reduce using rule 27 ']' reduce using rule 27 @@ -2366,6 +2428,7 @@ State 69 'TOP' reduce using rule 28 'TOPE' reduce using rule 28 'U' reduce using rule 28 + 'Unit' reduce using rule 28 '[' reduce using rule 28 '\\/' reduce using rule 28 ']' reduce using rule 28 @@ -2410,6 +2473,7 @@ State 71 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 '[' shift, and enter state 155 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 @@ -2429,8 +2493,8 @@ State 71 State 72 - Term7 -> '(' . Term ',' Term ')' (rule 92) - Term7 -> '(' . Term ')' (rule 100) + Term7 -> '(' . Term ',' Term ')' (rule 93) + Term7 -> '(' . Term ')' (rule 101) '(' shift, and enter state 42 '*_1' shift, and enter state 43 @@ -2512,50 +2576,51 @@ State 75 State 76 - Term5 -> Term6 . (rule 102) + Term5 -> Term6 . (rule 103) Term6 -> Term6 . '[' ListRestriction ']' (rule 120) Term6 -> Term6 . Term7 (rule 121) '(' shift, and enter state 72 - ')' reduce using rule 102 - '*' reduce using rule 102 + ')' reduce using rule 103 + '*' reduce using rule 103 '*_1' shift, and enter state 43 - ',' reduce using rule 102 - '/\\' reduce using rule 102 + ',' reduce using rule 103 + '/\\' reduce using rule 103 '0_2' shift, and enter state 44 '1' shift, and enter state 45 '1_2' shift, and enter state 46 '2' shift, and enter state 47 - ':' reduce using rule 102 - ':=' reduce using rule 102 - ';' reduce using rule 102 + ':' reduce using rule 103 + ':=' reduce using rule 103 + ';' reduce using rule 103 '<' shift, and enter state 48 - '<=' reduce using rule 102 - '=' reduce using rule 102 - '===' reduce using rule 102 - '=_{' reduce using rule 102 - '>' reduce using rule 102 + '<=' reduce using rule 103 + '=' reduce using rule 103 + '===' reduce using rule 103 + '=_{' reduce using rule 103 + '>' reduce using rule 103 'BOT' shift, and enter state 49 'CUBE' shift, and enter state 50 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 '[' shift, and enter state 155 - '\\/' reduce using rule 102 - ']' reduce using rule 102 - 'as' reduce using rule 102 + '\\/' reduce using rule 103 + ']' reduce using rule 103 + 'as' reduce using rule 103 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 'recOR' shift, and enter state 60 'refl' shift, and enter state 61 'refl_{' shift, and enter state 62 'unit' shift, and enter state 64 - '|' reduce using rule 102 - '|->' reduce using rule 102 - '}' reduce using rule 102 + '|' reduce using rule 103 + '|->' reduce using rule 103 + '}' reduce using rule 103 L_VarIdentTokenshift, and enter state 68 L_HoleIdentTokenshift, and enter state 69 - %eof reduce using rule 102 + %eof reduce using rule 103 VarIdentToken goto state 28 HoleIdentToken goto state 29 @@ -2580,7 +2645,7 @@ State 78 State 79 %start_pTerm5_internal -> Term5 . (rule 18) - Term5 -> Term5 . '*' Term6 (rule 101) + Term5 -> Term5 . '*' Term6 (rule 102) '*' shift, and enter state 158 %eof accept @@ -2651,6 +2716,7 @@ State 86 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 '[' shift, and enter state 155 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 @@ -3514,6 +3580,7 @@ State 154 'TOP' reduce using rule 121 'TOPE' reduce using rule 121 'U' reduce using rule 121 + 'Unit' reduce using rule 121 '[' reduce using rule 121 '\\/' reduce using rule 121 ']' reduce using rule 121 @@ -3680,7 +3747,7 @@ State 157 State 158 - Term5 -> Term5 '*' . Term6 (rule 101) + Term5 -> Term5 '*' . Term6 (rule 102) '(' shift, and enter state 72 '*_1' shift, and enter state 43 @@ -3694,6 +3761,7 @@ State 158 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 'first' shift, and enter state 57 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 @@ -3728,6 +3796,7 @@ State 159 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 'first' shift, and enter state 57 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 @@ -3799,8 +3868,8 @@ State 160 State 161 - Term7 -> '(' Term . ',' Term ')' (rule 92) - Term7 -> '(' Term . ')' (rule 100) + Term7 -> '(' Term . ',' Term ')' (rule 93) + Term7 -> '(' Term . ')' (rule 101) ')' shift, and enter state 206 ',' shift, and enter state 207 @@ -3883,6 +3952,7 @@ State 166 'TOP' reduce using rule 123 'TOPE' reduce using rule 123 'U' reduce using rule 123 + 'Unit' reduce using rule 123 '[' reduce using rule 123 '\\/' reduce using rule 123 ']' reduce using rule 123 @@ -3904,8 +3974,8 @@ State 166 State 167 - Term7 -> 'refl_{' Term . '}' (rule 95) - Term7 -> 'refl_{' Term . ':' Term '}' (rule 96) + Term7 -> 'refl_{' Term . '}' (rule 96) + Term7 -> 'refl_{' Term . ':' Term '}' (rule 97) ':' shift, and enter state 200 '}' shift, and enter state 201 @@ -3963,7 +4033,7 @@ State 168 State 169 - Term7 -> 'idJ' '(' . Term ',' Term ',' Term ',' Term ',' Term ',' Term ')' (rule 97) + Term7 -> 'idJ' '(' . Term ',' Term ',' Term ',' Term ',' Term ',' Term ')' (rule 98) '(' shift, and enter state 42 '*_1' shift, and enter state 43 @@ -4037,6 +4107,7 @@ State 170 'TOP' reduce using rule 122 'TOPE' reduce using rule 122 'U' reduce using rule 122 + 'Unit' reduce using rule 122 '[' reduce using rule 122 '\\/' reduce using rule 122 ']' reduce using rule 122 @@ -4065,7 +4136,7 @@ State 171 State 172 - Term1 -> 'Sigma' '(' . Pattern ':' Term ')' ',' Term1 (rule 111) + Term1 -> 'Sigma' '(' . Pattern ':' Term ')' ',' Term1 (rule 112) '(' shift, and enter state 98 '_' shift, and enter state 92 @@ -4078,7 +4149,7 @@ State 172 State 173 - Term7 -> '<' ParamDecl . '->' Term '>' (rule 91) + Term7 -> '<' ParamDecl . '->' Term '>' (rule 92) '->' shift, and enter state 194 @@ -4086,42 +4157,43 @@ State 173 State 174 ParamDecl -> '(' VarIdent . ':' Term ')' (rule 72) - Term7 -> VarIdent . (rule 99) + Term7 -> VarIdent . (rule 100) - '(' reduce using rule 99 - ')' reduce using rule 99 - '*' reduce using rule 99 - '*_1' reduce using rule 99 - ',' reduce using rule 99 - '->' reduce using rule 99 - '/\\' reduce using rule 99 - '0_2' reduce using rule 99 - '1' reduce using rule 99 - '1_2' reduce using rule 99 - '2' reduce using rule 99 + '(' reduce using rule 100 + ')' reduce using rule 100 + '*' reduce using rule 100 + '*_1' reduce using rule 100 + ',' reduce using rule 100 + '->' reduce using rule 100 + '/\\' reduce using rule 100 + '0_2' reduce using rule 100 + '1' reduce using rule 100 + '1_2' reduce using rule 100 + '2' reduce using rule 100 ':' shift, and enter state 193 - '<' reduce using rule 99 - '<=' reduce using rule 99 - '=' reduce using rule 99 - '===' reduce using rule 99 - '=_{' reduce using rule 99 - 'BOT' reduce using rule 99 - 'CUBE' reduce using rule 99 - 'TOP' reduce using rule 99 - 'TOPE' reduce using rule 99 - 'U' reduce using rule 99 - '[' reduce using rule 99 - '\\/' reduce using rule 99 - 'as' reduce using rule 99 - 'idJ' reduce using rule 99 - 'recBOT' reduce using rule 99 - 'recOR' reduce using rule 99 - 'refl' reduce using rule 99 - 'refl_{' reduce using rule 99 - 'unit' reduce using rule 99 - '→' reduce using rule 99 - L_VarIdentTokenreduce using rule 99 - L_HoleIdentTokenreduce using rule 99 + '<' reduce using rule 100 + '<=' reduce using rule 100 + '=' reduce using rule 100 + '===' reduce using rule 100 + '=_{' reduce using rule 100 + 'BOT' reduce using rule 100 + 'CUBE' reduce using rule 100 + 'TOP' reduce using rule 100 + 'TOPE' reduce using rule 100 + 'U' reduce using rule 100 + 'Unit' reduce using rule 100 + '[' reduce using rule 100 + '\\/' reduce using rule 100 + 'as' reduce using rule 100 + 'idJ' reduce using rule 100 + 'recBOT' reduce using rule 100 + 'recOR' reduce using rule 100 + 'refl' reduce using rule 100 + 'refl_{' reduce using rule 100 + 'unit' reduce using rule 100 + '→' reduce using rule 100 + L_VarIdentTokenreduce using rule 100 + L_HoleIdentTokenreduce using rule 100 State 175 @@ -4227,7 +4299,7 @@ State 177 State 178 - Term2 -> Term3 '\\/' . Term2 (rule 108) + Term2 -> Term3 '\\/' . Term2 (rule 109) '(' shift, and enter state 72 '*_1' shift, and enter state 43 @@ -4241,6 +4313,7 @@ State 178 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 'first' shift, and enter state 57 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 @@ -4265,7 +4338,7 @@ State 178 State 179 - Term3 -> Term4 '/\\' . Term3 (rule 106) + Term3 -> Term4 '/\\' . Term3 (rule 107) '(' shift, and enter state 72 '*_1' shift, and enter state 43 @@ -4279,6 +4352,7 @@ State 179 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 'first' shift, and enter state 57 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 @@ -4302,7 +4376,7 @@ State 179 State 180 - Term4 -> Term5 '<=' . Term5 (rule 104) + Term4 -> Term5 '<=' . Term5 (rule 105) '(' shift, and enter state 72 '*_1' shift, and enter state 43 @@ -4316,6 +4390,7 @@ State 180 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 'first' shift, and enter state 57 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 @@ -4337,7 +4412,7 @@ State 180 State 181 - Term4 -> Term5 '===' . Term5 (rule 103) + Term4 -> Term5 '===' . Term5 (rule 104) '(' shift, and enter state 72 '*_1' shift, and enter state 43 @@ -4351,6 +4426,7 @@ State 181 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 'first' shift, and enter state 57 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 @@ -4372,7 +4448,7 @@ State 181 State 182 - Term1 -> ParamDecl '->' . Term1 (rule 110) + Term1 -> ParamDecl '->' . Term1 (rule 111) '(' shift, and enter state 42 '*_1' shift, and enter state 43 @@ -4481,49 +4557,25 @@ State 184 State 185 - Term1 -> ParamDecl '->' Term1 . (rule 110) + Term1 -> ParamDecl '->' Term1 . (rule 111) - ')' reduce using rule 110 - ',' reduce using rule 110 - ':' reduce using rule 110 - ':=' reduce using rule 110 - ';' reduce using rule 110 - '>' reduce using rule 110 - ']' reduce using rule 110 - '|' reduce using rule 110 - '|->' reduce using rule 110 - '}' reduce using rule 110 - %eof reduce using rule 110 + ')' reduce using rule 111 + ',' reduce using rule 111 + ':' reduce using rule 111 + ':=' reduce using rule 111 + ';' reduce using rule 111 + '>' reduce using rule 111 + ']' reduce using rule 111 + '|' reduce using rule 111 + '|->' reduce using rule 111 + '}' reduce using rule 111 + %eof reduce using rule 111 State 186 - Term5 -> Term5 . '*' Term6 (rule 101) - Term4 -> Term5 '===' Term5 . (rule 103) - - ')' reduce using rule 103 - '*' shift, and enter state 158 - ',' reduce using rule 103 - '/\\' reduce using rule 103 - ':' reduce using rule 103 - ':=' reduce using rule 103 - ';' reduce using rule 103 - '=' reduce using rule 103 - '=_{' reduce using rule 103 - '>' reduce using rule 103 - '\\/' reduce using rule 103 - ']' reduce using rule 103 - 'as' reduce using rule 103 - '|' reduce using rule 103 - '|->' reduce using rule 103 - '}' reduce using rule 103 - %eof reduce using rule 103 - - -State 187 - - Term5 -> Term5 . '*' Term6 (rule 101) - Term4 -> Term5 '<=' Term5 . (rule 104) + Term5 -> Term5 . '*' Term6 (rule 102) + Term4 -> Term5 '===' Term5 . (rule 104) ')' reduce using rule 104 '*' shift, and enter state 158 @@ -4544,45 +4596,69 @@ State 187 %eof reduce using rule 104 +State 187 + + Term5 -> Term5 . '*' Term6 (rule 102) + Term4 -> Term5 '<=' Term5 . (rule 105) + + ')' reduce using rule 105 + '*' shift, and enter state 158 + ',' reduce using rule 105 + '/\\' reduce using rule 105 + ':' reduce using rule 105 + ':=' reduce using rule 105 + ';' reduce using rule 105 + '=' reduce using rule 105 + '=_{' reduce using rule 105 + '>' reduce using rule 105 + '\\/' reduce using rule 105 + ']' reduce using rule 105 + 'as' reduce using rule 105 + '|' reduce using rule 105 + '|->' reduce using rule 105 + '}' reduce using rule 105 + %eof reduce using rule 105 + + State 188 - Term3 -> Term4 '/\\' Term3 . (rule 106) + Term3 -> Term4 '/\\' Term3 . (rule 107) - ')' reduce using rule 106 - ',' reduce using rule 106 - ':' reduce using rule 106 - ':=' reduce using rule 106 - ';' reduce using rule 106 - '=' reduce using rule 106 - '=_{' reduce using rule 106 - '>' reduce using rule 106 - '\\/' reduce using rule 106 - ']' reduce using rule 106 - 'as' reduce using rule 106 - '|' reduce using rule 106 - '|->' reduce using rule 106 - '}' reduce using rule 106 - %eof reduce using rule 106 + ')' reduce using rule 107 + ',' reduce using rule 107 + ':' reduce using rule 107 + ':=' reduce using rule 107 + ';' reduce using rule 107 + '=' reduce using rule 107 + '=_{' reduce using rule 107 + '>' reduce using rule 107 + '\\/' reduce using rule 107 + ']' reduce using rule 107 + 'as' reduce using rule 107 + '|' reduce using rule 107 + '|->' reduce using rule 107 + '}' reduce using rule 107 + %eof reduce using rule 107 State 189 - Term2 -> Term3 '\\/' Term2 . (rule 108) + Term2 -> Term3 '\\/' Term2 . (rule 109) - ')' reduce using rule 108 - ',' reduce using rule 108 - ':' reduce using rule 108 - ':=' reduce using rule 108 - ';' reduce using rule 108 - '=' reduce using rule 108 - '=_{' reduce using rule 108 - '>' reduce using rule 108 - ']' reduce using rule 108 - 'as' reduce using rule 108 - '|' reduce using rule 108 - '|->' reduce using rule 108 - '}' reduce using rule 108 - %eof reduce using rule 108 + ')' reduce using rule 109 + ',' reduce using rule 109 + ':' reduce using rule 109 + ':=' reduce using rule 109 + ';' reduce using rule 109 + '=' reduce using rule 109 + '=_{' reduce using rule 109 + '>' reduce using rule 109 + ']' reduce using rule 109 + 'as' reduce using rule 109 + '|' reduce using rule 109 + '|->' reduce using rule 109 + '}' reduce using rule 109 + %eof reduce using rule 109 State 190 @@ -4705,7 +4781,7 @@ State 193 State 194 - Term7 -> '<' ParamDecl '->' . Term '>' (rule 91) + Term7 -> '<' ParamDecl '->' . Term '>' (rule 92) '(' shift, and enter state 42 '*_1' shift, and enter state 43 @@ -4752,7 +4828,7 @@ State 194 State 195 - Term1 -> 'Sigma' '(' Pattern . ':' Term ')' ',' Term1 (rule 111) + Term1 -> 'Sigma' '(' Pattern . ':' Term ')' ',' Term1 (rule 112) ':' shift, and enter state 257 @@ -4805,7 +4881,7 @@ State 196 State 197 - Term7 -> 'idJ' '(' Term . ',' Term ',' Term ',' Term ',' Term ',' Term ')' (rule 97) + Term7 -> 'idJ' '(' Term . ',' Term ',' Term ',' Term ',' Term ',' Term ')' (rule 98) ',' shift, and enter state 255 @@ -4828,7 +4904,7 @@ State 199 State 200 - Term7 -> 'refl_{' Term ':' . Term '}' (rule 96) + Term7 -> 'refl_{' Term ':' . Term '}' (rule 97) '(' shift, and enter state 42 '*_1' shift, and enter state 43 @@ -4875,50 +4951,51 @@ State 200 State 201 - Term7 -> 'refl_{' Term '}' . (rule 95) + Term7 -> 'refl_{' Term '}' . (rule 96) - '(' reduce using rule 95 - ')' reduce using rule 95 - '*' reduce using rule 95 - '*_1' reduce using rule 95 - ',' reduce using rule 95 - '->' reduce using rule 95 - '/\\' reduce using rule 95 - '0_2' reduce using rule 95 - '1' reduce using rule 95 - '1_2' reduce using rule 95 - '2' reduce using rule 95 - ':' reduce using rule 95 - ':=' reduce using rule 95 - ';' reduce using rule 95 - '<' reduce using rule 95 - '<=' reduce using rule 95 - '=' reduce using rule 95 - '===' reduce using rule 95 - '=_{' reduce using rule 95 - '>' reduce using rule 95 - 'BOT' reduce using rule 95 - 'CUBE' reduce using rule 95 - 'TOP' reduce using rule 95 - 'TOPE' reduce using rule 95 - 'U' reduce using rule 95 - '[' reduce using rule 95 - '\\/' reduce using rule 95 - ']' reduce using rule 95 - 'as' reduce using rule 95 - 'idJ' reduce using rule 95 - 'recBOT' reduce using rule 95 - 'recOR' reduce using rule 95 - 'refl' reduce using rule 95 - 'refl_{' reduce using rule 95 - 'unit' reduce using rule 95 - '|' reduce using rule 95 - '|->' reduce using rule 95 - '}' reduce using rule 95 - '→' reduce using rule 95 - L_VarIdentTokenreduce using rule 95 - L_HoleIdentTokenreduce using rule 95 - %eof reduce using rule 95 + '(' reduce using rule 96 + ')' reduce using rule 96 + '*' reduce using rule 96 + '*_1' reduce using rule 96 + ',' reduce using rule 96 + '->' reduce using rule 96 + '/\\' reduce using rule 96 + '0_2' reduce using rule 96 + '1' reduce using rule 96 + '1_2' reduce using rule 96 + '2' reduce using rule 96 + ':' reduce using rule 96 + ':=' reduce using rule 96 + ';' reduce using rule 96 + '<' reduce using rule 96 + '<=' reduce using rule 96 + '=' reduce using rule 96 + '===' reduce using rule 96 + '=_{' reduce using rule 96 + '>' reduce using rule 96 + 'BOT' reduce using rule 96 + 'CUBE' reduce using rule 96 + 'TOP' reduce using rule 96 + 'TOPE' reduce using rule 96 + 'U' reduce using rule 96 + 'Unit' reduce using rule 96 + '[' reduce using rule 96 + '\\/' reduce using rule 96 + ']' reduce using rule 96 + 'as' reduce using rule 96 + 'idJ' reduce using rule 96 + 'recBOT' reduce using rule 96 + 'recOR' reduce using rule 96 + 'refl' reduce using rule 96 + 'refl_{' reduce using rule 96 + 'unit' reduce using rule 96 + '|' reduce using rule 96 + '|->' reduce using rule 96 + '}' reduce using rule 96 + '→' reduce using rule 96 + L_VarIdentTokenreduce using rule 96 + L_HoleIdentTokenreduce using rule 96 + %eof reduce using rule 96 State 202 @@ -4994,55 +5071,56 @@ State 205 State 206 - Term7 -> '(' Term ')' . (rule 100) + Term7 -> '(' Term ')' . (rule 101) - '(' reduce using rule 100 - ')' reduce using rule 100 - '*' reduce using rule 100 - '*_1' reduce using rule 100 - ',' reduce using rule 100 - '->' reduce using rule 100 - '/\\' reduce using rule 100 - '0_2' reduce using rule 100 - '1' reduce using rule 100 - '1_2' reduce using rule 100 - '2' reduce using rule 100 - ':' reduce using rule 100 - ':=' reduce using rule 100 - ';' reduce using rule 100 - '<' reduce using rule 100 - '<=' reduce using rule 100 - '=' reduce using rule 100 - '===' reduce using rule 100 - '=_{' reduce using rule 100 - '>' reduce using rule 100 - 'BOT' reduce using rule 100 - 'CUBE' reduce using rule 100 - 'TOP' reduce using rule 100 - 'TOPE' reduce using rule 100 - 'U' reduce using rule 100 - '[' reduce using rule 100 - '\\/' reduce using rule 100 - ']' reduce using rule 100 - 'as' reduce using rule 100 - 'idJ' reduce using rule 100 - 'recBOT' reduce using rule 100 - 'recOR' reduce using rule 100 - 'refl' reduce using rule 100 - 'refl_{' reduce using rule 100 - 'unit' reduce using rule 100 - '|' reduce using rule 100 - '|->' reduce using rule 100 - '}' reduce using rule 100 - '→' reduce using rule 100 - L_VarIdentTokenreduce using rule 100 - L_HoleIdentTokenreduce using rule 100 - %eof reduce using rule 100 + '(' reduce using rule 101 + ')' reduce using rule 101 + '*' reduce using rule 101 + '*_1' reduce using rule 101 + ',' reduce using rule 101 + '->' reduce using rule 101 + '/\\' reduce using rule 101 + '0_2' reduce using rule 101 + '1' reduce using rule 101 + '1_2' reduce using rule 101 + '2' reduce using rule 101 + ':' reduce using rule 101 + ':=' reduce using rule 101 + ';' reduce using rule 101 + '<' reduce using rule 101 + '<=' reduce using rule 101 + '=' reduce using rule 101 + '===' reduce using rule 101 + '=_{' reduce using rule 101 + '>' reduce using rule 101 + 'BOT' reduce using rule 101 + 'CUBE' reduce using rule 101 + 'TOP' reduce using rule 101 + 'TOPE' reduce using rule 101 + 'U' reduce using rule 101 + 'Unit' reduce using rule 101 + '[' reduce using rule 101 + '\\/' reduce using rule 101 + ']' reduce using rule 101 + 'as' reduce using rule 101 + 'idJ' reduce using rule 101 + 'recBOT' reduce using rule 101 + 'recOR' reduce using rule 101 + 'refl' reduce using rule 101 + 'refl_{' reduce using rule 101 + 'unit' reduce using rule 101 + '|' reduce using rule 101 + '|->' reduce using rule 101 + '}' reduce using rule 101 + '→' reduce using rule 101 + L_VarIdentTokenreduce using rule 101 + L_HoleIdentTokenreduce using rule 101 + %eof reduce using rule 101 State 207 - Term7 -> '(' Term ',' . Term ')' (rule 92) + Term7 -> '(' Term ',' . Term ')' (rule 93) '(' shift, and enter state 42 '*_1' shift, and enter state 43 @@ -5113,50 +5191,51 @@ State 209 State 210 - Term5 -> Term5 '*' Term6 . (rule 101) + Term5 -> Term5 '*' Term6 . (rule 102) Term6 -> Term6 . '[' ListRestriction ']' (rule 120) Term6 -> Term6 . Term7 (rule 121) '(' shift, and enter state 72 - ')' reduce using rule 101 - '*' reduce using rule 101 + ')' reduce using rule 102 + '*' reduce using rule 102 '*_1' shift, and enter state 43 - ',' reduce using rule 101 - '/\\' reduce using rule 101 + ',' reduce using rule 102 + '/\\' reduce using rule 102 '0_2' shift, and enter state 44 '1' shift, and enter state 45 '1_2' shift, and enter state 46 '2' shift, and enter state 47 - ':' reduce using rule 101 - ':=' reduce using rule 101 - ';' reduce using rule 101 + ':' reduce using rule 102 + ':=' reduce using rule 102 + ';' reduce using rule 102 '<' shift, and enter state 48 - '<=' reduce using rule 101 - '=' reduce using rule 101 - '===' reduce using rule 101 - '=_{' reduce using rule 101 - '>' reduce using rule 101 + '<=' reduce using rule 102 + '=' reduce using rule 102 + '===' reduce using rule 102 + '=_{' reduce using rule 102 + '>' reduce using rule 102 'BOT' shift, and enter state 49 'CUBE' shift, and enter state 50 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 '[' shift, and enter state 155 - '\\/' reduce using rule 101 - ']' reduce using rule 101 - 'as' reduce using rule 101 + '\\/' reduce using rule 102 + ']' reduce using rule 102 + 'as' reduce using rule 102 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 'recOR' shift, and enter state 60 'refl' shift, and enter state 61 'refl_{' shift, and enter state 62 'unit' shift, and enter state 64 - '|' reduce using rule 101 - '|->' reduce using rule 101 - '}' reduce using rule 101 + '|' reduce using rule 102 + '|->' reduce using rule 102 + '}' reduce using rule 102 L_VarIdentTokenshift, and enter state 68 L_HoleIdentTokenshift, and enter state 69 - %eof reduce using rule 101 + %eof reduce using rule 102 VarIdentToken goto state 28 HoleIdentToken goto state 29 @@ -5876,6 +5955,7 @@ State 245 'TOP' reduce using rule 120 'TOPE' reduce using rule 120 'U' reduce using rule 120 + 'Unit' reduce using rule 120 '[' reduce using rule 120 '\\/' reduce using rule 120 ']' reduce using rule 120 @@ -5911,6 +5991,7 @@ State 246 'TOP' shift, and enter state 52 'TOPE' shift, and enter state 53 'U' shift, and enter state 54 + 'Unit' shift, and enter state 55 'first' shift, and enter state 57 'idJ' shift, and enter state 58 'recBOT' shift, and enter state 59 @@ -5935,7 +6016,7 @@ State 246 State 247 - Term7 -> '(' Term ',' Term . ')' (rule 92) + Term7 -> '(' Term ',' Term . ')' (rule 93) ')' shift, and enter state 273 @@ -6092,7 +6173,7 @@ State 251 State 252 - Term7 -> 'refl_{' Term ':' Term . '}' (rule 96) + Term7 -> 'refl_{' Term ':' Term . '}' (rule 97) '}' shift, and enter state 267 @@ -6173,6 +6254,7 @@ State 254 'TOP' reduce using rule 89 'TOPE' reduce using rule 89 'U' reduce using rule 89 + 'Unit' reduce using rule 89 '[' reduce using rule 89 '\\/' reduce using rule 89 ']' reduce using rule 89 @@ -6194,7 +6276,7 @@ State 254 State 255 - Term7 -> 'idJ' '(' Term ',' . Term ',' Term ',' Term ',' Term ',' Term ')' (rule 97) + Term7 -> 'idJ' '(' Term ',' . Term ',' Term ',' Term ',' Term ',' Term ')' (rule 98) '(' shift, and enter state 42 '*_1' shift, and enter state 43 @@ -6258,7 +6340,7 @@ State 256 State 257 - Term1 -> 'Sigma' '(' Pattern ':' . Term ')' ',' Term1 (rule 111) + Term1 -> 'Sigma' '(' Pattern ':' . Term ')' ',' Term1 (rule 112) '(' shift, and enter state 42 '*_1' shift, and enter state 43 @@ -6305,7 +6387,7 @@ State 257 State 258 - Term7 -> '<' ParamDecl '->' Term . '>' (rule 91) + Term7 -> '<' ParamDecl '->' Term . '>' (rule 92) '>' shift, and enter state 263 @@ -6344,119 +6426,121 @@ State 262 State 263 - Term7 -> '<' ParamDecl '->' Term '>' . (rule 91) - - '(' reduce using rule 91 - ')' reduce using rule 91 - '*' reduce using rule 91 - '*_1' reduce using rule 91 - ',' reduce using rule 91 - '->' reduce using rule 91 - '/\\' reduce using rule 91 - '0_2' reduce using rule 91 - '1' reduce using rule 91 - '1_2' reduce using rule 91 - '2' reduce using rule 91 - ':' reduce using rule 91 - ':=' reduce using rule 91 - ';' reduce using rule 91 - '<' reduce using rule 91 - '<=' reduce using rule 91 - '=' reduce using rule 91 - '===' reduce using rule 91 - '=_{' reduce using rule 91 - '>' reduce using rule 91 - 'BOT' reduce using rule 91 - 'CUBE' reduce using rule 91 - 'TOP' reduce using rule 91 - 'TOPE' reduce using rule 91 - 'U' reduce using rule 91 - '[' reduce using rule 91 - '\\/' reduce using rule 91 - ']' reduce using rule 91 - 'as' reduce using rule 91 - 'idJ' reduce using rule 91 - 'recBOT' reduce using rule 91 - 'recOR' reduce using rule 91 - 'refl' reduce using rule 91 - 'refl_{' reduce using rule 91 - 'unit' reduce using rule 91 - '|' reduce using rule 91 - '|->' reduce using rule 91 - '}' reduce using rule 91 - '→' reduce using rule 91 - L_VarIdentTokenreduce using rule 91 - L_HoleIdentTokenreduce using rule 91 - %eof reduce using rule 91 - - -State 264 - - Term1 -> 'Sigma' '(' Pattern ':' Term . ')' ',' Term1 (rule 111) - - ')' shift, and enter state 298 - - -State 265 - - Term7 -> 'idJ' '(' Term ',' Term . ',' Term ',' Term ',' Term ',' Term ')' (rule 97) - - ',' shift, and enter state 297 - - -State 266 - - Term7 -> 'recOR' '(' Term ',' Term . ',' Term ',' Term ')' (rule 90) - - ',' shift, and enter state 296 + Term7 -> '<' ParamDecl '->' Term '>' . (rule 92) - -State 267 - - Term7 -> 'refl_{' Term ':' Term '}' . (rule 96) - - '(' reduce using rule 96 - ')' reduce using rule 96 - '*' reduce using rule 96 - '*_1' reduce using rule 96 - ',' reduce using rule 96 - '->' reduce using rule 96 - '/\\' reduce using rule 96 - '0_2' reduce using rule 96 - '1' reduce using rule 96 - '1_2' reduce using rule 96 - '2' reduce using rule 96 - ':' reduce using rule 96 - ':=' reduce using rule 96 - ';' reduce using rule 96 - '<' reduce using rule 96 - '<=' reduce using rule 96 - '=' reduce using rule 96 - '===' reduce using rule 96 - '=_{' reduce using rule 96 - '>' reduce using rule 96 - 'BOT' reduce using rule 96 - 'CUBE' reduce using rule 96 - 'TOP' reduce using rule 96 - 'TOPE' reduce using rule 96 - 'U' reduce using rule 96 - '[' reduce using rule 96 - '\\/' reduce using rule 96 - ']' reduce using rule 96 - 'as' reduce using rule 96 - 'idJ' reduce using rule 96 - 'recBOT' reduce using rule 96 - 'recOR' reduce using rule 96 - 'refl' reduce using rule 96 - 'refl_{' reduce using rule 96 - 'unit' reduce using rule 96 - '|' reduce using rule 96 - '|->' reduce using rule 96 - '}' reduce using rule 96 - '→' reduce using rule 96 - L_VarIdentTokenreduce using rule 96 - L_HoleIdentTokenreduce using rule 96 - %eof reduce using rule 96 + '(' reduce using rule 92 + ')' reduce using rule 92 + '*' reduce using rule 92 + '*_1' reduce using rule 92 + ',' reduce using rule 92 + '->' reduce using rule 92 + '/\\' reduce using rule 92 + '0_2' reduce using rule 92 + '1' reduce using rule 92 + '1_2' reduce using rule 92 + '2' reduce using rule 92 + ':' reduce using rule 92 + ':=' reduce using rule 92 + ';' reduce using rule 92 + '<' reduce using rule 92 + '<=' reduce using rule 92 + '=' reduce using rule 92 + '===' reduce using rule 92 + '=_{' reduce using rule 92 + '>' reduce using rule 92 + 'BOT' reduce using rule 92 + 'CUBE' reduce using rule 92 + 'TOP' reduce using rule 92 + 'TOPE' reduce using rule 92 + 'U' reduce using rule 92 + 'Unit' reduce using rule 92 + '[' reduce using rule 92 + '\\/' reduce using rule 92 + ']' reduce using rule 92 + 'as' reduce using rule 92 + 'idJ' reduce using rule 92 + 'recBOT' reduce using rule 92 + 'recOR' reduce using rule 92 + 'refl' reduce using rule 92 + 'refl_{' reduce using rule 92 + 'unit' reduce using rule 92 + '|' reduce using rule 92 + '|->' reduce using rule 92 + '}' reduce using rule 92 + '→' reduce using rule 92 + L_VarIdentTokenreduce using rule 92 + L_HoleIdentTokenreduce using rule 92 + %eof reduce using rule 92 + + +State 264 + + Term1 -> 'Sigma' '(' Pattern ':' Term . ')' ',' Term1 (rule 112) + + ')' shift, and enter state 298 + + +State 265 + + Term7 -> 'idJ' '(' Term ',' Term . ',' Term ',' Term ',' Term ',' Term ')' (rule 98) + + ',' shift, and enter state 297 + + +State 266 + + Term7 -> 'recOR' '(' Term ',' Term . ',' Term ',' Term ')' (rule 90) + + ',' shift, and enter state 296 + + +State 267 + + Term7 -> 'refl_{' Term ':' Term '}' . (rule 97) + + '(' reduce using rule 97 + ')' reduce using rule 97 + '*' reduce using rule 97 + '*_1' reduce using rule 97 + ',' reduce using rule 97 + '->' reduce using rule 97 + '/\\' reduce using rule 97 + '0_2' reduce using rule 97 + '1' reduce using rule 97 + '1_2' reduce using rule 97 + '2' reduce using rule 97 + ':' reduce using rule 97 + ':=' reduce using rule 97 + ';' reduce using rule 97 + '<' reduce using rule 97 + '<=' reduce using rule 97 + '=' reduce using rule 97 + '===' reduce using rule 97 + '=_{' reduce using rule 97 + '>' reduce using rule 97 + 'BOT' reduce using rule 97 + 'CUBE' reduce using rule 97 + 'TOP' reduce using rule 97 + 'TOPE' reduce using rule 97 + 'U' reduce using rule 97 + 'Unit' reduce using rule 97 + '[' reduce using rule 97 + '\\/' reduce using rule 97 + ']' reduce using rule 97 + 'as' reduce using rule 97 + 'idJ' reduce using rule 97 + 'recBOT' reduce using rule 97 + 'recOR' reduce using rule 97 + 'refl' reduce using rule 97 + 'refl_{' reduce using rule 97 + 'unit' reduce using rule 97 + '|' reduce using rule 97 + '|->' reduce using rule 97 + '}' reduce using rule 97 + '→' reduce using rule 97 + L_VarIdentTokenreduce using rule 97 + L_HoleIdentTokenreduce using rule 97 + %eof reduce using rule 97 State 268 @@ -6538,50 +6622,51 @@ State 272 State 273 - Term7 -> '(' Term ',' Term ')' . (rule 92) + Term7 -> '(' Term ',' Term ')' . (rule 93) - '(' reduce using rule 92 - ')' reduce using rule 92 - '*' reduce using rule 92 - '*_1' reduce using rule 92 - ',' reduce using rule 92 - '->' reduce using rule 92 - '/\\' reduce using rule 92 - '0_2' reduce using rule 92 - '1' reduce using rule 92 - '1_2' reduce using rule 92 - '2' reduce using rule 92 - ':' reduce using rule 92 - ':=' reduce using rule 92 - ';' reduce using rule 92 - '<' reduce using rule 92 - '<=' reduce using rule 92 - '=' reduce using rule 92 - '===' reduce using rule 92 - '=_{' reduce using rule 92 - '>' reduce using rule 92 - 'BOT' reduce using rule 92 - 'CUBE' reduce using rule 92 - 'TOP' reduce using rule 92 - 'TOPE' reduce using rule 92 - 'U' reduce using rule 92 - '[' reduce using rule 92 - '\\/' reduce using rule 92 - ']' reduce using rule 92 - 'as' reduce using rule 92 - 'idJ' reduce using rule 92 - 'recBOT' reduce using rule 92 - 'recOR' reduce using rule 92 - 'refl' reduce using rule 92 - 'refl_{' reduce using rule 92 - 'unit' reduce using rule 92 - '|' reduce using rule 92 - '|->' reduce using rule 92 - '}' reduce using rule 92 - '→' reduce using rule 92 - L_VarIdentTokenreduce using rule 92 - L_HoleIdentTokenreduce using rule 92 - %eof reduce using rule 92 + '(' reduce using rule 93 + ')' reduce using rule 93 + '*' reduce using rule 93 + '*_1' reduce using rule 93 + ',' reduce using rule 93 + '->' reduce using rule 93 + '/\\' reduce using rule 93 + '0_2' reduce using rule 93 + '1' reduce using rule 93 + '1_2' reduce using rule 93 + '2' reduce using rule 93 + ':' reduce using rule 93 + ':=' reduce using rule 93 + ';' reduce using rule 93 + '<' reduce using rule 93 + '<=' reduce using rule 93 + '=' reduce using rule 93 + '===' reduce using rule 93 + '=_{' reduce using rule 93 + '>' reduce using rule 93 + 'BOT' reduce using rule 93 + 'CUBE' reduce using rule 93 + 'TOP' reduce using rule 93 + 'TOPE' reduce using rule 93 + 'U' reduce using rule 93 + 'Unit' reduce using rule 93 + '[' reduce using rule 93 + '\\/' reduce using rule 93 + ']' reduce using rule 93 + 'as' reduce using rule 93 + 'idJ' reduce using rule 93 + 'recBOT' reduce using rule 93 + 'recOR' reduce using rule 93 + 'refl' reduce using rule 93 + 'refl_{' reduce using rule 93 + 'unit' reduce using rule 93 + '|' reduce using rule 93 + '|->' reduce using rule 93 + '}' reduce using rule 93 + '→' reduce using rule 93 + L_VarIdentTokenreduce using rule 93 + L_HoleIdentTokenreduce using rule 93 + %eof reduce using rule 93 State 274 @@ -7061,7 +7146,7 @@ State 296 State 297 - Term7 -> 'idJ' '(' Term ',' Term ',' . Term ',' Term ',' Term ',' Term ')' (rule 97) + Term7 -> 'idJ' '(' Term ',' Term ',' . Term ',' Term ',' Term ',' Term ')' (rule 98) '(' shift, and enter state 42 '*_1' shift, and enter state 43 @@ -7108,14 +7193,14 @@ State 297 State 298 - Term1 -> 'Sigma' '(' Pattern ':' Term ')' . ',' Term1 (rule 111) + Term1 -> 'Sigma' '(' Pattern ':' Term ')' . ',' Term1 (rule 112) ',' shift, and enter state 299 State 299 - Term1 -> 'Sigma' '(' Pattern ':' Term ')' ',' . Term1 (rule 111) + Term1 -> 'Sigma' '(' Pattern ':' Term ')' ',' . Term1 (rule 112) '(' shift, and enter state 42 '*_1' shift, and enter state 43 @@ -7161,7 +7246,7 @@ State 299 State 300 - Term7 -> 'idJ' '(' Term ',' Term ',' Term . ',' Term ',' Term ',' Term ')' (rule 97) + Term7 -> 'idJ' '(' Term ',' Term ',' Term . ',' Term ',' Term ',' Term ')' (rule 98) ',' shift, and enter state 317 @@ -7551,7 +7636,7 @@ State 316 State 317 - Term7 -> 'idJ' '(' Term ',' Term ',' Term ',' . Term ',' Term ',' Term ')' (rule 97) + Term7 -> 'idJ' '(' Term ',' Term ',' Term ',' . Term ',' Term ',' Term ')' (rule 98) '(' shift, and enter state 42 '*_1' shift, and enter state 43 @@ -7598,24 +7683,24 @@ State 317 State 318 - Term1 -> 'Sigma' '(' Pattern ':' Term ')' ',' Term1 . (rule 111) + Term1 -> 'Sigma' '(' Pattern ':' Term ')' ',' Term1 . (rule 112) - ')' reduce using rule 111 - ',' reduce using rule 111 - ':' reduce using rule 111 - ':=' reduce using rule 111 - ';' reduce using rule 111 - '>' reduce using rule 111 - ']' reduce using rule 111 - '|' reduce using rule 111 - '|->' reduce using rule 111 - '}' reduce using rule 111 - %eof reduce using rule 111 + ')' reduce using rule 112 + ',' reduce using rule 112 + ':' reduce using rule 112 + ':=' reduce using rule 112 + ';' reduce using rule 112 + '>' reduce using rule 112 + ']' reduce using rule 112 + '|' reduce using rule 112 + '|->' reduce using rule 112 + '}' reduce using rule 112 + %eof reduce using rule 112 State 319 - Term7 -> 'idJ' '(' Term ',' Term ',' Term ',' Term . ',' Term ',' Term ')' (rule 97) + Term7 -> 'idJ' '(' Term ',' Term ',' Term ',' Term . ',' Term ',' Term ')' (rule 98) ',' shift, and enter state 323 @@ -7665,6 +7750,7 @@ State 322 'TOP' reduce using rule 90 'TOPE' reduce using rule 90 'U' reduce using rule 90 + 'Unit' reduce using rule 90 '[' reduce using rule 90 '\\/' reduce using rule 90 ']' reduce using rule 90 @@ -7686,7 +7772,7 @@ State 322 State 323 - Term7 -> 'idJ' '(' Term ',' Term ',' Term ',' Term ',' . Term ',' Term ')' (rule 97) + Term7 -> 'idJ' '(' Term ',' Term ',' Term ',' Term ',' . Term ',' Term ')' (rule 98) '(' shift, and enter state 42 '*_1' shift, and enter state 43 @@ -7733,14 +7819,14 @@ State 323 State 324 - Term7 -> 'idJ' '(' Term ',' Term ',' Term ',' Term ',' Term . ',' Term ')' (rule 97) + Term7 -> 'idJ' '(' Term ',' Term ',' Term ',' Term ',' Term . ',' Term ')' (rule 98) ',' shift, and enter state 325 State 325 - Term7 -> 'idJ' '(' Term ',' Term ',' Term ',' Term ',' Term ',' . Term ')' (rule 97) + Term7 -> 'idJ' '(' Term ',' Term ',' Term ',' Term ',' Term ',' . Term ')' (rule 98) '(' shift, and enter state 42 '*_1' shift, and enter state 43 @@ -7787,57 +7873,58 @@ State 325 State 326 - Term7 -> 'idJ' '(' Term ',' Term ',' Term ',' Term ',' Term ',' Term . ')' (rule 97) + Term7 -> 'idJ' '(' Term ',' Term ',' Term ',' Term ',' Term ',' Term . ')' (rule 98) ')' shift, and enter state 327 State 327 - Term7 -> 'idJ' '(' Term ',' Term ',' Term ',' Term ',' Term ',' Term ')' . (rule 97) + Term7 -> 'idJ' '(' Term ',' Term ',' Term ',' Term ',' Term ',' Term ')' . (rule 98) - '(' reduce using rule 97 - ')' reduce using rule 97 - '*' reduce using rule 97 - '*_1' reduce using rule 97 - ',' reduce using rule 97 - '->' reduce using rule 97 - '/\\' reduce using rule 97 - '0_2' reduce using rule 97 - '1' reduce using rule 97 - '1_2' reduce using rule 97 - '2' reduce using rule 97 - ':' reduce using rule 97 - ':=' reduce using rule 97 - ';' reduce using rule 97 - '<' reduce using rule 97 - '<=' reduce using rule 97 - '=' reduce using rule 97 - '===' reduce using rule 97 - '=_{' reduce using rule 97 - '>' reduce using rule 97 - 'BOT' reduce using rule 97 - 'CUBE' reduce using rule 97 - 'TOP' reduce using rule 97 - 'TOPE' reduce using rule 97 - 'U' reduce using rule 97 - '[' reduce using rule 97 - '\\/' reduce using rule 97 - ']' reduce using rule 97 - 'as' reduce using rule 97 - 'idJ' reduce using rule 97 - 'recBOT' reduce using rule 97 - 'recOR' reduce using rule 97 - 'refl' reduce using rule 97 - 'refl_{' reduce using rule 97 - 'unit' reduce using rule 97 - '|' reduce using rule 97 - '|->' reduce using rule 97 - '}' reduce using rule 97 - '→' reduce using rule 97 - L_VarIdentTokenreduce using rule 97 - L_HoleIdentTokenreduce using rule 97 - %eof reduce using rule 97 + '(' reduce using rule 98 + ')' reduce using rule 98 + '*' reduce using rule 98 + '*_1' reduce using rule 98 + ',' reduce using rule 98 + '->' reduce using rule 98 + '/\\' reduce using rule 98 + '0_2' reduce using rule 98 + '1' reduce using rule 98 + '1_2' reduce using rule 98 + '2' reduce using rule 98 + ':' reduce using rule 98 + ':=' reduce using rule 98 + ';' reduce using rule 98 + '<' reduce using rule 98 + '<=' reduce using rule 98 + '=' reduce using rule 98 + '===' reduce using rule 98 + '=_{' reduce using rule 98 + '>' reduce using rule 98 + 'BOT' reduce using rule 98 + 'CUBE' reduce using rule 98 + 'TOP' reduce using rule 98 + 'TOPE' reduce using rule 98 + 'U' reduce using rule 98 + 'Unit' reduce using rule 98 + '[' reduce using rule 98 + '\\/' reduce using rule 98 + ']' reduce using rule 98 + 'as' reduce using rule 98 + 'idJ' reduce using rule 98 + 'recBOT' reduce using rule 98 + 'recOR' reduce using rule 98 + 'refl' reduce using rule 98 + 'refl_{' reduce using rule 98 + 'unit' reduce using rule 98 + '|' reduce using rule 98 + '|->' reduce using rule 98 + '}' reduce using rule 98 + '→' reduce using rule 98 + L_VarIdentTokenreduce using rule 98 + L_HoleIdentTokenreduce using rule 98 + %eof reduce using rule 98 ----------------------------------------------------------------------------- diff --git a/rzk/src/Language/Rzk/Syntax/Par.y b/rzk/src/Language/Rzk/Syntax/Par.y index 6c4381ace..6fa73cbac 100644 --- a/rzk/src/Language/Rzk/Syntax/Par.y +++ b/rzk/src/Language/Rzk/Syntax/Par.y @@ -268,6 +268,7 @@ Term7 | 'recBOT' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.RecBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) } | 'recOR' '(' ListRestriction ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.RecOr (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3)) } | 'recOR' '(' Term ',' Term ',' Term ',' Term ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.recOr (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $7) (snd $9)) } + | 'Unit' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TypeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) } | '<' ParamDecl '->' Term '>' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.typeExtension (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) } | '(' Term ',' Term ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Pair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) } | 'unit' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Unit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) } @@ -304,7 +305,6 @@ Term1 :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term) Term1 : ParamDecl '->' Term1 { (fst $1, Language.Rzk.Syntax.Abs.TypeFun (fst $1) (snd $1) (snd $3)) } | 'Sigma' '(' Pattern ':' Term ')' ',' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $8)) } - | 'Unit' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TypeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) } | Term2 '=_{' Term '}' Term2 { (fst $1, Language.Rzk.Syntax.Abs.TypeId (fst $1) (snd $1) (snd $3) (snd $5)) } | Term2 '=' Term2 { (fst $1, Language.Rzk.Syntax.Abs.TypeIdSimple (fst $1) (snd $1) (snd $3)) } | '\\' ListParam '->' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) } diff --git a/rzk/src/Language/Rzk/Syntax/Print.hs b/rzk/src/Language/Rzk/Syntax/Print.hs index 1d6f25443..050f2165c 100644 --- a/rzk/src/Language/Rzk/Syntax/Print.hs +++ b/rzk/src/Language/Rzk/Syntax/Print.hs @@ -1,8 +1,8 @@ -- File generated by the BNF Converter (bnfc 2.9.4.1). -{-# LANGUAGE CPP #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} +{-# LANGUAGE CPP #-} +{-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE LambdaCase #-} #if __GLASGOW_HASKELL__ <= 708 {-# LANGUAGE OverlappingInstances #-} #endif @@ -11,16 +11,13 @@ module Language.Rzk.Syntax.Print where -import Prelude - ( ($), (.) - , Bool(..), (==), (<) - , Int, Integer, Double, (+), (-), (*) - , String, (++) - , ShowS, showChar, showString - , all, elem, foldr, id, map, null, replicate, shows, span - ) -import Data.Char ( Char, isSpace ) +import Data.Char (Char, isSpace) import qualified Language.Rzk.Syntax.Abs +import Prelude (Bool (..), Double, Int, Integer, + ShowS, String, all, elem, foldr, id, + map, null, replicate, showChar, + showString, shows, span, ($), (*), + (+), (++), (-), (.), (<), (==)) -- | The top-level printing method. @@ -43,9 +40,9 @@ render d = rend 0 False (map ($ "") $ d []) "" rend i p = \case "[" :ts -> char '[' . rend i False ts "(" :ts -> char '(' . rend i False ts - "{" :ts -> onNewLine i p . showChar '{' . new (i+1) ts - "}" : ";":ts -> onNewLine (i-1) p . showString "};" . new (i-1) ts - "}" :ts -> onNewLine (i-1) p . showChar '}' . new (i-1) ts +-- "{" :ts -> onNewLine i p . showChar '{' . new (i+1) ts +-- "}" : ";":ts -> onNewLine (i-1) p . showString "};" . new (i-1) ts +-- "}" :ts -> onNewLine (i-1) p . showChar '}' . new (i-1) ts [";"] -> char ';' ";" :ts -> char ';' . new i ts t : ts@(s:_) | closingOrPunctuation s @@ -124,10 +121,10 @@ printString s = doc (showChar '"' . concatS (map (mkEsc '"') s) . showChar '"') mkEsc :: Char -> Char -> ShowS mkEsc q = \case s | s == q -> showChar '\\' . showChar s - '\\' -> showString "\\\\" - '\n' -> showString "\\n" - '\t' -> showString "\\t" - s -> showChar s + '\\' -> showString "\\\\" + '\n' -> showString "\\n" + '\t' -> showString "\\t" + s -> showChar s prPrec :: Int -> Int -> Doc -> Doc prPrec i j = if j < i then parenth else id @@ -155,8 +152,8 @@ instance Print (Language.Rzk.Syntax.Abs.VarIdent' a) where Language.Rzk.Syntax.Abs.VarIdent _ varidenttoken -> prPrec i 0 (concatD [prt 0 varidenttoken]) instance Print [Language.Rzk.Syntax.Abs.VarIdent' a] where - prt _ [] = concatD [] - prt _ [x] = concatD [prt 0 x] + prt _ [] = concatD [] + prt _ [x] = concatD [prt 0 x] prt _ (x:xs) = concatD [prt 0 x, prt 0 xs] instance Print (Language.Rzk.Syntax.Abs.LanguageDecl' a) where @@ -181,7 +178,7 @@ instance Print (Language.Rzk.Syntax.Abs.Command' a) where Language.Rzk.Syntax.Abs.CommandDefine _ varident declusedvars params term1 term2 -> prPrec i 0 (concatD [doc (showString "#define"), prt 0 varident, prt 0 declusedvars, prt 0 params, doc (showString ":"), prt 0 term1, doc (showString ":="), prt 0 term2]) instance Print [Language.Rzk.Syntax.Abs.Command' a] where - prt _ [] = concatD [] + prt _ [] = concatD [] prt _ (x:xs) = concatD [prt 0 x, doc (showString ";"), prt 0 xs] instance Print (Language.Rzk.Syntax.Abs.DeclUsedVars' a) where @@ -201,8 +198,8 @@ instance Print (Language.Rzk.Syntax.Abs.Pattern' a) where Language.Rzk.Syntax.Abs.PatternPair _ pattern_1 pattern_2 -> prPrec i 0 (concatD [doc (showString "("), prt 0 pattern_1, doc (showString ","), prt 0 pattern_2, doc (showString ")")]) instance Print [Language.Rzk.Syntax.Abs.Pattern' a] where - prt _ [] = concatD [] - prt _ [x] = concatD [prt 0 x] + prt _ [] = concatD [] + prt _ [x] = concatD [prt 0 x] prt _ (x:xs) = concatD [prt 0 x, prt 0 xs] instance Print (Language.Rzk.Syntax.Abs.Param' a) where @@ -212,8 +209,8 @@ instance Print (Language.Rzk.Syntax.Abs.Param' a) where Language.Rzk.Syntax.Abs.ParamPatternShape _ pattern_ term1 term2 -> prPrec i 0 (concatD [doc (showString "{"), prt 0 pattern_, doc (showString ":"), prt 0 term1, doc (showString "|"), prt 0 term2, doc (showString "}")]) instance Print [Language.Rzk.Syntax.Abs.Param' a] where - prt _ [] = concatD [] - prt _ [x] = concatD [prt 0 x] + prt _ [] = concatD [] + prt _ [x] = concatD [prt 0 x] prt _ (x:xs) = concatD [prt 0 x, prt 0 xs] instance Print (Language.Rzk.Syntax.Abs.ParamDecl' a) where @@ -228,8 +225,8 @@ instance Print (Language.Rzk.Syntax.Abs.Restriction' a) where Language.Rzk.Syntax.Abs.Restriction _ term1 term2 -> prPrec i 0 (concatD [prt 0 term1, doc (showString "|->"), prt 0 term2]) instance Print [Language.Rzk.Syntax.Abs.Restriction' a] where - prt _ [] = concatD [] - prt _ [x] = concatD [prt 0 x] + prt _ [] = concatD [] + prt _ [x] = concatD [prt 0 x] prt _ (x:xs) = concatD [prt 0 x, doc (showString ","), prt 0 xs] instance Print (Language.Rzk.Syntax.Abs.Term' a) where @@ -253,7 +250,7 @@ instance Print (Language.Rzk.Syntax.Abs.Term' a) where Language.Rzk.Syntax.Abs.RecOr _ restrictions -> prPrec i 7 (concatD [doc (showString "recOR"), doc (showString "("), prt 0 restrictions, doc (showString ")")]) Language.Rzk.Syntax.Abs.TypeFun _ paramdecl term -> prPrec i 1 (concatD [prt 0 paramdecl, doc (showString "->"), prt 1 term]) Language.Rzk.Syntax.Abs.TypeSigma _ pattern_ term1 term2 -> prPrec i 1 (concatD [doc (showString "Sigma"), doc (showString "("), prt 0 pattern_, doc (showString ":"), prt 0 term1, doc (showString ")"), doc (showString ","), prt 1 term2]) - Language.Rzk.Syntax.Abs.TypeUnit _ -> prPrec i 1 (concatD [doc (showString "Unit")]) + Language.Rzk.Syntax.Abs.TypeUnit _ -> prPrec i 7 (concatD [doc (showString "Unit")]) Language.Rzk.Syntax.Abs.TypeId _ term1 term2 term3 -> prPrec i 1 (concatD [prt 2 term1, doc (showString "=_{"), prt 0 term2, doc (showString "}"), prt 2 term3]) Language.Rzk.Syntax.Abs.TypeIdSimple _ term1 term2 -> prPrec i 1 (concatD [prt 2 term1, doc (showString "="), prt 2 term2]) Language.Rzk.Syntax.Abs.TypeRestricted _ term restrictions -> prPrec i 6 (concatD [prt 6 term, doc (showString "["), prt 0 restrictions, doc (showString "]")]) @@ -272,6 +269,6 @@ instance Print (Language.Rzk.Syntax.Abs.Term' a) where Language.Rzk.Syntax.Abs.TypeAsc _ term1 term2 -> prPrec i 0 (concatD [prt 2 term1, doc (showString "as"), prt 1 term2]) instance Print [Language.Rzk.Syntax.Abs.Term' a] where - prt _ [] = concatD [] - prt _ [x] = concatD [prt 0 x] + prt _ [] = concatD [] + prt _ [x] = concatD [prt 0 x] prt _ (x:xs) = concatD [prt 0 x, doc (showString ","), prt 0 xs] diff --git a/rzk/src/Rzk/Main.hs b/rzk/src/Rzk/Main.hs index febd035b9..ee6513686 100644 --- a/rzk/src/Rzk/Main.hs +++ b/rzk/src/Rzk/Main.hs @@ -70,7 +70,7 @@ parseRzkFilesOrStdin = \case typecheckString :: String -> Either String String typecheckString moduleString = do rzkModule <- Rzk.parseModule moduleString - case defaultTypeCheck (typecheckModule rzkModule) of + case defaultTypeCheck (typecheckModule Nothing rzkModule) of Left err -> Left $ unlines [ "An error occurred when typechecking!" , "Rendering type error... (this may take a few seconds)" diff --git a/rzk/src/Rzk/TypeCheck.hs b/rzk/src/Rzk/TypeCheck.hs index 874771196..186aad73c 100644 --- a/rzk/src/Rzk/TypeCheck.hs +++ b/rzk/src/Rzk/TypeCheck.hs @@ -51,7 +51,7 @@ typecheckModules :: [Rzk.Module] -> TypeCheck VarIdent () typecheckModules = \case [] -> return () m : ms -> do - decls <- typecheckModule m + decls <- typecheckModule Nothing m localDeclsPrepared decls $ typecheckModules ms @@ -59,7 +59,7 @@ typecheckModuleWithLocation :: (FilePath, Rzk.Module) -> TypeCheck VarIdent [Dec typecheckModuleWithLocation (path, module_) = do traceTypeCheck Normal ("Checking module from " <> path) $ do withLocation (LocationInfo { locationFilePath = Just path, locationLine = Nothing }) $ - typecheckModule module_ + typecheckModule (Just path) module_ countCommands :: Integral a => [Rzk.Command] -> a countCommands [] = 0 @@ -67,8 +67,8 @@ countCommands (Rzk.CommandSection _loc _name sectionCommands _name2 : commands) countCommands sectionCommands + countCommands commands countCommands (_ : commands) = 1 + countCommands commands -typecheckModule :: Rzk.Module -> TypeCheck VarIdent [Decl'] -typecheckModule (Rzk.Module _moduleLoc _lang commands) = +typecheckModule :: Maybe FilePath -> Rzk.Module -> TypeCheck VarIdent [Decl'] +typecheckModule path (Rzk.Module _moduleLoc _lang commands) = withSection Nothing (go 1 commands) $ -- FIXME: use module name? or anonymous section? return [] where @@ -95,17 +95,17 @@ typecheckModule (Rzk.Module _moduleLoc _lang commands) = traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]" <> " Checking #define " <> Rzk.printTree name ) $ do withCommand command $ do - mapM_ checkDefinedVar (VarIdent <$> vars) + mapM_ checkDefinedVar (varIdentAt path <$> vars) paramDecls <- concat <$> mapM paramToParamDecl params ty' <- typecheck (toTerm' (addParamDecls paramDecls ty)) universeT >>= whnfT -- >>= pure . termIsWHNF term' <- typecheck (toTerm' (addParams params term)) ty' >>= whnfT >>= pure . termIsWHNF - let decl = Decl (VarIdent name) ty' (Just term') False (VarIdent <$> vars) + let decl = Decl (varIdentAt path name) ty' (Just term') False (varIdentAt path <$> vars) fmap (decl :) $ localDeclPrepared decl $ do Context{..} <- ask termSVG <- case renderBackend of - Just RenderSVG -> renderTermSVG (Pure (VarIdent name)) + Just RenderSVG -> renderTermSVG (Pure (varIdentAt path name)) Just RenderLaTeX -> issueTypeError $ TypeErrorOther "\"latex\" rendering is not yet supported" Nothing -> pure Nothing maybe id trace termSVG $ do @@ -115,10 +115,10 @@ typecheckModule (Rzk.Module _moduleLoc _lang commands) = traceTypeCheck Normal ("[ " <> show i <> " out of " <> show totalCommands <> " ]" <> " Checking #postulate " <> Rzk.printTree name) $ do withCommand command $ do - mapM_ checkDefinedVar (VarIdent <$> vars) + mapM_ checkDefinedVar (varIdentAt path <$> vars) paramDecls <- concat <$> mapM paramToParamDecl params ty' <- typecheck (toTerm' (addParamDecls paramDecls ty)) universeT >>= whnfT -- >>= pure . termIsWHNF - let decl = Decl (VarIdent name) ty' Nothing False (VarIdent <$> vars) + let decl = Decl (varIdentAt path name) ty' Nothing False (varIdentAt path <$> vars) fmap (decl :) $ localDeclPrepared decl $ go (i + 1) moreCommands @@ -155,7 +155,7 @@ typecheckModule (Rzk.Module _moduleLoc _lang commands) = <> " Checking #assume " <> intercalate " " [ Rzk.printTree name | name <- names ] ) $ do withCommand command $ do ty' <- typecheck (toTerm' ty) universeT - let decls = [ Decl (VarIdent name) ty' Nothing True [] | name <- names ] + let decls = [ Decl (varIdentAt path name) ty' Nothing True [] | name <- names ] fmap (decls <>) $ localDeclsPrepared decls $ go (i + 1) moreCommands @@ -219,7 +219,7 @@ data TypeError var | TypeErrorTopeNotSatisfied [TermT var] (TermT var) | TypeErrorTopesNotEquivalent (TermT var) (TermT var) | TypeErrorInvalidArgumentType (Term var) (TermT var) - | TypeErrorDuplicateTopLevel VarIdent + | TypeErrorDuplicateTopLevel [VarIdent] VarIdent | TypeErrorUnusedVariable var (TermT var) | TypeErrorUnusedUsedVariables [var] var | TypeErrorImplicitAssumption (var, TermT var) var @@ -323,9 +323,13 @@ ppTypeError' = \case , " " <> show (untyped argKind) ] - TypeErrorDuplicateTopLevel name -> unlines + TypeErrorDuplicateTopLevel previous lastName -> unlines [ "duplicate top-level definition" - , " " <> Rzk.printTree (getVarIdent name) + , " " <> ppVarIdentWithLocation lastName + , "previous top-level definitions found at" + , intercalate "\n" + [ " " <> ppVarIdentWithLocation name + | name <- previous ] ] TypeErrorUnusedVariable name type_ -> unlines @@ -419,7 +423,7 @@ ppTermInContext :: Eq var => TermT var -> TypeCheck var String ppTermInContext term = do vars <- freeVarsT_ term let mapping = zip vars defaultVarIdents - toRzkVarIdent origs var = fromMaybe (VarIdent (Rzk.VarIdent Nothing "_")) $ + toRzkVarIdent origs var = fromMaybe "_" $ join (lookup var origs) <|> lookup var mapping origs <- asks varOrigs return (show (untyped (toRzkVarIdent origs <$> term))) @@ -429,7 +433,7 @@ ppSomeAction origs n action = ppAction n (toRzkVarIdent <$> action) where vars = nub (foldMap pure action) mapping = zip vars defaultVarIdents - toRzkVarIdent var = fromMaybe (VarIdent (Rzk.VarIdent Nothing "_")) $ + toRzkVarIdent var = fromMaybe "_" $ join (lookup var origs) <|> lookup var mapping ppAction :: Int -> Action' -> String @@ -773,22 +777,28 @@ ppContext' ctx@Context{..} = unlines -- , intercalate "\n" (map ((" " <>) . show . untyped) (intercalate [TopeAndT topeT topeBottomT topeBottomT] (saturateTopes [] <$> simplifyLHS localTopes))) ] -doesShadowName :: VarIdent -> TypeCheck var Bool +doesShadowName :: VarIdent -> TypeCheck var [VarIdent] doesShadowName name = asks $ \ctx -> - name `elem` mapMaybe snd (varOrigs ctx) + filter (name ==) (mapMaybe snd (varOrigs ctx)) checkTopLevelDuplicate :: VarIdent -> TypeCheck var () checkTopLevelDuplicate name = do doesShadowName name >>= \case - True -> issueTypeError (TypeErrorDuplicateTopLevel name) - False -> return () + [] -> return () + collisions -> issueTypeError $ + TypeErrorDuplicateTopLevel collisions name checkNameShadowing :: VarIdent -> TypeCheck var () checkNameShadowing name = do doesShadowName name >>= \case - True -> issueWarning $ - Rzk.printTree (getVarIdent name) <> " shadows an existing definition" - False -> return () + [] -> return () + collisions -> issueWarning $ + Rzk.printTree (getVarIdent name) <> " shadows an existing definition:" + <> unlines + [ " " <> ppVarIdentWithLocation name + , "previous top-level definitions found at" + , intercalate "\n" + [ " " <> ppVarIdentWithLocation prev | prev <- collisions ] ] withLocation :: LocationInfo -> TypeCheck var a -> TypeCheck var a withLocation loc = local $ \Context{..} -> Context { location = Just loc, .. } @@ -2260,8 +2270,8 @@ infer tt = performing (ActionInfer tt) $ case tt of return (secondT r t') ty -> issueTypeError $ TypeErrorNotPair t' ty - TypeUnit -> pure universeT - Unit -> pure typeUnitT + TypeUnit -> pure typeUnitT + Unit -> pure unitT TopeTop -> pure topeTopT TopeBottom -> pure topeBottomT